命令行参数
目录
sft 参数
dpo 参数
merge-lora infer 参数
export 参数
eval 参数
app-ui 参数
deploy 参数
sft 参数
--model_type:代表选定的模型类型,默认为None。model_type指定相应模型的默认lora_target_modules、template_type、 等信息。您可以通过仅指定 进行微调model_type。相应将使用默认设置,模型将从 ModelScope 下载并使用默认缓存路径。必须指定 model_type 和 model_id_or_path 之一。您可以在此处model_id_or_path查看可用的 列表。您可以设置环境变量来控制从 HF Hub 下载模型和数据集,请参阅HuggingFace 生态系统兼容性文档。model_type USE_HF
--model_id_or_path:表示model_idModelScope/HuggingFace Hub 中的 或模型的本地路径,默认为None。如果提供的model_id_or_path已经注册,则将model_type根据 推断model_id_or_path。如果尚未注册,model_type则model_id_or_path必须同时指定 和 ,例如--model_type <model_type> --model_id_or_path <model_id_or_path>。
--model_revision:ModelScope Hub 上 对应的版本号model_id,默认为None。如果model_revision是None,则使用 中注册的修订版本MODEL_MAPPING。否则,强制使用model_revision从命令行传递的 。
--local_repo_path:部分模型依赖 GitHub repo 进行加载,为避免 过程中出现网络问题git clone,您可以直接使用本地 repo,此参数需要输入本地 repo 路径,默认为None。这些模型包括:
mPLUG-Owl 型号:https://github.com/X-PLUG/mPLUG-Owl
DeepSeek-VL 模型:https://github.com/deepseek-ai/DeepSeek-VL
YI-VL型号:https://github.com/01-ai/Yi
LLAVA 模型:https://github.com/haotian-liu/LLaVA.git
--sft_type:微调方式,默认为'lora'。可选项有:'lora', 'full', 'longlora', 'adalora', 'ia3', 'llamapro', 'adapter', 'vera', 'boft'。若使用qlora,需设置--sft_type lora --quantization_bit 4。
--packing:打包数据集长度为max-length,默认False。
--freeze_parameters:当 sft_type 设置为"full"时,冻结模型的最底层参数。范围是 0. ~ 1.,默认值是0.。这在 lora 和完全微调之间提供了折衷。
--additional_trainable_parameters:除了 freeze_parameters 之外,只有当 sft_type 为 'full' 时才允许,默认为[]。例如,如果你想在 50% 的参数之外训练 embedding 层,你可以设置--freeze_parameters 0.5 --additional_trainable_parameters transformer.wte,所有以 开头的参数transformer.wte都将被激活。你也可以设置--freeze_parameters 1 --additional_trainable_parameters xxx自定义可训练层。
--tuner_backend:后端支持lora、qlora,默认为'peft'。可选项包括:'swift'、'peft'、'unsloth'。
--template_type:使用的对话模板类型,默认为,即根据 进行查找'AUTO'。可用选项可在 中找到。templateMODEL_MAPPINGmodel_typetemplate_typeTEMPLATE_MAPPING.keys()
--output_dir:ckpt 存放目录,默认为'output'。我们会将model_type微调版本号追加到此目录,方便用户在不改变output_dir命令行参数的情况下,对不同型号进行多次对比实验。如果不想追加此内容,请指定--add_output_dir_suffix false。
--add_output_dir_suffix:默认为True,表示目录后会附加 后缀model_type和微调版本号output_dir。设置为False可避免此行为。
--ddp_backend:后端是否支持分布式训练,默认为None。选项包括:'nccl','gloo','mpi','ccl'。
--seed:全局种子,默认为42。用于复现训练结果。
--resume_from_checkpoint:用于从某个检查点继续训练,默认为None。你可以将其设置为检查点的路径,例如:--resume_from_checkpoint output/qwen-7b-chat/vx-xxx/checkpoint-xxx,即从该点继续训练。支持调整--resume_only_model为在检查点继续期间只读取模型文件。
--resume_only_model:默认为False,表示严格检查点延续,这将读取模型、优化器、lr_scheduler 的权重以及存储在每个设备上的随机种子,并从最后暂停的步骤继续训练。如果设置为True,它将只读取模型的权重。
--dtype:加载基础模型时的torch_dtype,默认为'AUTO',即智能选择dtype:若机器不支持bf16,则使用fp16;若MODEL_MAPPING对应模型指定了torch_dtype,则使用该模型的dtype;否则使用bf16。可选项包括:'bf16','fp16','fp32'。
--dataset:用于选择训练数据集,默认为。你可以在这里[]看到可用的数据集列表。如果你需要用多个数据集进行训练,可以使用 ',' 或 ' ' 来分隔它们,例如:或。它支持 Modelscope Hub/HuggingFace Hub/local 路径、子集选择和数据集采样。每个数据集的指定格式如下: 。最简单的情况只需要指定 dataset_name、dataset_id 或 dataset_path。自定义数据集可以在自定义和扩展数据集文档中找到--dataset alpaca-en,alpaca-zh--dataset alpaca-en alpaca-zh[HF or MS::]{dataset_name} or {dataset_id} or {dataset_path}[:subset1/subset2/...][#dataset_sample]
支持MS和HF hub,以及dataset_sample,例如'MS::alpaca-zh#2000'、'HF::jd-sentiment-zh#2000'(默认使用的hub由USE_UF环境变量控制,默认为MS)。
对子集进行更细粒度的控制:默认使用注册时指定的子集(如果注册时未指定,则使用"默认")。例如,"sharegpt-gpt4"。如果指定了子集,则使用数据集的相应子集。例如,"sharegpt-gpt4:default/V3_format#2000"。以"/"分隔。
支持 dataset_id。例如,'AI-ModelScope/alpaca-gpt4-data-zh#2000'、'HF::llm-wizard/alpaca-gpt4-data-zh#2000'、'hurner/alpaca-gpt4-data-zh#2000'、'HF::shibing624/alpaca-zh#2000'。如果 dataset_id 已注册,它将使用注册时指定的预处理函数、子集、拆分等。否则,它将使用,支持 5 种数据集格式,并使用 'default' 子集,拆分设置为 'train'。支持的数据集格式可以在自定义和扩展数据集文档SmartPreprocessor中找到。
支持dataset_path,例如'1.jsonl#5000'(如果是相对路径,则是相对于运行目录)。
--val_dataset:指定与参数格式相同的单独验证数据集dataset,默认为[]。如果使用val_dataset,则会dataset_test_ratio被忽略。
--dataset_seed:数据集处理的种子,默认为42。以random_state形式存在,不影响全局种子。
--dataset_test_ratio:用于指定将子数据集拆分为训练集和验证集的比例,默认值为 ,0.01若--val_dataset设置 ,则该参数无效。
--train_dataset_sample:训练数据集的样本个数,默认为-1,表示使用完整的训练数据集进行训练。此参数已弃用,请使用--dataset {dataset_name}#{dataset_sample}代替。
--val_dataset_sample:用于对验证集进行抽样,默认值为None,自动选取合适数量的数据样本进行验证。如果指定-1,则使用完整验证集进行验证。此参数已弃用,验证集的样本数量由--dataset_test_ratio或控制--val_dataset {dataset_name}#{dataset_sample}。
--system:对话模板使用的系统,默认为None,即使用模型默认的系统。如果设置为 ,则不使用系统。
--tools_prompt:选择对应的tools系统提示进行tools字段转换,选项有['react_en', 'react_zh', 'toolbench'],分别对应英文版ReAct格式、中文版ReAct格式、toolbench格式,默认为英文版ReAct格式,更多信息可以参考Agent 部署最佳实践。
--max_length:最大 token 长度,默认为2048。避免因个别样本过长而导致 OOM 问题。--truncation_strategy delete指定 时,超过 max_length 的样本将被删除。--truncation_strategy truncation_left指定 时,最左边的 token 将被截断:input_ids[-max_length:]。如果设置为 -1,则无限制。
--truncation_strategy:默认'delete'从数据集中删除超过max_length的句子,'truncation_left'会从左侧截断多余的文本,这可能会截断特殊标记并影响性能,不推荐。
--check_dataset_strategy:默认为'none',即不检查。如果训练的是LLM模型,'warning'建议将 作为数据检查策略。如果你的训练目标是句子分类等,'none'建议设置为 。
--custom_train_dataset_path:默认值为[]。此参数已弃用,请使用--dataset {dataset_path}。
--custom_val_dataset_path:默认值为[]。此参数已弃用。请使用--val_dataset {dataset_path}。
--self_cognition_sample:自我认知数据集的样本数量,默认为0,若设置为>0,需同时指定--model_name和,该参数已弃用,请使用代替。--model_author--dataset self-cognition#{self_cognition_sample}
--model_name:默认值为[None, None],若开启了自我认知数据集采样(即指定--dataset self-cognition或 self_cognition_sample>0),则需要提供两个值,分别代表模型的中文名和英文名,例如 。--model_name 小黄 'Xiao Huang'若想了解更多,可以参考自我认知微调最佳实践。
--model_name:默认为[None, None],若开启了自我认知数据集采样(即self_cognition_sample>0),则需要传递两个值,分别代表模型的中文名和英文名,例如--model_name 小黄 'Xiao Huang'。
--model_author:默认为[None, None],若开启了自主认知数据集采样,需传入两个值,分别代表作者的中文名和英文名,例如--model_author 魔搭 ModelScope。
--quant_method:量化方法,默认无,可选bnb、hqq、eetq。
--quantization_bit:指定是否量化以及量化位数,默认为0,即不量化。若要使用4bit qlora,则设置--sft_type lora --quantization_bit 4.Hqq支持1,2,3,4,8bit,bnb支持4,8bit
--hqq_axis:Hqq 参数。执行分组的轴。支持的值是 0 或 1。默认值是0
--hqq_dynamic_config_path:动态配置参数,key 为 layer 的 name tag,value 为量化配置,设置后,每个 id 指定的 layer 都会使用各自的量化配置。ref
--bnb_4bit_comp_dtype:在进行 4bit 量化时,我们需要在模型前向和后向传递过程中进行反量化。这指定了反量化后的 torch_dtype。默认值为'AUTO',即与 一致dtype。选项:'fp16'、'bf16'、'fp32'。当 quantization_bit 为 0 时无效。
--bnb_4bit_quant_type:4bit量化的量化方法,默认为'nf4'。选项:'nf4','fp4'。当quantization_bit为0时无效果。
--bnb_4bit_use_double_quant:是否启用4bit量化的双量化,默认为True。当 quantization_bit 为0时无影响。
--bnb_4bit_quant_storage:默认值None。这将设置存储类型以打包量化的 4 位数据。当 quantization_bit 为 0 时无效。
--lora_target_modules:指定lora模块,默认为['DEFAULT']。如果lora_target_modules传递了'DEFAULT'或,则根据在中'AUTO'查找(默认指定qkv)。如果传递了,则所有Linear层(不包括head)都将指定为lora模块。如果传递了,则Embedding层将指定为lora模块。如果内存允许,建议设置为'ALL'。也可以设置将所有Linear和embedding层指定为lora模块。此参数仅在为'lora'时生效。lora_target_modulesMODEL_MAPPINGmodel_type'ALL''EMBEDDING'['ALL', 'EMBEDDING']sft_type
--lora_target_regex:中的 lora 目标正则表达式Optional[str]。默认为None。如果指定了此参数,则lora_target_modules将不起作用。
--lora_rank:默认为。只有为 'lora'8时才生效。sft_type
--lora_alpha:默认为。只有为 'lora'32时才生效。sft_type
--lora_dropout_p:默认为,仅当为 'lora'0.05时才生效。sft_type
--init_lora_weights:初始化LoRA权重的方法,可以指定为true、false、gaussian、pissa或pissa_niter_[number of iters]。默认值true。
--lora_bias_trainable:默认为'none',选项:'none','all'。设置为'all'使所有偏差可训练。
--lora_modules_to_save:默认为[]。如果要训练 embedding、lm_head 或 layer_norm,可以设置此参数,例如--lora_modules_to_save EMBEDDING LN lm_head。如果传递'EMBEDDING',Embedding 层将添加到lora_modules_to_save。如果传递'LN',RMSNorm和LayerNorm将添加到lora_modules_to_save。
--lora_dtype:默认为'AUTO',指定 lora 模块的 dtype。如果AUTO,则遵循原始模块的 dtype。选项:'fp16'、'bf16'、'fp32'、'AUTO'。
--use_dora:默认为False,是否使用DoRA。
--use_rslora:默认为False,是否使用RS-LoRA。
--neftune_noise_alpha:添加的噪声系数NEFTune可以提高指令微调的性能,默认为None。通常可以设置为5,10,15。参见相关论文。
--neftune_backend:的后端NEFTune,默认使用transformers库,在训练VL模型时可能会遇到不兼容,在这种情况下建议指定为swift。
--gradient_checkpointing:是否启用梯度检查点,默认为True。这可以用于节省内存,尽管这会稍微降低训练速度。当 max_length 和 batch_size 较大时效果显著。
--deepspeed:指定deepspeed配置文件的路径或者直接传入json格式的配置信息,默认为None,即不启用deepspeed。deepspeed可以节省内存。我们编写了默认的ZeRO-2配置文件,ZeRO-3配置文件。只需要指定 'default-zero2' 就可以使用默认的zero2配置文件;指定 'default-zero3' 就可以使用默认的zero3配置文件。
--batch_size:训练时的 Batch_size,默认值为1。增加 batch_size 可以提高 GPU 利用率,但不一定能提高训练速度,因为在一个 batch 内,较短的句子需要填充到 batch 中最长句子的长度,从而引入无效计算。
--eval_batch_size:评估时的Batch_size,默认为,即为TrueNone时设置为1 ,为False时设置为。predict_with_generatebatch_size
--num_train_epochs:训练的 epoch 数,默认为1。如果max_steps >= 0,则覆盖num_train_epochs。通常设置为 3 ~ 5。
--max_steps:训练的 Max_steps,默认为-1。如果max_steps >= 0,则覆盖num_train_epochs。
--optim:默认为'adamw_torch'。
--adam_beta1:默认为0.9。
--adam_beta2:默认为0.999。
--adam_epsilon:默认为1e-8。
--learning_rate:默认为None,即如果是lora则设置为1e-4 ,如果是fullsft_type则设置为1e-5 。sft_type
--weight_decay:默认为0.01。
--gradient_accumulation_steps:梯度累积,默认为None,设置为math.ceil(16 / self.batch_size / world_size). total_batch_size = batch_size * gradient_accumulation_steps * world_size.
--max_grad_norm:渐变剪裁,默认为0.5。
--predict_with_generate:是否使用生成进行评估,默认为False。如果设置为 False,则使用 进行评估loss。如果设置为 True,则使用ROUGE-L和其他指标进行评估。生成评估需要很长时间,请谨慎选择。
--lr_scheduler_type:默认为'cosine',选项:'线性','余弦','常数'等。
--warmup_ratio:warmup 在总训练步数中所占的比例,默认为0.05。
--warmup_steps:预热步骤数,默认为0。如果设置了 warmup_steps > 0,则会覆盖 warmup_ratio。
--eval_steps:每隔这么多步进行评估,默认值为50。
--save_steps:每隔这么多步保存一次,默认为None,即设置为eval_steps。
--save_only_model:是否仅保存模型参数,而不保存检查点恢复所需的中间状态,默认为None,即如果sft_type是 'lora' 并且不使用 deepspeed(deepspeed是None),则设置为 False,否则设置为 True(例如使用完全微调或 deepspeed)。
--save_total_limit:保存的检查点数,默认为2,即保存最佳和最后一个检查点。如果设置为 -1,则保存所有检查点。
--logging_steps:每隔一定步打印一次训练信息(例如loss,learning_rate等),默认值为5。
--acc_steps1:训练过程中计算准确率信息的频率,默认每次迭代计算一次。
--dataloader_num_workers:默认值为None。如果在 Windows 机器上运行,则将其设置为0;否则,将其设置为1。
--push_to_hub:是否将训练好的检查点同步推送到ModelScope Hub,默认为False。
--hub_model_id:ModelScope Hub 上要推送到的 Model_id,默认为None,即设置为。您可以将其设置为 model_id 或 repo_name。我们会根据 hub_token 推断 user_name。如果要推送到的远程存储库不存在,则会创建新存储库,否则将重用之前的存储库。此参数仅在设置为 Truef'{model_type}-{sft_type}'时生效。push_to_hub
--hub_token:推送所需的SDK token,可从https://modelscope.cn/my/myaccesstoken获取,默认为None,即从环境变量中获取,此参数仅在设置为TrueMODELSCOPE_API_TOKEN时生效。push_to_hub
--hub_private_repo:是否设置推送的模型库在ModelScope Hub上的权限为私有,默认为。该参数只有设置为TrueFalse时才生效。push__to_hub
--push_hub_strategy:推送策略,默认为'push_best'。可选项包括:'end', 'push_best', 'push_last', 'checkpoint', 'all_checkpoints'。'push_best'表示每次保存权重时,推送并覆盖之前的最好模型,'push_last'表示每次保存权重时,推送并覆盖之前的最后几个权重,'end'表示只在训练结束时推送最好的模型。该参数仅在push_to_hub设置为True时生效。
--test_oom_error:用于检测训练是否会导致OOM,默认为False。如果设置为True,会将训练集按照max_length降序排列,便于OOM测试。此参数一般用于测试,谨慎使用。
--disable_tqdm:是否禁用 tqdm,在使用 启动脚本时有用nohup。默认为False,即启用 tqdm。
--lazy_tokenize:如果设置为 False,则在 之前预处理所有文本trainer.train()。如果设置为 True,则延迟编码文本,减少预处理等待和内存使用,在处理大型数据集时很有用。默认值为None,即我们根据模板类型智能选择,通常对于 LLM 模型设置为 False,对于多模态模型设置为 True(以避免加载图像和音频时占用过多的内存)。
--preprocess_num_proc:预处理数据集(文本分词)时是否使用多进程,默认为 。1与命令行参数相同lazy_tokenize,用于解决预处理速度慢的问题。但此策略无法减少内存占用,因此如果数据集很大,lazy_tokenize建议使用。推荐值:4,8。注意:使用 qwen-audio 时,此参数将被强制为 1,因为 qwen-audio 的预处理功能使用了 torch 的多进程,这会导致兼容性问题。
--use_flash_attn:是否使用 flash attn,默认为None。flash_attn 的安装步骤可参见https://github.com/Dao-AILab/flash-attention 。支持 flash_attn 的模型可在LLM Supported Models中找到。
--ignore_args_error:是否忽略命令行参数错误抛出的错误,默认为False。如果需要将代码复制到笔记本中运行,则设置为 True。
--check_model_is_latest:检查模型是否为最新,默认为。如果需要离线训练,True请将其设置为。False
--logging_dir:默认为None。即设置为f'{self.output_dir}/runs',代表存放tensorboard文件的路径。
--report_to:默认为['tensorboard']。您可以设置--report_to all向所有已安装的集成报告。
--acc_strategy:默认为'token',可选项包括:'token','sentence'。
--save_on_each_node:多机训练时生效,默认为False。
--save_strategy:保存检查点的策略,默认为'steps',选项包括:'steps','epoch',no'。
--evaluation_strategy:评估策略,默认为'steps',选项包括:'steps','epoch',no'。
--save_safetensors:默认为True。
--include_num_input_tokens_seen:默认值为False。跟踪整个训练过程中看到的输入标记的数量。
--max_new_tokens:默认为,当设置为 True2048时,此参数才生效。predict_with_generate
--do_sample:默认为,当设置为 TrueTrue时,此参数才生效。predict_with_generate
--temperature:默认为,该参数仅当设置为True0.3时才生效,部署参数中将使用该参数作为默认值。do_sample
--top_k:默认为,该参数仅当设置为True20时才生效,部署参数中将使用该参数作为默认值。do_sample
--top_p:默认为,该参数仅当设置为True0.7时才生效,部署参数中将使用该参数作为默认值。do_sample
--repetition_penalty:默认为1.。此参数将作为部署参数中的默认值。
--num_beams:默认为,当设置为 True1时,此参数才生效。predict_with_generate
--gpu_memory_fraction:默认值为None。此参数旨在在指定的最大可用 GPU 内存百分比下运行训练,用于极端测试。
--train_dataset_mix_ratio:默认为。此参数定义如何混合数据集进行训练。指定此参数时,会将训练数据集与指定的常识数据集的0.倍数进行混合。此参数已弃用,请使用来混合数据集。train_dataset_mix_ratiotrain_dataset_mix_ds--dataset {dataset_name}#{dataset_sample}
--train_dataset_mix_ds:默认为['ms-bench'],用于防止知识遗忘,这是通用知识数据集。此参数已弃用,请使用--dataset {dataset_name}#{dataset_sample}混合数据集。
--use_loss_scale:默认为False。生效时,加强部分Agent字段(Action/Action Input部分)的loss权重以增强CoT,在常规SFT场景下无效。
--loss_scale_config_path:选项指定自定义的loss_scale配置,在启用use_loss_scale时适用,例如在Agent训练中放大Action和其他关键ReAct字段的损失权重。
在配置文件中,你可以使用字典格式设置 loss_scale。每个键代表一个特定的字段名,其关联值指定该字段及其后续内容的损失缩放因子。例如,设置"Observation:": [2, 0]意味着当响应包含 时xxxx Observation:error,字段的损失Observation:将加倍,而部分的损失error将不计算在内。除了文字匹配之外,配置还支持正则表达式规则以实现更灵活的匹配;例如,模式将'<.*?>':[2.0]任何用尖括号括起来的内容的损失加倍。字段匹配和正则表达式匹配的损失缩放因子分别用长度为 2 和 1 的列表表示。
还支持根据匹配查询为整个响应设置 loss_scale,这在处理Agent-Flan 论文中描述的固定多轮对话查询时非常有用。如果查询包含任何预定义键,则相应的响应将使用相关的 loss_scale 值。请参阅 swift/llm/agent/agentflan.json 以获取示例。
默认情况下,我们为 Action:、Action Input:、Thought:、Final Answer: 和 Observation: 等字段预设了损失缩放值。我们还为alpha-umi和Agent-FLAN提供了默认配置,您可以分别设置为 alpha-umi 和 agent-flan 来使用它们。默认配置文件位于 swift/llm/agent 下。
匹配规则的应用优先级从高到低为:查询字段 > 特定响应字段 > 正则表达式匹配规则。
--custom_register_path:默认为None。传入.py用于注册模板、模型、数据集的文件。
--custom_dataset_info:默认为None。传入外部 的路径dataset_info.json、JSON 字符串或字典。用于注册自定义数据集。格式示例:https://github.com/modelscope/swift/blob/main/swift/llm/data/dataset_info.json
--device_map_config_path:从本地文件手动配置模型的设备映射,默认为无。
--device_max_memory:每个设备可使用的最大内存为device_map,,List默认为[],值的数量必须等于设备数量。如10GB 10GB。
长上下文
--rope_scaling:默认None,支持linear和dynamic缩放位置嵌入。max_length超过时使用max_position_embeddings。
FSDP 参数
--fsdp:默认值'',FSDP类型,详情请查看本文档。
--fsdp_config:默认值None,FSDP 配置文件路径。
序列并行参数
--sequence_parallel_size:默认值1,可以使用正值将序列分割到多个 GPU 以减少内存使用。该值应除以 GPU 数量。
BOFT 参数
--boft_block_size:BOFT块大小,默认值为4。
--boft_block_num:BOFT 块的数量,不能与同时使用boft_block_size。
--boft_target_modules:BOFT 目标模块。默认为['DEFAULT']。如果boft_target_modules设置为'DEFAULT'或,它将在基于 中'AUTO'查找(默认指定为 qkv)。如果设置为,则所有 Linear 层(不包括 head)都将被指定为 BOFT 模块。boft_target_modulesMODEL_MAPPINGmodel_type'ALL'
--boft_dropout:BOFT 的 Dropout 值,默认值为 0.0。
--boft_modules_to_save:需要训练并保存的附加模块,默认为None。
Vera 参数
--vera_rank:Vera Attention的大小,默认值为256。
--vera_projection_prng_key:是否存储Vera投影矩阵,默认为True。
--vera_target_modules:Vera 目标模块。默认为['DEFAULT']。如果vera_target_modules设置为'DEFAULT'或,它将在基于 中'AUTO'查找(默认指定为 qkv)。如果设置为,所有 Linear 层(不包括 head)都将被指定为 Vera 模块。Vera 模块需要共享相同的形状。vera_target_modulesMODEL_MAPPINGmodel_type'ALL'
--vera_dropout:Vera 的 Dropout 值,默认值为 0.0。
--vera_d_initial:Vera d 矩阵的初始值,默认值为 0.1。
--vera_modules_to_save:需要训练并保存的附加模块,默认为None。
LoRA+ 微调参数
--lora_lr_ratio:默认None,推荐值10~16,使用lora时指定此参数,启用lora+。
GaLore 微调参数
--use_galore: bool:默认False,是否使用GaLore。
--galore_target_modules: Union[str, List[str]]:默认无,未通过时应用 GaLore 进行注意和 mlp。
--galore_rank: int:默认128,GaLore 的排名值。
--galore_update_proj_gap: int:默认50,分解矩阵的更新间隔。
--galore_scale: int:默认1.0,矩阵权重系数。
--galore_proj_type: str:默认std,GaLore矩阵分解类型。
--galore_optim_per_parameter: bool:默认False,是否为每个Galore目标参数设置单独的优化器。
--galore_with_embedding: bool:默认False,是否将GaLore应用于嵌入。
--galore_quantization:是否使用q-galore。默认值False。
--galore_proj_quant:是否量化SVD分解矩阵,默认False。
--galore_proj_bits:SVD量化的位数。
--galore_proj_group_size:SVD量化的组数。
--galore_cos_threshold:更新投影矩阵的余弦相似度阈值。默认值为0.4。
--galore_gamma_proj:当投影矩阵逐渐变得相似时,该参数为每次延长更新间隔的系数,默认值2。
--galore_queue_size:计算投影矩阵相似度的队列长度,默认值5。
LISA 微调参数
注意:LISA 仅支持完整训练,即--sft_type full。
--lisa_activated_layers:默认值0,即不用LISA,建议值为2或8。
--lisa_step_interval:默认值20,切换层进行反向传播的迭代次数。
UNSLOTH 微调参数
unsloth 没有新增参数,你可以使用已有的参数来使用 unsloth:
--tuner_backend unsloth
--sft_type full/lora
--quantization_type 4
LLaMA-PRO 微调参数
--llamapro_num_new_blocks:默认4,插入的新层总数。
--llamapro_num_groups:默认None,将new_blocks插入到多少个组里,如果None等于则llamapro_num_new_blocks表示每个新层分别插入到原模型中。
AdaLoRA 微调参数
sft_type当设置为时,以下参数生效adalora。AdaLoRA 的target_modules和其他参数继承自 lora 的相应参数,但lora_dtype参数无效果。
--adalora_target_r:默认8,AdaLoRA 的平均排名。
--adalora_init_r:默认12,AdaLoRA 的初始排名。
--adalora_tinit:默认0,AdaLoRA 的初始预热。
--adalora_tfinal:默认0,AdaLoRA 的最终预热。
--adalora_deltaT:默认1,AdaLoRA的步进间隔。
--adalora_beta1:默认0.85,AdaLoRA 的 EMA 参数。
--adalora_beta2:默认0.85,AdaLoRA 的 EMA 参数。
--adalora_orth_reg_weight:默认0.5,AdaLoRA的正则化参数。
IA3微调参数
sft_type当设置为时,下列参数生效ia3。
--ia3_target_modules:指定IA3目标模块,默认为['DEFAULT']。lora_target_modules具体含义请参见。
--ia3_feedforward_modules:指定IA3的MLP的线性名称,该名称必须在 中ia3_target_modules。
--ia3_modules_to_save:参与 IA3 培训的附加模块。请参阅 的含义lora_modules_to_save。
RLHF 参数
RLHF 参数是 sft 参数的扩展,并增加了以下选项:
--rlhf_type:选择比对算法,可选参数有 'dpo', 'orpo', 'simpo', 'kto', 'cpo',不同算法的训练脚本请参考文档
--ref_model_typecpo:选择参考模型,类似model_type参数,默认与正在训练的模型一致。和simpo算法无需选择。
--ref_model_id_or_path:参考模型的本地缓存路径,默认为None。
--max_prompt_length:提示的最大长度,该参数会传递给对应的Trainer,保证提示长度不超过设定值,默认值为1024。
--beta:KL正则化项的系数,simpo默认为2.0,其他算法默认为0.1,详情请查看文档
--label_smoothing:是否使用DPO平滑,默认值为0,通常设置在0至0.5之间。
--loss_type:损失类型,默认值为"sigmoid"。
--sft_beta:是否在DPO中包含sft损失,默认0.1,支持范围
。最终的损失是(1-sft_beta)*KL_loss + sft_beta * sft_loss。
--simpo_gamma:SimPO算法中的奖励边际项,论文建议设置为0.5-1.5,默认为1.0。
--cpo_alpha:CPO 损失中 NLL 损失的系数,默认值为 1.0。在 SimPO 中,采用混合 NLL 损失来增强训练稳定性。
--desirable_weight:期望反应的损失重量
在KTO算法中,默认值为1.0。
--undesirable_weight:不良反应的损失权重
在 KTO 论文中,默认值为 1.0。设
和
分别表示数据集中理想和不理想示例的数量。本文建议控制
。
merge-lora infer 参数
--model_type:默认为None,sft.sh command line arguments参数详情请参阅。
--model_id_or_path:默认为None,sft.sh command line arguments参数详情见。建议使用model_type来指定。
--model_revision:默认为None。sft.sh command line arguments参数详情请参阅。如果model_id_or_path为 None 或为本地模型目录,则此参数无效。
--sft_type:默认为'lora',sft.sh command line arguments参数详情请参阅。
--template_type:默认为'AUTO',sft.sh command line arguments参数详情请参阅。
--infer_backend:可选项有 'AUTO', 'vllm', 'pt'。默认使用 'AUTO',进行智能选择,即如果ckpt_dir没有通过或者使用完全微调,并且安装了 vllm 并且模型支持 vllm,则使用 vllm 引擎,否则使用原生 torch 进行推理。vllm 环境设置可以在VLLM 推理加速和部署中找到,vllm 支持的模型可以在支持的模型中找到。
--ckpt_dir:必填,值为SFT阶段保存的检查点路径,例如'/path/to/your/vx-xxx/checkpoint-xxx'。
--load_args_from_ckpt_dirsft_args.json:是否从文件中读取模型配置信息ckpt_dir,默认为True。
--load_dataset_config:该参数只有在 时才生效--load_args_from_ckpt_dir true。即是否从sft_args.json中的文件读取数据集相关配置ckpt_dir。默认为False。
--eval_human:是否使用数据集的验证集部分进行评估或手动评估。默认为None,用于智能选择,如果没有数据集(包括自定义数据集)通过,则使用手动评估。如果数据集通过,则使用数据集评估。
--device_map_config_path:从本地文件手动配置模型的设备映射,默认为无。
--device_max_memory:每个设备可使用的最大内存为device_map,,List默认为[],值的数量必须等于设备数量。如10GB 10GB。
--seed:默认为42,sft.sh command line arguments参数详情请参阅。
--dtype:默认为'AUTO,sft.sh command line arguments参数详情请参阅。
--dataset:默认为[],sft.sh command line arguments参数详情请参阅。
--val_dataset:默认为[],sft.sh command line arguments参数详情请参阅。
--dataset_seed:默认值为42,sft.sh command line arguments参数详情请参阅 。 --dataset_test_ratio:默认值为0.01,具体参数详情请参考sft.sh command line arguments。
--show_dataset_sample:表示要评估和显示的验证集样本数量,默认为10。
--system:默认为None。sft.sh command line arguments参数详情请参见。
--tools_prompt:默认为react_en。sft.sh command line arguments参数详情请参见。
--max_length:默认为-1。sft.sh command line arguments参数详情请参见。
--truncation_strategy:默认为'delete'。sft.sh command line arguments参数详情请参见。
--check_dataset_strategy:默认为'none',sft.sh command line arguments参数详情请参阅。
--custom_train_dataset_path:默认值为[]。此参数已弃用,请使用--dataset {dataset_path}。
--custom_val_dataset_path:默认值为[]。此参数已弃用。请使用--val_dataset {dataset_path}。
--quantization_bit:默认为0,sft.sh command line arguments参数详情请参见。
--quant_method:量化方法,默认无,可选bnb、hqq、eetq。
--hqq_axis:Hqq 参数。执行分组的轴。支持的值是 0 或 1。默认值是0
--hqq_dynamic_config_path:动态配置参数,key 为 layer 的 name tag,value 为量化配置,设置后,每个 id 指定的 layer 都会使用各自的量化配置。ref
--bnb_4bit_comp_dtype:默认为'AUTO',sft.sh command line arguments参数详情见 ,若quantization_bit设置为0,该参数无作用。
--bnb_4bit_quant_type:默认为'nf4',sft.sh command line arguments参数详情见 ,若quantization_bit设置为0,该参数无作用。
--bnb_4bit_use_double_quant:默认为True,sft.sh command line arguments参数详情见 ,若quantization_bit设置为0,该参数无作用。
--bnb_4bit_quant_storage:默认值None。sft.sh command line arguments参数详情见。若quantization_bit设置为0,该参数无效果。
--max_new_tokens:要生成的新令牌的最大数量,默认为2048。
--do_sample:是否使用贪婪生成还是采样生成,默认为True。
--temperature:默认为,该参数仅当设置为True0.3时才生效,部署参数中将使用该参数作为默认值。do_sample
--top_k:默认为,该参数仅当设置为True20时才生效,部署参数中将使用该参数作为默认值。do_sample
--top_p:默认为,该参数仅当设置为True0.7时才生效,部署参数中将使用该参数作为默认值。do_sample
--repetition_penalty:默认为1.。此参数将作为部署参数中的默认值。
--num_beams:默认为1。
--use_flash_attn:默认为None,即'auto'。sft.sh command line arguments参数详情请参阅。
--ignore_args_error:默认为False,sft.sh command line arguments参数详情请参阅。
--stream:是否使用流式输出,默认为True。此参数仅在使用数据集评估且verbose为True时生效。
--merge_lora:是否将 lora 权重合并到基础模型中并保存完整权重,默认为False。权重将保存在 同级目录中ckpt_dir,例如'/path/to/your/vx-xxx/checkpoint-xxx-merged'目录。
--merge_device_map:merge-lora时使用的device_map,默认为None,为了减少内存使用,auto仅在merge-lora过程中使用,否则默认为cpu。
--save_safetensors:是否保存为safetensors文件或bin文件。默认为True。
--overwrite_generation_config:是否将评估时使用的generation_config保存为generation_config.json文件,默认为None。如果ckpt_dir指定 ,则设置为True,否则设置为False。训练时保存的generation_config文件将被覆盖。
--verbose:若设置为False,则使用tqdm样式推理。若设置为True,则输出推理查询、响应、标签。默认为None,为自动选择,即当len(val_dataset) >= 100设置为False,否则设置为True。此参数仅在使用数据集评估时生效。
--gpu_memory_utilization:初始化vllm引擎的参数EngineArgs,默认为0.9。该参数仅在使用vllm时生效。VLLM推理加速及部署请参见VLLM推理加速与部署。
--tensor_parallel_size:初始化vllm引擎的参数EngineArgs,默认为1。该参数只在使用vllm时有效。
--max_model_len:覆盖模型的max_model__len,默认为None。此参数仅在使用vllm时生效。
--disable_custom_all_reduce:是否禁用自定义all-reduce kernel并回退到NCCL,默认为True,与vLLM的默认值不同。
--enforce_eager:vllm 使用 PyTorch eager 模式或构建 CUDA graph,默认为False,设置为 True 可以节省内存,但可能会影响效率。
--vllm_enable_lora:默认False。是否支持lora的vllm。
--vllm_max_lora_rank:默认16。VLLM 中的 Lora 等级。
--lora_modules:默认[],输入格式为'{lora_name}={lora_path}',如--lora_modules lora_name1=lora_path1 lora_name2=lora_path2,会默认ckpt_dir添加。f'default-lora={args.ckpt_dir}'
--custom_register_path:默认为None。传入.py用于注册模板、模型、数据集的文件。
--custom_dataset_info:默认为None。传入外部 的路径dataset_info.json、JSON 字符串或字典。用于扩展数据集。
--rope_scaling:默认None,支持linear和dynamic缩放位置嵌入。max_length超过时使用max_position_embeddings。
export 参数
导出参数继承自推断参数,并添加了以下参数:
--to_peft_format:默认为False。将LoRA的swift格式(--tuner_backend swift)转换为peft格式。
--merge_lora:默认为False。此参数已在 InferArguments 中定义,不是新参数。是否将 lora 权重合并到基础模型中并保存完整权重。权重将保存在与 同级目录中ckpt_dir,例如'/path/to/your/vx-xxx/checkpoint-xxx-merged'目录。
--quant_bits:量化的位数,默认为0,即无量化。若设置--quant_method awq,可以将其设置为 ,4进行4bits量化。若设置--quant_method gptq,可以将其设置为2,3,4,8进行相应bits量化。若量化原模型,权重会保存在f'{args.model_type}-{args.quant_method}-int{args.quant_bits}'目录中。若量化微调模型,权重会保存在 同级目录中ckpt_dir,例如f'/path/to/your/vx-xxx/checkpoint-xxx-{args.quant_method}-int{args.quant_bits}'目录。
--quant_method:量化方法,默认为'awq'。选项有'awq','gptq','bnb'。
--dataset:此参数已在 InferArguments 中定义,用于导出时表示量化数据集。默认值为[]。更多详细信息:包括如何自定义量化数据集,可参见LLM 量化文档。
--quant_n_samples:量化参数,默认为256。设置为时--quant_method awq,如果量化过程中出现OOM,可以适度减小--quant_n_samples和--quant_seqlen。--quant_method gptq一般不会遇到量化OOM。
--quant_seqlen:量化参数,默认为2048。
--quant_device_map:默认为'cpu',以节省内存。可以指定 'cuda:0'、'auto'、'cpu' 等,表示量化时加载模型的设备。此参数与执行量化的实际设备无关,例如 AWQ 和 GPTQ 将在 cuda:0 上进行量化。
quant_output_dir:默认为None,默认的quant_output_dir将会打印在命令行中。
--push_to_hub:默认为False。是否将最终版本推送至ckpt_dirModelScope Hub。如果指定merge_lora,将推送完整参数;如果还指定quant_bits,将推送量化模型。
--hub_model_id:默认为None。在 ModelScope Hub 上推送的 Model_id。如果push_to_hub设置为 True,则必须设置此参数。
--hub_token:默认为None。sft.sh command line arguments参数详情请参见。
--hub_private_repo:默认为False。sft.sh command line arguments参数详情请参见。
--commit_message:默认为'update files'。
--to_ollama:导出到ollama模型文件。
--ollama_output_dir:ollama 输出目录。默认为<modeltype>-ollama。
评估参数
eval 参数继承自 infer 参数,另外包含以下参数:(注意:infer 中的generation_config参数将无效,由evalscope控制。)
--eval_dataset:官方评估数据集,默认为None,即所有数据集。如果custom_eval_config指定,则该参数将被忽略。
Currently supported datasets include: 'obqa', 'AX_b', 'siqa', 'nq', 'mbpp', 'winogrande', 'mmlu', 'BoolQ', 'cluewsc', 'ocnli', 'lambada', 'CMRC', 'ceval', 'csl', 'cmnli', 'bbh', 'ReCoRD', 'math', 'humaneval', 'eprstmt', 'WSC', 'storycloze', 'MultiRC', 'RTE', 'chid', 'gsm8k', 'AX_g', 'bustm', 'afqmc', 'piqa', 'lcsts', 'strategyqa', 'Xsum', 'agieval', 'ocnli_fc', 'C3', 'tnews', 'race', 'triviaqa', 'CB', 'WiC', 'hellaswag', 'summedits', 'GaokaoBench', 'ARC_e', 'COPA', 'ARC_c', 'DRCD'
--eval_few_shot:每个评估集的少样本子数据集数量,默认值为None,表示使用数据集的默认配置。此参数目前已弃用。
--eval_limit:评估集每个子数据集的采样数量,默认值为 ,None表示全面评估。可以传递整数(每个评估数据集的样本数量)或 str( [10:20],slice)。
--name:用于区分相同配置的评估结果存储路径。如:{eval_output_dir}/{name},默认为eval_outputs/defaults,其中每个评估结果将保存在一个以时间戳命名的文件夹中。
--eval_url:OpenAI 的标准模型调用接口,例如http://127.0.0.1:8000/v1。部署评估时需要设置,通常不需要。默认为None。
swift eval --eval_url http://127.0.0.1:8000/v1 --eval_is_chat_model true --model_type gpt4 --eval_token xxx
--eval_token:OpenAI标准模型调用接口的token,默认值为'EMPTY',表示无token。
--eval_is_chat_model:若不eval_url为空,则需要传递该值来判断是否为"聊天"模型,false代表为"基础"模型,默认为None。
--custom_eval_config:用于使用自定义数据集进行评估,需为本地存在的文件路径,文件格式请参考自定义评估集,默认为None。
--eval_use_cache:是否使用已经生成的评估缓存,这样以前的评估结果就不会重新运行,而只会重新生成评估结果。默认值为False。
--eval_output_dir:评估结果的输出路径,默认eval_outputs为当前文件夹。
--eval_batch_size:输入评估的批次大小,默认为8。
--deploy_timeout:评估前等待模型部署的超时时间,默认为60,即一分钟。
app-ui 参数
app-ui 参数继承自 infer 参数,并添加了以下参数:
--host:默认值为'127.0.0.1'。传递给demo.queue().launch(...)gradio 函数。
--port:默认值为7860。传递给demo.queue().launch(...)gradio 函数。
--share:默认值为False。传递给demo.queue().launch(...)gradio 函数。
deploy 参数
部署参数继承自推断参数,并添加了以下参数:
--host:默认为'127.0.0.1。
--port:默认为8000。
--api_key:默认为None,表示该请求不会经过api_key验证。
--ssl_keyfile:默认为None。
--ssl_certfile:默认为None。
web-ui 参数
--host: 默认'127.0.0.1'。
--port: 默认None。
--lang: 默认'zh'。
--share: 默认False。