优化¶
训练出的模型对现场设备通常太大或太慢。优化会把模型编译为 ONNX、做图优化,并针对选定的目标 芯片做 int8 量化,再在该目标上基准实测——用受控、可测的精度损失换取延迟、吞吐与存储 收益。
每个(源版本 × 目标设备)组合是一个独立任务,产出各自的模型版本。一次选择多个目标会 扇出为多个运行。
目标设备¶
目标以厂商为先:选择厂商会映射到优化器使用的运行时/导出路径。
| 选择 | 优化器目标 | 现场典型运行时 |
|---|---|---|
| CPU | cpu |
ONNX Runtime(CPU) |
| Intel | openvino |
OpenVINO |
| NVIDIA | tensorrt |
TensorRT / Triton |
| AMD | onnx-rocm |
ONNX Runtime(ROCm) |
| 华为昇腾 | ascend |
昇腾运行时 |
旧取值(cpu、openvino、tensorrt……)原样接受。当集群缺少某目标的工具链或硬件时,任务
保持 pending(挂起)而不是静默失败——请在带该加速器的节点上运行。
流水线做什么¶
- 取源版本的 ONNX 产物(训练会产出;手动上传的
.onnx也可)。 - 针对目标做 ONNX 图优化。
- 用校准集把权重/激活量化为 int8。
- 在目标上用 ONNX Runtime 对源模型与优化模型做基准对比——这是真实测量,不是估算。
- 把结果注册为带实测指标与门禁结论的新版本。
优化产物落入对象存储(SeaweedFS),并以类似 {source-version}-onnx-{dtype-suffix} 的名字
注册到源模型之下,因此每个优化版本都保留到训练模型的血缘。
指标与质量门禁¶
每个优化版本记录:
- 加速比——同一目标上优化前后延迟对比。
- 体积缩减——产物字节数前后对比。
- 延迟——实测推理延迟(优化扫描可搜索参数组合,在 mAP 下降的硬约束内最小化延迟)。
- 精度下降——量化模型相对 FP32 源模型的评估指标差值(如
mAP50delta)。
门禁把绝不能回退的项与可由人工接受的项分开:
- 硬门禁——任务精度下降与数值安全(NaN/Inf)。硬门禁失败会阻止自动注册。
- 软门禁——延迟/吞吐等性能目标;未达标被标记(YELLOW),可在留痕的情况下人工审核放行, 而不是被悄悄掩盖。
部署 int8 模型前,务必在评估页确认其精度;量化效果依赖硬件与数据。
前提条件¶
- 源版本必须有 ONNX 产物。在 Forge 训练(CV 训练器会导出 ONNX),或向模型库手动上传
.onnx。 - GPU/NPU 目标需要集群中存在对应硬件/工具链,否则任务保持 pending。
- 使用有代表性的校准集——量化质量取决于校准数据。
常见问题¶
加速比数字从哪来?
来自真实基准(optimize.py 经 ONNX Runtime)在目标上对比源模型与优化模型,而非查表
估算。
能一次为多类芯片优化吗?
可以——在一个任务中选择多个目标;Forge 为每个目标创建独立任务与独立产物版本,随后在 模型库中横向对比。
int8 模型掉点太多。
用更有代表性的校准集重跑;若下降仍超门禁,该目标保留 FP32/FP16 版本,或选择更温和的
路径。在评估中查看 accuracy_drop。
这会优化 LLM/VLM 模型吗?
本页描述的是 CV 的 ONNX/int8 路线。LLM/VLM 的服务效率主要通过训练阶段的 LoRA/QLoRA 适配器与所选服务运行时来实现;单页式 CV 量化器不会作用于大语言模型权重。