跳转到主要内容

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近端策略优化
grpo群组相对策略优化(自定义环境)
reward奖励模型训练
distillation知识蒸馏
genericdefault 的别名。三者(defaultsftgeneric)产生相同的行为。
PPO 训练器要求:PPO 需要 --rl-reward-model-path(训练好的奖励模型路径)或 --model-ref(用于 KL 散度的参考模型)。完整文档请参阅 PPO 训练
GRPO 训练器要求:GRPO 需要 --rl-env-module(Python 模块路径)和 --rl-env-class(类名)来指定自定义环境。完整文档请参阅 GRPO 训练

参数组

参数按逻辑分组:

基本参数

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
--ddp-timeoutDDP/NCCL timeout in seconds7200
多 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 lengthAuto-detect from model
--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
--save-processed-dataSave processed data: auto, local, hub, both, noneauto
聊天模板自动选择:SFT/DPO/ORPO/Reward 训练器默认为 tokenizer(模型的内置模板)。对于纯文本训练,使用 --chat-template none
处理后数据保存:默认(auto),处理后的数据保存在本地 {project}/data_processed/。如果源数据集来自 Hub,也会作为私有数据集推送。原始列会重命名为 _original_* 以防止冲突。

训练示例

使用 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

GRPO 训练

使用自定义奖励环境进行 Group Relative Policy Optimization 训练:
aitraining llm --train \
  --model deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B \
  --trainer grpo \
  --rl-env-module my_envs.hotel_env \
  --rl-env-class HotelEnv \
  --rl-num-generations 4 \
  --rl-max-new-tokens 256 \
  --peft \
  --lr 1e-5
GRPO 为每个提示生成多个补全,通过您的环境评分(0-1),并优化策略。有关环境接口详情,请参阅 GRPO 训练

知识蒸馏

训练较小的模型以模仿较大的模型:
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}

自定义存储库名称或组织

使用 --repo-id 推送到特定存储库,适用于:
  • 推送到组织而不是个人账户
  • 使用与本地 project-name 不同的存储库名称
# 推送到组织
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name ./local-training-output \
  --push-to-hub \
  --repo-id my-organization/my-custom-model-name \
  --token $HF_TOKEN

# 使用不同名称推送到个人账户
aitraining llm --train \
  --model google/gemma-3-270m \
  --data-path ./data \
  --project-name ./experiment-v3 \
  --push-to-hub \
  --repo-id your-username/production-model \
  --token $HF_TOKEN
参数描述默认值
--push-to-hub启用推送到 HubFalse
--usernameHF 用户名(用于默认存储库命名)None
--tokenHF API 令牌None
--repo-id完整存储库 ID(如 org/model-name{username}/{project-name}
使用 --repo-id 时,不需要 --username,因为存储库 ID 已经指定了目标位置。但是,您仍然需要 --token 进行身份验证。

高级选项

超参数扫描

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

下一步