TRL documentation

Acelerando o Treinamento

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

Acelerando o Treinamento

Este guia aborda diversos métodos para acelerar o treinamento no TRL. Cada técnica inclui exemplos mínimos com links para uma documentação mais abrangente.

vLLM para geração rápida em métodos online

Métodos online, como GRPO ou Online DPO, exigem que o modelo gere complementações, o que é frequentemente um processo lento e pode impactar significativamente o tempo de treinamento. Para acelerar a geração, você pode usar vLLM, uma biblioteca que permite geração rápida por meio, entre outras coisas, do PagedAttention. Os treinadores online do TRL suportam vLLM, melhorando consideravelmente a velocidade de treinamento. Para mais detalhes, consulte Integração com vLLM.

Para usar o vLLM, primeiro instale-o usando:

pip install trl[vllm]
DPO online
GRPO
RLOO

Primeiro, inicie um servidor vLLM executando:

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

Em seguida, execute o script de treinamento e passe use_vllm=True nos argumentos de treinamento.

from trl.experimental.online_dpo import OnlineDPOConfig

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

Implementações de atenção otimizadas

O TRL suporta várias implementações de atenção otimizadas que podem acelerar significativamente o treinamento, ao mesmo tempo em que reduzem o uso de memória. Você pode usar kernels pré-otimizados diretamente do Kernels Hub ou um backend de atenção construído manualmente.

Kernels do Hub
Compilação manual

Você pode usar kernels de atenção pré-otimizados do Hub sem compilação manual:

from trl import SFTConfig

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

Outras opções incluem kernels-community/vllm-flash-attn3 e kernels-community/paged-attention.

A atenção otimizada funciona em todos os treinadores do TRL. Para mais detalhes, consulte Integração com o Kernels Hub.

Treinamento com precisão mista

O treinamento com precisão mista usando bf16 ou fp16 pode acelerar o treinamento e reduzir o uso de memória com impacto mínimo na qualidade do modelo.

from trl import SFTConfig

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

Use bf16=True para GPUs Ampere (A100, RTX 30xx) ou mais novas, e fp16=True para GPUs mais antigas. O treinamento em precisão mista é suportado em todos os treinadores do TRL.

Update on GitHub