TRL documentation
Giao diện dòng lệnh (CLI)
Giao diện dòng lệnh (CLI)
TRL cung cấp một giao diện dòng lệnh (CLI) mạnh mẽ để tinh chỉnh các mô hình ngôn ngữ lớn (LLM) bằng các phương pháp như Supervised Fine-Tuning (SFT), Direct Preference Optimization (DPO) và nhiều phương pháp khác. CLI giúp loại bỏ phần lớn các đoạn mã lặp lại, cho phép bạn khởi chạy các tác vụ huấn luyện một cách nhanh chóng và có thể tái lập.
Lệnh
Các lệnh được hỗ trợ hiện tại là:
Lệnh huấn luyện
trl distillation: chưng cất một mô hình giáo viên thành một mô hình học sinh bằng phương pháp chưng cất tri thức on-policytrl dpo: tinh chỉnh LLM bằng DPOtrl grpo: tinh chỉnh LLM bằng GRPOtrl kto: tinh chỉnh LLM bằng KTOtrl reward: huấn luyện một Mô hình Phần thưởngtrl rloo: tinh chỉnh LLM bằng RLOOtrl sft: tinh chỉnh LLM bằng SFT
Các Lệnh Khác
trl env: lấy thông tin hệ thốngtrl vllm-serve: phục vụ một mô hình bằng vLLM (đã ngừng hỗ trợ, hãy dùng trực tiếpvllm serve, xem tích hợp vLLM)
Fine-Tuning với TRL CLI
Cách sử dụng cơ bản
Bạn có thể khởi động quá trình huấn luyện trực tiếp từ CLI bằng cách chỉ định các đối số bắt buộc như mô hình và tập dữ liệu:
trl sft \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name stanfordnlp/imdb
trl dpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name anthropic/hh-rlhf
trl reward \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/ultrafeedback_binarized
trl grpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward
trl rloo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward
trl kto \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/kto-mix-14k
Sử dụng tệp cấu hình
Để giữ cho các lệnh CLI của bạn gọn gàng và có thể tái lập, bạn có thể định nghĩa tất cả các đối số huấn luyện trong một tệp cấu hình YAML:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdbKhởi chạy với:
trl sft --config sft_config.yaml
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhfKhởi chạy với:
trl dpo --config dpo_config.yaml
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarizedKhởi chạy với:
trl reward --config reward_config.yaml
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_rewardKhởi chạy với:
trl grpo --config grpo_config.yaml
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_rewardKhởi chạy với:
trl rloo --config rloo_config.yaml
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14kKhởi chạy với:
trl kto --config kto_config.yaml
Mở rộng quy mô với torchrun
CLI của TRL khởi động huấn luyện bằng torchrun, mỗi tiến trình cho một GPU khả dụng. Bất kỳ đối số nào của torchrun đều có thể được truyền trực tiếp cho trl, chẳng hạn như --nproc_per_node hoặc --nnodes.
trl sft \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name stanfordnlp/imdb \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
nproc_per_node: 4Khởi chạy với:
trl sft --config sft_config.yaml
trl dpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name anthropic/hh-rlhf \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
nproc_per_node: 4Khởi chạy với:
trl dpo --config dpo_config.yaml
trl reward \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/ultrafeedback_binarized \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
nproc_per_node: 4Khởi chạy với:
trl reward --config reward_config.yaml
trl grpo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
nproc_per_node: 4Khởi chạy với:
trl grpo --config grpo_config.yaml
trl rloo \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name HuggingFaceH4/Polaris-Dataset-53K \ --reward_funcs accuracy_reward \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
nproc_per_node: 4Khởi chạy với:
trl rloo --config rloo_config.yaml
trl kto \ --model_name_or_path Qwen/Qwen2.5-0.5B \ --dataset_name trl-lib/kto-mix-14k \ --nproc_per_node 4
hoặc, với một tệp cấu hình:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
nproc_per_node: 4Khởi chạy với:
trl kto --config kto_config.yaml
DeepSpeed và FSDP
DeepSpeed ZeRO và FSDP được cấu hình thông qua các đối số huấn luyện, giống như với bất kỳ Trainer nào: --deepspeed nhận một cấu hình JSON của DeepSpeed, và --fsdp bật FSDP, được tinh chỉnh bằng --fsdp_config. Việc chỉ dùng --fsdp trên dòng lệnh yêu cầu transformers 5.10 trở lên; với các phiên bản cũ hơn, hãy đặt fsdp: true trong tệp cấu hình. Các cấu hình sẵn sàng để sử dụng nằm trong examples/deepspeed_configs và examples/fsdp_configs. Nếu bạn đã cài đặt TRL bằng pip, hãy lưu cấu hình ZeRO-2 này dưới dạng zero2.json và truyền --deepspeed zero2.json:
{
"bf16": {"enabled": "auto"},
"zero_optimization": {
"stage": 2,
"offload_optimizer": {"device": "none"}
},
"gradient_accumulation_steps": "auto",
"gradient_clipping": "auto",
"train_batch_size": "auto",
"train_micro_batch_size_per_gpu": "auto"
}trl sft \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name stanfordnlp/imdb \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl sft --config sft_config.yaml
trl dpo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name anthropic/hh-rlhf \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: anthropic/hh-rlhf
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl dpo --config dpo_config.yaml
trl reward \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/ultrafeedback_binarized \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/ultrafeedback_binarized
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl reward --config reward_config.yaml
trl grpo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name HuggingFaceH4/Polaris-Dataset-53K \
--reward_funcs accuracy_reward \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl grpo --config grpo_config.yaml
trl rloo \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name HuggingFaceH4/Polaris-Dataset-53K \
--reward_funcs accuracy_reward \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: HuggingFaceH4/Polaris-Dataset-53K
reward_funcs:
- accuracy_reward
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl rloo --config rloo_config.yaml
trl kto \
--model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/kto-mix-14k \
--deepspeed examples/deepspeed_configs/zero2.json # or --fsdphoặc, với một tệp cấu hình:
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: trl-lib/kto-mix-14k
deepspeed: examples/deepspeed_configs/zero2.json # or fsdp: trueKhởi chạy với:
trl kto --config kto_config.yaml
Trước TRL v2.0.0,
trlvẫn khởi động thông quaaccelerate launchkhi nhận được các đối số mà chỉaccelerate launchmới biết, chẳng hạn như--num_processeshoặc--accelerate_config, hoặc khi tồn tại tệp mặc định củaaccelerate config. Con đường này đã bị ngừng hỗ trợ và sẽ hiển thị cảnh báo.
Sử dụng hỗn hợp tập dữ liệu
Bạn có thể sử dụng hỗn hợp tập dữ liệu để kết hợp nhiều tập dữ liệu thành một tập dữ liệu huấn luyện duy nhất. Điều này hữu ích khi huấn luyện trên các nguồn dữ liệu đa dạng hoặc khi bạn muốn trộn lẫn các loại dữ liệu khác nhau.
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: stanfordnlp/imdb
- path: roneneldan/TinyStoriesKhởi chạy với:
trl sft --config sft_config.yaml
# dpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: BAAI/Infinity-Preference
- path: argilla/Capybara-PreferencesKhởi chạy với:
trl dpo --config dpo_config.yaml
# reward_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: trl-lib/tldr-preference
- path: trl-lib/lm-human-preferences-sentimentKhởi chạy với:
trl reward --config reward_config.yaml
# grpo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: HuggingFaceH4/Polaris-Dataset-53K
- path: trl-lib/DeepMath-103K
reward_funcs:
- accuracy_rewardKhởi chạy với:
trl grpo --config grpo_config.yaml
# rloo_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: HuggingFaceH4/Polaris-Dataset-53K
- path: trl-lib/DeepMath-103K
reward_funcs:
- accuracy_rewardKhởi chạy với:
trl rloo --config rloo_config.yaml
# kto_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
- path: trl-lib/kto-mix-14k
- path: argilla/ultrafeedback-binarized-preferences-cleanedKhởi chạy với:
trl kto --config kto_config.yaml
Để xem tất cả các từ khóa có sẵn để định nghĩa hỗn hợp tập dữ liệu, hãy tham khảo các lớp scripts.utils.DatasetConfig và DatasetMixtureConfig.
Lấy thông tin hệ thống
Bạn có thể lấy thông tin hệ thống bằng cách chạy lệnh sau:
trl envĐiều này sẽ in ra thông tin hệ thống, bao gồm thông tin GPU, phiên bản CUDA, phiên bản PyTorch, phiên bản transformers, phiên bản TRL và bất kỳ phụ thuộc tùy chọn nào đã được cài đặt.
Copy-paste the following information when reporting an issue:
- Platform: Linux-5.15.0-1048-aws-x86_64-with-glibc2.31
- Python version: 3.11.9
- PyTorch version: 2.4.1
- accelerator(s): NVIDIA H100 80GB HBM3
- Transformers version: 4.45.0.dev0
- Accelerate version: 0.34.2
- Accelerate config:
- compute_environment: LOCAL_MACHINE
- distributed_type: DEEPSPEED
- mixed_precision: no
- use_cpu: False
- debug: False
- num_processes: 4
- machine_rank: 0
- num_machines: 1
- rdzv_backend: static
- same_network: True
- main_training_function: main
- enable_cpu_affinity: False
- deepspeed_config: {'gradient_accumulation_steps': 4, 'offload_optimizer_device': 'none', 'offload_param_device': 'none', 'zero3_init_flag': False, 'zero_stage': 2}
- downcast_bf16: no
- tpu_use_cluster: False
- tpu_use_sudo: False
- tpu_env: []
- Datasets version: 3.0.0
- HF Hub version: 0.24.7
- TRL version: 0.12.0.dev0+acb4d70
- bitsandbytes version: 0.41.1
- DeepSpeed version: 0.15.1
- Diffusers version: 0.30.3
- Liger-Kernel version: 0.3.0
- LLM-Blender version: 0.0.2
- OpenAI version: 1.46.0
- PEFT version: 0.12.0
- vLLM version: not installedThông tin này là bắt buộc khi báo cáo sự cố.
Update on GitHub