Transformers documentation
サーバーの最適化
サーバーの最適化
transformers serveには、スループットを向上させ、メモリ使用量を削減するための最適化が含まれています。
連続バッチ処理
Continuous batchingは、GPU上のフォワードパスを共有するために、リクエストを動的にグループ化してインターリーブします。他のリクエストがプリフィルフェーズを進める間に、新しいリクエストがバッチに参加します。デコードが完了したリクエストはバッチから離脱します。これにより、レイテンシを犠牲にすることなく、GPUの利用率とスループットを向上させることができます。
--continuous-batching を追加して有効にします。
transformers serve \
--continuous-batching \
--attn-implementation "sdpa"量子化
Quantizationは、重みを低い精度にマッピングすることでメモリ使用量を削減します。transformers serveは、TransformersのすべてのQuantization手法に対応しています。事前Quantization済みモデルと実行時Quantizationの両方をサポートしています。
事前量子化モデルは、いかなる変更も必要ありません。パフォーマンスと精度のバランスが最も優れています。適切な量子化ライブラリをインストールし、Hubから事前量子化モデルをmodel引数に渡します。
curl http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-8B-GGUF",
"stream": true,
"input": "Tell me a three sentence bedtime story about a unicorn."
}'--quantization を使用して、モデルをランタイム時に量子化します。これは、事前量子化された重みを持たない新しいチェックポイントやファインチューンに有用です。サポートされているのは、bitsandbytes による 4 ビットおよび 8 ビットの量子化のみです。
transformers serve \ --quantization bnb-4bit
アテンションバックエンド
最適化されたattention バックエンドにより、メモリ効率の向上と推論の高速化が実現されます。
transformers serve \
--continuous-batching \
--attn-implementation "flash_attention_2"Apple Silicon(Metal flash attention)
MPS で --continuous-batching を使用する場合、kernels をインストールして kernels-community/metal-flash-sdpa に切り替えます。generate_batch (gsm8k, Qwen2.5-0.5B-Instruct, fp16) では SDPA より 1.66 倍高速で、グリーディデコーディング下ではトークン単位で一致します。
pip install kernels transformers serve --continuous-batching
連続バッチ処理を行わない場合、モデルはデフォルトの注意機構(SDPA)を維持します。--attn-implementation を渡すことで、kernels-community/metal-flash-sdpa など別の注意機構を試すことができます。
コンパイル
torch.compile はデコードループをトレースしてコンパイルし、推論を高速化します。
Compile は連続バッチ処理と互換性がありません。
transformers serve \ --compile
データ型
"bfloat16" または "float16" の データ型 は、メモリを節約しスループットを向上させます。
transformers serve \
--continuous-batching \
--dtype "bfloat16"