LlamaFactory 训练参数详细介绍
- 官方文档:
1(基础与通用参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
-h, --help | 非必须, 无默认值 | 含义:显示帮助信息并退出。 何时使用:在不确定参数含义或需要查看所有可用选项时使用。 影响范围:不运行实际任务,只是显示帮助文本。 场景示例:初次使用命令或忘记参数作用时输入 --help 。 | --help | 无(布尔式开关) |
--vllm_maxlen | 非必须, 默认:2048 | 含义:为vLLM引擎指定最大序列长度(输入prompt+模型生成的回复的总token数上限)。 何时使用:当您需要生成更长的输出或您的prompt很长时调大此值;显存不足或希望加快响应时可适当缩小。 影响范围:影响vLLM引擎能处理的上下文长度和生成结果的最大长度,对显存和计算时间有直接影响。 场景示例:生成长篇文本、对话历史很长的对话场景,可将 --vllm_maxlen 增大。 | --vllm_maxlen 4096 | 正整数 |
--vllm_gpu_util | 非必须, 默认:0.9 | 含义:指定vLLM可使用GPU显存比例(0到1之间)。 何时使用:显存较小需避免OOM时减小此值;空闲资源较多时保持默认或增大以提升性能。 影响范围:影响推断阶段GPU内存使用策略,对稳定性和可加载模型大小有影响。 场景示例:在显存紧张的GPU上使用 --vllm_gpu_util 0.5 以避免加载失败。 | --vllm_gpu_util 0.8 | 浮点数(0,1) |
--vllm_enforce_eager | 非必须, 默认:False | 含义:是否禁用CUDA graph并强制vLLM使用eager模式运行。 何时使用:遇到某些不兼容CUDA graph的情况或调试性能问题时可尝试启用。 影响范围:可能降低推断性能,但提高兼容性和可调试性。 场景示例:如果使用特定硬件或驱动时遇到graph模式问题,可 --vllm_enforce_eager 。 | --vllm_enforce_eager | 布尔值 |
--vllm_max_lora_rank | 非必须, 默认:32 | 含义:vLLM引擎中可支持的LoRA最大秩。如果您在加载LoRA微调模型时要求超过该秩,则需要增大此值。 何时使用:加载高秩的LoRA微调模型时;若从未使用LoRA则可忽略。 影响范围:决定可支持的LoRA适配器复杂度,对显存和性能有间接影响。 场景示例:使用秩64的LoRA适配器时需 --vllm_max_lora_rank 64 。 | --vllm_max_lora_rank 64 | 正整数 |
2(模型导出与量化相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--export_dir | 非必须, 默认:None | 含义:指定导出模型文件的保存目录。 何时使用:当您需要将当前模型导出为可分发的格式(如HF格式或safetensors)以便部署或分享时。 影响范围:决定导出文件的存放位置,不影响训练过程,只影响导出产物。 场景示例:训练完成后 --export_dir ./exported_model 将模型权重导出到该目录。 | --export_dir /path/to/export | 字符串(路径) |
--export_size | 非必须, 默认:1 | 含义:导出模型分片大小(GB)。当模型很大时,可以指定分片大小,以将模型权重拆分成多个文件。 何时使用:导出大模型时,如需要将权重分片,方便上传或分发。 影响范围:只影响导出文件的划分方式,对模型本身无影响。 场景示例: --export_size 2 将模型拆分成约2GB大小的若干片段。 | --export_size 2 | 正整数或浮点数(GB) |
--export_device | 非必须, 默认:cpu | 含义:导出模型使用的设备。cpu 表示在CPU上导出,auto 可根据硬件加速导出过程。 何时使用:在高性能机器上想加速导出时用 auto ;普通情况默认cpu 即可。 影响范围:影响导出模型时的加载和转换速度,不影响模型最终格式和功能。 场景示例: --export_device auto 在有加速硬件的环境中更快导出。 | --export_device auto | {cpu ,auto } |
--export_quantization_bit | 非必须, 默认:None | 含义:指定导出模型时进行量化的bit数。例如将模型权重从FP16量化到8bit,从而减小文件大小。 何时使用:想在部署时减少模型体积和内存使用量,可指定8bit或4bit量化。 影响范围:量化会使模型变小、推断加速,但可能略有精度损失。 场景示例: --export_quantization_bit 8 导出8bit量化模型用于资源有限的部署环境。 | --export_quantization_bit 8 | 整数(如8,4) |
--export_quantization_dataset | 非必须, 默认:None | 含义:量化校准所需的数据集路径或名称,在量化时用这部分数据统计分布以实现更好精度。 何时使用:需要高质量量化且避免精度大幅下降时,应提供一小部分有代表性的数据进行量化校准。 影响范围:影响量化过程和最终量化模型的精度,数据集越贴近实际使用场景,量化效果越好。 场景示例: --export_quantization_dataset my_calib_data 在导出时对模型进行更精确的量化。 | --export_quantization_dataset dataset_name | 字符串(路径或数据集名称) |
--export_quantization_nsamples | 非必须, 默认:128 | 含义:量化校准所用样本数。越多样本可能量化统计更准,但导出时间更长。 何时使用:需要更精确量化可增加此值,硬件资源有限或时间紧则减少。 影响范围:影响量化校准过程的精度与耗时,对最终量化模型质量有中等影响。 场景示例: --export_quantization_nsamples 256 增加校准样本数提升量化质量。 | --export_quantization_nsamples 256 | 正整数 |
--export_quantization_maxlen | 非必须, 默认:1024 | 含义:量化样本的最大长度,用于校准时限制输入序列长度。 何时使用:当数据过长且与实际推断场景不符时,可适当调整。 影响范围:影响量化过程中统计的范围,对最终精度有一定影响。 场景示例: --export_quantization_maxlen 2048 使量化统计更适合长文本场景。 | --export_quantization_maxlen 2048 | 正整数 |
--export_legacy_format | 非必须, 默认:False | 含义:是否使用.bin 格式而非.safetensors 格式导出模型权重。 何时使用:部分旧版工具只支持 .bin 格式时可启用,否则建议使用.safetensors 以提高安全性和加载速度。 影响范围:影响导出文件格式,对功能无影响。 场景示例: --export_legacy_format 导出旧格式兼容老版本环境。 | --export_legacy_format | 布尔值 |
--export_hub_model_id | 非必须, 默认:None | 含义:在导出后将模型推送到Hugging Face Hub时使用的repo名称。 何时使用:当您想自动将导出后的模型上传到Hub以便分享或部署时。 影响范围:影响自动上传环节,不影响本地导出结果。 场景示例: --export_hub_model_id my-org/my-model 导出后直接推送到HF仓库。 | --export_hub_model_id org/model-id | 字符串(仓库名称) |
3(图像、视频相关参数及动态量化参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--image_resolution | 非必须, 默认:512 | 含义:对输入图像进行预处理时的最大分辨率限制,即将图像的高和宽限制在不超过该值的范围内,以平衡模型推断精度和内存占用。 何时使用:当处理较大图像导致显存占用过高或速度缓慢时可降低该值;当需要保留更多图像细节时可适当提高。 影响范围:影响图像输入的预处理结果,从而影响模型在视觉任务(若模型支持多模态)的性能和速度。 场景示例:若您的图像原图为4K分辨率(3840×2160),可用 --image_resolution 1024 减少处理开销。 | --image_resolution 1024 | 正整数 |
--video_resolution | 非必须, 默认:128 | 含义:类似于图像分辨率参数,用于对视频输入进行缩放,限制视频帧的高宽最大值,以降低显存和计算量。 何时使用:对视频进行推断(如视频理解、视频字幕生成)时,若视频分辨率过高可降低该值以提高处理速度和减少内存占用。 影响范围:影响视频帧输入的清晰度和模型对细节的捕捉能力。 场景示例: --video_resolution 256 可在处理720p视频时快速降分辨率,加快模型处理速度。 | --video_resolution 256 | 正整数 |
--video_fps | 非必须, 默认:2.0 | 含义:对视频输入进行处理时,每秒选取多少帧进行抽样。较低的fps可降低计算量但减少信息量,较高的fps保留更多视频信息但加大计算成本。 何时使用:当视频过长或帧率过高导致处理慢、内存紧张时可降低该值;需要更完整视频信息则提高该值。 影响范围:影响视频信息的密度,对模型的视频理解或生成结果有影响。 场景示例: --video_fps 5 适用于分析短片段视频,获取更完整的动作信息。 | --video_fps 5 | 浮点数 |
--video_maxlen | 非必须, 默认:64 | 含义:在对视频进行预处理时,从采样帧中最多选取多少帧作为输入上限。过大可能导致显存不足,过小可能丢失关键信息。 何时使用:根据显存和任务需求灵活调整。短视频可用较小值,长视频分析可适当增大,但需谨慎以免内存不足。 影响范围:影响模型可看到的视频时长范围和信息丰富度。 场景示例: --video_maxlen 128 适用于较长片段的视频理解任务。 | --video_maxlen 128 | 正整数 |
--quantization_method | 非必须, 默认:bitsandbytes | 含义:在即时(on-the-fly)量化时使用的方法。bitsandbytes 是常用高性能量化库,hqq 和eetq 是其他可选方案。 何时使用:需在推断时减少模型内存占用时使用。若默认的bitsandbytes不兼容,可尝试其他方法。 影响范围:影响推断时模型内部计算精度和内存占用,可能影响推断速度和兼容性。 场景示例: --quantization_method eetq 在一些特殊硬件上可能更兼容或更高效。 | --quantization_method hqq | {bitsandbytes ,hqq ,eetq } |
--quantization_bit | 非必须, 默认:None | 含义:指定即时量化的bit数(如4、8bit),减少模型推断时的精度和内存占用。 何时使用:当显存不足但仍需较快推断时。注意过低bit可能损失精度。 影响范围:影响内存使用量、推断速度与精度。 场景示例: --quantization_bit 4 可在仅有少量GPU内存下仍可运行较大模型,但可能精度略降。 | --quantization_bit 4 | 整数(4,8等) |
--quantization_type | 非必须, 默认:nf4 | 含义:指定bitsandbytes int4量化时的数据类型(如fp4 或nf4 )。不同类型对分布适应性与精度略有不同。 何时使用:对int4量化有特定需求时;若nf4不适合特定数据分布可尝试fp4。 影响范围:影响量化后的模型表示精度和性能差异。 场景示例: --quantization_type fp4 在特定模型和数据集上可能精度更好。 | --quantization_type fp4 | {fp4 ,nf4 } |
--double_quantization | 非必须, 默认:True | 含义:在bitsandbytes int4训练中使用双重量化,可提高精度稳定性。 何时使用:大多数情况下保留默认True以获得更好精度;若资源有限或在特定实验中需关闭可设置False。 影响范围:影响量化精度与推断稳定性。 场景示例:默认开启,除非开发者明确知道关闭的必要性。 | --double_quantization | 布尔值 |
--no_double_quantization | 非必须, 默认:False | 含义:与--double_quantization 相对立的开关,用于禁止双重量化。 何时使用:调试或试验不使用双重量化对性能的影响时。 影响范围:同上,影响量化后的精度。 场景示例: --no_double_quantization 禁用双重量化,可能速度略快但精度稍差。 | --no_double_quantization | 布尔值 |
--quantization_device_map | 非必须, 默认:None | 含义:指定4-bit量化模型推断时使用的设备映射,比如auto 表示自动选择设备分布。如果使用bitsandbytes>=0.43.0,设定为auto 可更智能地分配模型组件到CPU/GPU。 何时使用:对大模型进行分布式加载以节省显存或加速推断时。 影响范围:影响模型加载到哪个设备(CPU/GPU),进而影响性能和内存使用。 场景示例: --quantization_device_map auto 自动选择最佳设备分配策略。 | --quantization_device_map auto | {auto ,None} |
4(模型与Adapter相关加载参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--model_name_or_path | 非必须, 默认:None | 含义:指定要加载的模型(本地路径或在线HuggingFace/ModelScope仓库ID)。决定训练或推断所使用的基础模型。 何时使用:当您需要使用特定预训练模型或已微调模型进行下游任务时必须指定。 影响范围:影响模型的初始权重和架构,是后续训练、推断的基础。 场景示例: --model_name_or_path /path/to/my_model 或 --model_name_or_path facebook/llama-7b 。 | --model_name_or_path /path/to/model | 字符串(路径或仓库名) |
--adapter_name_or_path | 非必须, 默认:None | 含义:指定Adapter的路径或在线仓库名,可用逗号分隔多个adapter并在加载后进行融合。适用于LoRA、AdapterHub等微调插件。 何时使用:在已有基础模型上叠加LoRA或Adapter微调结果时。 影响范围:加载额外参数层影响模型在特定任务上的表现,提高泛化度或适应新任务。 场景示例: --adapter_name_or_path adapterA,adapterB 合并多个微调adapter的能力。 | --adapter_name_or_path adapterA,adapterB | 字符串(路径或仓库名列表) |
--adapter_folder | 非必须, 默认:None | 含义:指定Adapter权重所在文件夹。与--adapter_name_or_path 类似,但这里使用本地文件夹路径。 何时使用:已在本地下载或训练好adapter权重的情况。 影响范围:与适配器参数加载相关,影响模型最终的任务能力。 场景示例: --adapter_folder /path/to/adapters 将本地adapters载入模型。 | --adapter_folder /path/to/adapters | 字符串(路径) |
--cache_dir | 非必须, 默认:None | 含义:存放从HuggingFace或ModelScope下载的预训练模型的缓存目录,可加快重复运行速度。 何时使用:希望避免每次运行都从网络下载模型时,可指定本地缓存路径。 影响范围:仅影响模型权重的存储和加载性能,不影响训练和推断逻辑本身。 场景示例: --cache_dir /path/to/cache 在多次运行之间缓存模型提高加载速度。 | --cache_dir /path/to/cache | 字符串(路径) |
--use_fast_tokenizer | 非必须, 默认:True | 含义:是否使用tokenizers 库提供的fast tokenizer。fast tokenizer通常比传统Python tokenizer更快。 何时使用:建议默认开启以提高数据处理速度,除非出现兼容性问题。 影响范围:影响数据预处理阶段的tokenization速度和可能的token边界细微差异。 场景示例:默认 --use_fast_tokenizer 以加快大型文本数据集的处理。 | --use_fast_tokenizer | 布尔值 |
--no_use_fast_tokenizer | 非必须, 默认:False | 含义:禁用fast tokenizer转而使用慢速版本,可能适用于对分词有特殊要求或fast版本不支持的场景。 何时使用:fast tokenizer无法满足需求或出现异常时。 影响范围:分词速度可能降低,但可能获得特定兼容性。 场景示例: --no_use_fast_tokenizer 在某些罕见分词规则下保留旧分词器行为。 | --no_use_fast_tokenizer | 布尔值 |
--resize_vocab | 非必须, 默认:False | 含义:是否根据新的特殊token或数据分布自动调整分词器词汇表大小并同步embedding层大小。 何时使用:在引入新特殊token或自定义词表时启用。 影响范围:改变模型embedding层大小,影响模型参数数量和可能的微调性能。 场景示例: --resize_vocab 在添加新special tokens后重新匹配embedding维度。 | --resize_vocab | 布尔值 |
--split_special_tokens | 非必须, 默认:False | 含义:分词器是否将特殊token进一步拆分。如果为False,则特殊token作为整体保留。 何时使用:当需要对特殊token进行细粒度处理时,可开启;通常保持False以保留特殊token的独立性。 影响范围:影响分词策略,对特定下游任务(如信息抽取)可能有微妙影响。 场景示例: --split_special_tokens 在分析prompt结构时获得更细粒度信息。 | --split_special_tokens | 布尔值 |
--new_special_tokens | 非必须, 默认:None | 含义:添加新的特殊token到分词器中,多个用逗号分隔。这可增强模型在特定任务中的适应性,如引入新格式标记。 何时使用:定义新任务格式、使用新标记分隔问题和回答时。 影响范围:影响分词器词表和模型的输入表示方式。可能需要 --resize_vocab 同步embedding层。 场景示例: --new_special_tokens <QUESTION>,<ANSWER> 添加自定义标记来分隔QA对话。 | --new_special_tokens "<token1>,<token2>" | 字符串列表 |
5(模型加载与优化相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--model_revision | 非必须, 默认:main | 含义:指定加载远程仓库模型的版本,可为分支名、tag名或commit id。例如main 、v1.0 、abcdef 。 何时使用:当远程仓库中存在多个版本的模型,需要特定版本时。 影响范围:决定加载的模型版本,影响模型参数和性能,如某版本可能对某任务优化过。 场景示例: --model_revision v1.0 确保加载特定标记版本的模型以再现实验结果。 | --model_revision v1.0 | 字符串 |
--low_cpu_mem_usage | 非必须, 默认:True | 含义:是否使用高效的内存加载方式,尽可能减少CPU内存占用量。 何时使用:在CPU内存不足的环境下加载大模型时开启,确保不会因为内存不足而崩溃。 影响范围:加速或简化模型加载过程,减少内存峰值占用,但与加载速度和兼容性有轻微权衡。 场景示例:默认开启 --low_cpu_mem_usage 以更安全地加载大模型。 | --low_cpu_mem_usage | 布尔值 |
--no_low_cpu_mem_usage | 非必须, 默认:False | 含义:关闭内存高效加载模式。 何时使用:需要传统加载方式进行调试,或在资源充足下不需要优化时。 影响范围:可能导致加载时内存占用较高。 场景示例: --no_low_cpu_mem_usage 在调试加载问题时使用。 | --no_low_cpu_mem_usage | 布尔值 |
--rope_scaling | 非必须, 默认:None | 含义:指定RoPE(Rotary Position Embeddings)的缩放策略,如linear 或dynamic ,用于扩展模型上下文长度。 何时使用:在长文本处理场景中,需要增大上下文窗口时可使用RoPE scaling策略。 影响范围:改变模型的位置编码,对长序列任务性能有影响。 场景示例: --rope_scaling linear 在长文档QA任务中使用,使模型上下文窗口更大。 | --rope_scaling linear | {linear ,dynamic ,None} |
--flash_attn | 非必须, 默认:auto | 含义:启用FlashAttention以加速注意力计算,auto 表示自动选择,disabled 禁用,sdpa 或fa2 为特定实现策略。 何时使用:需要加速训练和推断,特别是在长序列场景中,FlashAttention可显著提升速度和节约显存。 影响范围:影响注意力计算效率和内存占用,对速度有明显提升作用。 场景示例: --flash_attn fa2 在高性能GPU上使用加速注意力计算。 | --flash_attn fa2 | {auto ,disabled ,sdpa ,fa2 } |
--shift_attn | 非必须, 默认:False | 含义:启用S^2-Attn(Shift Short Attention)策略,提高在长上下文下的注意力性能。 何时使用:需在长上下文或特定研究场景下测试注意力改进方法时使用。 影响范围:可能改变注意力分布策略,对特定任务性能产生影响。 场景示例: --shift_attn 在探索性研究中启用以比较与传统注意力性能差别。 | --shift_attn | 布尔值 |
--mixture_of_depths | 非必须, 默认:None | 含义:选择将模型转换为或加载为Mixture-of-Depths(MoD)结构,convert 将现有模型转化,load 直接加载MoD模型。 何时使用:进行特定研究或需要MoD特性(如更灵活的深度组合)时。 影响范围:改变模型结构及其性能特性,对兼容性有要求。 场景示例: --mixture_of_depths convert 在研究不同层深度分布对性能影响时使用。 | --mixture_of_depths convert | {convert ,load ,None} |
--use_unsloth | 非必须, 默认:False | 含义:启用unsloth优化,旨在提升LoRA训练的效率和稳定性。 何时使用:在LoRA训练中需要进一步性能优化或资源节省时尝试。 影响范围:改变训练内部优化逻辑,可能提升训练速度或稳定性。 场景示例: --use_unsloth 在LoRA训练瓶颈时尝试。 | --use_unsloth | 布尔值 |
--use_unsloth_gc | 非必须, 默认:False | 含义:在unsloth模式中使用梯度检查点(gradient checkpointing),进一步减少内存使用。 何时使用:训练大模型或显存不足时开启以减少显存占用。 影响范围:降低内存消耗但可能略微降低训练速度。 场景示例: --use_unsloth_gc 在大规模LoRA训练中节省GPU内存。 | --use_unsloth_gc | 布尔值 |
--enable_liger_kernel | 非必须, 默认:False | 含义:启用liger kernel以加速训练,特别是在分布式或多卡场景中可能提升训练效率。 何时使用:在支持liger kernel的硬件/框架下,需额外性能优化时尝试。 影响范围:训练速度加快,对特定硬件依赖。 场景示例: --enable_liger_kernel 在高性能集群中启用以缩短训练时间。 | --enable_liger_kernel | 布尔值 |
--moe_aux_loss_coef | 非必须, 默认:None | 含义:在Mixture-of-Experts (MoE)模型中设定辅助路由损失系数,用于平衡专家路由的训练。 何时使用:在MoE模型训练中需要调优专家调度效果时。 影响范围:改变MoE的训练动态和平衡性,对最终模型效果有影响。 场景示例: --moe_aux_loss_coef 0.1 在MoE模型中精调路由loss,提升专家分配质量。 | --moe_aux_loss_coef 0.1 | 浮点数 |
6(梯度检查点、upcast与训练初始化相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--disable_gradient_checkpointing | 非必须, 默认:False | 含义:禁用梯度检查点,这会增加显存占用,但可能提升训练速度。 何时使用:如果在开启梯度检查点情况下训练过慢或出现兼容性问题时可禁用。 影响范围:显存占用和训练效率折中。 场景示例: --disable_gradient_checkpointing 在显存足够时换取更快的反向传播速度。 | --disable_gradient_checkpointing | 布尔值 |
--upcast_layernorm | 非必须, 默认:False | 含义:将LayerNorm的权重提升至fp32精度计算,可提高数值稳定性。 何时使用:当训练中出现数值不稳定或NaN时尝试启用。 影响范围:略增计算开销,但提高训练稳定性。 场景示例: --upcast_layernorm 在低精度训练遇数值问题时使用。 | --upcast_layernorm | 布尔值 |
--upcast_lmhead_output | 非必须, 默认:False | 含义:将lm_head输出提升为fp32精度,减少低精度误差累积。 何时使用:同上,在需要更精确logits以减少数值问题时。 影响范围:稍增计算量,提高稳定性与精度。 场景示例: --upcast_lmhead_output 在低精度训练出现输出波动时尝试。 | --upcast_lmhead_output | 布尔值 |
--train_from_scratch | 非必须, 默认:False | 含义:从零随机初始化模型权重进行训练,而非基于预训练模型微调。 何时使用:极少数情况下,如想完全自己训练模型,或做研究对比预训练vs无预训练。 影响范围:无预训练信息,训练时间更长、数据需求更高。 场景示例: --train_from_scratch 验证无预训练模型在任务上的表现。 | --train_from_scratch | 布尔值 |
7(推断后端与权重Offload相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--infer_backend | 非必须, 默认:huggingface | 含义:指定推断使用的后端引擎。huggingface 指使用Hugging Face Transformers原生推断,vllm 指使用vLLM引擎进行更快、更高效的推断。 何时使用:若需要更快推断性能可尝试 vllm ,如现有pipeline基于Hugging Face可用默认值。 影响范围:影响推断速度与资源使用策略。 场景示例: --infer_backend vllm 在生产环境中加速响应时间。 | --infer_backend vllm | {huggingface ,vllm } |
--offload_folder | 非必须, 默认:offload | 含义:指定模型权重offload(卸载)到磁盘的目录,用于在显存不足时将部分权重临时存储在CPU内存或磁盘中。 何时使用:在显存有限但需要加载大模型时使用offload平衡内存。 影响范围:可能降低推断速度(I/O开销),但允许在有限GPU资源下运行大模型。 场景示例: --offload_folder /path/to/offload_dir 在GPU不足时启用offload。 | --offload_folder /path/to/offload | 字符串(路径) |
--use_cache | 非必须, 默认:True | 含义:推断时是否使用Key-Value缓存,加速自回归生成。 何时使用:默认开启加速长文本生成;如不需要多轮预测优化可关闭。 影响范围:影响生成速度和内存占用,通常开启有利于性能。 场景示例: --use_cache 生成长回答时加速。 | --use_cache | 布尔值 |
--no_use_cache | 非必须, 默认:False | 含义:禁用推断缓存,每次生成下一个token都要重新计算全部上下文。 何时使用:对比实验或特定情况不希望使用缓存时。 影响范围:显著降低多轮生成速度。 场景示例: --no_use_cache 在调试性能问题时禁用缓存。 | --no_use_cache | 布尔值 |
--infer_dtype | 非必须, 默认:auto | 含义:推断时使用的数据类型,如float16 、bfloat16 、float32 或auto 自动选择。 何时使用:在有更高精度需求时用float32,在需节省显存时用float16或bfloat16。 影响范围:影响推断内存与速度,低精度更省显存但可能有轻微精度损失。 场景示例: --infer_dtype float16 在GPU上节约显存加快推断。 | --infer_dtype float16 | {auto ,float16 ,bfloat16 ,float32 } |
--hf_hub_token | 非必须, 默认:None | 含义:用于登录Hugging Face Hub的认证token,方便从私有仓库加载或推送模型。 何时使用:访问私有模型仓库或需要上传模型时。 影响范围:仅影响下载与上传权限,对训练推断逻辑无直接影响。 场景示例: --hf_hub_token <token> 下载私有HF模型。 | --hf_hub_token <token> | 字符串 |
--ms_hub_token | 非必须, 默认:None | 含义:ModelScope Hub认证token,类似Hugging Face Hub,用于访问私有资源。 何时使用:同上,在ModelScope中加载私有模型时使用。 影响范围:对访问权限有影响。 | --ms_hub_token <token> | 字符串 |
--om_hub_token | 非必须, 默认:None | 含义:Modelers Hub认证token,与上述两个Hub相似。 何时使用:需从Modelers Hub访问私有模型时。 影响范围:仅影响访问权限。 | --om_hub_token <token> | 字符串 |
--print_param_status | 非必须, 默认:False | 含义:用于调试,打印模型参数状态(如哪些参数梯度可训练)。 何时使用:调试或确认微调配置时。 影响范围:不影响训练与推断逻辑,仅输出信息。 场景示例: --print_param_status 检查参数冻结与否。 | --print_param_status | 布尔值 |
8(模板与数据集相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--template | 非必须, 默认:None | 含义:指定在训练和推断中使用的prompt模板,如给定系统提示和用户输入格式的模板文件或名称。 何时使用:统一prompt格式,确保输入结构一致性。例如对话模型需特定格式的prompt。 影响范围:影响模型输入格式和上下文结构,进而影响生成质量。 场景示例: --template my_chat_template 对对话生成统一格式化prompt。 | --template my_template | 字符串 |
--dataset | 非必须, 默认:None | 含义:训练使用的数据集名称,支持多个数据集以逗号分隔。可为本地路径或在线数据集名称。 何时使用:进行微调或预训练时指定训练集。 影响范围:决定模型学到的知识与偏好,对最终性能影响巨大。 场景示例: --dataset squad,extractive_qa 使用两个数据集联合训练QA模型。 | --dataset dataset1,dataset2 | 字符串列表 |
--eval_dataset | 非必须, 默认:None | 含义:评估使用的数据集名称,用逗号分隔多个评估集。 何时使用:在训练中定期验证模型性能,或在训练结束后评价模型。 影响范围:决定评估指标和模型选择策略(如早停)。 场景示例: --eval_dataset dev_data 在训练中定期验证精度和损失。 | --eval_dataset eval_data | 字符串列表 |
--dataset_dir | 非必须, 默认:data | 含义:指定数据集所在的本地文件夹。 何时使用:数据集已下载到本地并非从在线仓库加载时。 影响范围:影响数据加载路径,与 --dataset 结合确定数据位置。 场景示例: --dataset_dir /path/to/data 从本地数据文件中加载样本。 | --dataset_dir /path/to/data | 字符串(路径) |
--cutoff_len | 非必须, 默认:1024 | 含义:对输入样本进行截断的最大长度,防止过长样本造成内存问题或不必要开销。 何时使用:数据较长且模型上下文有限时,需要截断以适配模型最大上下文长度。 影响范围:影响输入的有效信息量和模型性能平衡。 场景示例: --cutoff_len 512 缩短训练输入长度来提升速度。 | --cutoff_len 512 | 正整数 |
9(数据加载与处理策略相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--train_on_prompt | 非必须, 默认:False | 含义:是否在训练中对prompt部分进行loss计算。通常在指令微调中,只有用户回答部分才作为训练目标,prompt部分不计算loss。 何时使用:当希望模型更好地记忆或适应prompt本身的结构和信息时,可开启;默认关闭以免模型过度拟合提示部分。 影响范围:影响训练目标的范围,对模型对prompt的记忆与理解有影响。 场景示例: --train_on_prompt 在特定任务中需要模型准确记忆系统提示信息。 | --train_on_prompt | 布尔值 |
--mask_history | 非必须, 默认:False | 含义:在对话式数据集场景下,是否仅对最后一轮用户问题-回答对计算loss,而屏蔽历史对话轮次的训练信号。 何时使用:希望模型专注当前轮次问题,减少对长对话历史的学习负担时使用。 影响范围:影响模型对对话历史的依赖程度,可能提升模型对最近一次query的响应质量。 场景示例: --mask_history 在多轮对话训练中只训练最新一轮的问答对。 | --mask_history | 布尔值 |
--streaming | 非必须, 默认:False | 含义:是否启用数据流式加载(streaming)模式,从而不一次性将全部数据加载入内存。 何时使用:当数据集非常庞大无法全部载入内存时使用streaming,可显著降低内存压力。 影响范围:影响数据加载方式和速度,对训练性能有一定影响,需要合理搭配缓冲区大小。 场景示例: --streaming 在处理超大数据集(TB级别)时使用。 | --streaming | 布尔值 |
--buffer_size | 非必须, 默认:16384 | 含义:在streaming模式下,指定随机采样样本的缓冲区大小。通过足够大的缓冲区保证数据分布随机性。 何时使用:在流式数据加载中需要充分随机化数据顺序时调整此值。 影响范围:影响数据随机化质量和内存占用,缓冲越大越随机,但占用更多内存。 场景示例: --buffer_size 10000 在内存允许的情况下保证较好的数据混合。 | --buffer_size 10000 | 正整数 |
--mix_strategy | 非必须, 默认:concat | 含义:数据集混合策略:concat 将数据集依次拼接,interleave_under 或interleave_over 表示在过/欠采样情境下交织多个数据集。 何时使用:同时使用多个数据集训练时,需要控制数据分布(合并、交错、平衡)以改善泛化性能。 影响范围:影响最终训练数据的分布和样本混合程度,从而影响模型学习偏好。 场景示例: --mix_strategy interleave_over 在数据不均衡时增加小数据集的采样频率。 | --mix_strategy interleave_over | {concat ,interleave_under ,interleave_over } |
--interleave_probs | 非必须, 默认:None | 含义:在interleave 策略下指定各数据集的采样概率列表,用逗号分隔。 何时使用:精确控制多个数据集在训练样本中的占比,以适应特定任务需求。 影响范围:影响数据集混合比例,对模型偏好分布有直接控制作用。 场景示例: --interleave_probs 0.5,0.5 表示两个数据集各占一半样本比例。 | --interleave_probs 0.5,0.5 | 浮点数列表(加和为1) |
--overwrite_cache | 非必须, 默认:False | 含义:是否覆盖已缓存的数据预处理结果。默认False避免重复预处理浪费时间。 何时使用:当更改了分词、最大长度或其他预处理步骤,需要重建缓存时。 影响范围:影响数据加载速度(重新生成缓存),不影响最终训练逻辑。 场景示例: --overwrite_cache 在修改数据预处理策略后强制重新构建缓存。 | --overwrite_cache | 布尔值 |
--preprocessing_batch_size | 非必须, 默认:1000 | 含义:预处理数据时每批次处理的样本数量,以平衡内存占用与处理速度。 何时使用:大数据预处理时,如果内存紧张可减小批大小,如果CPU资源富余可增大以提高预处理速度。 影响范围:影响预处理阶段的速度与资源利用率。 场景示例: --preprocessing_batch_size 500 在内存有限的机器上预处理大型数据集。 | --preprocessing_batch_size 500 | 正整数 |
--preprocessing_num_workers | 非必须, 默认:None | 含义:指定预处理时使用的并行工作进程数。 何时使用:多核CPU服务器上可增加worker数以加速预处理;资源有限时可保持较小值或默认值。 影响范围:影响预处理速度和CPU利用率。 场景示例: --preprocessing_num_workers 4 利用多核CPU加速预处理。 | --preprocessing_num_workers 4 | 正整数或None |
--max_samples | 非必须, 默认:None | 含义:调试用参数,截断每个数据集的样本数,以快速试跑或测试代码正确性。 何时使用:在开发阶段验证流程,不需要完整数据集训练时。 影响范围:影响最终模型效果(数据少)但可加快开发迭代。 场景示例: --max_samples 1000 快速测试训练流程。 | --max_samples 1000 | 正整数或None |
--eval_num_beams | 非必须, 默认:None | 含义:在验证时使用的beam search宽度,用于生成式任务评估。如缺省则使用模型默认的生成参数。 何时使用:对生成式任务进行更全面的验证以获得更好的评估指标(如ROUGE、BLEU)。 影响范围:影响验证阶段生成的多样性与搜索质量。 场景示例: --eval_num_beams 4 在验证时使用4束搜索提高评价质量。 | --eval_num_beams 4 | 正整数或None |
--ignore_pad_token_for_loss | 非必须, 默认:True | 含义:在计算损失时忽略padding token对应的预测,以免无意义的pad影响损失和梯度。 何时使用:训练NLP模型时通常保持默认值True,使模型专注实际文本token。 影响范围:影响loss计算的准确性和模型收敛质量。 场景示例:默认 --ignore_pad_token_for_loss 保证计算loss时只考虑有效文本。 | --ignore_pad_token_for_loss | 布尔值 |
--no_ignore_pad_token_for_loss | 非必须, 默认:False | 含义:与上参相反,将pad token也纳入loss计算。这通常不利于模型训练。 何时使用:几乎不使用,除非在某些特殊研究中需要对pad也计算loss。 影响范围:会使loss偏大且无意义。 场景示例: --no_ignore_pad_token_for_loss 仅在特殊实验中测试。 | --no_ignore_pad_token_for_loss | 布尔值 |
10(验证集划分、数据打包与分词相关选项):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--val_size | 非必须, 默认:0.0 | 含义:指定开发集(验证集)大小,可为整数(样本数)或0到1之间浮点(占总数据比例)。 何时使用:当数据集中无单独验证集,需要从训练数据中划分一部分作为验证集时。 影响范围:影响模型验证性能与选择最佳checkpoint的依据。 场景示例: --val_size 0.1 将10%的训练数据用于验证。 | --val_size 0.1 | 浮点数[0,1)或整数 |
--packing | 非必须, 默认:None | 含义:启用sequence packing,自动将多个短序列拼接以减少padding浪费,提高训练效率。 何时使用:数据集存在很多短序列时开启packing提高GPU利用率。 影响范围:影响训练数据的组织方式,减少无效计算、提升训练效率。 场景示例: --packing 在预训练等长文本任务中充分利用序列长度。 | --packing | 布尔值或None |
--neat_packing | 非必须, 默认:False | 含义:启用neat packing,可在无cross-attention的场景下实现更高效的序列打包。 何时使用:在无需跨序列注意力的特定任务中使用,减少无意义计算。 影响范围:进一步提升packing效率。 场景示例: --neat_packing 搭配--packing 在特定模型结构下更高效。 | --neat_packing | 布尔值 |
--tool_format | 非必须, 默认:None | 含义:为构建function calling的例子指定工具格式(如OpenAI的function calling格式等)。 何时使用:在需要模型学习特定函数调用协议或工具使用方式时。 影响范围:影响prompt的格式和模型的输出结构。 场景示例: --tool_format openai 为函数调用式任务提供OpenAI风格格式。 | --tool_format my_tool | 字符串或None |
--tokenized_path | 非必须, 默认:None | 含义:指定已分词数据的保存或加载路径。如果数据集预处理后可存储tokenized版本以加快再次运行。 何时使用:多次实验复用同样分词结果时,提高数据加载速度。 影响范围:影响数据加载效率,不影响最终模型性能。 场景示例: --tokenized_path /path/to/tokenized 避免重复分词流程。 | --tokenized_path /path/to/tokenized | 字符串(路径) |
11(输出与结果保存相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--output_dir | 非必须, 默认:None | 含义:指定训练过程中产出结果(模型检查点、预测文件)的保存路径。 何时使用:当需要保存模型训练后的权重或验证预测结果时必须指定。 影响范围:不会影响训练本身结果,只决定产物保存位置。 场景示例: --output_dir ./checkpoints 将所有中间检查点和最终结果存入该目录。 | --output_dir /path/to/output | 字符串(路径) |
--overwrite_output_dir | 非必须, 默认:False | 含义:是否覆盖已存在的输出目录。若目录内有旧的检查点或结果文件,开启此开关会将其清空并重新写入。 何时使用:需重新训练或不需要保留旧检查点时。 影响范围:只影响文件系统,不影响模型性能。 场景示例: --overwrite_output_dir 当反复调试模型需清理旧结果时使用。 | --overwrite_output_dir | 布尔值 |
--do_train | 非必须, 默认:False | 含义:是否执行训练流程。 何时使用:需要对模型进行训练或微调时开启;如只想推断则可不启用。 影响范围:决定是否运行训练loop,影响GPU计算和时间消耗。 场景示例: --do_train 在进行模型微调时使用。 | --do_train | 布尔值 |
--do_eval | 非必须, 默认:False | 含义:是否在训练过程中或训练结束后对验证集进行评估。 何时使用:需查看模型中间表现或选择最佳checkpoint时启用。 影响范围:增加验证开销,但能监控模型性能变化。 场景示例: --do_eval 在每个epoch后验证精度。 | --do_eval | 布尔值 |
--do_predict | 非必须, 默认:False | 含义:训练结束后是否对测试集(无标签数据集)进行推理生成预测结果。 何时使用:需要产出最终预测答案交付给上线系统或提交结果时。 影响范围:影响训练结束后的额外计算,无关模型参数改变。 场景示例: --do_predict 训练完用模型对未标注数据做预测提交评测。 | --do_predict | 布尔值 |
--eval_strategy | 非必须, 默认:no | 含义:验证策略,no 表示不自动评估,steps 表示按固定step间隔评估,epoch 表示每个epoch结束评估。 何时使用:希望在训练中周期性评估模型性能以调整策略时使用。 影响范围:影响训练循环,增加验证过程和时间消耗。 场景示例: --eval_strategy steps 每隔500 steps验证一次性能。 | --eval_strategy steps | {no ,steps ,epoch } |
--prediction_loss_only | 非必须, 默认:False | 含义:评估和预测时只返回loss不返回预测结果。 何时使用:只关心loss曲线以监控过拟合,不需要实际预测输出时。 影响范围:减少输出信息量。 场景示例: --prediction_loss_only 专注loss曲线的研究场景。 | --prediction_loss_only | 布尔值 |
12(批大小与训练步骤控制参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--per_device_train_batch_size | 非必须, 默认:8 | 含义:单卡(单设备)训练时的批大小。若有多卡则实际批大小 = per_device_train_batch_size * 卡数 * gradient_accumulation_steps 。 何时使用:根据显存大小和所需训练稳定性调整,过大可能导致OOM,过小训练慢。 影响范围:影响训练速度、稳定性和显存利用率。 场景示例: --per_device_train_batch_size 16 若GPU显存较大可增大此值。 | --per_device_train_batch_size 16 | 正整数 |
--per_device_eval_batch_size | 非必须, 默认:8 | 含义:单卡验证批大小。与训练批大小类似,但用于eval过程。 何时使用:评估阶段显存压力通常小,可适当增大加速验证。 影响范围:影响验证速度和显存占用。 场景示例: --per_device_eval_batch_size 32 在eval时更快处理验证集。 | --per_device_eval_batch_size 32 | 正整数 |
--per_gpu_train_batch_size | 非必须, 默认:None(已弃用) | 含义:旧参数,同per_device_train_batch_size ,不再推荐使用。 何时使用:只在旧版本配置中遗留时使用,新用法用 per_device_train_batch_size 代替。 影响范围:不建议使用。 场景示例:无特殊场景,尽量迁移到新参数。 | --per_gpu_train_batch_size 8 | 整数 |
--per_gpu_eval_batch_size | 非必须, 默认:None(已弃用) | 含义:同上,用于验证阶段,已弃用,建议使用per_device_eval_batch_size 。 | --per_gpu_eval_batch_size 8 | 整数 |
--gradient_accumulation_steps | 非必须, 默认:1 | 含义:梯度累积步数,在进行一次反向传播更新前累积多少小批次梯度,从而用较小批次模拟大批次训练。 何时使用:显存不足但需要更大有效批大小时增大此值。 影响范围:影响训练动态、显存占用和收敛速度。 场景示例: --gradient_accumulation_steps 4 在显存有限时实现等效更大批次训练。 | --gradient_accumulation_steps 4 | 正整数 |
--eval_accumulation_steps | 非必须, 默认:None | 含义:验证时的梯度累积步数,一般无梯度更新,更多用于控制内存和评估加载策略。 何时使用:数据量很大,需要分批评估时可指定。 影响范围:仅影响评估过程内存占用和吞吐,非必须。 场景示例: --eval_accumulation_steps 10 分批评估大数据集以避免OOM。 | --eval_accumulation_steps 10 | 整数或None |
--eval_delay | 非必须, 默认:0 | 含义:在训练开始后等待多少epochs或steps才开始首次验证,避免过早评估浪费算力。 何时使用:模型初期还未收敛时暂不评估,有助于加快初期迭代。 影响范围:影响验证触发时间。 场景示例: --eval_delay 1 等待1个epoch后再开始验证。 | --eval_delay 1 | 整数或浮点(取决eval策略) |
--torch_empty_cache_steps | 非必须, 默认:None | 含义:每隔一定step调用torch.cuda.empty_cache() 释放显存碎片,降低OOM风险。 何时使用:训练长时间后出现显存碎片化,可定期清空缓存。 影响范围:略微降低性能但减少内存问题。 场景示例: --torch_empty_cache_steps 1000 每1000 steps清理缓存。 | --torch_empty_cache_steps 1000 | 整数或None |
13(优化器与学习率调度相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--learning_rate | 非必须, 默认:5e-05 | 含义:初始学习率,影响优化步长。 何时使用:根据模型大小与任务难度微调LR,过大不收敛,过小训练慢。 影响范围:决定训练收敛速度与稳定性。 场景示例: --learning_rate 3e-5 常用于BERT微调任务。 | --learning_rate 3e-5 | 浮点数 |
--weight_decay | 非必须, 默认:0.0 | 含义:AdamW优化器的L2正则系数,防止过拟合。 何时使用:一般设为0.01或0.1以改善泛化。 影响范围:影响模型最终泛化性能。 场景示例: --weight_decay 0.01 常用在BERT下游任务微调。 | --weight_decay 0.01 | 浮点数 |
--adam_beta1 | 非必须, 默认:0.9 | 含义:AdamW优化器的β1参数,控制一阶矩估计的平滑度。 何时使用:通常默认0.9即可。特定实验中可调整以改善稳定性。 影响范围:略微影响优化动态。 | --adam_beta1 0.8 | 浮点数 |
--adam_beta2 | 非必须, 默认:0.999 | 含义:AdamW优化器的β2参数,控制二阶矩估计的平滑度。 何时使用:默认即可。特殊情况可调整减少颤动。 影响范围:一般保持默认值。 | --adam_beta2 0.98 | 浮点数 |
--adam_epsilon | 非必须, 默认:1e-08 | 含义:AdamW优化器的epsilon,数值稳定性参数。 何时使用:通常默认即可,极少情况需要调整。 影响范围:对训练稳定性有微弱影响。 | --adam_epsilon 1e-07 | 浮点数 |
--max_grad_norm | 非必须, 默认:1.0 | 含义:梯度裁剪阈值,防止梯度爆炸。 何时使用:默认1.0较常用。如有梯度爆炸可减小此值。 影响范围:影响训练稳定性。 | --max_grad_norm 0.5 | 浮点数 |
--num_train_epochs | 非必须, 默认:3.0 | 含义:训练迭代总轮数。 何时使用:数据大则epoch少(1-3),数据少可多些epoch以充分学习。 影响范围:直接决定训练时间与过拟合程度。 | --num_train_epochs 5 | 浮点数 |
--max_steps | 非必须, 默认:-1 | 含义:若>0则指定训练的总step数,将覆盖num_train_epochs 。 何时使用:希望以step为基准控制训练长度时。 影响范围:强制训练在达到指定step停止。 | --max_steps 10000 | 整数(-1表示忽略) |
--lr_scheduler_type | 非必须, 默认:linear | 含义:学习率调度类型,如linear 、cosine 。 何时使用:尝试不同调度策略提高收敛效果。 影响范围:影响LR随时间变化曲线。 | --lr_scheduler_type cosine | 多种选项如linear ,cosine 等 |
--lr_scheduler_kwargs | 非必须, 默认:{} | 含义:学习率调度额外参数(JSON格式)。 何时使用:如 cosine_with_restarts 需{'num_cycles':1} 等参数。 影响范围:影响学习率变化细节。 | --lr_scheduler_kwargs "{'num_cycles':1}" | JSON对象 |
--warmup_ratio | 非必须, 默认:0.0 | 含义:预热阶段比例,以训练总step的比例计算。 何时使用:在初期缓慢提高学习率,避免训练初期不稳定。 影响范围:影响初期收敛稳定性。 | --warmup_ratio 0.1 | 浮点数[0,1) |
--warmup_steps | 非必须, 默认:0 | 含义:预热步数,直接指定预热期长度。 何时使用:想精确定义预热步数而非比例时。 影响范围:与 warmup_ratio 功能相似。 | --warmup_steps 500 | 整数 |
14(日志记录与监控相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--log_level | 非必须, 默认:passive | 含义:指定主节点的日志等级,如info 、warning 、error 等,用于控制日志输出的详细程度。passive 表示不主动改变日志等级。 何时使用:在多节点训练或调试场景下,想减少或增大日志输出量以便监控或排错时可调整。 影响范围:影响控制台日志输出,不影响模型训练过程本身。 场景示例: --log_level info 在训练时打印一般信息,便于观察训练进度。 | --log_level info | {detail ,debug ,info ,warning ,error ,critical ,passive } |
--log_level_replica | 非必须, 默认:warning | 含义:指定副节点的日志等级。在分布式训练中,非主节点可减少日志量以降低冗余输出。 何时使用:多机多卡训练时,避免每个节点重复打印过多信息。 影响范围:控制日志冗余程度,不影响训练结果。 场景示例: --log_level_replica warning 只在副节点打印警告以上级别信息。 | --log_level_replica error | 同上,与log_level 取值类似 |
--log_on_each_node | 非必须, 默认:True | 含义:在多节点分布式训练中,是否在每个节点都记录日志。 何时使用:若日志过多且对副节点日志无需求,可关闭减小冗余。 影响范围:仅影响日志输出地点。 场景示例:默认True,在需要精简时可配合 --no_log_on_each_node 使用。 | --log_on_each_node | 布尔值 |
--no_log_on_each_node | 非必须, 默认:False | 含义:与--log_on_each_node 相反,禁用在每个节点记日志,仅主节点输出。 何时使用:分布式训练中日志过冗时。 影响范围:减少冗余输出。 | --no_log_on_each_node | 布尔值 |
--logging_dir | 非必须, 默认:None | 含义:指定TensorBoard或类似工具的日志目录,用于可视化训练过程(loss、lr、精度曲线等)。 何时使用:需要使用TensorBoard等工具监控训练过程时。 影响范围:不影响训练本身,只影响可视化数据存储位置。 | --logging_dir ./logs | 字符串(路径) |
--logging_strategy | 非必须, 默认:steps | 含义:日志记录策略,steps 表示每隔一定步数记录一次,epoch 表示每个epoch末记录一次,no 不记录。 何时使用:根据需要的日志精度和训练时间长短选择合适策略。 影响范围:影响日志频率和规模。 | --logging_strategy epoch | {no ,steps ,epoch } |
--logging_first_step | 非必须, 默认:False | 含义:是否在训练开始时(step=0)记录一次日志,便于了解初始状态。 何时使用:需要完整监控从初始点开始的日志时。 影响范围:增加一次日志记录。 | --logging_first_step | 布尔值 |
--logging_steps | 非必须, 默认:500 | 含义:当logging_strategy 为steps时,每隔多少步记录一次日志。 何时使用:希望更频繁或更稀疏地记录以平衡日志量和可见度时。 影响范围:影响日志文件大小与信息密度。 | --logging_steps 100 | 整数或(0,1)浮点数(表示比例) |
--logging_nan_inf_filter | 非必须, 默认:True | 含义:记录日志时是否过滤NaN/Inf loss值,避免日志被无意义数据污染。 何时使用:默认True保证日志清洁,只有在特殊实验中需要追踪NaN时关闭。 影响范围:影响日志中loss数据的质量。 | --logging_nan_inf_filter | 布尔值 |
--no_logging_nan_inf_filter | 非必须, 默认:False | 含义:与上相反,不过滤NaN/Inf值。 何时使用:调试需要看到NaN/Inf情况时。 影响范围:可能日志中出现异常loss值。 | --no_logging_nan_inf_filter | 布尔值 |
15(模型保存策略相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--save_strategy | 非必须, 默认:steps | 含义:模型checkpoint保存策略,steps 表示按固定步数间隔保存,epoch 表示每个epoch结束保存,no 不自动保存。 何时使用:需定期保存模型防止训练中断时丢失进度,或仅在epoch结束时保存以减少检查点数目。 影响范围:影响保存频率与存储空间占用。 | --save_strategy epoch | {no ,steps ,epoch } |
--save_steps | 非必须, 默认:500 | 含义:在save_strategy=steps 时,每隔多少步保存一次checkpoint。 何时使用:控制checkpoint频率,训练长而不想过多占用存储则调大此值。 影响范围:影响检查点数量与保存频率。 | --save_steps 1000 | 整数或(0,1)浮点表示比例 |
--save_total_limit | 非必须, 默认:None | 含义:限制总的checkpoint数量,超过则删除最旧的checkpoint,以节省磁盘空间。 何时使用:长时间训练避免累积过多checkpoint导致磁盘满。 影响范围:影响最终保留的checkpoint数量与历史版本回退可能性。 | --save_total_limit 5 | 整数或None |
--save_safetensors | 非必须, 默认:True | 含义:使用safetensors 格式保存权重,相比.bin 更安全、加载更快,并减少依赖问题。 何时使用:推荐默认True,除非某些工具不兼容。 影响范围:只影响checkpoint格式,不影响模型质量。 | --save_safetensors | 布尔值 |
--no_save_safetensors | 非必须, 默认:False | 含义:禁用safetensors 格式改用传统.bin 文件保存。 何时使用:兼容性问题时使用。 影响范围:减少格式优势。 | --no_save_safetensors | 布尔值 |
--save_on_each_node | 非必须, 默认:False | 含义:多节点训练时在每个节点保存checkpoint,而非仅在主节点。 何时使用:需要多份拷贝保证安全或分布式实验时。 影响范围:占用额外存储资源。 | --save_on_each_node | 布尔值 |
--save_only_model | 非必须, 默认:False | 含义:保存checkpoint时只保存模型权重,不保存优化器、scheduler、rng状态。这减少存储但无法从checkpoint继续训练。 何时使用:只需最终模型推断而非断点续训时可开启。 影响范围:减少存储空间,但失去训练断点恢复能力。 | --save_only_model | 布尔值 |
--restore_callback_states_from_checkpoint | 非必须, 默认:False | 含义:恢复checkpoint时是否也恢复callback的状态(如early stopping计数器等)。 何时使用:要在中断后完美恢复训练流程时开启。 影响范围:提高恢复训练的一致性。 | --restore_callback_states_from_checkpoint | 布尔值 |
16(设备与随机数相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--no_cuda | 非必须, 默认:False(已弃用) | 含义:已废弃参数,表示不使用CUDA。建议用--use_cpu 代替。 何时使用:兼容旧脚本。 影响范围:不推荐使用。 | --no_cuda | 布尔值(不推荐) |
--use_cpu | 非必须, 默认:False | 含义:是否使用CPU设备进行训练推断。当无GPU可用或不需要加速时可启用。 何时使用:在无GPU环境下必须启用。 | --use_cpu | 布尔值 |
--use_mps_device | 非必须, 默认:False(已弃用) | 含义:启用MPS(Apple Silicon GPU)设备,加速在Apple芯片上训练。已弃用特定参数,现代版本会自动检测MPS。 | --use_mps_device | 布尔值(不推荐) |
--seed | 非必须, 默认:42 | 含义:设置随机种子以保证结果可重复性。 何时使用:需要稳定、可重复实验结果时。 影响范围:影响数据打乱和初始化,保证可重复性。 | --seed 123 | 整数 |
--data_seed | 非必须, 默认:None | 含义:专门用于数据采样的随机种子,与主seed分离。 何时使用:需要对数据抽样独立可重复控制时。 | --data_seed 456 | 整数或None |
--jit_mode_eval | 非必须, 默认:False | 含义:是否在推断时使用PyTorch JIT trace加速模型推断。 何时使用:在性能敏感且JIT兼容场景下可启用。 | --jit_mode_eval | 布尔值 |
--use_ipex | 非必须, 默认:False | 含义:使用Intel Extension for PyTorch加速CPU训练推断。 何时使用:CPU场景需加速时启用。 | --use_ipex | 布尔值 |
--bf16 | 非必须, 默认:False | 含义:使用bfloat16混合精度训练/推断,节省内存并加速在支持bfloat16的硬件上。 何时使用:NVIDIA Ampere架构或CPU/NPU支持bfloat16时可启用。 | --bf16 | 布尔值 |
--fp16 | 非必须, 默认:False | 含义:使用fp16混合精度,常用于NVIDIA GPU以减少显存和加速计算。 何时使用:默认支持下在GPU训练时启用提升性能。 | --fp16 | 布尔值 |
--fp16_opt_level | 非必须, 默认:O1 | 含义:Apex AMP的优化等级(O0 , O1 , O2 , O3 )控制混合精度严格程度。 何时使用:需要对混合精度策略细粒度控制时。 | --fp16_opt_level O2 | {O0 ,O1 ,O2 ,O3 } |
--half_precision_backend | 非必须, 默认:auto | 含义:选择半精度后端(如apex 或cpu_amp ),auto 自动选择可用的最佳方案。 何时使用:在特定环境中需指定后端以确保兼容性。 | --half_precision_backend apex | {auto ,apex ,cpu_amp } |
--bf16_full_eval | 非必须, 默认:False | 含义:在评估时使用纯bf16精度,而非仅混合精度,以减少内存并加快评估。 何时使用:硬件支持bf16且评估无需float32精度时。 | --bf16_full_eval | 布尔值 |
--fp16_full_eval | 非必须, 默认:False | 含义:在评估时使用纯fp16精度,同上适用于GPU加速评估。 | --fp16_full_eval | 布尔值 |
--tf32 | 非必须, 默认:None | 含义:启用tf32计算,在NVIDIA Ampere GPU上加速float32矩阵计算,略有精度影响但提升速度。 何时使用:有Ampere GPU并在float32下追求性能提升时。 | --tf32 True | 布尔或None |
17(分布式训练与加速相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--local_rank | 非必须, 默认:-1 | 含义:分布式训练中由启动脚本自动传入,用于指定当前进程的本地rank标识。用户一般无需手动设置。 何时使用:分布式启动器会自动传入此参数。 影响范围:决定当前进程在多卡中的位置,不影响模型性能本身。 | 通常无需手动指定 | 整数(-1表示未分布式或自动分配) |
--ddp_backend | 非必须, 默认:None | 含义:指定分布式训练使用的后端,比如nccl 、gloo 、ccl 等。nccl 适用于NVIDIA GPU。 何时使用:在多机多卡训练需手动指定分布式后端时。 影响范围:影响通信方式和性能表现。 | --ddp_backend nccl | {nccl ,gloo ,mpi ,ccl ,hccl ,cncl ,None} |
--tpu_num_cores | 非必须, 默认:None | 含义:TPU核心数量,自动由启动器传入。 何时使用:在TPU训练环境下由XLA launcher自动指定。 影响范围:影响训练并行度。 | 通常无需手动指定 | 整数或None |
--tpu_metrics_debug | 非必须, 默认:False(已弃用) | 含义:已弃用参数,用于TPU调试打印metrics。 何时使用:旧版TPU调试脚本遗留。 影响范围:不建议使用。 | --tpu_metrics_debug (不推荐) | 布尔值 |
--debug | 非必须, 默认:None | 含义:调试模式选项,如underflow_overflow 监测梯度下溢/上溢,tpu_metrics_debug 在TPU上打印调试信息。 何时使用:排查训练不稳定时启用特定调试模式。 影响范围:增加日志或检查步骤,有助于问题诊断。 | --debug underflow_overflow | 字符串列表(特定关键词) |
--dataloader_drop_last | 非必须, 默认:False | 含义:当数据集大小不能整除批大小时,最后一个不完整批次是否丢弃。 何时使用:有些任务要求严格对齐批次大小时可开启,以简化batch对齐逻辑。 影响范围:可能略微减少训练数据量。 | --dataloader_drop_last | 布尔值 |
--eval_steps | 非必须, 默认:None | 含义:在eval_strategy=steps 模式下,每隔多少steps进行一次验证。可为整数或小于1的浮点表示比例。 何时使用:当不想固定epoch结束才验证,而希望更频繁检查性能。 影响范围:增加验证频率和开销。 | --eval_steps 100 | 整数或(0,1)浮点或None |
--dataloader_num_workers | 非必须, 默认:0 | 含义:数据加载时使用的子进程数量,多核CPU上可提高数据加载吞吐量。 何时使用:数据集较大或预处理复杂时增大此值以提高数据管线速度。 影响范围:影响数据加载效率和CPU占用率。 | --dataloader_num_workers 4 | 非负整数 |
--dataloader_prefetch_factor | 非必须, 默认:None | 含义:DataLoader预取批数,对PyTorch<2.0默认2。可提高数据加载效率。 何时使用:需要数据提前预取提高吞吐时指定。 影响范围:影响数据加载性能和内存占用。 | --dataloader_prefetch_factor 2 | 整数或None |
--past_index | 非必须, 默认:-1 | 含义:如果>=0,则使用模型输出中对应位置的部分作为下一步past state,以加快自回归生成。多为内部实现细节。 何时使用:大多情况不需修改,默认-1不使用past state。 | --past_index 0 (开发者级别使用) | 整数 |
--run_name | 非必须, 默认:None | 含义:为当前运行起个标识符,用于日志系统(如WandB、MLflow)记录。 何时使用:多次实验区分时指定易懂的run name。 影响范围:不影响训练,只影响日志和实验管理。 | --run_name experiment_001 | 字符串 |
--disable_tqdm | 非必须, 默认:None | 含义:是否禁用tqdm进度条显示。 何时使用:日志系统不需要进度条或减少控制台干扰时。 影响范围:仅影响UI显示。 | --disable_tqdm True | 布尔值或None |
--remove_unused_columns | 非必须, 默认:True | 含义:自动移除输入中未用于模型的列,简化数据传递。 何时使用:默认True减轻内存和处理负担。 影响范围:影响模型forward时的输入字段。 | --remove_unused_columns | 布尔值 |
--no_remove_unused_columns | 非必须, 默认:False | 含义:与上相反,不移除未使用列。 何时使用:需要在compute_metrics或其他逻辑中访问未使用列时。 | --no_remove_unused_columns | 布尔值 |
--label_names | 非必须, 默认:None | 含义:指定输入字典中作为label使用的键列表。 何时使用:自定义数据管线时需要显式告知哪些字段是标签。 影响范围:影响Trainer识别标签进行loss计算。 | --label_names labels | 字符串列表 |
--load_best_model_at_end | 非必须, 默认:False | 含义:训练结束时自动加载在验证集上表现最好的checkpoint。 何时使用:需在训练结束直接获得最佳模型时。 影响范围:影响最终模型状态,保证部署即为最佳checkpoint。 | --load_best_model_at_end | 布尔值 |
--metric_for_best_model | 非必须, 默认:None | 含义:指定用于选择最佳模型的度量指标,如accuracy 、loss 。 何时使用:与 --load_best_model_at_end 搭配,决定最佳checkpoint判定标准。 影响范围:影响最终载入的checkpoint版本。 | --metric_for_best_model accuracy | 字符串(指标名) |
--greater_is_better | 非必须, 默认:None | 含义:指明metric_for_best_model 的评估标准是越大越好还是越小越好。 何时使用:如 accuracy 越大越好,loss 越小越好。 影响范围:影响最佳模型选择逻辑。 | --greater_is_better True | 布尔值或None |
--ignore_data_skip | 非必须, 默认:False | 含义:恢复训练时是否跳过已训练过的数据。若True则不跳过,可能导致重复训练相同数据。 何时使用:特殊实验中需要对恢复点数据再训练时。 影响范围:影响恢复训练的准确性和高效性。 | --ignore_data_skip | 布尔值 |
18(FSDP、DeepSpeed、Accelerator相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--fsdp | 非必须, 默认:"" | 含义:启用PyTorch Fully Sharded Data Parallel (FSDP)训练,可选full_shard 、shard_grad_op 、no_shard 、offload 等组合。 何时使用:在大模型多机多卡场景下减少显存占用。 影响范围:影响模型参数分布与训练效率。 | --fsdp full_shard | 字符串特定选项组合 |
--fsdp_min_num_params | 非必须, 默认:0(已弃用) | 含义:已弃用参数,用于FSDP自动wrap策略的最小参数阈值。 何时使用:已弃用,不再建议使用。 | 不再使用此参数 | 整数(不推荐) |
--fsdp_config | 非必须, 默认:None | 含义:提供一个FSDP配置文件(JSON)以定制FSDP相关参数。 何时使用:需复杂FSDP配置时。 影响范围:影响FSDP加载和策略。 | --fsdp_config fsdp_config.json | 字符串或JSON对象 |
--fsdp_transformer_layer_cls_to_wrap | 非必须, 默认:None(已弃用) | 含义:已弃用参数,用于指定FSDP自动wrap的transformer层类名。 何时使用:已弃用,不建议使用。 | 不再使用此参数 | 字符串(不推荐) |
--accelerator_config | 非必须, 默认:None | 含义:提供Accelerator配置文件(JSON)以定制加速策略(如分布式配置、mixed precision等)。 何时使用:复杂分布式/精度配置场景。 影响范围:影响训练加速和分布策略。 | --accelerator_config acc_config.json | 字符串或JSON对象 |
--deepspeed | 非必须, 默认:None | 含义:启用DeepSpeed并指定其配置文件(JSON),实现大模型分布式训练和内存优化。 何时使用:需要DeepSpeed特性(如ZeRO优化)时。 影响范围:显著影响显存占用、训练速度与可扩展性。 | --deepspeed ds_config.json | 字符串或JSON对象 |
--label_smoothing_factor | 非必须, 默认:0.0 | 含义:标签平滑系数,降低模型对正确标签的信心,改善泛化性。 何时使用:分类或序列标注任务中防过拟合。 影响范围:影响loss计算,降低过拟合。 | --label_smoothing_factor 0.1 | 浮点数 |
--optim | 非必须, 默认:adamw_torch | 含义:选择优化器类型,例如adamw_hf 、adamw_torch 、adafactor 、sgd 、rmsprop 、lion_8bit 等。 何时使用:根据任务需求与资源选合适优化器,以提速或省内存。 影响范围:影响训练收敛速度、内存使用和精度。 | --optim adamw_hf | 多种字符串选项 |
--optim_args | 非必须, 默认:None | 含义:为优化器传递额外参数的JSON字符串,如{'lr':3e-5} 。 何时使用:需自定义优化器配置时。 影响范围:精确定制优化器行为。 | --optim_args "{'lr':3e-5}" | 字符串(JSON格式) |
--adafactor | 非必须, 默认:False | 含义:是否用Adafactor代替AdamW,可减少内存与计算量,适合大模型训练。 何时使用:内存受限或尝试Adafactor特性时。 影响范围:影响优化动态与收敛特性。 | --adafactor | 布尔值 |
--group_by_length | 非必须, 默认:False | 含义:按样本长度分组,使batch中的序列长度相似,减少padding浪费。 何时使用:数据长度分布不均时,提升训练效率。 影响范围:对数据加载顺序有影响,提升GPU利用率。 | --group_by_length | 布尔值 |
--length_column_name | 非必须, 默认:length | 含义:使用哪一列表示序列长度,以实现group_by_length 功能。 何时使用:自定义数据列名时需指定实际长度列名。 影响范围:影响数据分组策略。 | --length_column_name text_length | 字符串 |
--report_to | 非必须, 默认:None | 含义:指定将日志和指标上报到哪些服务,如wandb 、mlflow 、comet 等。 何时使用:需要可视化dashboard来监控训练过程。 影响范围:影响日志上报,不影响模型本身。 | --report_to wandb | 字符串或列表 |
--ddp_find_unused_parameters | 非必须, 默认:None | 含义:分布式训练中是否查找未使用参数,以处理部分模型层不被使用的情况。 何时使用:模型中存在条件分支时可关闭,以提升性能。 影响范围:影响DDP正确性和性能。 | --ddp_find_unused_parameters False | 布尔值或None |
--ddp_bucket_cap_mb | 非必须, 默认:None | 含义:DDP在梯度同步时bucket大小(MB),可影响通信性能。 何时使用:优化分布式通信性能时微调。 影响范围:影响分布式通信效率。 | --ddp_bucket_cap_mb 200 | 整数或None |
--ddp_broadcast_buffers | 非必须, 默认:None | 含义:DDP中是否广播缓冲区参数,影响一致性与性能。 何时使用:特殊分布式优化场景。 影响范围:影响同步行为。 | --ddp_broadcast_buffers False | 布尔值或None |
--dataloader_pin_memory | 非必须, 默认:True | 含义:DataLoader是否pin内存,加快数据从CPU传至GPU。 何时使用:默认True提升数据加载性能。 影响范围:略增内存占用换取更快数据传输。 | --dataloader_pin_memory | 布尔值 |
--no_dataloader_pin_memory | 非必须, 默认:False | 含义:与上相反,禁用pin_memory。 何时使用:当pin_memory导致兼容性问题或内存不足时关闭。 | --no_dataloader_pin_memory | 布尔值 |
--dataloader_persistent_workers | 非必须, 默认:False | 含义:DataLoader在重复epoch间是否保持worker进程驻留,减少重复启动成本。 何时使用:长时间训练可节约启动开销。 影响范围:增加RAM占用换取更快epoch切换。 | --dataloader_persistent_workers | 布尔值 |
--skip_memory_metrics | 非必须, 默认:True | 含义:是否跳过内存profiling指标,减少日志复杂度。 何时使用:默认True,除非需要详细内存报告。 | --skip_memory_metrics | 布尔值 |
--no_skip_memory_metrics | 非必须, 默认:False | 含义:与上相反,启用内存profiling指标。 何时使用:内存问题调试时。 | --no_skip_memory_metrics | 布尔值 |
--use_legacy_prediction_loop | 非必须, 默认:False | 含义:使用老版prediction_loop,非必要。 何时使用:与旧版脚本兼容。 影响范围:不建议使用。 | --use_legacy_prediction_loop | 布尔值 |
--push_to_hub | 非必须, 默认:False | 含义:训练结束后将模型上传到Hub(如Hugging Face Hub)。 何时使用:需共享或部署模型到Hub时。 影响范围:增加上传步骤。 | --push_to_hub | 布尔值 |
--resume_from_checkpoint | 非必须, 默认:None | 含义:从指定checkpoint恢复训练。 何时使用:中断训练后继续训练或切换环境时。 影响范围:从中断点恢复模型、优化器状态和rng状态。 | --resume_from_checkpoint /path/to/ckpt | 字符串(路径) |
--hub_model_id | 非必须, 默认:None | 含义:指定HF Hub仓库名称,使output_dir 与该仓库同步。 何时使用:自动将训练产物同步到Hub仓库中时。 影响范围:便于版本管理与在线部署。 | --hub_model_id org/model | 字符串 |
--hub_strategy | 非必须, 默认:every_save | 含义:push_to_hub策略,如end 仅结束时上传,every_save 每次保存时上传。 何时使用:控制与Hub同步频率。 影响范围:影响推送频率和存储版本数量。 | --hub_strategy end | {end ,every_save ,checkpoint ,all_checkpoints } |
--hub_token | 非必须, 默认:None | 含义:访问Hub的认证token,用于私有仓库推送。 何时使用:私有模型仓库场景或无匿名权限时。 影响范围:影响上传权限。 | --hub_token <token> | 字符串 |
--hub_private_repo | 非必须, 默认:False | 含义:将仓库设为私有。 何时使用:需要限制访问模型时。 影响范围:影响Hub仓库访问权限。 | --hub_private_repo | 布尔值 |
--hub_always_push | 非必须, 默认:False | 含义:每次执行push操作时不等待上次push完成,始终push。 何时使用:需要在繁忙管线上频繁更新仓库时。 影响范围:可能增加并发推送导致等待冲突。 | --hub_always_push | 布尔值 |
--gradient_checkpointing | 非必须, 默认:False | 含义:启用梯度检查点减少显存占用,代价是训练速度略降。 何时使用:大模型训练显存不足时几乎必用。 影响范围:显存与速度权衡。 | --gradient_checkpointing | 布尔值 |
--gradient_checkpointing_kwargs | 非必须, 默认:None | 含义:梯度检查点额外配置,如{'use_reentrant':False} 以fine-tune行为。 何时使用:需对checkpointing行为精调时。 影响范围:影响gradient checkpoint实现细节。 | --gradient_checkpointing_kwargs "{'use_reentrant':False}" | 字符串或JSON对象 |
--include_inputs_for_metrics | 非必须, 默认:False | 含义:在compute_metrics函数中是否包含模型输入,以根据输入分析预测性能。 何时使用:对预测结果进行更深入分析时。 影响范围:可能增加内存开销。 | --include_inputs_for_metrics | 布尔值 |
--eval_do_concat_batches | 非必须, 默认:True | 含义:验证时是否将所有batch的输入/输出拼接为一个整体数组,而非保留为列表。 何时使用:多数情况默认True便于统一处理结果。 影响范围:影响结果存储格式,不影响性能。 | --eval_do_concat_batches | 布尔值 |
--no_eval_do_concat_batches | 非必须, 默认:False | 含义:与上相反,不拼接batch结果。 何时使用:需要保持batch级别隔离进行分析时。 | --no_eval_do_concat_batches | 布尔值 |
--fp16_backend | 非必须, 默认:auto(已弃用) | 含义:已弃用的fp16后端选项,用--half_precision_backend 代替。 何时使用:旧版兼容。 | 不推荐使用此参数 | 字符串(不推荐) |
--evaluation_strategy | 非必须, 默认:None(已弃用) | 含义:已弃用参数,与--eval_strategy 同义,建议使用新参数。 | --evaluation_strategy steps (不推荐使用) | 字符串(不推荐) |
--push_to_hub_model_id | 非必须, 默认:None | 含义:指定要push的模型仓库名称,与--hub_model_id 类似,旧参数。 何时使用:兼容旧脚本。 | 不推荐使用新参数--hub_model_id 替代 | 字符串(不推荐) |
--push_to_hub_organization | 非必须, 默认:None | 含义:指定push到的组织名称,用于多组织管理模型仓库。 何时使用:需要将模型上传到特定组织repo。 | --push_to_hub_organization my_org | 字符串 |
--push_to_hub_token | 非必须, 默认:None | 含义:push到Hub所需的token,与--hub_token 类似,旧参数。 何时使用:兼容性。 | 不推荐使用,使用--hub_token 代替 | 字符串 |
--mp_parameters | 非必须, 默认:"" | 含义:SageMaker分布式启动器用的mp特定参数,非一般用户使用。 何时使用:在SageMaker多进程场景特定需求时。 | --mp_parameters params | 字符串 |
--auto_find_batch_size | 非必须, 默认:False | 含义:当发生CUDA OOM时自动减半batch size并重试,以找到可行的最大batch size。 何时使用:对大模型或未知硬件资源进行快速探索时很有用。 影响范围:影响训练初期稳定性和自动调参能力。 | --auto_find_batch_size | 布尔值 |
--full_determinism | 非必须, 默认:False | 含义:调用enable_full_determinism 确保分布式训练完全可重复,但会降低性能。 何时使用:严格对比实验需要可重复结果时。 影响范围:影响速度和可能的性能略降换取可重复性。 | --full_determinism | 布尔值 |
--torchdynamo | 非必须, 默认:None(已弃用) | 含义:已弃用参数,使用--torch_compile_backend 替代,用于调用torch.compile 相关特性。 | 不推荐使用此参数 | 字符串(不推荐) |
--ray_scope | 非必须, 默认:last | 含义:Ray超参搜索范围策略,如last 表示使用最后checkpoint评估,其他策略参考Ray文档。 何时使用:在超参搜索中决定选择最佳trial的策略。 影响范围:只影响超参搜索流程。 | --ray_scope last | 字符串 |
--ddp_timeout | 非必须, 默认:1800 | 含义:DDP分布式训练超时时间(秒),超过则报错。 何时使用:网络不稳定时可增大此值避免超时终止。 影响范围:影响分布式同步等待策略。 | --ddp_timeout 3600 | 整数(秒) |
--torch_compile | 非必须, 默认:False | 含义:启用torch.compile 对模型进行编译优化,可能加速训练或推断。 何时使用:PyTorch 2.x+下尝试编译加速场景。 影响范围:可加速模型运行,但需要稳定性测试。 | --torch_compile | 布尔值 |
--torch_compile_backend | 非必须, 默认:None | 含义:指定torch.compile 使用的后端,如inductor 。 何时使用:需特定后端优化时。 影响范围:影响编译结果和性能。 | --torch_compile_backend inductor | 字符串或None |
--torch_compile_mode | 非必须, 默认:None | 含义:指定torch.compile 模式,如reduce-overhead ,控制编译优化策略。 何时使用:调优编译优化策略以获得最佳性能。 影响范围:影响编译结果效率与稳定性。 | --torch_compile_mode reduce-overhead | 字符串或None |
--dispatch_batches | 非必须, 默认:None(已弃用) | 含义:已弃用参数,将其传给accelerator_config 而非直接使用。 | 不推荐使用 | 字符串(不推荐) |
--split_batches | 非必须, 默认:None(已弃用) | 含义:已弃用参数,用accelerator_config 配置分批策略。 何时使用:兼容旧脚本。 | 不推荐使用 | 字符串(不推荐) |
--include_tokens_per_second | 非必须, 默认:False | 含义:在速度指标中包含每秒tokens数(tgs),评估生成效率。 何时使用:需更细粒度性能指标时。 影响范围:仅影响日志指标。 | --include_tokens_per_second | 布尔值 |
--include_num_input_tokens_seen | 非必须, 默认:False | 含义:在训练中统计已处理输入tokens总数,用于分析训练进度和数据规模。 何时使用:大规模预训练统计tokens数很有帮助。 影响范围:略增统计开销。 | --include_num_input_tokens_seen | 布尔值 |
19(NEFTune、GaLore、DPO、PPO、KTO等特定训练机制相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--neftune_noise_alpha | 非必须, 默认:None | 含义:NEFTune噪声embedding参数,通过在embedding中注入噪声提升指令微调效果。 何时使用:在特定研究场景或NEFTune策略下尝试以改善泛化性能。 影响范围:改变模型embedding分布,提高多样性与稳定性。 | --neftune_noise_alpha 0.01 | 浮点数或None |
--optim_target_modules | 非必须, 默认:None | 含义:为特定优化器(如GaLore)指定目标模块列表,只对这些模块应用特殊优化策略。 何时使用:需要对特定层或子模块定制优化策略时。 影响范围:影响模型部分参数的优化行为。 | --optim_target_modules module1,module2 | 字符串列表 |
--batch_eval_metrics | 非必须, 默认:False | 含义:分批计算验证指标以节省内存,对于大数据集计算eval metrics可分块处理。 何时使用:验证集很大导致内存紧张时。 影响范围:影响eval内存占用,结果相同只是分批聚合。 | --batch_eval_metrics | 布尔值 |
--eval_on_start | 非必须, 默认:False | 含义:在训练一开始(step=0)先对eval数据集进行一次完整评估作为基线。 何时使用:需了解模型随机初始化或加载初始点的性能。 影响范围:增加初始评估开销。 | --eval_on_start | 布尔值 |
--eval_use_gather_object | 非必须, 默认:False | 含义:在分布式评估时使用gather_object收集结果,处理更复杂的数据结构。 何时使用:评估复杂预测输出结构时。 影响范围:影响分布式评估的数据聚合方式。 | --eval_use_gather_object | 布尔值 |
--sortish_sampler | 非必须, 默认:False | 含义:使用SortishSampler对数据先分块排序再随机,兼顾batch内部长度相似度和总体随机性。 何时使用:适合长度分布不均衡数据集,提高训练效率。 影响范围:改善padding效率。 | --sortish_sampler | 布尔值 |
--predict_with_generate | 非必须, 默认:False | 含义:在评估时使用模型生成(如model.generate )来计算生成类指标(如ROUGE、BLEU)。 何时使用:评估文本生成任务性能时需要生成文本。 影响范围:增加评估时间,但提供更准确的生成指标。 | --predict_with_generate | 布尔值 |
--generation_max_length | 非必须, 默认:None | 含义:评估时生成文本的最大长度,用于predict_with_generate 场景。 何时使用:需要限制生成文本长度以稳定评测。 影响范围:影响评估结果的截断情况。 | --generation_max_length 128 | 整数或None |
--generation_num_beams | 非必须, 默认:None | 含义:评估时生成的beam search宽度。 何时使用:需要更充分的搜索提高评估精度。 影响范围:提高评估质量但增加计算成本。 | --generation_num_beams 4 | 整数或None |
--generation_config | 非必须, 默认:None | 含义:从文件或url加载GenerationConfig json,用于predict_with_generate 。 何时使用:复杂的生成参数需统一管理时。 影响范围:影响生成的策略和质量。 | --generation_config gen_config.json | 字符串(文件路径或url) |
--use_badam | 非必须, 默认:False | 含义:使用BAdam优化器,一个块状或比率更新优化方案,可提升大模型训练性能。 何时使用:研究性实验或特定情况下尝试新优化器。 影响范围:影响优化策略和收敛表现。 | --use_badam | 布尔值 |
--badam_mode | 非必须, 默认:layer | 含义:BAdam优化模式layer 或ratio ,决定块状更新策略是基于层还是比例。 何时使用:尝试BAdam时根据需求选模式。 影响范围:影响BAdam更新方式和稳定性。 | --badam_mode ratio | {layer ,ratio } |
--badam_start_block | 非必须, 默认:None | 含义:BAdam分层更新时指定起始block层索引。 何时使用:仅在layer模式下精细控制更新层数。 影响范围:影响哪些层首先被更新。 | --badam_start_block 0 | 整数或None |
--badam_switch_mode | 非必须, 默认:ascending | 含义:BAdam切换block策略,如ascending 、descending 、random 、fixed ,决定更新顺序。 何时使用:调优BAdam更新顺序以改善训练动态。 影响范围:影响训练过程的探索性和稳定性。 | --badam_switch_mode descending | {ascending ,descending ,random ,fixed } |
--badam_switch_interval | 非必须, 默认:50 | 含义:BAdam每隔多少steps切换更新block。 何时使用:控制更新pattern的频率。 影响范围:影响训练稳定性与收敛速率。 | --badam_switch_interval 100 | 整数 |
--badam_update_ratio | 非必须, 默认:0.05 | 含义:BAdam在ratio模式下的更新比例。 何时使用:调节ratio模式下的更新强度。 影响范围:影响更新力度与收敛特性。 | --badam_update_ratio 0.1 | 浮点数 |
--badam_mask_mode | 非必须, 默认:adjacent | 含义:BAdam mask模式adjacent 或scatter ,决定从权重中选参方式。 何时使用:需特定随机/邻近抽样策略时。 影响范围:影响优化多样性。 | --badam_mask_mode scatter | {adjacent ,scatter } |
--badam_verbose | 非必须, 默认:0 | 含义:BAdam输出详细程度,0不打印,1打印block前缀,2打印可训练参数。 何时使用:调试BAdam行为时开启更详细日志。 影响范围:仅影响日志。 | --badam_verbose 1 | 整数0/1/2 |
--use_galore | 非必须, 默认:False | 含义:启用GaLore梯度低秩投影方法,节约内存和加速大模型训练。 何时使用:大模型训练中需要额外内存优化与加速时尝试。 影响范围:影响优化过程和梯度分布。 | --use_galore | 布尔值 |
--galore_target | 非必须, 默认:all | 含义:GaLore指定的目标模块,all 或指定模块名列表。 何时使用:仅对部分模块应用GaLore减少干扰。 影响范围:细粒度控制低秩投影的应用范围。 | --galore_target encoder.layers.0 | all 或逗号分隔模块名列表 |
--galore_rank | 非必须, 默认:16 | 含义:GaLore梯度秩,决定低秩投影的维度。 何时使用:调整秩控制内存和精度折中。 影响范围:影响训练内存效率和精度。 | --galore_rank 32 | 整数 |
--galore_update_interval | 非必须, 默认:200 | 含义:GaLore投影更新间隔步数。 何时使用:根据收敛速度与稳定性需求调整。 影响范围:影响梯度近似更新频率。 | --galore_update_interval 100 | 整数 |
--galore_scale | 非必须, 默认:0.25 | 含义:GaLore缩放系数,控制投影影响强度。 何时使用:需微调缩放系数找到稳定的训练曲线。 影响范围:影响优化平衡点。 | --galore_scale 0.5 | 浮点数 |
--galore_proj_type | 非必须, 默认:std | 含义:GaLore投影类型(如std ,reverse_std ,right ,left ,full ),决定低秩分解方向与策略。 何时使用:研究不同投影策略对收敛影响。 影响范围:影响梯度近似方法。 | --galore_proj_type full | {std ,reverse_std ,right ,left ,full } |
--galore_layerwise | 非必须, 默认:False | 含义:GaLore是否分层更新,逐层应用低秩投影,减少内存并保持梯度近似精度。 何时使用:需要更精细控制训练内存与精度时。 影响范围:增加实现复杂度但更省内存。 | --galore_layerwise | 布尔值 |
20(DPO、PPO、KTO、SimPO以及奖励模型相关参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--pref_beta | 非必须, 默认:0.1 | 含义:在DPO训练中使用的beta参数,用于控制参考模型与当前模型之间的KL距离。较大beta会更强制输出接近参考模型。 何时使用:在DPO训练中调优生成分布平衡度时。 影响范围:影响模型与参考模型偏差程度与训练稳定性。 | --pref_beta 0.2 | 浮点数 |
--pref_ftx | 非必须, 默认:0.0 | 含义:DPO训练中监督微调损失系数,用于在DPO框架下同时考虑监督信号。 何时使用:在需要平衡指令微调与策略优化时。 影响范围:影响最终策略分布及训练目标的复杂度。 | --pref_ftx 0.5 | 浮点数 |
--pref_loss | 非必须, 默认:sigmoid | 含义:指定DPO损失类型,如sigmoid 、hinge 、ipo 、kto_pair 、orpo 、simpo 等各种策略优化损失。 何时使用:研究不同策略优化方法或尝试提高生成质量时。 影响范围:影响策略优化的方向与收敛特性。 | --pref_loss hinge | {sigmoid ,hinge ,ipo ,kto_pair ,orpo ,simpo } |
--dpo_label_smoothing | 非必须, 默认:0.0 | 含义:cDPO中的标签平滑参数(0到0.5),对奖励分布平滑,减少模型过度拟合特定奖励模式。 何时使用:DPO训练中若出现过度集中或梯度不稳定时可尝试。 影响范围:影响训练稳定性和生成多样性。 | --dpo_label_smoothing 0.1 | 浮点数[0,0.5] |
--kto_chosen_weight | 非必须, 默认:1.0 | 含义:KTO训练中对正例(被选中的回答)的损失权重,调节正反例平衡。 何时使用:提升正例重要性以强化期望输出的倾向时。 影响范围:影响奖励对正例的偏好度。 | --kto_chosen_weight 1.5 | 浮点数 |
--kto_rejected_weight | 非必须, 默认:1.0 | 含义:KTO训练中对负例(被拒绝的回答)的损失权重。 何时使用:提高对负例惩罚,减少模型产生不良回答的倾向。 影响范围:影响模型对低质量回答的排斥性。 | --kto_rejected_weight 0.5 | 浮点数 |
--simpo_gamma | 非必须, 默认:0.5 | 含义:SimPO损失中使用的目标奖励边距参数,用于控制期望奖励距离。 何时使用:在SimPO优化中调优生成分布与奖励函数之间的关系。 影响范围:影响生成政策的优化方向。 | --simpo_gamma 0.3 | 浮点数 |
--ppo_buffer_size | 非必须, 默认:1 | 含义:PPO优化步骤中经验缓冲区的数量(mini-batch数),分成多少小批次对经验进行PPO更新。 何时使用:当数据量较大需要分成多批PPO优化时。 影响范围:影响PPO训练的效率和稳定性。 | --ppo_buffer_size 2 | 整数 |
--ppo_epochs | 非必须, 默认:4 | 含义:每次PPO优化使用多少epochs对经验反复更新。 何时使用:PPO训练中需要更充分更新策略时提高此值。 影响范围:影响PPO收敛速度与最终策略质量。 | --ppo_epochs 5 | 整数 |
--ppo_score_norm | 非必须, 默认:False | 含义:PPO训练中是否对奖励进行归一化,以减少奖励值尺度不一致带来的训练不稳定。 何时使用:奖励值分布波动较大时可试图稳定训练。 影响范围:影响PPO的训练动态与稳定性。 | --ppo_score_norm | 布尔值 |
--ppo_target | 非必须, 默认:6.0 | 含义:PPO中自适应KL控制的目标KL值,用于维持策略不偏离初始策略太远。 何时使用:在PPO训练中控制策略更新幅度,防止崩溃。 影响范围:影响KL惩罚与策略探索平衡。 | --ppo_target 5.0 | 浮点数 |
--ppo_whiten_rewards | 非必须, 默认:False | 含义:PPO中对奖励进行whitening(白化)处理,使奖励分布均值为0有助于计算优势函数。 何时使用:奖励分布偏移明显时提高训练稳定性。 影响范围:影响PPO训练的收敛特性。 | --ppo_whiten_rewards | 布尔值 |
--ref_model | 非必须, 默认:None | 含义:PPO或DPO训练中使用的参考模型路径。 何时使用:需要比较当前策略与参考策略并施加KL约束时。 影响范围:影响奖励计算和策略优化方向。 | --ref_model /path/to/ref_model | 字符串(路径) |
--ref_model_adapters | 非必须, 默认:None | 含义:参考模型使用的adapter路径,用于加载经过adapter微调的参考模型。 何时使用:在参考模型本身也有LoRA或Adapter微调时。 影响范围:影响参考模型的结构与表现。 | --ref_model_adapters adapter_path | 字符串(路径) |
--ref_model_quantization_bit | 非必须, 默认:None | 含义:将参考模型量化为指定bit,减少内存和加速计算。 何时使用:显存受限或需加速参考模型推断时。 影响范围:可能略降参考模型精度。 | --ref_model_quantization_bit 4 | 整数或None |
--reward_model | 非必须, 默认:None | 含义:PPO训练中使用的奖励模型路径,用于给生成结果打分作为优化信号。 何时使用:在RLHF(人类反馈强化学习)或奖励建模的场景中。 影响范围:直接影响奖励计算和策略更新方向。 | --reward_model reward_model_path | 字符串(路径) |
--reward_model_adapters | 非必须, 默认:None | 含义:奖励模型使用的adapter路径,同参考模型适配器一样,可叠加在基础模型上。 何时使用:奖励模型也来自微调后模型时。 | --reward_model_adapters adapter_path | 字符串(路径) |
--reward_model_quantization_bit | 非必须, 默认:None | 含义:奖励模型的量化bit数,减小模型大小和内存占用。 何时使用:资源有限但仍需使用奖励模型计算反馈时。 影响范围:略影响奖励精度和性能。 | --reward_model_quantization_bit 4 | 整数或None |
--reward_model_type | 非必须, 默认:lora | 含义:奖励模型类型:lora 、full 、api 。lora 表示reward模型是lora微调的,full 表示全权重模型,api 表示通过API调用的外部奖励服务。 何时使用:根据reward模型的获取方式和存放格式选择类型。 影响范围:影响加载方式和推断流程。 | --reward_model_type full | {lora ,full ,api } |
21(LoRA、Adapter、Freeze等微调方法参数):
参数名称 | 是否必须 / 默认值 | 参数含义(详解) | 使用示例 | 取值范围 |
---|---|---|---|---|
--additional_target | 非必须, 默认:None | 含义:除LoRA层外还需要设为可训练并保存的模块名称列表。 何时使用:在lora微调外想微调某些特定层,如embed层。 影响范围:影响最终可训练参数集和checkpoint内容。 | --additional_target embed_tokens | 字符串(模块名列表) |
--lora_alpha | 非必须, 默认:None | 含义:LoRA缩放因子,不指定则默认使用lora_rank * 2 。越大表示LoRA增益越强。 何时使用:需微调LoRA学习率或增益程度时。 影响范围:影响LoRA微调收敛速度与稳定性。 | --lora_alpha 16 | 整数或None |
--lora_dropout | 非必须, 默认:0.0 | 含义:LoRA层的dropout率,用于防止过拟合。 何时使用:在数据较少或过拟合风险高时可加一点dropout。 影响范围:影响LoRA参数更新和泛化性能。 | --lora_dropout 0.1 | 浮点数[0,1) |
--lora_rank | 非必须, 默认:8 | 含义:LoRA低秩分解的秩大小,决定参数量和灵活性。 何时使用:资源有限时降低rank减少参数,需更多表达能力时提高rank。 影响范围:影响LoRA参数数目和适配能力。 | --lora_rank 4 | 整数 |
--lora_target | 非必须, 默认:all | 含义:指定对哪些模块应用LoRA微调,可为all 或特定模块名称匹配规则。 何时使用:只想对模型的特定层微调以减少训练开销时。 影响范围:影响LoRA适用范围和精细度。 | --lora_target decoder.layers.* | all 或字符串匹配规则 |
--loraplus_lr_ratio | 非必须, 默认:None | 含义:LoRA plus中lr_B / lr_A的比例,用于控制两个LoRA矩阵的学习率关系。 何时使用:对LoRA plus微调策略有研究或调优需求时。 影响范围:影响LoRA参数更新平衡。 | --loraplus_lr_ratio 0.5 | 浮点数或None |
--loraplus_lr_embedding | 非必须, 默认:1e-06 | 含义:LoRA embedding层的学习率,独立于LoRA低秩矩阵的学习率控制。 何时使用:需要对embedding层微调力度单独控制时。 影响范围:影响embedding适应性和学习速度。 | --loraplus_lr_embedding 1e-5 | 浮点数 |
--use_rslora | 非必须, 默认:False | 含义:启用rank stabilization LoRA,在训练中动态调整秩,使得LoRA更高效。 何时使用:需要在微调过程中自适应设定LoRA rank以改善性能或资源利用。 影响范围:影响LoRA参数更新动态和复杂度。 | --use_rslora | 布尔值 |
--use_dora | 非必须, 默认:False | 含义:使用DoRA(Decomposed LoRA)方法,将权重进行更细粒度的分解和微调。 何时使用:在研究性场景中尝试更细粒度微调策略,提高模型适应性。 影响范围:增加微调复杂性和灵活性。 | --use_dora | 布尔值 |
--pissa_init | 非必须, 默认:False | 含义:初始化PiSSA adapter,PiSSA是一种特殊的adapter初始化策略。 何时使用:在使用PiSSA方法进行adapter初始化以提高训练效率时。 影响范围:改变Adapter初始化状态和训练收敛。 | --pissa_init | 布尔值 |
--pissa_iter | 非必须, 默认:16 | 含义:PiSSA中FSVD迭代次数,为-1则禁用。 何时使用:需要通过FSVD提高Adapter初始化质量时可增大迭代次数。 影响范围:影响PiSSA计算时间与初始化质量。 | --pissa_iter 32 | 整数(-1禁用) |
--pissa_convert | 非必须, 默认:False | 含义:将PiSSA adapter转换为普通LoRA adapter。 何时使用:在初始化后需要回归到标准LoRA结构时。 影响范围:影响最终adapter类型和兼容性。 | --pissa_convert | 布尔值 |
--create_new_adapter | 非必须, 默认:False | 含义:创建新adapter并随机初始化,用于从头开始的adapter微调。 何时使用:需要引入全新参数模块解决新任务时。 影响范围:增加可训练参数并可能提高适应新任务的灵活性。 | --create_new_adapter | 布尔值 |
--freeze_trainable_layers | 非必须, 默认:2 | 含义:部分参数冻结微调时,可训练的层数数量。例如正值表示从后往前n层可训练,负值表示从前往后n层可训练。 何时使用:内存不足或避免过度微调时,只微调部分层。 影响范围:减少训练参数,可能降低灵活性但更省资源。 | --freeze_trainable_layers -3 | 整数 |
--freeze_trainable_modules | 非必须, 默认:all | 含义:指定可训练模块名称,all 表示不限制,或提供逗号分隔模块名单。 何时使用:微调特定子模块,提高任务针对性。 影响范围:控制可训练参数范围,从而影响收敛和最终性能。 | --freeze_trainable_modules encoder.layers.10,encoder.layers.11 | all 或字符串列表 |
--freeze_extra_modules | 非必须, 默认:None | 含义:除隐层外需要保持可训练的额外模块列表。例如在freeze方法中只训练特定外部组件。 何时使用:冻结大部分模型,但仍想调整少数额外模块时。 影响范围:细化微调策略。 | --freeze_extra_modules lm_head | 字符串(模块名列表) |
--pure_bf16 | 非必须, 默认:False | 含义:纯bf16精度训练(无AMP),进一步减少精度转换开销。 何时使用:硬件支持bf16且希望避免自动混合精度的额外开销时。 影响范围:影响训练精度和性能折中。 | --pure_bf16 | 布尔值 |
--stage | 非必须, 默认:sft | 含义:当前训练阶段,如pt (pre-train)、sft (supervised fine-tuning)、rm (reward model)、ppo 、dpo 、kto 表示不同训练阶段策略。 何时使用:根据任务进程指定阶段,以自动适配相应流程。 影响范围:影响数据处理、损失函数和优化逻辑。 | --stage ppo | {pt ,sft ,rm ,ppo ,dpo ,kto } |
--finetuning_type | 非必须, 默认:lora | 含义:微调方法选择:lora 、freeze 、full 。lora 只微调低秩参数,freeze 冻结部分模块,full 对全部参数微调。 何时使用:根据资源和需求决定微调策略。 影响范围:影响可训练参数数量、内存占用和收敛速度。 | --finetuning_type freeze | {lora ,freeze ,full } |
--use_llama_pro | 非必须, 默认:False | 含义:仅使LLaMA模型中扩展的blocks参数可训练,其他层冻结。 何时使用:在LLaMA结构的扩展研究中聚焦新加层。 影响范围:减少训练参数、强化新层学习。 | --use_llama_pro | 布尔值 |
--use_adam_mini | 非必须, 默认:False | 含义:使用Adam-mini优化器进行训练,是一种简化版Adam优化策略。 何时使用:特定研究或资源受限下尝试简化优化器。 影响范围:影响训练收敛和资源利用率。 | --use_adam_mini | 布尔值 |
--freeze_vision_tower | 非必须, 默认:True | 含义:在多模态训练中冻结视觉塔参数,仅微调文本部分。 何时使用:不希望修改视觉特征提取部分时。 影响范围:减少显存占用和训练难度,保持视觉特征稳定。 | --freeze_vision_tower | 布尔值 |
--no_freeze_vision_tower | 非必须, 默认:False | 含义:与上相反,不冻结视觉塔。 何时使用:需要对视觉特征提取层进行微调。 影响范围:增加可训练参数,提高视觉适应能力。 | --no_freeze_vision_tower | 布尔值 |
--train_mm_proj_only | 非必须, 默认:False | 含义:在多模态学习中只训练多模态投影层,不微调语言或视觉塔。 何时使用:在确保语言和视觉特征已成熟的情况下,只微调融合模块提升多模态融合质量。 影响范围:减少微调范围和难度。 | --train_mm_proj_only | 布尔值 |
--compute_accuracy | 非必须, 默认:False | 含义:在评估时计算token级别的准确率指标。 何时使用:需要更直观评价预测精确性(例如分类、标注任务)时。 影响范围:增加评估计算开销,但获得额外指标。 | --compute_accuracy | 布尔值 |
--plot_loss | 非必须, 默认:False | 含义:保存训练loss曲线图像,便于直观查看loss下降趋势。 何时使用:分析训练过程时,帮助调试与报告。 影响范围:仅影响输出文件,不影响训练本身。 | --plot_loss | 布尔值 |
--do_sample | 非必须, 默认:True | 含义:生成时是否使用采样(Temperature、Top-p)策略,若False则采用贪心或beam search。 何时使用:对对话、创意生成等需多样化输出场景使用True;对精确回答可关闭。 影响范围:影响生成结果的多样性与稳定性。 | --do_sample | 布尔值 |
--no_do_sample | 非必须, 默认:False | 含义:与上相反,不使用采样,强制贪心或beam search生成。 何时使用:需要确定性和稳定输出时。 影响范围:减少随机性,提高可重复性。 | --no_do_sample | 布尔值 |
--temperature | 非必须, 默认:0.95 | 含义:控制生成输出的随机度,接近1创造性高,接近0保守。 何时使用:写创意内容提高temperature,回答严肃问题降低temperature。 影响范围:影响生成的风格和多样性。 | --temperature 0.7 | 浮点数(>0) |
--top_p | 非必须, 默认:0.7 | 含义:nucleus sampling保留概率阈值,保留累积概率<=p的候选词。越高越多样,越低越集中。 何时使用:希望输出更多可能回答时提高top_p;需精确回答时降低。 影响范围:影响输出多样性。 | --top_p 0.9 | 浮点数(0,1] |
--top_k | 非必须, 默认:50 | 含义:top-k采样限制考虑前k个最有可能词。 何时使用:需要更稳定但仍有一定多样性时使用top-k。 影响范围:影响生成质量与多样性。 | --top_k 100 | 整数 |
--num_beams | 非必须, 默认:1 | 含义:beam search数量,大于1则尝试多条路径找到更优答案。 何时使用:对确定性任务提高精确度时启用beam search。 影响范围:提高计算量和输出精度。 | --num_beams 4 | 整数 |
--max_length | 非必须, 默认:1024 | 含义:生成结果的最大长度(包括输入和输出token数),限制回答过长。 何时使用:需要控制回复长度避免浪费资源。 影响范围:过小会截断回答,过大浪费计算。 | --max_length 512 | 整数 |
--max_new_tokens | 非必须, 默认:1024 | 含义:生成时忽略输入长度,仅限制新生成token数上限。 何时使用:更灵活控制回答长度,与 max_length 搭配或替代。 影响范围:影响回答长度与资源消耗。 | --max_new_tokens 256 | 整数 |
--repetition_penalty | 非必须, 默认:1.0 | 含义:重复惩罚系数,>1时减少重复token出现概率。 何时使用:当模型输出重复冗余回答时提高此值。 影响范围:减少重复,提高文本流畅度。 | --repetition_penalty 1.2 | 浮点数 |
--length_penalty | 非必须, 默认:1.0 | 含义:beam search中对较长序列的惩罚系数,<1偏好短回答,>1鼓励长回答。 何时使用:需要控制生成长度倾向时。 影响范围:影响beam search结果长度分布。 | --length_penalty 0.8 | 浮点数 |
--default_system | 非必须, 默认:None | 含义:指定默认system message,用于定义模型的角色和行为倾向。 何时使用:在chat模型中提供统一指导,确保回答风格一致。 影响范围:影响生成文本的语气、角色定位。 | --default_system "You are a helpful AI" | 字符串或None |