TRL documentation

Giao diện dòng lệnh (CLI)

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

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-policy
  • trl dpo: tinh chỉnh LLM bằng DPO
  • trl grpo: tinh chỉnh LLM bằng GRPO
  • trl kto: tinh chỉnh LLM bằng KTO
  • trl reward: huấn luyện một Mô hình Phần thưởng
  • trl rloo: tinh chỉnh LLM bằng RLOO
  • trl sft: tinh chỉnh LLM bằng SFT

Các Lệnh Khác

  • trl env: lấy thông tin hệ thống
  • trl vllm-serve: phục vụ một mô hình bằng vLLM (đã ngừng hỗ trợ, hãy dùng trực tiếp vllm 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:

SFT
DPO
Phần thưởng
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

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
DPO
Phần thưởng
GRPO
RLOO
KTO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb

Khởi chạy với:

trl sft --config sft_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.

SFT
DPO
Phần thưởng
GRPO
RLOO
KTO
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: 4

Khởi chạy với:

trl sft --config sft_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"
}
SFT
DPO
Phần thưởng
GRPO
RLOO
KTO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --deepspeed examples/deepspeed_configs/zero2.json  # or --fsdp

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
deepspeed: examples/deepspeed_configs/zero2.json  # or fsdp: true

Khởi chạy với:

trl sft --config sft_config.yaml

Trước TRL v2.0.0, trl vẫn khởi động thông qua accelerate launch khi nhận được các đối số mà chỉ accelerate launch mới biết, chẳng hạn như --num_processes hoặc --accelerate_config, hoặc khi tồn tại tệp mặc định của accelerate 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
DPO
Phần thưởng
GRPO
RLOO
KTO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
datasets:
  - path: stanfordnlp/imdb
  - path: roneneldan/TinyStories

Khởi chạy với:

trl sft --config sft_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 installed

Thông tin này là bắt buộc khi báo cáo sự cố.

Update on GitHub