pytorch/ao
PyTorch native quantization for training and inference
解决的问题
大型 AI 模型速度慢且内存占用高。TorchAO 通过将模型权重和激活量化为更低精度的格式(如 int4、int8、float8)来减少这两方面的问题,使模型在训练和推理时运行更快、占用内存更少。它还通过量化感知训练(QAT)解决了量化可能导致的精度下降问题,并且可以直接与 PyTorch 的 compile 和 FSDP2 系统配合使用。
工作原理
TorchAO 提供简单的 Python API,可以将模型的权重替换为量化版本。对于推理,你可以用一行代码将 Int4WeightOnlyConfig 或 Float8DynamicActivationFloat8WeightConfig 应用于模型。对于训练,它提供了 float8 训练方案,可加速大规模预训练,以及 QAT 工作流,在微调期间模拟量化,然后将模型转换回量化形式。它还包含内存高效的优化器(如 8 位 Adam)和 CPU 卸载,以减少 GPU 内存使用。
适用人群
使用 PyTorch 的开发者和研究人员,他们希望更快地部署大型语言模型或扩散模型,更便宜地训练大型模型,或在手机等边缘设备上运行它们。它非常适合那些使用 HuggingFace transformers、diffusers、vLLM 或 torchtitan 的人,因为它可以直接与这些工具集成。
亮点
- 使用 float8 训练速度提升高达 1.5-2 倍,int4 推理速度提升 1.89 倍,内存减少 58%。
- 量化感知训练可以恢复后训练量化损失的 96% 的精度。
- 与
torch.compile()、FSDP2 和主要 HuggingFace 库开箱即用。 - 支持服务器 GPU、CPU 和通过 ExecuTorch 进行边缘部署,HuggingFace Hub 上提供预量化模型。
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目