TRL documentation

トレーニングの高速化

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

トレーニングの高速化

このガイドでは、TRLでのトレーニングを高速化するさまざまな方法について説明します。各手法には、より詳細なドキュメントへのリンクを伴う最小限の例が含まれています。

オンライン手法における高速な生成のためのvLLM

GRPO や Online DPO などのオンライン手法では、モデルが補完を生成する必要があり、これは多くの場合遅い処理であり、トレーニング時間に大きな影響を与える可能性があります。 生成を高速化するには、PagedAttention などにより高速な生成を可能にするライブラリであるvLLMを使用できます。TRL のオンライントレーナーは vLLM をサポートしており、トレーニング速度を大幅に向上させます。詳細については、vLLM 統合を参照してください。

vLLMを使用するには、まず以下を使用してインストールしてください。

pip install trl[vllm]
オンラインDPO
GRPO
RLOO

まず、…を実行してvLLMサーバーを起動します。

VLLM_SERVER_DEV_MODE=1 vllm serve <model_name> \
    --weight-transfer-config '{"backend": "nccl"}' \
    --logprobs-mode processed_logprobs \
    --max-logprobs -1

次に、学習スクリプトを実行し、学習引数にuse_vllm=Trueを渡します。

from trl.experimental.online_dpo import OnlineDPOConfig

training_args = OnlineDPOConfig(..., use_vllm=True, vllm_mode="server")

最適化されたアテンションの実装

TRLは、メモリ使用量を削減しながらトレーニングを大幅に高速化できる、さまざまな最適化されたアテンション実装をサポートしています。Kernels Hubから事前最適化されたカーネルを直接使用するか、手動で構築したアテンションバックエンドを使用できます。

Hubからのカーネル
手動ビルド

Hubから事前に最適化されたアテンションカーネルを使用することで、手動でのコンパイルなしで利用できます:

from trl import SFTConfig

training_args = SFTConfig(..., model_init_kwargs={"attn_implementation": "kernels-community/flash-attn2"})

その他のオプションには、kernels-community/vllm-flash-attn3やkernels-community/paged-attentionがあります。

最適化されたアテンションは、すべてのTRLトレーナーで動作します。詳細については、Kernels Hub Integrationを参照してください。

混合精度トレーニング

bf16またはfp16を使用した混合精度トレーニングにより、モデルの品質への影響を最小限に抑えながら、トレーニングの高速化とメモリ使用量の削減を実現できます。

from trl import SFTConfig

training_args = SFTConfig(..., bf16=True)  # or fp16=True for older GPUs

Ampere GPU(A100、RTX 30xx)以降の GPU では bf16=True を、それ以前の GPU では fp16=True を使用してください。混合精度トレーニングは、すべての TRL トレーナーでサポートされています。

Update on GitHub