LLaMA-Factory 快速入门(四):命令参数汇总(train、chat、eval、export等)
1. 引言
LLaMa-Factory 命令行的参数接近600个,博主整理了所有参数的含义,方便大家快速查询。
2. 参数汇总
通过help命令,可以看到LLaMa-Factory支持如下的命令:
---------------------------------------------------------------------- | Usage: || llamafactory-cli api -h: launch an OpenAI-style API server || llamafactory-cli chat -h: launch a chat interface in CLI || llamafactory-cli eval -h: evaluate models || llamafactory-cli export -h: merge LoRA adapters and export model || llamafactory-cli train -h: train models || llamafactory-cli webchat -h: launch a chat interface in Web UI || llamafactory-cli webui: launch LlamaBoard || llamafactory-cli version: show version info | ---------------------------------------------------------------------- 接下来,整理每个命令的参数,主要分为几类:
- 通用参数(指:chat/webchat/api/export/eval/train支持的参数)
- eval、train除外的参数(指:chat/webchat/api/export支持的参数)
- eval参数(指:eval支持的参数)
- train参数(指:train支持的参数)
2.1 通用参数
通用参数指的是 chat/webchat/api/export/eval/train 支持的参数,内容如下:
| 命令 | 描述 | 默认值 |
|---|---|---|
| –model_name_or_path | 模型权重路径或 Hugging Face / ModelScope 模型标识 | None |
| –adapter_name_or_path | Adapter 权重路径或 Hugging Face 模型标识,可用逗号分隔多个 Adapter | None |
| –adapter_folder | 存放 Adapter 权重的文件夹 | None |
| –cache_dir | 下载的预训练模型缓存目录 | None |
| –use_fast_tokenizer | 是否使用 fast tokenizer(基于 tokenizers 库) | TRUE |
| –no_use_fast_tokenizer | 不使用 fast tokenizer | FALSE |
| –resize_vocab | 是否调整 tokenizer 词表及 embedding 层 | FALSE |
| –split_special_tokens | 是否在分词时拆分特殊 token | FALSE |
| –add_tokens | 添加非特殊 token,可用逗号分隔 | None |
| –add_special_tokens | 添加特殊 token,可用逗号分隔 | None |
| –model_revision | 使用的模型版本(分支名、tag 或 commit id) | main |
| –low_cpu_mem_usage | 是否使用内存高效加载模型 | TRUE |
| –no_low_cpu_mem_usage | 不使用内存高效加载模型 | FALSE |
| –rope_scaling | RoPE embedding 的缩放策略,可选 linear/dynamic/yarn/llama3 | None |
| –flash_attn | 启用 FlashAttention 加速训练和推理,可选 auto/disabled/sdpa/fa2 | AttentionFunction.AUTO |
| –shift_attn | 启用 LongLoRA 提出的 shift short attention (S²-Attn) | FALSE |
| –mixture_of_depths | 将模型转换为 MoD 或加载 MoD 模型,可选 convert/load | None |
| –use_unsloth | 是否使用 unsloth 优化 LoRA 训练 | FALSE |
| –use_unsloth_gc | 是否使用 unsloth 梯度检查点(无需安装 unsloth) | FALSE |
| –enable_liger_kernel | 是否启用 liger kernel 加速训练 | FALSE |
| –moe_aux_loss_coef | MoE 模型中辅助路由损失系数 | None |
| –disable_gradient_checkpointing | 是否禁用梯度检查点 | FALSE |
| –use_reentrant_gc | 是否使用可重入梯度检查点 | TRUE |
| –no_use_reentrant_gc | 不使用可重入梯度检查点 | FALSE |
| –upcast_layernorm | 是否将 layernorm 权重提升为 fp32 | FALSE |
| –upcast_lmhead_output | 是否将 lm_head 输出提升为 fp32 | FALSE |
| –train_from_scratch | 是否随机初始化模型权重 | FALSE |
| –infer_backend | 推理使用的后端,可选 huggingface/vllm/sglang | EngineName.HF |
| –offload_folder | 模型权重卸载目录 | offload |
| –use_cache | 推理时是否使用 KV 缓存 | TRUE |
| –no_use_cache | 推理时不使用 KV 缓存 | FALSE |
| –infer_dtype | 推理时模型权重和激活的数据类型,可选 auto/float16/bfloat16/float32 | auto |
| –hf_hub_token | Hugging Face Hub 登录认证 token | None |
| –ms_hub_token | ModelScope Hub 登录认证 token | None |
| –om_hub_token | Modelers Hub 登录认证 token | None |
| –print_param_status | 调试用,打印模型参数状态 | FALSE |
| –trust_remote_code | 是否信任从 Hub 下载的代码执行 | FALSE |
| –quantization_method | 在线量化方法,可选 bnb/gptq/awq/aqlm/quanto/eetq/hqq/mxfp4 | QuantizationMethod.BNB |
| –quantization_bit | 在线量化位数 | None |
| –quantization_type | BitsAndBytes int4 训练量化类型,可选 fp4/nf4 | nf4 |
| –double_quantization | 是否使用双量化 | TRUE |
| –no_double_quantization | 不使用双量化 | FALSE |
| –quantization_device_map | 4-bit 量化模型设备映射,需 bitsandbytes>=0.43.0 | None |
| –image_max_pixels | 图像输入最大像素数 | 589824 |
| –image_min_pixels | 图像输入最小像素数 | 1024 |
| –image_do_pan_and_scan | 对 Gemma3 图像使用 pan & scan | FALSE |
| –crop_to_patches | 是否裁剪图像为 patches,用于 internvl | FALSE |
| –video_max_pixels | 视频输入最大像素数 | 65536 |
| –video_min_pixels | 视频输入最小像素数 | 256 |
| –video_fps | 视频采样帧率 | 2 |
| –video_maxlen | 视频最大采样帧数 | 128 |
| –use_audio_in_video | 视频输入是否使用音频 | FALSE |
| –audio_sampling_rate | 音频采样率 | 16000 |
| –export_dir | 模型导出目录 | None |
| –export_size | 模型导出分片大小(GB) | 5 |
| –export_device | 模型导出设备,可选 cpu/auto | cpu |
| –export_quantization_bit | 导出模型量化位数 | None |
| –export_quantization_dataset | 用于导出量化的 dataset 或 dataset 名称 | None |
| –export_quantization_nsamples | 量化使用样本数 | 128 |
| –export_quantization_maxlen | 量化输入最大长度 | 1024 |
| –export_legacy_format | 是否保存 .bin 而非 .safetensors | FALSE |
| –export_hub_model_id | 推送至 Hugging Face hub 的仓库名 | None |
| –vllm_maxlen | vLLM 引擎最大序列长度(prompt + response) | 4096 |
| –vllm_gpu_util | vLLM 使用 GPU 内存比例 (0-1) | 0.7 |
| –vllm_enforce_eager | vLLM 是否禁用 CUDA graph | FALSE |
| –vllm_max_lora_rank | vLLM 所有 LoRA 最大 rank | 32 |
| –vllm_config | vLLM 引擎初始化配置,JSON 字符串 | None |
| –sglang_maxlen | SGLang 引擎最大序列长度(prompt + response) | 4096 |
| –sglang_mem_fraction | SGLang 引擎使用内存比例 (0-1) | 0.7 |
| –sglang_tp_size | SGLang 引擎张量并行大小 | -1 |
| –sglang_config | SGLang 引擎初始化配置,JSON 字符串 | None |
| –sglang_lora_backend | Lora 模块 GEMM 内核后端,可选 triton/flashinfer | triton |
| –template | 构建训练或推理 prompt 使用的模板 | None |
| –dataset | 训练使用的 dataset 名称,可用逗号分隔 | None |
| –eval_dataset | 评估使用的 dataset 名称,可用逗号分隔 | None |
| –dataset_dir | dataset 文件夹路径 | data |
| –media_dir | 图片、视频或音频存放路径,默认使用 dataset_dir | None |
| –cutoff_len | 数据集分词输入截断长度 | 2048 |
| –train_on_prompt | 是否在训练时禁用 prompt mask | FALSE |
| –mask_history | 是否只训练最后一轮,屏蔽历史 | FALSE |
| –streaming | 启用 dataset streaming | FALSE |
| –buffer_size | dataset streaming 缓冲区大小 | 16384 |
| –mix_strategy | dataset 混合策略,可选 concat/interleave_under/interleave_over | concat |
| –interleave_probs | 数据采样概率,可用逗号分隔多个 dataset | None |
| –overwrite_cache | 是否覆盖缓存训练/评估集 | FALSE |
| –preprocessing_batch_size | 预处理每组样本数量 | 1000 |
| –preprocessing_num_workers | 预处理进程数量 | None |
| –max_samples | 调试用,每个 dataset 截断样本数 | None |
| –eval_num_beams | 评估时使用 beam 数,会传给 model.generate | None |
| –ignore_pad_token_for_loss | 是否在计算 loss 时忽略 pad token | TRUE |
| –no_ignore_pad_token_for_loss | 计算 loss 时不忽略 pad token | FALSE |
| –val_size | 验证集大小,可为整数或 [0,1) 浮点 | 0 |
| –eval_on_each_dataset | 是否对每个 dataset 分别评估 | FALSE |
| –packing | 启用训练序列 packing,预训练自动启用 | None |
| –neat_packing | 启用无 cross-attention 的 sequence packing | FALSE |
| –tool_format | 构建 function calling 示例使用的工具格式 | None |
| –default_system | 覆盖模板中的默认系统信息 | None |
| –enable_thinking | 是否启用推理模型的思考模式 | TRUE |
| –no_enable_thinking | 不启用推理模型的思考模式 | FALSE |
| –tokenized_path | 保存或加载分词后的 dataset 路径 | None |
| –data_shared_file_system | 是否使用共享文件系统存储 dataset | FALSE |
2.2 chat/webchat/api/export 支持的参数
chat/webchat/api/export 支持的参数如下:
| 命令 | 描述 | 默认值 |
|---|---|---|
| –freeze-trainable-layers | 冻结(部分参数)微调时可训练的层数。正数表示最后 n 层可训练,负数表示前 n 层可训练。 | 2 |
| –freeze-trainable-modules | 冻结微调时可训练的模块名称,多个模块用逗号分隔,使用 all 表示所有可用模块。 | all |
| –freeze-extra-modules | 除隐藏层外设置为可训练的模块名称,多个模块用逗号分隔。 | None |
| –additional_target | 除 LoRA 层外,额外设置为可训练并保存的模块名称,多个模块用逗号分隔。 | None |
| –lora_alpha | LoRA 微调的缩放因子,默认值为 lora_rank * 2。 | None |
| –lora_dropout | LoRA 微调的 dropout 比例。 | 0 |
| –lora_rank | LoRA 微调的内在维度。 | 8 |
| –lora_target | 施加 LoRA 的目标模块名称,多个模块用逗号分隔,all 表示所有线性模块。 | all |
| –loraplus_lr_ratio | LoRA plus 学习率比例(lr_B / lr_A)。 | None |
| –loraplus_lr_embedding | LoRA plus 的 embedding 层学习率。 | 1.00E-06 |
| –use_rslora | 是否使用 LoRA 的秩稳定缩放因子。 | FALSE |
| –use_dora | 是否使用权重分解 LoRA 方法(DoRA)。 | FALSE |
| –pissa_init | 是否初始化 PiSSA adapter。 | FALSE |
| –pissa_iter | PiSSA 中 FSVD 的迭代步数,-1 表示禁用。 | 16 |
| –pissa_convert | 是否将 PiSSA adapter 转换为普通 LoRA adapter。 | FALSE |
| –create_new_adapter | 是否创建新的随机初始化 adapter。 | FALSE |
| –pref_beta | DPO 偏好损失中的 beta 参数。 | 0.1 |
| –pref_ftx | DPO 训练中的监督微调损失系数。 | 0 |
| –pref_loss | DPO 损失类型,可选:sigmoid、hinge、ipo、kto_pair、orpo、simpo。 | sigmoid |
| –dpo_label_smoothing | cDPO 中的稳健标签平滑参数,范围 0~0.5。 | 0 |
| –kto_chosen_weight | KTO 训练中期望损失的权重系数。 | 1 |
| –kto_rejected_weight | KTO 训练中非期望损失的权重系数。 | 1 |
| –simpo_gamma | SimPO 损失中的目标奖励边际项。 | 0.5 |
| –ppo_buffer_size | PPO 优化步骤中经验缓冲区的小批次数量。 | 1 |
| –ppo_epochs | PPO 优化步骤的训练轮数。 | 4 |
| –ppo_score_norm | 是否在 PPO 训练中使用分数归一化。 | FALSE |
| –ppo_target | PPO 训练中自适应 KL 控制的目标 KL 值。 | 6 |
| –ppo_whiten_rewards | 是否在 PPO 训练中对奖励进行白化处理。 | FALSE |
| –ref_model | PPO 或 DPO 训练使用的参考模型路径。 | None |
| –ref_model_adapters | 参考模型的 adapter 路径。 | None |
| –ref_model_quantization_bit | 参考模型量化的位数。 | None |
| –reward_model | PPO 训练使用的奖励模型路径。 | None |
| –reward_model_adapters | 奖励模型的 adapter 路径。 | None |
| –reward_model_quantization_bit | 奖励模型量化的位数。 | None |
| –reward_model_type | PPO 训练中奖励模型类型,可选:lora、full、api。 | lora |
| –ld_alpha | LD-DPO 论文中的 alpha 参数,用于控制响应中冗余 token 的权重。 | None |
| –use_galore | 是否使用梯度低秩投影 GaLore。 | FALSE |
| –galore_target | 应用 GaLore 的模块名称,多个用逗号分隔,all 表示所有线性模块。 | all |
| –galore_rank | GaLore 梯度的秩。 | 16 |
| –galore-update-interval | 更新 GaLore 投影的步数间隔。 | 200 |
| –galore-scale | GaLore 缩放系数。 | 2 |
| –galore-proj-type | GaLore 投影类型,可选:std、reverse_std、right、left、full。 | std |
| –galore-layerwise | 是否启用分层更新以节省内存。 | FALSE |
| –use-apollo | 是否使用 APOLLO 优化器。 | FALSE |
| –apollo-target | 应用 APOLLO 的模块名称,多个用逗号分隔,all 表示所有线性模块。 | all |
| –apollo-rank | APOLLO 梯度的秩。 | 16 |
| –apollo-update-interval | 更新 APOLLO 投影的步数间隔。 | 200 |
| –apollo-scale | APOLLO 缩放系数。 | 32 |
| –apollo-proj | APOLLO 低秩投影算法类型,可选:svd、random。 | random |
| –apollo-proj-type | APOLLO 投影类型,可选:std、right、left。 | std |
| –apollo-scale-type | APOLLO 缩放类型,可选:channel、tensor。 | channel |
| –apollo-layerwise | 是否启用分层更新以节省内存。 | FALSE |
| –apollo-scale-front | 是否在梯度缩放前使用范数增长限制器。 | FALSE |
| –use-badam | 是否使用 BAdam 优化器。 | FALSE |
| –badam-mode | BAdam 使用层级或比例方式,可选:layer、ratio。 | layer |
| –badam-start-block | 层级 BAdam 的起始块索引。 | None |
| –badam-switch-mode | 层级 BAdam 的块更新策略,可选:ascending、descending、random、fixed。 | ascending |
| –badam-switch-interval | 更新层级 BAdam 块的步数,-1 表示禁用。 | 50 |
| –badam-update-ratio | 比例 BAdam 的更新比例。 | 0.05 |
| –badam-mask-mode | BAdam 掩码模式,可选:adjacent、scatter。 | adjacent |
| –badam-verbose | BAdam 输出级别,0:无输出,1:打印块前缀,2:打印可训练参数。 | 0 |
| –use-swanlab | 是否使用 SwanLab(实验追踪与可视化工具)。 | FALSE |
| –swanlab-project | SwanLab 项目名称。 | llamafactory |
| –swanlab-workspace | SwanLab 工作空间名称。 | None |
| –swanlab-run-name | SwanLab 实验名称。 | None |
| –swanlab-mode | SwanLab 模式,可选:cloud、local。 | cloud |
| –swanlab-api-key | SwanLab API key。 | None |
| –swanlab-logdir | SwanLab 日志目录。 | None |
| –swanlab-lark-webhook-url | SwanLab 飞书 webhook URL。 | None |
| –swanlab-lark-secret | SwanLab 飞书 secret。 | None |
| –pure-bf16 | 是否以纯 bf16 精度训练(不使用 AMP)。 | FALSE |
| –stage | 训练阶段,可选:pt、sft、rm、ppo、dpo、kto。 | sft |
| –finetuning-type | 微调方式,可选:lora、freeze、full。 | lora |
| –use-llama-pro | 是否只训练扩展块内的参数。 | FALSE |
| –use-adam-mini | 是否使用 Adam-mini 优化器。 | FALSE |
| –use-muon | 是否使用 Muon 优化器。 | FALSE |
| –freeze-vision-tower | 是否冻结 MLLM 训练中的视觉塔。 | TRUE |
| –no-freeze-vision-tower | 是否不冻结视觉塔。 | FALSE |
| –freeze-multi-modal-projector | 是否冻结 MLLM 训练中的多模态投影器。 | TRUE |
| –no-freeze-multi-modal-projector | 是否不冻结多模态投影器。 | FALSE |
| –freeze-language-model | 是否冻结语言模型。 | FALSE |
| –compute-accuracy | 是否计算评估时的 token 级准确率。 | FALSE |
| –disable-shuffling | 是否禁用训练集的随机打乱。 | FALSE |
| –early-stopping-steps | 如果 metric_for_best_model 未提升,提前停止训练的步数。 | None |
| –plot-loss | 是否保存训练损失曲线。 | FALSE |
| –include-effective-tokens-per-second | 是否计算有效 token/s。 | FALSE |
| –do-sample | 是否使用采样生成,否则使用贪心解码。 | TRUE |
| –no-do-sample | 是否不使用采样生成,否则使用贪心解码。 | FALSE |
| –temperature | 调节下一个 token 概率的温度值。 | 0.95 |
| –top-p | 保留概率总和达到 top_p 的最小 token 集。 | 0.7 |
| –top-k | top-k 过滤保留的最高概率 token 数量。 | 50 |
| –num-beams | Beam search 的 beam 数量,1 表示不使用 beam search。 | 1 |
| –max-length | 生成 token 的最大长度,可被 max_new_tokens 覆盖。 | 1024 |
| –max-new-tokens | 生成的最大 token 数量(忽略 prompt token)。 | 1024 |
| –repetition-penalty | 重复惩罚系数,1.0 表示无惩罚。 | 1 |
| –length-penalty | Beam search 中的长度指数惩罚。 | 1 |
| –skip-special-tokens | 解码时是否移除特殊 token。 | TRUE |
| –no-skip-special-tokens | 解码时是否不移除特殊 token。 | FALSE |
2.3 eval支持的参数
eval命令支持的参数如下:
| 命令 | 描述 | 默认值 |
|---|---|---|
| –task | 评估任务名称 | None |
| –task_dir | 评估数据集所在文件夹路径 | evaluation |
| –batch_size | 每个 GPU 的评估批量大小 | 4 |
| –seed | 数据加载器使用的随机种子 | 42 |
| –lang | 评估使用的语言 | en |
| –n_shot | Few-shot 学习中示例的数量 | 5 |
| –save_dir | 评估结果保存路径 | None |
| –download_mode | 评估数据集下载模式,可选 reuse_dataset_if_exists, reuse_cache_if_exists, force_redownload | DownloadMode.REUSE_DATASET_IF_EXISTS |
| –freeze_trainable_layers | 冻结微调时可训练层数。正数表示最后 n 层可训练,负数表示前 n 层可训练 | 2 |
| –freeze_trainable_modules | 冻结微调时可训练模块名称,可用逗号分隔,all 表示所有模块 | all |
| –freeze_extra_modules | 除隐藏层外额外可训练的模块名称,可逗号分隔 | None |
| –additional_target | 除 LoRA 层外,可训练并保存到最终 checkpoint 的模块名称,可逗号分隔 | None |
| –lora_alpha | LoRA 微调的缩放因子 | lora_rank * 2 |
| –lora_dropout | LoRA 微调的 dropout 率 | 0 |
| –lora_rank | LoRA 微调的内在维度 | 8 |
| –lora_target | LoRA 应用的目标模块,可逗号分隔,all 表示所有线性模块 | all |
| –loraplus_lr_ratio | LoRA plus 学习率比例 (lr_B / lr_A) | None |
| –loraplus_lr_embedding | LoRA plus 学习率用于 LoRA embedding 层 | 1.00E-06 |
| –use_rslora | 是否使用 LoRA 层的秩稳定缩放因子 | FALSE |
| –use_dora | 是否使用权重分解 LoRA 方法 (DoRA) | FALSE |
| –pissa_init | 是否初始化 PiSSA adapter | FALSE |
| –pissa_iter | PiSSA 中 FSVD 执行的迭代步数,-1 表示禁用 | 16 |
| –pissa_convert | 是否将 PiSSA adapter 转换为普通 LoRA adapter | FALSE |
| –create_new_adapter | 是否创建随机初始化的新 adapter | FALSE |
| –pref_beta | 偏好损失中的 beta 参数 | 0.1 |
| –pref_ftx | DPO 训练中监督微调损失系数 | 0 |
| –pref_loss | DPO 损失类型,可选 sigmoid, hinge, ipo, kto_pair, orpo, simpo | sigmoid |
| –dpo_label_smoothing | cDPO 中的标签平滑参数 (0~0.5) | 0 |
| –kto_chosen_weight | KTO 训练中期望损失的权重系数 | 1 |
| –kto_rejected_weight | KTO 训练中非期望损失的权重系数 | 1 |
| –simpo_gamma | SimPO 损失中的目标奖励边距项 | 0.5 |
| –ppo_buffer_size | PPO 优化步中经验缓存的 mini-batch 数 | 1 |
| –ppo_epochs | PPO 优化步中的训练轮数 | 4 |
| –ppo_score_norm | PPO 训练中是否使用得分归一化 | FALSE |
| –ppo_target | PPO 自适应 KL 控制的目标 KL 值 | 6 |
| –ppo_whiten_rewards | PPO 训练中是否对奖励进行白化 | FALSE |
| –ref_model | PPO 或 DPO 训练使用的参考模型路径 | None |
| –ref_model_adapters | 参考模型的 adapter 路径 | None |
| –ref_model_quantization_bit | 参考模型量化位数 | None |
| –reward_model | PPO 训练使用的奖励模型路径 | None |
| –reward_model_adapters | 奖励模型的 adapter 路径 | None |
| –reward_model_quantization_bit | 奖励模型量化位数 | None |
| –reward_model_type | 奖励模型类型,可选 lora, full, api | lora |
| –ld_alpha | LD-DPO 论文中的 alpha 参数,用于控制 verbose token log-prob 权重 | None |
| –use_galore | 是否使用梯度低秩投影 (GaLore) | FALSE |
| –galore_target | GaLore 应用的模块名称,可逗号分隔,all 表示所有线性模块 | all |
| –galore_rank | GaLore 梯度的秩 | 16 |
| –galore_update_interval | 更新 GaLore 投影的步数 | 200 |
| –galore_scale | GaLore 缩放系数 | 2 |
| –galore_proj_type | GaLore 投影类型,可选 std, reverse_std, right, left, full | std |
| –galore_layerwise | 是否启用按层更新以节省内存 | FALSE |
| –use_apollo | 是否使用 APOLLO 优化器 | FALSE |
| –apollo_target | APOLLO 应用的模块名称,可逗号分隔,all 表示所有线性模块 | all |
| –apollo_rank | APOLLO 梯度的秩 | 16 |
| –apollo_update_interval | 更新 APOLLO 投影的步数 | 200 |
| –apollo_scale | APOLLO 缩放系数 | 32 |
| –apollo_proj | APOLLO 低秩投影算法,可选 svd, random | random |
| –apollo_proj_type | APOLLO 投影类型,可选 std, right, left | std |
| –apollo_scale_type | APOLLO 缩放类型,可选 channel, tensor | channel |
| –apollo_layerwise | 是否启用按层更新以节省内存 | FALSE |
| –apollo_scale_front | 是否在梯度缩放前使用 norm-growth 限制器 | FALSE |
| –use_badam | 是否使用 BAdam 优化器 | FALSE |
| –badam_mode | BAdam 模式,可选 layer, ratio | layer |
| –badam_start_block | Layer-wise BAdam 的起始块索引 | None |
| –badam_switch_mode | Layer-wise BAdam 更新块策略,可选 ascending, descending, random, fixed | ascending |
| –badam_switch_interval | Layer-wise BAdam 更新块的步数,-1 表示禁用 | 50 |
| –badam_update_ratio | Ratio-wise BAdam 更新比例 | 0.05 |
| –badam_mask_mode | BAdam 掩码模式,可选 adjacent, scatter | adjacent |
| –badam_verbose | BAdam 优化器输出等级,0 无输出,1 输出块前缀,2 输出可训练参数 | 0 |
| –use_swanlab | 是否使用 SwanLab 实验追踪与可视化工具 | FALSE |
| –swanlab_project | SwanLab 项目名称 | llamafactory |
| –swanlab_workspace | SwanLab 工作区名称 | None |
| –swanlab_run_name | SwanLab 实验名称 | None |
| –swanlab_mode | SwanLab 模式,可选 cloud, local | cloud |
| –swanlab_api_key | SwanLab API key | None |
| –swanlab_logdir | SwanLab 日志目录 | None |
| –swanlab_lark_webhook_url | SwanLab 飞书 Webhook URL | None |
| –swanlab_lark_secret | SwanLab 飞书 Secret | None |
| –pure_bf16 | 是否在纯 bf16 精度下训练(不使用 AMP) | FALSE |
| –stage | 训练阶段,可选 pt, sft, rm, ppo, dpo, kto | sft |
| –finetuning_type | 微调方法,可选 lora, freeze, full | lora |
| –use_llama_pro | 是否仅让扩展块参数可训练 | FALSE |
| –use_adam_mini | 是否使用 Adam-mini 优化器 | FALSE |
| –use_muon | 是否使用 Muon 优化器 | FALSE |
| –freeze_vision_tower | MLLM 训练中是否冻结视觉塔 | TRUE |
| –no_freeze_vision_tower | MLLM 训练中是否不冻结视觉塔 | FALSE |
| –freeze_multi_modal_projector | 是否冻结多模态投影器 | TRUE |
| –no_freeze_multi_modal_projector | 是否不冻结多模态投影器 | FALSE |
| –freeze_language_model | 是否冻结语言模型 | FALSE |
| –compute_accuracy | 是否在评估时计算 token 级准确率 | FALSE |
| –disable_shuffling | 是否禁用训练集的 shuffle | FALSE |
| –early_stopping_steps | 当 metric_for_best_model 不提升时,提前停止训练的步数 | None |
| –plot_loss | 是否保存训练损失曲线 | FALSE |
| –include_effective_tokens_per_second | 是否计算有效 tokens/s | FALSE |
2.4 train支持的参数
train支持的参数如下:
| 命令 | 描述 | 默认值 |
|---|---|---|
| –output-dir OUTPUT_DIR | 输出目录,用于保存模型预测结果和检查点。默认 ‘trainer_output’。 | None |
| –overwrite-output-dir [OVERWRITE_OUTPUT_DIR] | 是否覆盖输出目录内容。用于在输出目录指向检查点时继续训练。 | FALSE |
| –do-train [DO_TRAIN] | 是否执行训练。 | FALSE |
| –do-eval [DO_EVAL] | 是否在开发集上执行评估。 | FALSE |
| –do-predict [DO_PREDICT] | 是否在测试集上执行预测。 | FALSE |
| –eval-strategy {no,steps,epoch} | 评估策略。 | no |
| –prediction-loss-only [PREDICTION_LOSS_ONLY] | 仅返回损失值。 | FALSE |
| –per-device-train-batch-size PER_DEVICE_TRAIN_BATCH_SIZE | 每个设备/CPU 核心的训练批量大小。 | 8 |
| –per-device-eval-batch-size PER_DEVICE_EVAL_BATCH_SIZE | 每个设备/CPU 核心的评估批量大小。 | 8 |
| –per-gpu-train-batch-size PER_GPU_TRAIN_BATCH_SIZE | 已废弃,推荐使用 --per_device_train_batch_size。 | None |
| –per-gpu-eval-batch-size PER_GPU_EVAL_BATCH_SIZE | 已废弃,推荐使用 --per_device_eval_batch_size。 | None |
| –gradient-accumulation-steps GRADIENT_ACCUMULATION_STEPS | 在执行反向传播/更新前累积的更新步数。 | 1 |
| –eval-accumulation-steps EVAL_ACCUMULATION_STEPS | 在将张量移动到 CPU 前累积的预测步数。 | None |
| –eval-delay EVAL_DELAY | 等待多少 epoch 或 step 后开始第一次评估,取决于 eval_strategy。 | 0 |
| –torch-empty-cache-steps TORCH_EMPTY_CACHE_STEPS | 调用 torch..empty_cache() 前等待的步数,可降低显存峰值,代价约 10% 性能。 | None |
| –learning-rate LEARNING_RATE | AdamW 优化器初始学习率。 | 5.00E-05 |
| –weight-decay WEIGHT_DECAY | AdamW 权重衰减。 | 0 |
| –adam-beta1 ADAM_BETA1 | AdamW 优化器 Beta1 参数。 | 0.9 |
| –adam-beta2 ADAM_BETA2 | AdamW 优化器 Beta2 参数。 | 0.999 |
| –adam-epsilon ADAM_EPSILON | AdamW 优化器 epsilon 参数。 | 1.00E-08 |
| –max-grad-norm MAX_GRAD_NORM | 最大梯度范数。 | 1 |
| –num-train-epochs NUM_TRAIN_EPOCHS | 总训练轮数。 | 3 |
| -max-steps MAX_STEPS | 若大于 0,则覆盖总训练步数,覆盖 num_train_epochs。 | -1 |
| –lr-scheduler-type {…} | 学习率调度器类型。 | linear |
| –lr-scheduler-kwargs LR_SCHEDULER_KWARGS | 调度器额外参数,例如 {‘num_cycles’: 1} 用于余弦重启。 | {} |
| –warmup-ratio WARMUP_RATIO | 总步数的线性预热比例。 | 0 |
| –warmup-steps WARMUP_STEPS | 线性预热步数。 | 0 |
| –log-level {…} | 主节点日志等级,可选:detail, debug, info, warning, error, critical, passive。 | passive |
| –log-level-replica {…} | 副本节点日志等级,同主节点选项。 | warning |
| –log-on-each-node [LOG_ON_EACH_NODE] | 多节点训练时,每节点是否都记录日志。 | TRUE |
| –no-log-on-each-node | 多节点训练时,仅主节点记录日志。 | FALSE |
| –logging-dir LOGGING_DIR | Tensorboard 日志目录。 | None |
| –logging-strategy {no,steps,epoch} | 日志记录策略。 | steps |
| –logging-first-step [LOGGING_FIRST_STEP] | 记录第一次 global_step。 | FALSE |
| –logging-steps LOGGING_STEPS | 每隔多少步记录一次日志。<1 表示比例。 | 500 |
| –logging-nan-inf-filter [LOGGING_NAN_INF_FILTER] | 过滤 NaN 和 Inf 损失。 | TRUE |
| –no-logging-nan-inf-filter | 不过滤 NaN 和 Inf 损失。 | FALSE |
| –save-strategy {no,steps,epoch,best} | 检查点保存策略。 | steps |
| –save-steps SAVE_STEPS | 每隔多少步保存检查点。<1 表示比例。 | 500 |
| –save-total-limit SAVE_TOTAL_LIMIT | 限制检查点总数,旧检查点将被删除。 | None |
| –save-safetensors [SAVE_SAFETENSORS] | 使用 safetensors 保存/加载 state_dict。 | TRUE |
| –no-save-safetensors | 不使用 safetensors 保存/加载。 | FALSE |
| –save-on-each-node [SAVE_ON_EACH_NODE] | 多节点训练时,每节点是否保存模型和检查点。 | FALSE |
| –save-only-model [SAVE_ONLY_MODEL] | 保存检查点时,只保存模型本身,不保存优化器、调度器和 RNG 状态。开启后无法从检查点恢复训练,只能用 from_pretrained 加载模型。 | FALSE |
| –restore-callback-states-from-checkpoint [RESTORE_CALLBACK_STATES_FROM_CHECKPOINT] | 是否从检查点恢复回调状态,如果 True,将覆盖 Trainer 中已存在的回调。 | FALSE |
| –no-cuda [NO_CUDA] | 已弃用参数,未来版本将移除。 | FALSE |
| –use-cpu [USE_CPU] | 是否使用 CPU。False 时使用可用的 Torch 设备(CUDA/MPS/XPU/HPU 等)。 | FALSE |
| –use-mps-device [USE_MPS_DEVICE] | 已弃用参数,MPS 设备会自动使用。 | FALSE |
| –seed SEED | 设置训练开始时的随机种子。 | 42 |
| –data-seed DATA_SEED | 数据采样器使用的随机种子。 | None |
| –jit-mode-eval [JIT_MODE_EVAL] | 是否在推理时使用 PyTorch JIT trace。 | FALSE |
| –use-ipex [USE_IPEX] | 是否使用 Intel PyTorch 扩展。 | FALSE |
| –bf16 [BF16] | 是否使用 bf16(混合精度)代替 32-bit,需要 Ampere 及以上 GPU 或 CPU/Ascend NPU。 | FALSE |
| –fp16 [FP16] | 是否使用 fp16(混合精度)代替 32-bit。 | FALSE |
| –fp16-opt-level FP16_OPT_LEVEL | fp16 的 Apex AMP 优化等级,选项:O0/O1/O2/O3。 | O1 |
| –half_precision_backend {auto,apex,cpu_amp} | 半精度运算使用的后端。 | auto |
| –bf16-full-eval [BF16_FULL_EVAL] | 是否使用全 bf16 评估代替 32-bit。 | FALSE |
| –fp16-full-eval [FP16_FULL_EVAL] | 是否使用全 fp16 评估代替 32-bit。 | FALSE |
| –tf32 TF32 | 是否启用 tf32 模式(仅 Ampere 及以上 GPU)。 | None |
| –local-rank LOCAL_RANK | 分布式训练的 local_rank。 | -1 |
| –ddp_backend {nccl,gloo,mpi,ccl,hccl,cncl,mccl} | 分布式训练使用的后端。 | None |
| –tpu-num-cores TPU_NUM_CORES | TPU 核心数(由启动脚本自动传递)。 | None |
| –tpu-metrics-debug [TPU_METRICS_DEBUG] | 已弃用,建议使用 --debug tpu_metrics_debug。 | FALSE |
| –debug DEBUG [DEBUG …] | 是否启用调试模式,可选:underflow_overflow、tpu_metrics_debug。 | None |
| –dataloader-drop-last [DATALOADER_DROP_LAST] | 如果批次不能整除,是否丢弃最后一个不完整批次。 | FALSE |
| –eval-steps EVAL_STEPS | 每隔多少步执行一次评估,可为整数或小于 1 的比例值。 | None |
| –dataloader-num-workers DATALOADER_NUM_WORKERS | 数据加载子进程数量,0 表示在主进程加载。 | 0 |
| –dataloader-prefetch-factor DATALOADER_PREFETCH_FACTOR | 每个 worker 预取的批次数量。PyTorch <2.0 默认 2,否则 None。 | None |
| –past_index PAST_INDEX, –past-index PAST_INDEX | >=0 时使用输出的对应部分作为下一步的 past state。 | -1 |
| –run-name RUN_NAME | 可选的训练描述,用于 wandb、mlflow 等日志记录。 | None |
| –disable-tqdm DISABLE_TQDM | 是否禁用 tqdm 进度条。 | None |
| –remove-unused-columns [REMOVE_UNUSED_COLUMNS] | 是否移除模型不需要的列(使用 nlp.Dataset 时)。 | TRUE |
| –no-remove-unused-columns | 是否不移除模型不需要的列(使用 nlp.Dataset 时)。 | FALSE |
| –label-names LABEL_NAMES [LABEL_NAMES …] | 输入字典中对应标签的 key 列表。 | None |
| –load-best-model-at-end [LOAD_BEST_MODEL_AT_END] | 是否在训练结束时加载表现最好的模型。 | FALSE |
| –metric-for-best-model METRIC_FOR_BEST_MODEL | 比较不同模型的指标名称。 | None |
| –greater-is-better GREATER_IS_BETTER | 指标是否越大越好。 | None |
| –ignore-data-skip [IGNORE_DATA_SKIP] | 恢复训练时是否跳过已训练的数据。 | FALSE |
| –fsdp FSDP | 是否使用 PyTorch Fully Sharded Data Parallel (FSDP) 分布式训练,可配置 offload 或 auto_wrap。 | 空 |
| –fsdp-min-num-params FSDP_MIN_NUM_PARAMS | FSDP 最小参数数量(已弃用)。 | 0 |
| –fsdp-config FSDP_CONFIG | FSDP 配置,可为 JSON 文件路径或 dict。 | None |
| –tp-size TP_SIZE | 启用张量并行,需模型支持 base_tp_plan,大于 1 激活 TP。 | 0 |
| –fsdp-transformer-layer-cls-to-wrap FSDP_TRANSFORMER_LAYER_CLS_TO_WRAP | 已弃用,指定 Transformer 层类名进行包裹(如 BertLayer)。 | None |
| –accelerator-config ACCELERATOR_CONFIG | 初始化 Accelerator 对象的配置,可为 JSON 文件或 dict。 | None |
| –deepspeed DEEPSPEED | 启用 DeepSpeed,并传入 JSON 配置文件或 dict。 | None |
| –label-smoothing-factor LABEL_SMOOTHING_FACTOR | 标签平滑 epsilon,0 表示不使用。 | 0 |
| –optim {adamw_torch,…} | 使用的优化器,可选列表非常多(如 adamw_torch、adafactor、lion_8bit 等)。 | adamw_torch |
| –optim-args OPTIM_ARGS | 优化器可选参数。 | None |
| –adafactor [ADAFACTOR] | 是否用 Adafactor 替代 AdamW。 | FALSE |
| –group-by-length [GROUP_BY_LENGTH] | 是否按样本长度分组批次。 | FALSE |
| –length-column-name LENGTH_COLUMN_NAME | 按长度分组时使用的列名。 | length |
| –report-to REPORT_TO | 日志和结果上报平台列表。 | None |
| –ddp-find-unused-parameters DDP_FIND_UNUSED_PARAMETERS | 分布式训练中 DistributedDataParallel 的 find_unused_parameters 值。 | None |
| –ddp-bucket-cap-mb DDP_BUCKET_CAP_MB | 分布式训练中 DistributedDataParallel 的 bucket_cap_mb 值。 | None |
| –ddp-broadcast-buffers DDP_BROADCAST_BUFFERS | 分布式训练中 DistributedDataParallel 的 broadcast_buffers 值。 | None |
| –dataloader-pin-memory [DATALOADER_PIN_MEMORY] | DataLoader 是否固定内存。 | TRUE |
| –no-dataloader-pin-memory | DataLoader 是否不固定内存。 | FALSE |
| –dataloader-persistent-workers [DATALOADER_PERSISTENT_WORKERS] | True 时数据加载器在数据集消耗后不关闭 worker。 | FALSE |
| –skip-memory-metrics [SKIP_MEMORY_METRICS] | 是否跳过内存指标统计。 | TRUE |
| –no-skip-memory-metrics | 是否不跳过内存指标统计。 | FALSE |
| –use-legacy-prediction-loop [USE_LEGACY_PREDICTION_LOOP] | 是否使用旧版 Trainer prediction_loop。 | FALSE |
| –push-to-hub [PUSH_TO_HUB] | 是否训练后上传模型到 Hugging Face Hub。 | FALSE |
| –resume-from-checkpoint RESUME_FROM_CHECKPOINT | 模型有效检查点路径,用于恢复训练。 | None |
| –hub-model-id HUB_MODEL_ID | 与本地 output_dir 同步的仓库名。 | None |
| –hub-strategy {end,every_save,checkpoint,all_checkpoints} | push_to_hub 启用时的策略。 | every_save |
| –hub-token HUB_TOKEN | 推送 Hub 使用的 token。 | None |
| –hub-private-repo HUB_PRIVATE_REPO | 是否将仓库设为私有。 | None |
| –hub-always-push [HUB_ALWAYS_PUSH] | 是否总是推送,即使上一次推送未完成。 | FALSE |
| –gradient-checkpointing [GRADIENT_CHECKPOINTING] | 是否使用梯度检查点以节省内存,代价是反向速度变慢。 | FALSE |
| –gradient-checkpointing-kwargs GRADIENT_CHECKPOINTING_KWARGS | 传给 torch.utils.checkpoint.checkpoint 的关键字参数。 | None |
| –include-inputs-for-metrics [INCLUDE_INPUTS_FOR_METRICS] | 已弃用,建议使用 include_for_metrics。 | FALSE |
| –include-for-metrics INCLUDE_FOR_METRICS [INCLUDE_FOR_METRICS …] | compute_metrics 中包含额外数据选项,如 ‘inputs’、‘loss’。 | [] |
| –eval-do-concat-batches [EVAL_DO_CONCAT_BATCHES] | 是否在评估时递归拼接批次数据。 | TRUE |
| –no-eval-do-concat-batches | 是否不拼接批次数据。 | FALSE |
| –fp16_backend {auto,apex,cpu_amp} | 已弃用,使用 half_precision_backend 替代。 | auto |
| –push-to-hub-model-id PUSH_TO_HUB_MODEL_ID | Trainer 推送仓库名称。 | None |
| –push-to-hub-organization PUSH_TO_HUB_ORGANIZATION | 推送仓库所属组织名。 | None |
| –push-to-hub-token PUSH_TO_HUB_TOKEN | 推送 Hub 使用的 token。 | None |
| –mp-parameters MP_PARAMETERS | SageMaker 特定参数,Trainer 忽略。 | 空 |
| –auto-find-batch-size [AUTO_FIND_BATCH_SIZE] | CUDA OOM 时自动减半批次重跑训练循环。 | FALSE |
| –full-determinism [FULL_DETERMINISM] | 分布式训练时启用完全确定性,会降低性能,仅用于调试。 | FALSE |
| –torchdynamo TORCHDYNAMO | 已弃用,使用 --torch_compile_backend 替代。 | None |
| –ray-scope RAY_SCOPE | Ray 超参数搜索范围,默认 last。 | last |
| –ddp-timeout DDP_TIMEOUT | 覆盖分布式训练超时时间(秒)。 | 1800 |
| –torch-compile [TORCH_COMPILE] | 是否用 torch.compile 包装模型。 | FALSE |
| –torch-compile-backend TORCH_COMPILE_BACKEND | torch.compile 使用的后端,传入后触发编译。 | None |
| –torch-compile-mode TORCH_COMPILE_MODE | torch.compile 使用的模式,传入后触发编译。 | None |
| –include-tokens-per-second [INCLUDE_TOKENS_PER_SECOND] | 是否在速度指标中包含 tps(每设备每秒 token 数)。 | FALSE |
| –include-num-input-tokens-seen [INCLUDE_NUM_INPUT_TOKENS_SEEN] | 是否统计训练中看到的输入 token 数。 | FALSE |
| –neftune-noise-alpha NEFTUNE_NOISE_ALPHA | 启用 NEFTune 噪声嵌入,用于 instruction fine-tuning,仅支持 PreTrainedModel 与 PeftModel。 | None |
| –optim-target-modules OPTIM_TARGET_MODULES | 优化器目标模块,仅 GaLore 优化器使用。 | None |
| –batch-eval-metrics [BATCH_EVAL_METRICS] | 分批计算评估指标以节省内存。 | FALSE |
| –eval-on-start [EVAL_ON_START] | 是否在训练开始前先完整运行一次评估步骤,用作 sanity check。 | FALSE |
| –use-liger-kernel [USE_LIGER_KERNEL] | 是否启用 Liger Kernel 来加速模型训练。 | FALSE |
| –eval-use-gather-object [EVAL_USE_GATHER_OBJECT] | 是否在评估时递归收集来自所有设备的对象,用于 nested list/tuple/dict。 | FALSE |
| –average-tokens-across-devices [AVERAGE_TOKENS_ACROSS_DEVICES] | 是否在多设备训练中对 token 数量取平均,用于精确计算 loss。 | FALSE |
| –sortish-sampler [SORTISH_SAMPLER] | 是否使用 SortishSampler 进行数据采样。 | FALSE |
| –predict-with-generate [PREDICT_WITH_GENERATE] | 是否使用 generate 方法计算生成类指标(如 ROUGE、BLEU)。 | FALSE |
| –generation-max-length GENERATION_MAX_LENGTH | 当 predict_with_generate=True 时,评估循环中使用的最大生成长度。 | None |
| –generation-num-beams GENERATION_NUM_BEAMS | 当 predict_with_generate=True 时使用的 beam 数量。 | None |
| –generation-config GENERATION_CONFIG | 指向 GenerationConfig JSON 文件的路径、URL 或模型 ID,用于预测。 | None |
| –ray-run-name RAY_RUN_NAME | Ray 训练结果保存目录名 <ray_storage_path>/ray_run_name。 | None |
| –ray-storage-path RAY_STORAGE_PATH | Ray 训练结果存储路径。 | ./saves |
| –ray-storage-filesystem {s3,gs,gcs} | Ray 训练使用的存储文件系统,未指定则使用本地文件系统。 | None |
| –ray-num-workers RAY_NUM_WORKERS | Ray 训练使用的 worker 数量。 | 1 |
| –resources-per-worker RESOURCES_PER_WORKER | 每个 Ray worker 分配的资源。 | {‘GPU’: 1} |
| –placement-strategy {SPREAD,PACK,STRICT_SPREAD,STRICT_PACK} | Ray 训练的资源调度策略。 | PACK |
| –ray-init-kwargs RAY_INIT_KWARGS | 传递给 ray.init 的参数。 | None |
| –freeze-trainable-layers FREEZE_TRAINABLE_LAYERS | 冻结微调时可训练的层数。正数表示最后 n 层可训练,负数表示前 n 层可训练。 | 2 |
| –freeze-trainable-modules FREEZE_TRAINABLE_MODULES | 冻结微调时可训练的模块名称,可用逗号分隔多个模块,使用 all 表示所有模块。 | all |
| –freeze-extra-modules FREEZE_EXTRA_MODULES | 除隐藏层外额外设置为可训练的模块名称,可用逗号分隔。 | None |
| –additional-target ADDITIONAL_TARGET | 除 LoRA 层外要设置为可训练并保存到最终 checkpoint 的模块名称,可用逗号分隔。 | None |
| –lora-alpha LORA_ALPHA | LoRA 微调的缩放系数,默认值为 lora_rank * 2。 | None |
| –lora-dropout LORA_DROPOUT | LoRA 微调的 dropout 比例。 | 0 |
| –lora-rank LORA_RANK | LoRA 微调的内在维度。 | 8 |
| –lora-target LORA_TARGET | 要应用 LoRA 的目标模块名称,可用逗号分隔,all 表示所有线性模块。 | all |
| –loraplus-lr-ratio LORAPLUS_LR_RATIO | LoRA plus 学习率比例(lr_B / lr_A)。 | None |
| –loraplus-lr-embedding LORAPLUS_LR_EMBEDDING | LoRA plus embedding 层学习率。 | 1.00E-06 |
| –use-rslora [USE_RSLORA] | 是否使用 rank stabilization 缩放因子。 | FALSE |
| –use-dora [USE_DORA] | 是否使用权重分解 LoRA 方法(DoRA)。 | FALSE |
| –pissa-init [PISSA_INIT] | 是否初始化 PiSSA adapter。 | FALSE |
| –pissa-iter PISSA_ITER | PiSSA FSVD 执行的迭代步数,-1 表示禁用。 | 16 |
| –pissa-convert [PISSA_CONVERT] | 是否将 PiSSA adapter 转换为普通 LoRA adapter。 | FALSE |
| –create-new-adapter [CREATE_NEW_ADAPTER] | 是否创建带随机初始化权重的新 adapter。 | FALSE |
| –pref-beta PREF_BETA | Preference loss 的 beta 参数。 | 0.1 |
| –pref-ftx PREF_FTX | DPO 训练中监督微调损失系数。 | 0 |
| –pref-loss {sigmoid,hinge,ipo,kto_pair,orpo,simpo} | DPO 损失类型。 | sigmoid |
| –dpo-label-smoothing DPO_LABEL_SMOOTHING | cDPO 中的鲁棒标签平滑参数,范围 0~0.5。 | 0 |
| –kto-chosen-weight KTO_CHOSEN_WEIGHT | KTO 训练中理想样本损失的权重。 | 1 |
| –kto-rejected-weight KTO_REJECTED_WEIGHT | KTO 训练中不理想样本损失的权重。 | 1 |
| –simpo-gamma SIMPO_GAMMA | SimPO 损失的目标 reward margin。 | 0.5 |
| –ppo-buffer-size PPO_BUFFER_SIZE | PPO 优化步骤中 mini-batch 的经验缓冲数量。 | 1 |
| –ppo-epochs PPO_EPOCHS | PPO 优化步骤的 epoch 数量。 | 4 |
| –ppo-score-norm [PPO_SCORE_NORM] | 是否在 PPO 训练中使用 score normalization。 | FALSE |
| –ppo-target PPO_TARGET | PPO 自适应 KL 控制的目标 KL 值。 | 6 |
| –ppo-whiten-rewards [PPO_WHITEN_REWARDS] | 是否在 PPO 训练中对 reward 做 whitening。 | FALSE |
| –ref-model REF_MODEL | PPO 或 DPO 训练中使用的参考模型路径。 | None |
| –ref-model-adapters REF_MODEL_ADAPTERS | 参考模型的 adapter 路径。 | None |
| –ref-model-quantization-bit REF_MODEL_QUANTIZATION_BIT | 参考模型量化的 bit 数。 | None |
| –reward-model REWARD_MODEL | PPO 训练中使用的 reward model 路径。 | None |
| –reward-model-adapters REWARD_MODEL_ADAPTERS | Reward model 的 adapter 路径。 | None |
| –reward-model-quantization-bit REWARD_MODEL_QUANTIZATION_BIT | Reward model 的量化 bit 数。 | None |
| –reward-model-type {lora,full,api} | PPO 训练中 reward model 的类型,LoRA 模型仅支持 LoRA 训练。 | lora |
| –ld-alpha LD_ALPHA | LD-DPO 论文中的 alpha 参数,控制响应中 verbose token log-probabilities 的权重。 | None |
| –use-galore [USE_GALORE] | 是否使用梯度低秩投影(GaLore)。 | FALSE |
| –galore-target GALORE_TARGET | 应用 GaLore 的模块名称,可用逗号分隔,all 表示所有线性模块。 | all |
| –galore-rank GALORE_RANK | GaLore 梯度的秩。 | 16 |
| –galore-update-interval GALORE_UPDATE_INTERVAL | 更新 GaLore 投影的步数间隔。 | 200 |
| –galore-scale GALORE_SCALE | GaLore 缩放系数。 | 2 |
| –galore-proj-type {std,reverse_std,right,left,full} | GaLore 投影类型。 | std |
| –galore-layerwise [GALORE_LAYERWISE] | 是否启用按层更新以节省内存。 | FALSE |
| –use-apollo [USE_APOLLO] | 是否使用 APOLLO 优化器。 | FALSE |
| –apollo-target APOLLO_TARGET | 应用 APOLLO 的模块名称,可用逗号分隔,all 表示所有线性模块。 | all |
| –apollo-rank APOLLO_RANK | APOLLO 梯度的秩。 | 16 |
| –apollo-update-interval APOLLO_UPDATE_INTERVAL | 更新 APOLLO 投影的步数间隔。 | 200 |
| –apollo-scale APOLLO_SCALE | APOLLO 缩放系数。 | 32 |
| –apollo-proj {svd,random} | APOLLO 低秩投影算法类型(svd 或 random)。 | random |
| –apollo-proj-type {std,right,left} | APOLLO 投影类型。 | std |
| –apollo-scale-type {channel,tensor} | APOLLO 缩放类型(按 channel 或 tensor)。 | channel |
| –apollo-layerwise [APOLLO_LAYERWISE] | 是否启用按层更新以节省内存。 | FALSE |
| –apollo-scale-front [APOLLO_SCALE_FRONT] | 是否在梯度缩放前使用 norm-growth 限制器。 | FALSE |
| –use-badam [USE_BADAM] | 是否使用 BAdam 优化器。 | FALSE |
| –badam-mode {layer,ratio} | 使用按层或按比例的 BAdam 优化策略。 | layer |
| –badam-start-block BADAM_START_BLOCK | 按层 BAdam 的起始 block 索引。 | None |
| –badam-switch-mode {ascending,descending,random,fixed} | 按层 BAdam 更新 block 的策略。 | ascending |
| –badam-switch-interval BADAM_SWITCH_INTERVAL | 按层 BAdam 更新 block 的步数间隔,-1 表示禁用。 | 50 |
| –badam-update-ratio BADAM_UPDATE_RATIO | 按比例 BAdam 的更新比例。 | 0.05 |
| –badam-mask-mode {adjacent,scatter} | BAdam 掩码模式,adjacent 表示可训练参数相邻,scatter 表示随机选择。 | adjacent |
| –badam-verbose BADAM_VERBOSE | BAdam 优化器的输出等级,0=不打印,1=打印 block 前缀,2=打印可训练参数。 | 0 |
| –use-swanlab [USE_SWANLAB] | 是否使用 SwanLab 实验追踪与可视化工具。 | FALSE |
| –swanlab-project SWANLAB_PROJECT | SwanLab 项目名称。 | llamafactory |
| –swanlab-workspace SWANLAB_WORKSPACE | SwanLab workspace 名称。 | None |
| –swanlab-run-name SWANLAB_RUN_NAME | SwanLab 实验名称。 | None |
| –swanlab-mode {cloud,local} | SwanLab 模式。 | cloud |
| –swanlab-api-key SWANLAB_API_KEY | SwanLab API key。 | None |
| –swanlab-logdir SWANLAB_LOGDIR | SwanLab 日志目录。 | None |
| –swanlab-lark-webhook-url SWANLAB_LARK_WEBHOOK_URL | SwanLab 飞书 Webhook URL。 | None |
| –swanlab-lark-secret SWANLAB_LARK_SECRET | SwanLab 飞书 secret。 | None |
| –pure-bf16 [PURE_BF16] | 是否使用纯 bf16 精度训练(不使用 AMP)。 | FALSE |
| –stage {pt,sft,rm,ppo,dpo,kto} | 训练阶段选择。 | sft |
| –finetuning-type {lora,freeze,full} | 微调方式选择。 | lora |
| –use-llama-pro [USE_LLAMA_PRO] | 是否仅训练扩展 block 的参数。 | FALSE |
| –use-adam-mini [USE_ADAM_MINI] | 是否使用 Adam-mini 优化器。 | FALSE |
| –use-muon [USE_MUON] | 是否使用 Muon 优化器。 | FALSE |
| –freeze-vision-tower [FREEZE_VISION_TOWER] | 是否冻结 MLLM 训练中的 vision tower。 | TRUE |
| –no-freeze-vision-tower | 取消冻结 vision tower。 | FALSE |
| –freeze-multi-modal-projector [FREEZE_MULTI_MODAL_PROJECTOR] | 是否冻结 MLLM 的 multi-modal projector。 | TRUE |
| –no-freeze-multi-modal-projector | 取消冻结 multi-modal projector。 | FALSE |
| –freeze-language-model [FREEZE_LANGUAGE_MODEL] | 是否冻结 MLLM 的语言模型。 | FALSE |
| –compute-accuracy [COMPUTE_ACCURACY] | 是否在评估时计算 token 级准确率。 | FALSE |
| –disable-shuffling [DISABLE_SHUFFLING] | 是否禁用训练集打乱。 | FALSE |
| –early-stopping-steps EARLY_STOPPING_STEPS | metric_for_best_model 不再提升时停止训练的步数。 | None |
| –plot-loss [PLOT_LOSS] | 是否保存训练 loss 曲线。 | FALSE |
| –include-effective-tokens-per-second [INCLUDE_EFFECTIVE_TOKENS_PER_SECOND] | 是否计算每秒有效 token 数。 | FALSE |
| –do-sample [DO_SAMPLE] | 是否使用采样,否则使用贪心解码。 | TRUE |
| –no-do-sample | 禁用采样,使用贪心解码。 | FALSE |
| –temperature TEMPERATURE | 调节下一个 token 概率的温度值。 | 0.95 |
| –top-p TOP_P | top-p 采样保留概率和至少为 top_p 的 token 集。 | 0.7 |
| –top-k TOP_K | top-k 采样保留概率最高的 token 数量。 | 50 |
| –num-beams NUM_BEAMS | Beam search 的 beam 数量,1 表示不使用 beam search。 | 1 |
| –max-length MAX_LENGTH | 生成 token 的最大长度,可被 max_new_tokens 覆盖。 | 1024 |
| –max-new-tokens MAX_NEW_TOKENS | 生成的最大 token 数,忽略 prompt 中的 token 数。 | 1024 |
| –repetition-penalty REPETITION_PENALTY | 重复惩罚参数,1.0 表示无惩罚。 | 1 |
| –length-penalty LENGTH_PENALTY | Beam search 中用于长度的指数惩罚。 | 1 |
| –skip-special-tokens [SKIP_SPECIAL_TOKENS] | 是否在解码时去除特殊 token。 | TRUE |
| –no-skip-special-tokens | 保留特殊 token,不去除。 | FALSE |
3. 分类记忆
LLaMA-Factory 支持的参数 非常庞杂,这里做一个系统性的 分类汇总,方便查阅和理解。整体可以分成 模型相关、推理相关、数据处理、训练配置、微调方法、RLHF/偏好优化、优化器/梯度方法、多模态支持、导出/部署、日志监控 等几大类:
3.1 模型与权重加载
基础模型/Adapter:
--model_name_or_path模型权重路径或 Hub 名称--adapter_name_or_pathAdapter 路径(可多个)--adapter_folderAdapter 存放目录--model_revision模型版本 (branch/tag/commit)--cache_dir模型缓存目录--hf_hub_token/--ms_hub_token/--om_hub_tokenHub Token--trust_remote_code是否信任 Hub 代码
模型结构与优化:
--resize_vocab调整 tokenizer vocab--split_special_tokens特殊 token 拆分--add_tokens/--add_special_tokens添加新 token--rope_scalingRoPE 缩放策略--flash_attn/--shift_attn注意力优化--mixture_of_depthsMoD 转换/加载--use_unsloth/--use_unsloth_gcUnsloth 优化--enable_liger_kernelLiger kernel--moe_aux_loss_coefMoE 损失系数--disable_gradient_checkpointing/--use_reentrant_gc梯度检查点控制--upcast_layernorm/--upcast_lmhead_output精度提升--train_from_scratch随机初始化训练
3.2 推理/执行相关
推理引擎:
--infer_backend(huggingface / vllm / sglang)--vllm_maxlen/--vllm_gpu_util/--vllm_config--sglang_maxlen/--sglang_tp_size/--sglang_config
推理性能:
--use_cache/--no_use_cacheKV Cache--infer_dtype推理精度 (fp16/bf16/float32/auto)--offload_folder卸载权重目录
解码/生成:
--do_sample/--no_do_sample采样或贪心--temperature/--top-p/--top-k控制采样--num-beamsBeam search--max-length/--max-new-tokens生成长度--repetition-penalty/--length-penalty惩罚项--skip_special_tokens/--no_skip_special_tokens解码处理
3.3 量化与精度控制
在线量化:
--quantization_method(bnb/gptq/awq/…)--quantization_bit/--quantization_type--double_quantization/--no_double_quantization--quantization_device_map
导出时量化:
--export_quantization_bit/--export_quantization_dataset--export_quantization_nsamples/--export_quantization_maxlen
混合精度/精度控制:
--bf16/--fp16/--pure_bf16--fp16-opt-level/--half_precision_backend--bf16-full-eval/--fp16-full-eval--tf32
3.4 数据处理与训练输入
数据集:
--dataset/--eval_dataset--dataset_dir/--media_dir--cutoff_len--train_on_prompt/--mask_history--streaming/--buffer_size--mix_strategy/--interleave_probs--overwrite_cache
预处理:
--preprocessing_batch_size/--preprocessing_num_workers--max_samples限制样本数--tokenized_path保存 tokenized 数据--data_shared_file_system是否用共享 FS
3.5 训练配置
核心控制:
--stage(pt/sft/rm/ppo/dpo/kto)--finetuning_type(lora/freeze/full)--output-dir/--overwrite-output-dir--do-train/--do-eval/--do-predict
批次与步数:
--per-device-train-batch-size/--per-device-eval-batch-size--gradient-accumulation-steps--max-steps/--num-train-epochs
优化器:
--learning-rate/--weight-decay--adam-beta1/--adam-beta2/--adam-epsilon--max-grad-norm--lr-scheduler-type/--warmup-ratio/--warmup-steps
分布式:
--local-rank/--ddp_backend--tpu-num-cores
3.6 微调/Adapter 方法
LoRA 系列:
--lora_alpha/--lora_dropout/--lora_rank--lora_target/--loraplus_lr_ratio--loraplus_lr_embedding--use_rslora/--use_dora
PiSSA:
--pissa_init/--pissa_iter/--pissa_convert
冻结层:
--freeze_trainable_layers/--freeze_trainable_modules--freeze_extra_modules/--additional_target
其他:
--create_new_adapter--use_llama_pro
3.7 RLHF 与偏好优化
DPO/KTO/SimPO:
--pref_beta/--pref_loss/--dpo_label_smoothing--kto_chosen_weight/--kto_rejected_weight--simpo_gamma
PPO:
--ppo_buffer_size/--ppo_epochs--ppo_score_norm/--ppo_target--ppo_whiten_rewards
参考/奖励模型:
--ref_model/--ref_model_adapters/--ref_model_quantization_bit--reward_model/--reward_model_adapters/--reward_model_quantization_bit--reward_model_type
扩展:
--ld_alpha
3.8 优化器改进 & 低秩方法
GaLore:
--use_galore/--galore_target--galore_rank/--galore_update_interval--galore_proj_type/--galore_layerwise
APOLLO:
--use_apollo/--apollo_target--apollo_rank/--apollo_scale/--apollo_proj--apollo_proj_type/--apollo_scale_type--apollo_layerwise/--apollo_scale_front
BAdam:
--use_badam/--badam_mode--badam_start_block/--badam_switch_mode--badam_switch_interval/--badam_update_ratio--badam_mask_mode/--badam_verbose
其他优化器:
--use_adam_mini/--use_muon
3.9 多模态支持
图像:
--image_max_pixels/--image_min_pixels--image_do_pan_and_scan--crop_to_patches
视频:
--video_max_pixels/--video_min_pixels--video_fps/--video_maxlen--use_audio_in_video
音频:
--audio_sampling_rate
冻结多模态结构:
--freeze_vision_tower/--no_freeze_vision_tower--freeze_multi_modal_projector/--no_freeze_multi_modal_projector--freeze_language_model
3.10 导出与部署
--export_dir/--export_size/--export_device--export_legacy_format(bin 而非 safetensors)--export_hub_model_id
3.11 日志与实验监控
日志:
--log-level/--log-level-replica--logging-dir/--logging-strategy/--logging-steps--logging-nan-inf-filter
保存与恢复:
--save-strategy/--save-steps/--save-total-limit--save-safetensors/--save-only-model--restore-callback-states-from-checkpoint
监控工具:
--use_swanlab--swanlab_project/--swanlab_workspace/--swanlab_run_name--swanlab_mode/--swanlab_api_key--swanlab_logdir/--swanlab_lark_webhook_url/--swanlab_lark_secret