开放模型如何让AI推理成本骤降?本地部署与量化实战

最近后台经常收到一类问题:为什么我的 API 账单越用越贵?为什么大家都在说开源大模型便宜,我自己部署之后反而更费钱了?如果你也有类似困惑,那这篇文章应该能帮到你。

这个话题的引子来自 Y Combinator(简称 YC)最近提出的一个观察:开放模型正在让 AI 的成本骤降。很多人关注这个判断是因为 YC 作为一家长期观察 AI 创业公司的孵化器,看到的不只是模型能力变化,还有整个应用层商业模式的迁移。当模型的“价格门槛”被快速打破,真正受益的是谁?在真实项目里,我们又该怎么利用这波趋势?这篇文章会从技术角度拆一拆这件事。

适合阅读这篇文章的读者有三类:

  • 正在做 AI 应用开发,但还不确定该用 API 还是本地部署模型的开发者。
  • 需要向团队或客户解释“AI 成本为什么会下降、该怎么算账”的技术负责人。
  • 想了解开放模型落地路径、又不想只看宏观评论的工程师。

读完你至少能掌握:什么是开放模型、成本骤降背后的技术驱动、如何量化一次调用的真实成本、如何从 0 搭建一个本地模型服务,以及在项目中该注意哪些坑。

1. 背景:为什么说开放模型正在让 AI 成本骤降

先说一个直接的感受。过去两年,开发者要做一个带自然语言能力的应用,路径非常固定:去大模型厂商的开放平台注册账号,拿一个 Key,然后按 Token 付费调用。这个模式的好处是接入简单,坏处是当应用流量上来后,账单非常酸爽。

YC 的观点之所以引起关注,是因为他们看到另一个趋势:开放模型的权重可以被下载、可以在自己的 GPU 上运行、可以被量化压缩,然后部署在企业内部环境。它带来的直接后果是——模型推理的边际成本在快速下降。你用第三方 API 的时候,价格由厂商的算力、带宽、利润决定;但当你用开放模型自建服务时,成本主要由硬件折旧和电费构成,后者的下降空间大得多。

这里需要做个概念区分。

我们常说的“开放模型”,在学术和工程语境中往往不是同一个意思。

一是真正的开源模型,指代码、权重、训练数据、训练流程都公开,例如一些严格遵循开源定义的模型;二是开放权重模型,指模型权重可以下载、微调、商用(具体见许可证),但训练数据和完整训练代码未必公开。对应用层开发者来说,最有意义的其实不是“源码开放”,而是“权重可获取”。

为什么?因为权重拿到了,你就能在本地完成推理和微调。推理不再受制于某个云厂商的接口限流、网络延迟和数据合规要求。也就是说,开放模型把 AI 能力从“租赁”变成了“资产”。

当然,这里也要泼一盆冷水。权重开放不代表“永久免费”。要跑 7B 以上的模型,你总得有显卡或高性能实例;要维护环境、升级版本、处理并发,也要有人力成本。但整体趋势是清晰的:同样做一次推理,开放模型在规模效应下的边际成本远低于早期闭源 API 的价格基准。

1.1 你为每个 Token 付出的隐性成本

很多开发者算 AI 成本时,只看“每百万 Token 多少钱”。但实际账单里往往还有几块隐性成本:

  • 输入/输出 Token 分开计价,输出通常更贵。
  • 上下文变长时,每次请求携带的历史消息都在计费。
  • 多轮对话场景下,消耗往往是指数级累积。
  • 测试调试阶段反复调用,也会沉淀出不少费用。
  • 高并发时可能需要更高额度的限流包,这也是成本。

当你把这些问题代入到开放模型本地部署场景时,会发现模型推理成本只是其中一个变量。数据是不是要出域、延迟能不能接受、能否在测试环境压测——这些才是更难以用价格衡量的成本。

1.2 开放模型与闭源模型如何选

闭源模型的最大优势是省心。你不必关心显存、推理框架、并发优化,只需要写业务代码。开放模型的优势则是可控。你可以在私有化环境部署,可以针对垂直领域微调,可以把模型嵌入到离线边缘设备。

选型时不能只看“谁便宜”,要看你们团队有没有模型服务化的能力。如果团队从没跑过推理服务,直接买 API 通常更划算;如果业务量已经大到 API 成本无法承受,或者数据合规要求数据不出内网,那么开放模型自建几乎是必选项。

2. 成本骤降背后的技术动因

“成本骤降”不是营销口号,它背后有几条清晰的技术演进路径。

2.1 大模型不再是“大厂专属”

过去训练一个大语言模型需要数千张 GPU,不是一般公司能承受的。但开放模型生态里,越来越多的系列提供了不同尺寸的版本:从 0.5B 到 70B 甚至更大。你完全不必追求最大模型,很多任务用 7B 或 14B 的量化版就够了。

也就是说,参数规模不再是唯一标准。更合理的做法是根据任务复杂度选模型:简单分类、抽取用 3B 以下的小模型;复杂代码生成、长文档分析用 30B 以上大模型;中间地带用 7B~14B 量化模型。

2.2 量化、蒸馏与小模型路线

量化是目前最直接的成本杀手。简单说,量化就是降低权重数值的精度。比如把 FP16 变成 INT8 或 INT4,显存占用能减少一半甚至更多。推理速度往往会提升,代价是模型效果可能出现轻微下降,但很多应用场景根本感知不到。

蒸馏则是把大模型的知识“压缩”到小模型里。典型做法是用大模型生成高质量问答对,再用这些数据训练小模型,让小模型学会大模型的“解题思路”。这在成本和延迟上都有明显收益。

2.3 推理框架与硬件生态的进步

两年前跑一个开源大模型需要手动配置一堆依赖。现在 Ollama、vLLM、llama.cpp 等工具把推理流程大幅简化。vLLM 的连续批处理能显著提升吞吐,llama.cpp 针对 CPU 推理做了大量优化。硬件方面,显存容量不断提升,TensorRT-LLM 等厂商专属加速方案也在降低单 Token 成本。

这些技术叠加起来的效果是:同样的模型,两年前你可能要租 8 卡 A100,现在一张 24GB 显存的消费级显卡就能跑一个不错的 7B 模型。这就是“成本塌缩”背后的真实原因。

3. 如何量化一次推理的真实成本

很多博主讲 AI 成本喜欢直接甩价格表。但价格表是动态的,而且不同厂商、不同区域都不一样。我更推荐团队建立自己的成本观测方式。下面用一个 Python 脚本记录简单 Token 消耗和成本估算。

# 文件路径:token_cost_logger.py import csv import time from decimal import Decimal # 这里的单价需要根据你实际使用的模型或服务商调整 PRICE_PER_MILLION_PROMPT = Decimal("1.0") # 每百万输入 Token 单价(单位:元,示例) PRICE_PER_MILLION_COMPLETION = Decimal("3.0") # 每百万输出 Token 单价(示例) def log_token_usage( model_name: str, prompt_tokens: int, completion_tokens: int, log_file: str = "token_usage.csv", ): prompt_cost = Decimal(prompt_tokens) / Decimal(1_000_000) * PRICE_PER_MILLION_PROMPT completion_cost = ( Decimal(completion_tokens) / Decimal(1_000_000) * PRICE_PER_MILLION_COMPLETION ) total_cost = prompt_cost + completion_cost row = { "time": time.strftime("%Y-%m-%d %H:%M:%S"), "model": model_name, "prompt_tokens": prompt_tokens, "completion_tokens": completion_tokens, "prompt_cost": str(prompt_cost), "completion_cost": str(completion_cost), "total_cost": str(total_cost), } write_header = not __import__("os").path.exists(log_file) with open(log_file, "a", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=row.keys()) if write_header: writer.writeheader() writer.writerow(row) return total_cost if __name__ == "__main__": total = log_token_usage("local-7b-quant", prompt_tokens=1250, completion_tokens=860) print(f"本次调用估算成本:{total:.4f} 元")

这段代码适合放在后端服务里,每次调用模型后把 Token 使用量写进 CSV。它不会统计到具体业务参数,只记录模型名和 Token 量,方便后续按周、按月汇总成本。

建议不要过度追求精确。本地部署时,显存占用、电量、GPU 折旧等很难按单次请求拆分,所以工程上通常以“单卡每小时成本 + 总吞吐”来折算。例如一张显卡满负荷跑模型,一小时能处理多少请求,一次请求的均摊成本就很好估了。

4. 开发者的开放模型落地路径

光说趋势不够,我们来跑一个最小可用的本地模型服务。

4.1 模型选型建议

选型时要考虑的因素:

  • 任务类型:对话、代码、摘要、分类,不同模型各有侧重。
  • 显存预算:7B 模型 FP16 大约需要 14GB 显存,INT8 约 7GB,INT4 会更低;14B 对应翻倍。这只是一个大致估算,具体看模型架构。
  • 许可证:是否有商用限制,是否要求衍生模型同样开放。
  • 社区生态:有没有人做过中文增强、代码增强的微调版本。

第一次尝试建议选择一个相对成熟的 7B~14B 中文对话模型。小模型调试成本低,跑通了再换更大参数。

4.2 本地部署示例:Docker Compose + Ollama

Ollama 是目前最省事的本地推理工具之一,它把模型下载、加载、API 暴露都封装好了。以下是一个最小部署配置。

# 文件路径:docker-compose.yml services: ollama: image: ollama/ollama:latest container_name: ollama-local restart: always ports: - "11434:11434" volumes: - ollama_data:/root/.ollama deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] volumes: ollama_data:

启动命令:

docker compose up -d

然后在容器内拉取一个对话模型。以某个 7B 级别模型为例(实际模型名以官方仓库为准):

docker exec -it ollama-local ollama run llama3.1:8b

第一次拉取会下载权重,之后即可在命令行对话。

4.3 调用与验证

模型服务起在 11434 端口后,可以使用 OpenAI 兼容的接口方式调用:

# 文件路径:test_local_llm.py import requests payload = { "model": "llama3.1:8b", "messages": [ {"role": "user", "content": "用一句话解释什么是 KV Cache。"} ], "stream": False, } resp = requests.post("http://localhost:11434/v1/chat/completions", json=payload, timeout=120) data = resp.json() print(data["choices"][0]["message"]["content"])

测试时如果返回空或超时,先检查:

  • Docker 容器是否在运行。
  • 显存是否够用。
  • 模型拉取是否完成。
  • Ollama 日志里是否有报错。

这样一套环境起来后,后续封装 REST API、接入业务系统就比较顺了。

5. 一个模拟估算案例:企业内部知识库问答

结合前面的方法,我们来模拟一个典型场景:企业内部知识库智能问答,预估一天到底要烧多少钱。

假设条件:

  • 平均每个请求输入 1500 Token,输出 600 Token。
  • 每天高峰期约 10000 次请求。
  • 使用本地部署的小型量化模型,单卡可并发处理。

先算 Token 数量:

  • 输入总量 = 1500 * 10000 = 15000000 Token。
  • 输出总量 = 600 * 10000 = 6000000 Token。

如果完全不考虑本地硬件成本,只按朴素的 API 计价逻辑,就能列出一个参考成本。下面这个脚本可以帮你把场景参数化:

# 文件路径:cost_simulation.py def simulate_daily_cost( daily_requests: int, avg_input_tokens: int, avg_output_tokens: int, cost_per_million_input: float, cost_per_million_output: float, ) -> dict: input_tokens = daily_requests * avg_input_tokens output_tokens = daily_requests * avg_output_tokens input_cost = input_tokens / 1_000_000 * cost_per_million_input output_cost = output_tokens / 1_000_000 * cost_per_million_output return { "daily_requests": daily_requests, "input_tokens": input_tokens, "output_tokens": output_tokens, "input_cost": round(input_cost, 2), "output_cost": round(output_cost, 2), "total_cost": round(input_cost + output_cost, 2), } if __name__ == "__main__": result = simulate_daily_cost( daily_requests=10000, avg_input_tokens=1500, avg_output_tokens=600, cost_per_million_input=1.0, cost_per_million_output=3.0, ) print(result)

运行结果大概就是某个按 API 计费模式的每日 Token 成本。如果业务量再大一倍,成本线性增长。

而使用开放模型本地部署,通常是一次性硬件投入或按 GPU 实例时付费,在请求量达到一定规模后,均摊单次成本会明显下降。不过这里有个重要提醒:请求量太小的时候,自建反而是浪费。因为显卡闲置也在折旧,维护也要人力。到底哪个划算,请拿实际数据跑上面的脚本,不要拍脑袋。

对比维度云端 API本地开放模型
接入速度快,一个 Key 即可慢,需要部署、调试
单请求成本按 Token 计费,越用越贵硬件均摊,量大更便宜
数据合规数据出域,需评估数据内网闭环,可控
运维成本几乎为零需要模型更新、监控、排障
扩展性弹性强,自动扩容需要提前规划硬件
模型升级厂商推送自己拉权重、重新部署

6. 常见问题与排查思路

6.1 为什么自建好像没省钱

很多团队从 API 切到本地部署后,发现成本没有降,甚至更高。原因常常是请求量不足。本地部署的固定成本包括显卡折旧、机房电费和人力维护。如果一天只有几百个请求,平均成本极高。这时候更合理的方案是继续用 API,或者采用“API + 小流量本地自建”混合。

另一个原因是选错模型。有人明明做的是简单分类任务,却直接上 70B 稠密模型,责任全在配置。先确认最小可用参数规模,配合量化,再谈成本优化。

6.2 模型效果明显下降

量化精度损失是常见问题。如果你的业务对输出格式、专业术语非常敏感,建议先用 INT8 或 FP16,不要一上来就追求极致压缩。另外,很多开源评测指标不能完全反映垂直领域效果,最好准备一份自己的测试集。

排查清单: 1. 确认输入输出格式是否与模型训练数据格式一致? 2. 尝试增加 few-shot 示例,看效果是否回升? 3. 换同一个模型的更大参数版本对比效果? 4. 对比未量化版本和量化版本,确认是否量化损失过大? 5. 查看上下文长度是否超出模型最大限制?

6.3 显存不足导致 OOM

有一个常见误解:显存大小只取决于模型参数量。实际上,推理时的 KV Cache 也会占用大量显存,并发请求越多,缓存占用越大。

解决方案有:

  • 减少并发数。
  • 启用连续批处理。
  • 降低量化精度。
  • 拆分模型到多卡(需要框架支持)。
  • 换显存更大的卡。

日志中如果出现CUDA out of memory,不要急着加卡,先把 max_batch_size 或并发数调下来试试。

6.4 响应慢,吞吐上不去

响应慢先看瓶颈在哪。

  • CPU 推理:慢是正常的,尝试使用 GPU 或优化线程数。
  • GPU 推理但单请求慢:可能是输入太长,生成 Token 数太多。
  • 并发一大就变慢:查看显存使用率,大概率是 KV Cache 挤占了可用显存。

实际项目中,往往会用“首 Token 延迟”和“生成速度 Tokens/s”两个指标来评估体验,不要只看总耗时。

7. 最佳实践与工程建议

7.1 多级模型路由

最经济的方法不是把所有请求都送到最大模型上。建议做一层模型网关:

  • 简单查询走本地小模型。
  • 困难、复杂推理走云端 API 或更大模型。
  • 主动记录每次路由的依据。

这样可以兼顾成本和质量。很多团队把本地 7B 模型当作“第一道闸”,过滤简单问题,只有模糊提问或超长上下文才升级到更大模型。

7.2 安全与合规边界

开放模型下载到本地后,权限边界容易被忽略。有几个工程红线要守住:

  • 开放模型服务只能在内网或经过身份验证的网关之后暴露,不能裸奔到公网。
  • 日志中不得记录用户的敏感信息;在进入模型前做好脱敏。
  • 涉及企业数据时,先评估模型权重许可证是否允许该场景商用。
  • 模型更新要像其他依赖一样做版本管理,锁版本、记录变更,不要默认“latest”。

这些不是教条,是真实踩过坑后的总结。模型权重一旦泄露或滥用,后果往往比普通代码泄露更难控制。

7.3 建立成本观测机制

成本下降是动态过程,但团队内部对成本的感知往往是滞后的。建议每个接入模型的项目从第一天就记录 Token 消耗,并且按周自动化汇总。可以参考第 3 节的脚本进一步扩展,把数据写入数据库或 Prometheus,配合 Grafana 展示。

没有观测就没有优化,这是成本管理的铁律。

7.4 性能与可维护性并重

模型服务上线后,性能调优是一个持续过程。建议关注这几件事:

  • 显存利用率:是否还有余量接纳更高并发。
  • 吞吐与延迟:观察 P50、P95 延迟,保证体验。
  • 模型版本回滚预案:新模型效果不佳,能快速切回旧版本。
  • 自动化测试集:每次换模型前先跑回归,不依赖人工抽测。

8. 总结与下一步学习建议

回到开头的那个问题:开放模型正在让 AI 成本骤降吗?从技术演进和真实项目落地来看,答案是肯定的。但这份红利需要你用工程能力去接住。有了开放权重,你还要会选型、部署、量化、观测、优化,才能真正享受到成本下降的好处。

如果你想继续深入,建议按这个顺序学习:

  1. 掌握 Docker 和 GPU 环境的基本运维。
  2. 阅读几个主流开源模型的模型卡(Model Card),了解训练数据、许可证和适用场景。
  3. 实践量化流程,对比同一个模型在不同精度下的效果差异。
  4. 学习 vLLM 等推理框架的并发参数调优。
  5. 用一个小业务场景完整走一遍“成本估算 → 部署 → 上线 → 观测”闭环。

对于团队负责人,我更推荐一个务实做法:不要一开始就迁移全部流量,而是选一个对延迟和隐私要求高的子模块,用开放模型本地部署跑一个月,把成本、效果和运维负担都记录下来,再做决策。AI 基础设施的每一次迁移,都应该用数据说服自己,而不是跟着概念走。

相关新闻

LiteLLM:统一多模型API的轻量级抽象层原理与实战

LiteLLM:统一多模型API的轻量级抽象层原理与实战

1. 项目概述:LiteLLM 是什么,它解决的到底是什么问题? LiteLLM 是一个轻量级但功能完整的 LLM(大语言模型)抽象层,不是模型本身,也不是训练框架,而是一个“统一接口中间件”。你可以…

2026/10/22 10:59:03 阅读更多 →
裸机到FreeRTOS:中断管理四大差异与避坑指南

裸机到FreeRTOS:中断管理四大差异与避坑指南

1. 为什么裸机中断经验在FreeRTOS下会翻车先说说我自己的经历。前几年做某个物联网项目,主控用的是STM32F407,刚开始跑裸机,外设中断用得挺顺手,UART接收、定时器采样、外部触发,全是中断服务函数里直接处理标志位、搬…

2026/10/21 8:39:14 阅读更多 →
WinPython+VS Code便携开发环境:U盘即开即用的Python全流程方案

WinPython+VS Code便携开发环境:U盘即开即用的Python全流程方案

简介:这是一套开箱即用的便携式Python开发环境,专为需频繁切换电脑、使用公共机房或U盘移动办公的开发者设计,解决传统PythonVSCode环境配置繁琐、依赖冲突、无法跨机部署等痛点。资源集成中文版VSCode编辑器、WinPython解释器(含…

2026/10/22 10:58:11 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →