跳转到主要内容

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知识蒸馏
genericdefault 的别名。三者(defaultsftgeneric)产生相同的行为。
PPO 训练器要求:PPO 需要 --rl-reward-model-path(训练好的奖励模型路径)或 --model-ref(用于 KL 散度的参考模型)。完整文档请参阅 PPO 训练

参数组

参数按逻辑分组:

基本参数

ParameterDescriptionDefault
--modelBase model to fine-tunegoogle/gemma-3-270m
--data-pathPath to training datadata
--project-nameOutput directory nameproject-name
--train-splitTraining data splittrain
--valid-splitValidation data splitNone
始终指定这些参数:虽然 --model--data-path--project-name 有默认值,但您应该始终根据您的用例明确设置它们。--project-name 参数设置输出文件夹 - 使用 --project-name ./models/my-experiment 这样的路径来控制训练好的模型保存位置。

训练配置

ParameterDescriptionDefault
--trainerTraining methoddefault
--epochsNumber of training epochs1
--batch-sizeTraining batch size2
--lrLearning rate3e-5
--mixed-precisionfp16/bf16/NoneNone
--gradient-accumulationAccumulation steps4
--warmup-ratioWarmup ratio0.1
--optimizerOptimizeradamw_torch
--schedulerLR schedulerlinear
--weight-decayWeight decay0.0
--max-grad-normMax gradient norm1.0
--seedRandom seed42

检查点与评估

ParameterDescriptionDefault
--eval-strategyWhen to evaluate (epoch, steps, no)epoch
--save-strategyWhen to save (epoch, steps, no)epoch
--save-stepsSave every N steps (if save-strategy=steps)500
--save-total-limitMax checkpoints to keep1
--logging-stepsLog every N steps (-1 for auto)-1

性能与内存

ParameterDescriptionDefault
--auto-find-batch-sizeAutomatically find optimal batch sizeFalse
--disable-gradient-checkpointingDisable memory optimizationFalse
--unslothUse Unsloth for faster training (SFT only, llama/mistral/gemma/qwen2)False
--use-sharegpt-mappingUse Unsloth’s ShareGPT mappingFalse
--use-flash-attention-2Use Flash Attention 2 for faster trainingFalse
--attn-implementationAttention implementation (eager, sdpa, flash_attention_2)None
Unsloth 要求:Unsloth 仅适用于 sft/default 训练器和特定模型架构(llama、mistral、gemma、qwen2)。详细信息请参阅 Unsloth 集成

后端与分布式

ParameterDescriptionDefault
--backendWhere to run (local, spaces)local
--distributed-backendDistribution 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 参数

ParameterDescriptionDefault
--peftEnable LoRA trainingFalse
--lora-rLoRA rank16
--lora-alphaLoRA alpha32
--lora-dropoutLoRA dropout0.05
--target-modulesModules to targetall-linear
--quantizationint4/int8 quantizationNone
--merge-adapterMerge LoRA after trainingTrue

数据处理

ParameterDescriptionDefault
--text-columnText column nametext
--block-sizeMax sequence length-1 (model default)
--model-max-lengthMaximum model input length2048
--paddingPadding side (left or right)right
--add-eos-tokenAppend EOS tokenTrue
--chat-templateChat template to useAuto by trainer
--packingEnable sequence packing (requires flash attention)None
--auto-convert-datasetAuto-detect and convert dataset formatFalse
--max-samplesLimit dataset size for testingNone
聊天模板自动选择: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

下一步