TRL 文件

命令列介面 (CLI)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

命令列介面 (CLI)

TRL 提供了一個強大的命令列介面(CLI),用於使用監督式微調(SFT)、直接偏好最佳化(DPO)等方法來微調大型語言模型(LLM)。CLI 抽象了大量的樣板程式碼,讓您能夠快速且可復現地啟動訓練任務。

當前支援的命令有

訓練命令

  • trl dpo: 使用 DPO 微調 LLM
  • trl grpo: 使用 GRPO 微調 LLM
  • trl kto: 使用 KTO 微調 LLM
  • trl sft: 使用 SFT 微調 LLM

其他命令

  • trl env: 獲取系統資訊
  • trl vllm-serve: 使用 vLLM 提供模型服務

使用 TRL CLI 進行微調

基本用法

你可以透過指定模型和資料集等必需引數,直接從 CLI 啟動訓練。

SFT
DPO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb

使用配置檔案

為了使你的 CLI 命令保持整潔和可復現,你可以在一個 YAML 配置檔案中定義所有的訓練引數。

SFT
DPO
# sft_config.yaml
model_name_or_path: Qwen/Qwen2.5-0.5B
dataset_name: stanfordnlp/imdb

使用以下命令啟動

trl sft --config sft_config.yaml

使用 Accelerate 進行擴充套件

TRL CLI 原生支援 🤗 Accelerate,這使得在多個 GPU、多臺機器上擴充套件訓練或使用像 DeepSpeed 這樣的高階設定變得很容易——所有這些都可以透過同一個 CLI 完成。

你可以將任何 accelerate launch 引數直接傳遞給 trl,例如 --num_processes。更多資訊請參見使用 accelerate launch

內聯式 SFT
使用配置檔案的 SFT
內聯式 DPO
使用配置檔案的 DPO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --num_processes 4

使用 --accelerate_config 進行 Accelerate 配置

--accelerate_config 標誌讓你可以輕鬆地使用 🤗 Accelerate 配置分散式訓練。這個標誌接受以下兩種形式:

  • 一個預定義的配置檔案的名稱(內置於 TRL),或
  • 一個自定義 Accelerate YAML 配置檔案的路徑。

預定義配置檔案

TRL 提供了幾個即用型的 Accelerate 配置,以簡化常見的訓練設定

名稱 描述
fsdp1 完全分片資料並行階段 1 (Fully Sharded Data Parallel Stage 1)
fsdp2 完全分片資料並行階段 2 (Fully Sharded Data Parallel Stage 2)
zero1 DeepSpeed ZeRO 階段 1
zero2 DeepSpeed ZeRO 階段 2
zero3 DeepSpeed ZeRO 階段 3
multi_gpu 多 GPU 訓練
single_gpu 單 GPU 訓練

要使用其中一個,只需將名稱傳遞給 --accelerate_config。TRL 會自動從 trl/accelerate_config/ 載入相應的配置檔案。

用法示例

內聯式 SFT
使用配置檔案的 SFT
內聯式 DPO
使用配置檔案的 DPO
trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name stanfordnlp/imdb \
  --accelerate_config zero2  # or path/to/my/accelerate/config.yaml

獲取系統資訊

你可以透過執行以下命令來獲取系統資訊

trl env

這將打印出系統資訊,包括 GPU 資訊、CUDA 版本、PyTorch 版本、transformers 版本、TRL 版本,以及任何已安裝的可選依賴項。

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

在報告問題時,需要提供這些資訊。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.