最近llama-factory的配置参数有很多不懂的地方,整理了一些但也有可能有错,仅供大家参考。
# 可选参数
# 模型和适配器相关
--adapter_name_or_path # 描述: 适配器的名称或路径。
--adapter_folder # 描述: 适配器文件夹路径。
--cache_dir # 描述: 缓存目录。
--use_fast_tokenizer / --no_use_fast_tokenizer # 描述: 是否使用快速分词器。
--resize_vocab # 描述: 是否调整词汇表大小。
--split_special_tokens # 描述: 是否拆分特殊标记。
--new_special_tokens # 描述: 新的特殊标记。
--model_revision # 描述: 模型修订版本。
--low_cpu_mem_usage / --no_low_cpu_mem_usage # 描述: 是否使用低 CPU 内存。
# 量化和推理相关
--quantization_method {bitsandbytes,hqq,eetq} # 描述: 量化方法。
--quantization_bit # 描述: 量化位数。
--quantization_type {fp4,nf4} # 描述: 量化类型。
--double_quantization / --no_double_quantization # 描述: 是否进行双重量化。
--quantization_device_map {auto} # 描述: 量化设备映射。
--rope_scaling {linear,dynamic} # 描述: ROPE 缩放。
--flash_attn {auto,disabled,sdpa,fa2} # 描述: 闪存注意力设置。
--shift_attn # 描述: 是否移位注意力。
--mixture_of_depths {convert,load} # 描述: 深度混合策略。
--use_unsloth # 描述: 是否使用 Unsloth。
--visual_inputs # 描述: 是否包含视觉输入。
# 训练相关
--moe_aux_loss_coef # 描述: MOE 辅助损失系数。
--disable_gradient_checkpointing # 描述: 是否禁用梯度检查点。
--upcast_layernorm # 描述: 是否上转换 LayerNorm。
--upcast_lmhead_output # 描述: 是否上转换 LM 头输出。
--train_from_scratch # 描述: 是否从头开始训练。
--infer_backend {huggingface,vllm} # 描述: 推理后端。
--vllm_maxlen # 描述: vLLM 最大长度。
--vllm_gpu_util # 描述: vLLM GPU 利用率。
--vllm_enforce_eager # 描述: 是否强制启用 eager 模式。
--vllm_max_lora_rank # 描述: vLLM 最大 LoRA 排名。
--offload_folder # 描述: 离线文件夹路径。
--use_cache / --no_use_cache # 描述: 是否使用缓存。
--infer_dtype {auto,float16,bfloat16,float32} # 描述: 推理数据类型。
--hf_hub_token # 描述: Hugging Face Hub 令牌。
--ms_hub_token # 描述: ModelScope Hub 令牌。
# 导出相关
--export_dir # 描述: 导出目录。
--export_size # 描述: 导出大小。
--export_device {cpu,auto} # 描述: 导出设备。
--export_quantization_bit # 描述: 导出量化位数。
--export_quantization_dataset # 描述: 导出量化数据集。
--export_quantization_nsamples # 描述: 导出量化样本数。
--export_quantization_maxlen # 描述: 导出量化最大长度。
--export_legacy_format # 描述: 是否导出为遗留格式。
--export_hub_model_id # 描述: 导出到 Hub 的模型 ID。
--print_param_status # 描述: 是否打印参数状态。
# 数据和训练配置
--template # 描述: 数据模板。
--dataset # 描述: 数据集名称。
--dataset_dir # 描述: 数据集目录。
--split # 描述: 数据集拆分。
--cutoff_len # 描述: 截断长度。
--train_on_prompt # 描述: 是否在提示上训练。
--streaming # 描述: 是否启用流式传输。
--buffer_size # 描述: 缓冲区大小。
--mix_strategy {concat,interleave_under,interleave_over} # 描述: 数据混合策略。
--interleave_probs # 描述: 混合概率。
--overwrite_cache # 描述: 是否覆盖缓存。
--preprocessing_num_workers # 描述: 预处理工作线程数。
--max_samples # 描述: 最大样本数。
--eval_num_beams # 描述: 评估时使用的 beam 数量。
--ignore_pad_token_for_loss / --no_ignore_pad_token_for_loss # 描述: 是否在计算损失时忽略填充标记。
--val_size # 描述: 验证集大小。
--packing # 描述: 是否启用数据打包。
--neat_packing # 描述: 是否启用整洁打包。
--tool_format # 描述: 工具格式。
--tokenized_path # 描述: 分词后的数据路径。
# 训练过程控制
--overwrite_output_dir # 描述: 是否覆盖输出目录。
--do_train # 描述: 是否进行训练。
--do_eval # 描述: 是否进行评估。
--do_predict # 描述: 是否进行预测。
--eval_strategy {no,steps,epoch} # 描述: 评估策略。
--prediction_loss_only # 描述: 是否只计算预测损失。
--per_device_train_batch_size # 描述: 每个设备的训练批次大小。
--per_device_eval_batch_size # 描述: 每个设备的评估批次大小。
--per_gpu_train_batch_size # 描述: 每个 GPU 的训练批次大小。
--per_gpu_eval_batch_size # 描述: 每个 GPU 的评估批次大小。
--gradient_accumulation_steps # 描述: 梯度累积步数。
--eval_accumulation_steps # 描述: 评估累积步数。
--eval_delay # 描述: 评估延迟。
--learning_rate # 描述: 学习率。
--weight_decay # 描述: 权重衰减。
--adam_beta1 # 描述: Adam 优化器的 beta1 参数。
总结
### 文章总结这篇文章整理了关于`llama-factory`配置参数的一批详细选项,旨在帮助理解并配置该工具的各种功能。参数大致可以分为以下几类:
#### 1. **模型和适配器相关参数**
- 提供了关于适配器的指定和配置(如名称、文件夹路径)。
- 缓存管理选项以及分词器配置,比如是否使用快速分词器和是否调整词汇表大小。
- CPU内存使用优化选项和控制特殊标记的配置。
#### 2. **量化和推理相关参数**
- 集成了多种量化方法和类型,用于优化模型大小和提高推理速度。
- 提供了ROPE缩放、闪存注意力、混合深度等高级配置,以帮助优化模型性能和应用场景。
- 推理后端及其配置,包括支持的数据类型选择等。
#### 3. **训练相关参数**
- 控制训练过程的参数,如训练策略、梯度检查点启用与否、LayerNorm和LM头输出的上转换等。
- 训练细节如从头训练、评估中的beam数量、损失计算中的填充标记处理等。
- 推理配置选项,包括后端选择、最大长度、GPU利用率等。
#### 4. **导出相关参数**
- 导出模型到不同格式或平台的参数配置,包括导出目录、设备以及量化选项。
- 提供了导出为特定格式或Hub模型的选项。
#### 5. **数据和训练配置**
- 数据集相关的多种配置,如数据集名称、目录、拆分方式及预处理选项。
- 数据处理过程中的选项,如截断长度、流式处理、混合策略等。
- 训练过程中的几个重要参数如缓冲区大小、工作线程数以及打包方法的启用。
#### 6. **训练过程控制参数**
- 控制训练、评估及预测流程的开关。
- 评估策略和延迟设置。
- 训练过程中的核心参数,如学习率、权重衰减、批次大小和梯度累积步骤等。
通过这些详细参数,用户可以根据自己的具体需求对`llama-factory`进行灵活的配置,以适应不同的模型训练、推理和导出任务。