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 Integration.

Чтобы использовать 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

Используйте bf16=True для GPU Ampere (A100, RTX 30xx) и новее, а fp16=True — для более старых GPU. Обучение с смешанной точностью поддерживается во всех тренерах TRL.

Update on GitHub