pytorch/ao
PyTorch native quantization for training and inference
解決する課題
大規模な AI モデルは遅く、メモリを大量に消費します。TorchAO は、モデルの重みとアクティベーションを低精度形式(int4、int8、float8 など)に量子化することで、両方を削減し、トレーニングと推論中にモデルを高速化し、メモリ使用量を削減します。また、量子化対応トレーニング(QAT)を通じて、量子化が引き起こす可能性のある精度低下にも対応し、PyTorch の compile および FSDP2 システムと直接連携します。
仕組み
TorchAO は、モデルの重みを量子化バージョンに置き換えるシンプルな Python API を提供します。推論では、Int4WeightOnlyConfig または Float8DynamicActivationFloat8WeightConfig を 1 行でモデルに適用できます。トレーニングでは、大規模な事前学習を高速化する 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
- プロジェクト