---
name: yangge521/model-quantization
source: https://app.decimal.ai/s/yangge521-model-quantization@1/SKILL.md
source_sha256: f3232a2e9cdf
---

# 模型量化加速

## 概述

提供模型量化加速的完整方案，包括 FP16 半精度推理、INT8 量化、TensorRT 引擎转换、ONNX Runtime 部署优化。在保证精度的前提下最大化推理吞吐。

## 使用场景

- 推理延迟优化：从 50ms 降到 10ms
- 显存占用缩减：16GB 模型压缩到 4GB
- 边缘设备部署：Jetson/树莓派 等资源受限设备
- 高吞吐批量推理：利用大 Batch Size 提升总吞吐
- 多模型共存：显存内同时加载多个量化模型
- 成本优化：用更少的 GPU 处理相同的负载

## 操作指南

### 1. FP16 半精度推理

```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.predict(source="video.mp4", half=True, device=0)
```

FP16 将显存占用减半，推理速度提升 30-50%，精度损失通常小于 0.5%。NVIDIA T4 和 MTT S4000 均原生支持。

### 2. INT8 量化

训练后量化（PTQ）：使用校准数据集统计激活分布，将 FP32 权重和激活量化为 INT8。量化感知训练（QAT）：在训练中模拟量化误差，精度更高但需重新训练。INT8 可将模型体积减小 4 倍，推理速度提升 2-3 倍。

### 3. TensorRT 引擎转换

```python
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="onnx", half=True, simplify=True)
model.export(format="engine", half=True, workspace=4)
```

TensorRT 针对特定 GPU 架构优化，融合层操作，推理速度比 PyTorch 快 2-5 倍。注意引擎不可跨 GPU 型号使用。

### 4. ONNX Runtime 部署

```python
import onnxruntime as ort
session = ort.InferenceSession("yolo11n.onnx",
    providers=["CUDAExecutionProvider", "CPUExecutionProvider"])
outputs = session.run(None, {"images": input_tensor})
```

ONNX Runtime 提供跨平台推理加速，支持 CUDA/MUSA/CPU 后端，适合跨 GPU 平台部署。

### 5. 量化方案对比

| 方案 | 精度损失 | 加速比 | 显存节省 | 适用场景 |
|------|---------|--------|---------|---------|
| FP32 基准 | 0% | 1x | 0% | 精度敏感 |
| FP16 | 小于0.5% | 1.3-1.5x | 50% | 通用加速 |
| INT8 PTQ | 1-3% | 2-3x | 75% | 高吞吐 |
| INT8 QAT | 小于1% | 2-3x | 75% | 精度速度兼顾 |
| TensorRT | 小于1% | 2-5x | 50% | NVIDIA 极致 |

## 常见问题与排查

| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 量化后 mAP 下降明显 | 校准数据不足 | 增加校准集多样性 |
| TensorRT 引擎不可用 | GPU 型号不匹配 | 在目标 GPU 上重新导出 |
| ONNX 推理结果不一致 | 算子版本差异 | 检查 opset 版本 |
| FP16 精度损失大 | 数值范围溢出 | 检查异常激活值 |
| INT8 推理反而变慢 | 硬件不支持 | 确认 GPU 支持 INT8 |
| 模型导出失败 | 框架版本旧 | 升级 Ultralytics |

## 扩展方向

- **自动量化搜索**: 自动搜索最优量化配置
- **混合精度**: 不同层使用不同精度（敏感层 FP16，其余 INT8）
- **稀疏化**: 结合剪枝进一步压缩模型
- **知识蒸馏**: 用 FP32 模型指导 INT8 训练
- **动态量化**: 根据输入动态调整量化范围
- **W4A16 量化**: 4位权重+16位激活，进一步压缩

## 技能链路

- **gpu-benchmark**: 量化前后性能对比
- **cross-platform-verify**: 量化后跨平台验证
- **yolo-video-inference**: 量化模型部署推理
- **perf-monitor**: 量化后延迟监控
- **gpu-concurrent**: 量化后显存节省支持更多并发

## 检查清单

- [ ] FP16 推理精度验证通过
- [ ] INT8 量化校准数据集代表性充分
- [ ] TensorRT 引擎在目标 GPU 上测试
- [ ] ONNX 模型跨平台验证
- [ ] 量化前后 mAP 对比报告生成
- [ ] 推理延迟对比数据记录