mirror of
https://github.com/hiyouga/LLaMA-Factory.git
synced 2026-09-26 17:35:43 +08:00
5.7 KiB
5.7 KiB
训练参数
TrainingArguments
训练过程与精度
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
output_dir |
str |
outputs/<uuid> |
输出目录 |
micro_batch_size |
int |
1 |
基础 micro-batch 大小 |
global_batch_size |
int | None |
None |
默认 dp_size × micro_batch_size |
cutoff_len |
int |
2048 |
最大序列长度 |
learning_rate |
float |
1e-4 |
训练及优化器插件使用的学习率 |
num_train_epochs |
int |
3 |
训练轮数 |
max_steps |
int | None |
None |
设置后使用 step 作为终止条件 |
max_grad_norm |
float |
1.0 |
梯度裁剪阈值 |
bf16 |
bool |
true |
是否使用 bf16 |
seed |
int |
42 |
随机种子 |
full_determinism |
bool |
false |
是否启用完整确定性模式 |
global_batch_size 与 micro_batch_size 共同决定每次参数更新需要累积多少个 micro-batch。省略 global_batch_size 时,每个 DP 进程每次更新处理一个 micro-batch;显式设置时,它必须能被 dp_size × micro_batch_size 整除,每个进程的累积次数为 global_batch_size / (dp_size × micro_batch_size)。
例如,dp_size: 4、micro_batch_size: 2、global_batch_size: 32 对应每个 DP 进程累积 4 个 micro-batch。固定样本数策略下,一次更新共使用 32 条样本;动态策略中的实际样本数随长度变化,global_batch_size 仍决定累积次数,token 预算见批处理策略。
批处理配置
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
batching_strategy |
str |
normal |
normal、padding_free、dynamic_batching 或 dynamic_padding_free |
batching_workers |
int |
16 |
数据加载 worker 数 |
enable_activation_checkpointing |
bool |
true |
是否启用激活值重算 |
各策略的 token 预算和使用约束见批处理策略。
分布式与优化器
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dist_config |
dict | None |
None |
FSDP2、FSDPTurbo 或 DeepSpeed 配置 |
dp_size |
int | None |
None |
默认由 world size 和 cp_size 推导 |
cp_size |
int |
1 |
Context Parallel 大小 |
cp_mode |
str |
ulysses |
Context Parallel 实现 |
mp_replicate_size |
int |
1 |
FSDP 二维 Mesh 的参数复制维度大小 |
mp_shard_size |
int | None |
None |
FSDP 二维 Mesh 的参数分片维度大小;默认由 world size 推导 |
dist_timeout |
int |
18000 |
进程组初始化超时,秒 |
optim_config |
dict | None |
None |
优化器插件 |
lr_scheduler_config |
dict | None |
None |
学习率调度插件;当前没有内置实现 |
Checkpoint 与日志配置
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
resume_from_checkpoint |
str | None |
None |
checkpoint 路径或 auto |
save_steps |
int | None |
None |
每 N 个全局 step 保存 |
save_epochs |
float | None |
None |
每 N 个 epoch 保存 |
save_ckpt_as_hf |
bool |
false |
是否在中间 checkpoint 中额外保存 HF 格式模型 |
save_total_limit |
int | None |
None |
最多保留数量 |
logging_steps |
int |
1 |
日志间隔 |
偏好优化参数
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
pref_loss |
str |
sigmoid |
sigmoid、orpo 或 simpo |
pref_beta |
float |
0.1 |
DPO beta |
pref_ftx |
float |
0.0 |
SFT 损失系数 |
simpo_gamma |
float |
0.5 |
SimPO reward margin |
dpo_label_smoothing |
float |
0.0 |
cDPO label smoothing |
ld_alpha |
float | None |
None |
LD-DPO 长度差异权重 |
dist_config
FSDP2
设置 name: fsdp2:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
reshard_after_forward |
bool |
true |
forward 后是否重新分片 |
offload_params |
bool |
false |
是否 offload 参数 |
pin_memory |
bool |
true |
是否使用 pinned memory |
dcp_path |
str | None |
None |
初始化 DCP 权重路径 |
DeepSpeed
设置 name: deepspeed:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
config_file |
str |
必填 | DeepSpeed JSON 配置 |
FSDPTurbo
设置 name: fsdpturbo:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
reshard_after_forward |
bool |
true |
forward 后是否重新分片 |
offload_params |
bool |
false |
是否 offload 参数 |
pin_memory |
bool |
true |
是否使用 pinned memory |
dcp_path |
str | None |
None |
初始化 DCP 权重路径 |
ep_size |
int |
1 |
专家并行组大小 |
ep_dispatcher |
str |
eager |
专家 token dispatcher |
fsdp_ignored_modules |
list[str] |
[] |
外层 FSDP2 忽略的额外模块 |
hook_modules |
list[str] |
[] |
EFSDP hook 的模块模式 |
fsdp_implementation |
str |
native |
native 或 custom |
dp_size、cp_size、mp_replicate_size 和 mp_shard_size 是 TrainingArguments 字段,不放在 dist_config 中。
optim_config
设置 name: muon:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
wd |
float |
0.1 |
weight decay |
momentum |
float |
0.95 |
Muon momentum |
nesterov |
bool |
true |
是否启用 Nesterov |
ns_steps |
int |
5 |
Newton-Schulz 步数 |
adamw_betas |
list[float] |
[0.9, 0.95] |
内部 AdamW betas |
adamw_eps |
float |
1e-8 |
内部 AdamW epsilon |
学习率统一使用顶层 learning_rate。
Muon 的完整配置示例见优化器。