LLM 训练
aitraining llm 命令训练大语言模型,支持多种训练器和技术。
快速开始
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--trainer sft
可用训练器
| 训练器 | 描述 |
|---|
default / sft / generic | 监督微调 |
dpo | 直接偏好优化 |
orpo | 优势比偏好优化 |
ppo | 近端策略优化 |
reward | 奖励模型训练 |
distillation | 知识蒸馏 |
generic 是 default 的别名。三者(default、sft、generic)产生相同的行为。
PPO 训练器要求:PPO 需要 --rl-reward-model-path(训练好的奖励模型路径)或 --model-ref(用于 KL 散度的参考模型)。完整文档请参阅 PPO 训练。
参数组
参数按逻辑分组:
基本参数
| Parameter | Description | Default |
|---|
--model | Base model to fine-tune | google/gemma-3-270m |
--data-path | Path to training data | data |
--project-name | Output directory name | project-name |
--train-split | Training data split | train |
--valid-split | Validation data split | None |
始终指定这些参数:虽然 --model、--data-path 和 --project-name 有默认值,但您应该始终根据您的用例明确设置它们。--project-name 参数设置输出文件夹 - 使用 --project-name ./models/my-experiment 这样的路径来控制训练好的模型保存位置。
训练配置
| Parameter | Description | Default |
|---|
--trainer | Training method | default |
--epochs | Number of training epochs | 1 |
--batch-size | Training batch size | 2 |
--lr | Learning rate | 3e-5 |
--mixed-precision | fp16/bf16/None | None |
--gradient-accumulation | Accumulation steps | 4 |
--warmup-ratio | Warmup ratio | 0.1 |
--optimizer | Optimizer | adamw_torch |
--scheduler | LR scheduler | linear |
--weight-decay | Weight decay | 0.0 |
--max-grad-norm | Max gradient norm | 1.0 |
--seed | Random seed | 42 |
检查点与评估
| Parameter | Description | Default |
|---|
--eval-strategy | When to evaluate (epoch, steps, no) | epoch |
--save-strategy | When to save (epoch, steps, no) | epoch |
--save-steps | Save every N steps (if save-strategy=steps) | 500 |
--save-total-limit | Max checkpoints to keep | 1 |
--logging-steps | Log every N steps (-1 for auto) | -1 |
性能与内存
| Parameter | Description | Default |
|---|
--auto-find-batch-size | Automatically find optimal batch size | False |
--disable-gradient-checkpointing | Disable memory optimization | False |
--unsloth | Use Unsloth for faster training (SFT only, llama/mistral/gemma/qwen2) | False |
--use-sharegpt-mapping | Use Unsloth’s ShareGPT mapping | False |
--use-flash-attention-2 | Use Flash Attention 2 for faster training | False |
--attn-implementation | Attention implementation (eager, sdpa, flash_attention_2) | None |
Unsloth 要求:Unsloth 仅适用于 sft/default 训练器和特定模型架构(llama、mistral、gemma、qwen2)。详细信息请参阅 Unsloth 集成。
后端与分布式
| Parameter | Description | Default |
|---|
--backend | Where to run (local, spaces) | local |
--distributed-backend | Distribution backend (ddp, deepspeed) | None |
多 GPU 行为:使用多个 GPU 且未设置 --distributed-backend 时,会自动使用 DDP。设置 --distributed-backend deepspeed 以进行 DeepSpeed Zero-3 优化。训练通过 Accelerate 启动。
DeepSpeed 检查点:使用 DeepSpeed 时,模型保存使用 accelerator.get_state_dict() 并解包模型。PEFT 适配器保存在 DeepSpeed 下的处理方式不同。
PEFT/LoRA 参数
| Parameter | Description | Default |
|---|
--peft | Enable LoRA training | False |
--lora-r | LoRA rank | 16 |
--lora-alpha | LoRA alpha | 32 |
--lora-dropout | LoRA dropout | 0.05 |
--target-modules | Modules to target | all-linear |
--quantization | int4/int8 quantization | None |
--merge-adapter | Merge LoRA after training | True |
数据处理
| Parameter | Description | Default |
|---|
--text-column | Text column name | text |
--block-size | Max sequence length | -1 (model default) |
--model-max-length | Maximum model input length | 2048 |
--padding | Padding side (left or right) | right |
--add-eos-token | Append EOS token | True |
--chat-template | Chat template to use | Auto by trainer |
--packing | Enable sequence packing (requires flash attention) | None |
--auto-convert-dataset | Auto-detect and convert dataset format | False |
--max-samples | Limit dataset size for testing | None |
聊天模板自动选择:SFT/DPO/ORPO/Reward 训练器默认为 tokenizer(模型的内置模板)。对于纯文本训练,使用 --chat-template none。
训练示例
使用 LoRA 的 SFT
aitraining llm --train \
--model meta-llama/Llama-3.2-1B \
--data-path ./conversations.jsonl \
--project-name llama-sft \
--trainer sft \
--peft \
--lora-r 16 \
--lora-alpha 32 \
--epochs 3 \
--batch-size 4
DPO 训练
对于 DPO,您必须指定提示、选择和拒绝响应的列名:
aitraining llm --train \
--model meta-llama/Llama-3.2-1B \
--data-path ./preferences.jsonl \
--project-name llama-dpo \
--trainer dpo \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected \
--dpo-beta 0.1 \
--peft \
--lora-r 16
DPO 和 ORPO 需要指定 --prompt-text-column 和 --rejected-text-column。
ORPO 训练
ORPO 结合了 SFT 和偏好优化:
aitraining llm --train \
--model google/gemma-2-2b \
--data-path ./preferences.jsonl \
--project-name gemma-orpo \
--trainer orpo \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected \
--peft
知识蒸馏
训练较小的模型以模仿较大的模型:
aitraining llm --train \
--model google/gemma-3-270m \
--teacher-model google/gemma-2-2b \
--data-path ./prompts.jsonl \
--project-name distilled-model \
--use-distillation \
--distill-temperature 3.0
蒸馏默认值:--distill-temperature 3.0、--distill-alpha 0.7、--distill-max-teacher-length 512
日志记录与监控
Weights & Biases(默认)
带有 LEET 可视化器的 W&B 日志记录默认启用。LEET 可视化器直接在您的终端中显示实时训练指标。
# W&B is on by default - just run training
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model
To disable W&B or the visualizer:
# Disable W&B logging entirely
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--log none
# Keep W&B but disable terminal visualizer
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--no-wandb-visualizer
TensorBoard
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--log tensorboard
推送到 Hugging Face Hub
上传您训练好的模型:
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--push-to-hub \
--username your-username \
--token $HF_TOKEN
存储库默认创建为私有。存储库将命名为 {username}/{project-name}。
高级选项
超参数扫描
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name sweep-experiment \
--use-sweep \
--sweep-backend optuna \
--sweep-n-trials 10
增强评估
aitraining llm --train \
--model google/gemma-3-270m \
--data-path ./data \
--project-name my-model \
--use-enhanced-eval \
--eval-metrics "perplexity,bleu"
查看所有参数
查看特定训练器的所有参数:
aitraining llm --trainer sft --help
aitraining llm --trainer dpo --help
下一步