llamafactory-cli
是 LlamaFactory 项目提供的命令行接口工具,它允许用户通过命令行参数来配置和运行大型语言模型的各种任务,如预训练(PT)、有监督微调(SFT)、奖励模型训练(RM)、基于人类反馈的强化学习(PPO、DPO、KTO)以及模型推理和导出。
首先,命令输出的第一行 [2025-06-03 09:33:04,590] [INFO] [real_accelerator.py:191:get_accelerator] Setting ds_accelerator to cuda (auto detect)
是一个启动时的信息日志,表明程序已检测到并设置使用 CUDA(NVIDIA GPU)作为 DeepSpeed 加速器。这不是一个可配置的 API 参数,而是环境检测的结果。
接下来是 usage
部分,展示了命令的基本用法和所有可选参数。
usage: llamafactory-cli [-h] [--model_name_or_path MODEL_NAME_OR_PATH] ...
下面我们对各个参数选项 (options
) 进行分类解读:
一、核心与模型加载参数
这些参数定义了基础模型、适配器以及加载行为。
-h, --help
: 显示此帮助信息并退出。--model_name_or_path MODEL_NAME_OR_PATH
: 必需或常用。指定基础模型的路径(本地文件夹)或 Hugging Face Hub/ModelScope Hub 上的模型标识符。--adapter_name_or_path ADAPTER_NAME_OR_PATH
: 指定要加载的适配器(例如 LoRA 权重)的路径或 Hugging Face Hub 上的标识符。可以使用逗号分隔加载多个适配器。--adapter_folder ADAPTER_FOLDER
: 指定包含多个适配器权重的文件夹路径。--cache_dir CACHE_DIR
: 指定从 Hugging Face Hub 或 ModelScope Hub 下载的预训练模型的存储位置。--model_revision MODEL_REVISION
: 指定要使用的特定模型版本(可以是分支名、标签名或 commit ID)。默认为main
。--low_cpu_mem_usage [LOW_CPU_MEM_USAGE]
/--no_low_cpu_mem_usage
: 是否使用低 CPU 内存模式加载模型,有助于在内存受限的环境中加载大模型。默认为True
。--train_from_scratch [TRAIN_FROM_SCRATCH]
: 是否从头开始训练,即随机初始化模型权重,而不是加载预训练权重。默认为False
。--hf_hub_token HF_HUB_TOKEN
: 用于登录 Hugging Face Hub 的认证令牌。--ms_hub_token MS_HUB_TOKEN
: 用于登录 ModelScope Hub 的认证令牌。--om_hub_token OM_HUB_TOKEN
: 用于登录 OpenModelDB Hub (魔搭社区) 的认证令牌。--trust_remote_code [TRUST_REMOTE_CODE]
: 是否信任并执行来自 Hub 上模型或数据集的远程代码。默认为False
,出于安全考虑,请谨慎开启。
二、Tokenizer 相关参数
配置分词器的行为。
--use_fast_tokenizer [USE_FAST_TOKENIZER]
/--no_use_fast_tokenizer
: 是否使用由tokenizers
库支持的快速分词器。默认为True
。--resize_vocab [RESIZE_VOCAB]
: 是否调整分词器的词汇表大小以及模型嵌入层的大小,通常在添加新词汇时使用。默认为False
。--split_special_tokens [SPLIT_SPECIAL_TOKENS]
: 在分词过程中是否应分割特殊标记(special tokens)。默认为False
。--add_tokens ADD_TOKENS
: 要添加到分词器中的非特殊标记。使用逗号分隔多个标记。--add_special_tokens ADD_SPECIAL_TOKENS
: 要添加到分词器中的特殊标记。使用逗号分隔多个标记。
三、性能与优化参数
这些参数影响模型的训练和推理效率。
--rope_scaling {linear,dynamic,yarn,llama3}
: RoPE (Rotary Position Embedding) 嵌入的缩放策略,用于扩展模型的上下文长度。--flash_attn {auto,disabled,sdpa,fa2}
: 是否启用 FlashAttention 以加速训练和推理。auto
会自动选择,sdpa
(Scaled Dot Product Attention) 和fa2
(FlashAttention-2) 是具体实现。默认为AttentionFunction.AUTO
。--shift_attn [SHIFT_ATTN]
: 是否启用 LongLoRA 提出的 Shift Short Attention (S^2-Attn) 机制。默认为False
。--mixture_of_depths {convert,load}
: 是否将模型转换为 Mixture-of-Depths (MoD) 结构或加载已转换的 MoD 模型。--use_unsloth [USE_UNSLOTH]
: 是否使用 Unsloth 的优化来进行 LoRA 训练,可以显著提升速度和减少显存。默认为False
。--use_unsloth_gc [USE_UNSLOTH_GC]
: 是否使用 Unsloth 的梯度检查点(gradient checkpointing),无需安装完整 Unsloth。默认为False
。--enable_liger_kernel [ENABLE_LIGER_KERNEL]
: 是否启用 Liger 内核以加速训练。默认为False
。--moe_aux_loss_coef MOE_AUX_LOSS_COEF
: 针对 Mixture-of-Experts (MoE) 模型,设置辅助路由器损失(auxiliary router loss)的系数。--disable_gradient_checkpointing [DISABLE_GRADIENT_CHECKPOINTING]
: 是否禁用梯度检查点。梯度检查点通过在前向传播中不保存中间激活,在反向传播时重新计算来节省显存,但会增加计算时间。默认为False
(即默认启用梯度检查点,具体看实现)。--use_reentrant_gc [USE_REENTRANT_GC]
/--no_use_reentrant_gc
: 是否使用可重入(reentrant)的梯度检查点。默认为True
。--upcast_layernorm [UPCAST_LAYERNORM]
: 是否将 LayerNorm 层的权重提升到fp32
精度进行计算。默认为False
。--upcast_lmhead_output [UPCAST_LMHEAD_OUTPUT]
: 是否将语言模型头部(lm_head)的输出提升到fp32
精度。默认为False
。--pure_bf16 [PURE_BF16]
: 是否以纯bf16
精度进行训练(不使用 AMP 自动混合精度)。默认为False
。
四、推理引擎与参数
配置模型推理时的行为和后端。
--infer_backend {huggingface,vllm,sglang}
: 推理时使用的后端引擎。huggingface
是标准 Transformers 库,vllm
和sglang
是专门为 LLM 推理设计的高性能引擎。默认为EngineName.HF
。--offload_folder OFFLOAD_FOLDER
: 模型权重卸载(offload)的目标文件夹路径,用于在 CPU 和 GPU 间转移模型层以节省显存。默认为offload
。--use_cache [USE_CACHE]
/--no_use_cache
: 在生成文本时是否使用 KV 缓存(key-value cache)来加速。默认为True
。--infer_dtype {auto,float16,bfloat16,float32}
: 推理时模型权重和激活值的数据类型。auto
通常会根据模型自身配置或硬件支持选择。- vLLM 特定参数 :
--vllm_maxlen VLLM_MAXLEN
: vLLM 引擎支持的最大序列长度(prompt + response)。默认为4096
。--vllm_gpu_util VLLM_GPU_UTIL
: vLLM 引擎使用的 GPU 显存比例 (0,1) 之间。默认为0.7
。--vllm_enforce_eager [VLLM_ENFORCE_EAGER]
: 是否在 vLLM 引擎中禁用 CUDA Graph(强制 Eager模式)。默认为False
。--vllm_max_lora_rank VLLM_MAX_LORA_RANK
: vLLM 引擎中所有 LoRA 适配器的最大秩。默认为32
。--vllm_config VLLM_CONFIG
: 初始化 vLLM 引擎的配置。请使用 JSON 字符串。
- SGLang 特定参数 :
--sglang_maxlen SGLANG_MAXLEN
: SGLang 引擎支持的最大序列长度。默认为4096
。--sglang_mem_fraction SGLANG_MEM_FRACTION
: SGLang 引擎使用的显存比例 (0-1)。默认为0.7
。--sglang_tp_size SGLANG_TP_SIZE
: SGLang 引擎的张量并行(Tensor Parallelism)大小。默认为-1
。--sglang_config SGLANG_CONFIG
: 初始化 SGLang 引擎的配置。请使用 JSON 字符串。
五、量化参数
配置模型量化,以减小模型体积和加速推理,可能会有精度损失。
--quantization_method {bnb,gptq,awq,aqlm,quanto,eetq,hqq}
: 动态量化(on-the-fly quantization)使用的方法。bnb
(bitsandbytes) 常用于训练时量化。默认为QuantizationMethod.BNB
。--quantization_bit QUANTIZATION_BIT
: 使用动态量化时,模型的量化位数(如 4-bit, 8-bit)。--quantization_type {fp4,nf4}
: 在 bitsandbytes int4 训练中使用的量化数据类型。nf4
(NormalFloat4) 通常效果更好。默认为nf4
。--double_quantization [DOUBLE_QUANTIZATION]
/--no_double_quantization
: 在 bitsandbytes int4 训练中是否使用双量化。默认为True
。--quantization_device_map {auto}
: 用于推断 4-bit 量化模型的设备映射,需要bitsandbytes>=0.43.0
。
六、多模态(MLLM)参数
处理图像、视频、音频等非文本输入。
--image_max_pixels IMAGE_MAX_PIXELS
: 图像输入的最大像素数。默认为589824
。--image_min_pixels IMAGE_MIN_PIXELS
: 图像输入的最小像素数。默认为1024
。--image_do_pan_and_scan [IMAGE_DO_PAN_AND_SCAN]
: 是否为 Gemma3 模型使用 pan and scan 处理图像。默认为False
。--crop_to_patches [CROP_TO_PATCHES]
: 是否为 InternVL 模型将图像裁剪为补丁(patches)。默认为False
。--use_audio_in_video [USE_AUDIO_IN_VIDEO]
: 视频输入中是否包含音频信息。默认为False
。--video_max_pixels VIDEO_MAX_PIXELS
: 视频输入的最大像素数。默认为65536
。--video_min_pixels VIDEO_MIN_PIXELS
: 视频输入的最小像素数。默认为256
。--video_fps VIDEO_FPS
: 视频输入每秒采样帧数。默认为2.0
。--video_maxlen VIDEO_MAXLEN
: 视频输入的最大采样帧数。默认为128
。--audio_sampling_rate AUDIO_SAMPLING_RATE
: 音频输入的采样率。默认为16000
。--freeze_vision_tower [FREEZE_VISION_TOWER]
/--no_freeze_vision_tower
: 在 MLLM 训练中是否冻结视觉塔(vision tower)的参数。默认为True
。--freeze_multi_modal_projector [FREEZE_MULTI_MODAL_PROJECTOR]
/--no_freeze_multi_modal_projector
: 在 MLLM 训练中是否冻结多模态投影器(multi-modal projector)的参数。默认为True
。--freeze_language_model [FREEZE_LANGUAGE_MODEL]
: 在 MLLM 训练中是否冻结语言模型部分的参数。默认为False
。
七、模型导出参数
将训练好的模型或适配器合并后导出为标准格式。
--export_dir EXPORT_DIR
: 导出模型的保存目录路径。--export_size EXPORT_SIZE
: 导出模型的分片大小(GB)。默认为5
。--export_device {cpu,auto}
: 模型导出时使用的设备。auto
会尝试使用 GPU 加速导出。默认为cpu
。--export_quantization_bit EXPORT_QUANTIZATION_BIT
: 导出模型的量化位数。--export_quantization_dataset EXPORT_QUANTIZATION_DATASET
: 量化导出模型时使用的数据集路径或名称。--export_quantization_nsamples EXPORT_QUANTIZATION_NSAMPLES
: 用于量化的样本数量。默认为128
。--export_quantization_maxlen EXPORT_QUANTIZATION_MAXLEN
: 用于量化的模型输入最大长度。默认为1024
。--export_legacy_format [EXPORT_LEGACY_FORMAT]
: 是否保存为.bin
文件(旧格式)而不是.safetensors
文件(推荐格式)。默认为False
。--export_hub_model_id EXPORT_HUB_MODEL_ID
: 如果要将模型推送到 Hugging Face Hub,指定仓库名称。
八、数据集与预处理参数
定义训练和评估所用的数据集及其处理方式。
--template TEMPLATE
: 在训练和推理中用于构建提示(prompt)的模板名称。--dataset DATASET
: 必需或常用 (对于训练)。用于训练的数据集名称。使用逗号分隔指定多个数据集。--eval_dataset EVAL_DATASET
: 用于评估的数据集名称。使用逗号分隔指定多个数据集。--dataset_dir DATASET_DIR
: 包含数据集文件的文件夹路径。默认为data
。--media_dir MEDIA_DIR
: 包含图像、视频或音频文件的文件夹路径。默认为dataset_dir
。--cutoff_len CUTOFF_LEN
: 数据集中 tokenized 输入的截断长度。默认为2048
。--train_on_prompt [TRAIN_ON_PROMPT]
: 是否在提示部分计算损失(即不mask掉提示)。默认为False
(即mask提示,只在回答部分计算损失)。--mask_history [MASK_HISTORY]
: 是否掩码对话历史,仅在最后一轮对话上进行训练。默认为False
。--streaming [STREAMING]
: 是否启用数据集流式加载,适用于非常大的数据集。默认为False
。--buffer_size BUFFER_SIZE
: 在数据集流式加载时,用于随机抽样样本的缓冲区大小。默认为16384
。--mix_strategy {concat,interleave_under,interleave_over}
: 数据集混合策略。concat
直接拼接;interleave_under
按比例交叉混合并对多数数据集进行欠采样;interleave_over
按比例交叉混合并对少数数据集进行过采样。默认为concat
。--interleave_probs INTERLEAVE_PROBS
: 从各个数据集中采样数据的概率。使用逗号分隔,对应于--dataset
中的数据集顺序。--overwrite_cache [OVERWRITE_CACHE]
: 是否覆盖已缓存的训练和评估数据集。默认为False
。--preprocessing_batch_size PREPROCESSING_BATCH_SIZE
: 预处理时每组(group)的样本数量。默认为1000
。--preprocessing_num_workers PREPROCESSING_NUM_WORKERS
: 用于数据预处理的进程数量。--max_samples MAX_SAMPLES
: 用于调试目的,截断每个数据集的最大样本数量。--val_size VAL_SIZE
: 验证集的大小,可以是整数(样本数)或[0,1)
范围内的浮点数(比例)。默认为0.0
。--packing PACKING
: 在训练中启用序列打包(sequence packing),将多个短序列合并为一个长序列以提高效率。预训练时会自动启用。--neat_packing [NEAT_PACKING]
: 启用不带交叉注意力的序列打包。默认为False
。--tool_format TOOL_FORMAT
: 用于构建函数调用(function calling)示例的工具格式。--tokenized_path TOKENIZED_PATH
: 保存或加载已 tokenized 的数据集的路径。如果路径不存在,则保存;如果存在,则加载。
九、微调方法与相关参数
配置具体的微调策略,如 LoRA, Freeze, Full-parameter tuning,以及 DPO, PPO 等对齐算法。
--stage {pt,sft,rm,ppo,dpo,kto}
: 必需或常用 。指定训练的阶段:pt
(Pre-Training),sft
(Supervised Fine-Tuning),rm
(Reward Modeling),ppo
(Proximal Policy Optimization),dpo
(Direct Preference Optimization),kto
(Kahneman-Tversky Optimization)。默认为sft
。--finetuning_type {lora,freeze,full}
: 必需或常用 。指定微调方法:lora
(Low-Rank Adaptation),freeze
(冻结部分参数),full
(全参数微调)。默认为lora
。
Freeze 微调参数:
--freeze_trainable_layers FREEZE_TRAINABLE_LAYERS
: 对于 Freeze 微调,指定可训练层的数量。正数表示最后 n 层可训练,负数表示最前 n 层可训练。默认为2
。--freeze_trainable_modules FREEZE_TRAINABLE_MODULES
: 对于 Freeze 微调,指定可训练模块的名称。用逗号分隔多个模块。使用all
指定所有可用模块。默认为all
。--freeze_extra_modules FREEZE_EXTRA_MODULES
: 对于 Freeze 微调,除了隐藏层外,指定其他要设为可训练的模块名称。用逗号分隔。
LoRA 及其变体参数:
--additional_target ADDITIONAL_TARGET
: 除了 LoRA 层之外,还要设为可训练并在最终检查点中保存的模块名称。用逗号分隔。--lora_alpha LORA_ALPHA
: LoRA 微调的缩放因子。通常设置为lora_rank * 2
。--lora_dropout LORA_DROPOUT
: LoRA 微调的 Dropout 率。默认为0.0
。--lora_rank LORA_RANK
: LoRA 微调的内在维度(rank)。默认为8
。--lora_target LORA_TARGET
: 应用 LoRA 的目标模块名称。用逗号分隔多个模块。使用all
指定所有线性模块。默认为all
。--loraplus_lr_ratio LORAPLUS_LR_RATIO
: LoRA+ 的学习率比例 (lr_B / lr_A
)。--loraplus_lr_embedding LORAPLUS_LR_EMBEDDING
: LoRA+ 中 LoRA 嵌入层的学习率。默认为1e-06
。--use_rslora [USE_RSLORA]
: 是否对 LoRA 层使用秩稳定缩放因子 (Rank-Stabilized LoRA)。默认为False
。--use_dora [USE_DORA]
: 是否使用权重分解的 LoRA 方法 (DoRA)。默认为False
。--pissa_init [PISSA_INIT]
: 是否初始化一个 PiSSA (Principal Singular Values and Singular Vectors Adaptation) 适配器。默认为False
。--pissa_iter PISSA_ITER
: PiSSA 中 FSVD (Fast Singular Value Decomposition) 执行的迭代次数。设为 -1 禁用。默认为16
。--pissa_convert [PISSA_CONVERT]
: 是否将 PiSSA 适配器转换为普通的 LoRA 适配器。默认为False
。--create_new_adapter [CREATE_NEW_ADAPTER]
: 是否创建一个新的、权重随机初始化的适配器。默认为False
。
偏好对齐算法参数 (DPO, KTO, PPO 等):
--pref_beta PREF_BETA
: 偏好损失中的 β \beta β 参数 (例如 DPO 中的温度系数)。默认为0.1
。--pref_ftx PREF_FTX
: 在 DPO 类训练中,SFT (Supervised Fine-Tuning) 损失的系数。默认为0.0
。--pref_loss {sigmoid,hinge,ipo,kto_pair,orpo,simpo}
: DPO 类损失函数的类型。默认为sigmoid
。--dpo_label_smoothing DPO_LABEL_SMOOTHING
: cDPO (consistent DPO) 中的鲁棒 DPO 标签平滑参数,应在 0 到 0.5 之间。默认为0.0
。--kto_chosen_weight KTO_CHOSEN_WEIGHT
: KTO 训练中 "chosen" (期望的) 样本损失的权重因子。默认为1.0
。--kto_rejected_weight KTO_REJECTED_WEIGHT
: KTO 训练中 "rejected" (不期望的) 样本损失的权重因子。默认为1.0
。--simpo_gamma SIMPO_GAMMA
: SimPO 损失中的目标奖励边际项。默认为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 训练中是否使用分数归一化。默认为False
。--ppo_target PPO_TARGET
: PPO 训练中自适应 KL 控制的目标 KL 散度值。默认为6.0
。--ppo_whiten_rewards [PPO_WHITEN_REWARDS]
: 在 PPO 训练中,计算优势函数(advantages)前是否对奖励进行白化处理。默认为False
。--ref_model REF_MODEL
: 用于 PPO 或 DPO 训练的参考模型路径。--ref_model_adapters REF_MODEL_ADAPTERS
: 参考模型的适配器路径。--ref_model_quantization_bit REF_MODEL_QUANTIZATION_BIT
: 参考模型的量化位数。--reward_model REWARD_MODEL
: 用于 PPO 训练的奖励模型路径。--reward_model_adapters REWARD_MODEL_ADAPTERS
: 奖励模型的适配器路径。--reward_model_quantization_bit REWARD_MODEL_QUANTIZATION_BIT
: 奖励模型的量化位数。--reward_model_type {lora,full,api}
: PPO 训练中奖励模型的类型。lora
模型仅支持 LoRA 训练。默认为lora
。
GaLore (Gradient Low-Rank projection) 优化器参数:
--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.0
。--galore_proj_type {std,reverse_std,right,left,full}
: GaLore 投影类型。默认为std
。--galore_layerwise [GALORE_LAYERWISE]
: 是否启用逐层更新以进一步节省内存。默认为False
。
APOLLO 优化器参数:
--use_apollo [USE_APOLLO]
: 是否使用 APOLLO 优化器。默认为False
。--apollo_target APOLLO_TARGET
: 应用 APOLLO 的模块名称。默认为all
。--apollo_rank APOLLO_RANK
: APOLLO 梯度的秩。默认为16
。--apollo_update_interval APOLLO_UPDATE_INTERVAL
: 更新 APOLLO 投影的步数。默认为200
。--apollo_scale APOLLO_SCALE
: APOLLO 缩放系数。默认为32.0
。--apollo_proj {svd,random}
: APOLLO 低秩投影算法类型。默认为random
。--apollo_proj_type {std,right,left}
: APOLLO 投影类型。默认为std
。--apollo_scale_type {channel,tensor}
: APOLLO 缩放类型。默认为channel
。--apollo_layerwise [APOLLO_LAYERWISE]
: 是否启用逐层更新。默认为False
。--apollo_scale_front [APOLLO_SCALE_FRONT]
: 是否在梯度缩放前使用范数增长限制器。默认为False
。
BAdam (Block Adam) 优化器参数:
--use_badam [USE_BADAM]
: 是否使用 BAdam 优化器。默认为False
。--badam_mode {layer,ratio}
: BAdam 是逐层更新还是按比例更新。默认为layer
。--badam_start_block BADAM_START_BLOCK
: 逐层 BAdam 的起始块索引。--badam_switch_mode {ascending,descending,random,fixed}
: 逐层 BAdam 选择更新块的策略。默认为ascending
。--badam_switch_interval BADAM_SWITCH_INTERVAL
: 逐层 BAdam 更新块的间隔步数。-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 打印块前缀,2 打印可训练参数。默认为0
。
其他特定微调方法参数:
--use_llama_pro [USE_LLAMA_PRO]
: 是否仅使扩展块(expanded blocks, 如 Llama Pro 中的块)中的参数可训练。默认为False
。--use_adam_mini [USE_ADAM_MINI]
: 是否使用 Adam-mini 优化器。默认为False
。--use_muon [USE_MUON]
: 是否使用 Muon 优化器。默认为False
。
十、训练过程与评估参数
控制训练循环、评估指标等。
--ignore_pad_token_for_loss [IGNORE_PAD_TOKEN_FOR_LOSS]
/--no_ignore_pad_token_for_loss
: 在计算损失时是否忽略填充标记(pad token)对应的损失。默认为True
。--eval_num_beams EVAL_NUM_BEAMS
: 评估时使用的束搜索(beam search)的数量。此参数将传递给model.generate
。--eval_on_each_dataset [EVAL_ON_EACH_DATASET]
: 是否在每个数据集上分别进行评估。默认为False
。--compute_accuracy [COMPUTE_ACCURACY]
: 评估时是否计算 token 级别的准确率。默认为False
。--disable_shuffling [DISABLE_SHUFFLING]
: 是否禁用训练集的随机打乱。默认为False
。--early_stopping_steps EARLY_STOPPING_STEPS
: 如果metric_for_best_model
(通常是验证集损失或某个指标)在指定步数内没有改善,则提前停止训练。--plot_loss [PLOT_LOSS]
: 是否保存训练损失曲线图。默认为False
。--include_effective_tokens_per_second [INCLUDE_EFFECTIVE_TOKENS_PER_SECOND]
: 是否计算并报告有效(非padding)的每秒处理 token 数量。默认为False
。
十一、生成(Generation)参数
控制模型生成文本时的行为,主要用于推理或基于生成的评估。
--do_sample [DO_SAMPLE]
/--no_do_sample
: 是否使用采样策略生成文本。若为False
,则使用贪婪解码(greedy decoding)。默认为True
。--temperature TEMPERATURE
: 温度系数,用于调节下一个 token 的概率分布。值越小,生成越确定;值越大,越随机。默认为0.95
。--top_p TOP_P
: Top-p (nucleus) 采样。保留累积概率达到top_p
的最小词汇集。默认为0.7
。--top_k TOP_K
: Top-k 采样。保留概率最高的top_k
个词汇。默认为50
。--num_beams NUM_BEAMS
:束搜索(beam search)的数量。1
表示不使用束搜索。默认为1
。--max_length MAX_LENGTH
: 生成文本的最大长度(包括输入的 prompt)。可以被max_new_tokens
覆盖。默认为1024
。--max_new_tokens MAX_NEW_TOKENS
: 生成新 token 的最大数量,忽略 prompt 中的 token 数。默认为1024
。--repetition_penalty REPETITION_PENALTY
: 重复惩罚系数。1.0
表示无惩罚。大于1的值会降低重复词汇的概率。默认为1.0
。--length_penalty LENGTH_PENALTY
: 长度惩罚系数,用于基于束搜索的生成。大于1鼓励长序列,小于1鼓励短序列。默认为1.0
。--default_system DEFAULT_SYSTEM
: 在聊天补全(chat completion)中使用的默认系统消息。--skip_special_tokens [SKIP_SPECIAL_TOKENS]
/--no_skip_special_tokens
: 在解码(detokenization)过程中是否移除特殊标记。默认为True
。--enable_thinking [ENABLE_THINKING]
/--no_enable_thinking
: 是否为推理模型启用"思考模式"(thinking mode),可能用于一些需要链式思考的模型。默认为True
。
十二、实验追踪 (SwanLab)
集成 SwanLab 进行实验追踪和可视化。
--use_swanlab [USE_SWANLAB]
: 是否使用 SwanLab。默认为False
。--swanlab_project SWANLAB_PROJECT
: SwanLab 中的项目名称。默认为llamafactory
。--swanlab_workspace SWANLAB_WORKSPACE
: SwanLab 中的工作空间名称。--swanlab_run_name SWANLAB_RUN_NAME
: SwanLab 中的实验运行名称。--swanlab_mode {cloud,local}
: SwanLab 的模式。默认为cloud
。--swanlab_api_key SWANLAB_API_KEY
: SwanLab 的 API 密钥。--swanlab_logdir SWANLAB_LOGDIR
: SwanLab 的日志目录。--swanlab_lark_webhook_url SWANLAB_LARK_WEBHOOK_URL
: SwanLab 的飞书(Lark)Webhook URL。--swanlab_lark_secret SWANLAB_LARK_SECRET
: SwanLab 的飞书(Lark)签名密钥。
十三、调试与其他
--print_param_status [PRINT_PARAM_STATUS]
: 用于调试目的,打印模型中参数的状态(例如是否可训练,数据类型等)。默认为False
。
这份解读涵盖了 llamafactory-cli api -h
输出中的绝大多数参数。使用时,你需要根据你的具体任务(SFT、PPO、推理等)、模型、数据和硬件资源来选择和配置这些参数。建议从一个已有的、与你任务相似的示例脚本开始,逐步调整参数。