E.A.3 模型优化技术


优化不是“把模型压到越小越好”,而是在改善一个约束时,同时检查你失去了什么。
运行一个很小的量化误差检查
values = [0.1234, 0.5678, 0.9012]
quantized = [round(value * 255) / 255 for value in values]
errors = [abs(original - compressed) for original, compressed in zip(values, quantized)]
print([round(value, 4) for value in quantized])
print(f"max_error={max(errors):.4f}")
预期输出:
[0.1216, 0.5686, 0.902]
max_error=0.0018
这是最小优化习惯:压缩,测误差,再判断误差是否可接受。
选择合适的优化路径
| 技术 | 什么时候适合 | 上线前检查 |
|---|---|---|
| 量化 | 延迟和内存太高 | 真实验证样本上的准确率下降 |
| 剪枝 | 很多权重或通道没用 | runtime 是否真的变快 |
| 蒸馏 | 小模型可以模仿大模型 | student 是否在边界样本失败 |
| 算子融合 | runtime overhead 高 | 引擎是否支持融合后的图 |
| Batching / scheduling | 多请求一起到达 | 长尾延迟和队列等待 |
实用顺序
- 先测 baseline 延迟、内存、准确率。
- 一次只尝试一种优化。
- 记录前后指标。
- 保留失败样本。
- 只有取舍清楚时才上线。
通过检查
你能说明一种优化的收益、可能代价,以及真实部署前要看哪个指标,就算通过。