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 等在线方法需要模型生成补全内容,这通常是一个缓慢的过程,并可能显著影响训练时间。 为了加速生成,你可以使用 vLLM,这是一个通过 PagedAttention 等技术实现快速生成的库。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 集成。

混合精度训练

使用 bf16 或 fp16 进行混合精度训练可以加快训练速度并降低内存占用,同时对模型质量的影响微乎其微。

from trl import SFTConfig

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

对于 Ampere 架构(A100、RTX 30xx)或更新的 GPU,请使用 bf16=True;对于较旧的 GPU,请使用 fp16=True。所有 TRL 训练器均支持混合精度训练。

Update on GitHub