TRL documentation

Acelerar el entrenamiento

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

Acelerar el entrenamiento

Esta guía cubre varios métodos para acelerar el entrenamiento en TRL. Cada técnica incluye ejemplos mínimos con enlaces a documentación más completa.

vLLM para una generación rápida en métodos en línea

Los métodos online, como GRPO o Online DPO, requieren que el modelo genere completados, un proceso que suele ser lento y puede afectar significativamente el tiempo de entrenamiento. Para acelerar la generación, puedes usar vLLM, una biblioteca que permite una generación rápida mediante, entre otras cosas, PagedAttention. Los entrenadores online de TRL admiten vLLM, lo que mejora considerablemente la velocidad de entrenamiento. Para más detalles, consulta vLLM Integration.

Para usar vLLM, primero instálalo usando:

pip install trl[vllm]
DPO en línea
GRPO
RLOO

Primero, inicie un servidor de vLLM ejecutando:

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

Luego, ejecuta el script de entrenamiento y pasa use_vllm=True en los argumentos de entrenamiento.

from trl.experimental.online_dpo import OnlineDPOConfig

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

Implementaciones de atención optimizadas

TRL admite diversas implementaciones de atención optimizadas que pueden acelerar significativamente el entrenamiento y reducir el uso de memoria. Puede utilizar kernels preoptimizados directamente desde Kernels Hub o un backend de atención construido manualmente.

Kernels de Hub
Compilación manual

Puedes usar kernels de atención preoptimizados del Hub sin compilación manual:

from trl import SFTConfig

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

Otras opciones incluyen kernels-community/vllm-flash-attn3 y kernels-community/paged-attention.

La atención optimizada funciona en todos los entrenadores de TRL. Para más detalles, consulte Integración con Kernels Hub.

Entrenamiento con precisión mixta

El entrenamiento con precisión mixta usando bf16 o fp16 puede acelerar el entrenamiento y reducir el uso de memoria con un impacto mínimo en la calidad del 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) o más nuevas, y fp16=True para GPUs más antiguas. El entrenamiento con precisión mixta está soportado en todos los entrenadores de TRL.

Update on GitHub