首页 > 其他分享 >Swift微调命令

Swift微调命令

时间:2024-03-14 15:35:00浏览次数:26  
标签:-- lora sft 微调 默认 命令 参数 默认值 Swift

源自 : https://github.com/modelscope/swift/blob/main/docs/source/LLM/LLM微调文档.md

命令行参数

目录

sft 参数

  • --model_type: 表示你选择的模型类型, 默认是None. model_type指定了对应模型默认的lora_target_modules, template_type等信息. 你可以通过只指定model_type进行微调. 对应的model_id_or_path会使用默认的设置, 从ModelScope进行下载, 并使用默认的缓存路径. model_type和model_id_or_path必须指定其中的一个. 可以选择的model_type可以查看支持的模型.
  • --model_id_or_path: 表示模型在ModelScope Hub中的model_id或者本地路径, 默认为None. 如果传入的model_id_or_path已经被注册, 则会根据model_id_or_path推断出model_type. 如果未被注册, 则需要同时指定model_type, e.g. --model_type <model_type> --model_id_or_path <model_id_or_path>.
  • --model_revision: 表示模型在ModelScope Hub中对应model_id的版本号, 默认为None. model_revision指定为None, 则使用注册在MODEL_MAPPING中的revision. 否则强制使用命令行传入的model_revision.
  • --sft_type: 表示微调的方式, 默认是'lora'. 你可以选择的值包括: 'lora', 'full', 'longlora', 'qalora'. 如果你要使用qlora, 你需设置--sft_type lora --quantization_bit 4.
  • --freeze_parameters: 当sft_type指定为'full'时, 将模型最底部的参数进行freeze. 指定范围为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开头的parameters都会被激活.
  • --tuner_backend: 表示lora, qlora的后端支持, 默认是'swift'. 你可以选择的值包括: 'swift', 'peft'.
  • --template_type: 表示使用的对话模板的类型, 默认是'AUTO', 即根据model_type查找MODEL_MAPPING中的template. 可以选择的template_type可以查看TEMPLATE_MAPPING.keys().
  • --output_dir: 表示ckpt存储的目录, 默认是'output'. 我们会在该目录后拼接model_type和微调版本号. 方便用户对不同模型进行多次对比实验, 而不需要改变output_dir命令行参数. 如果不需要拼接这些内容, 你需要额外指定参数--add_output_dir_suffix false.
  • --add_output_dir_suffix: 默认为True, 表示会在output_dir的目录后拼接上model_type和微调版本号的后缀. 如果要避免此行为, 你可以设置为False.
  • --ddp_backend: 表示分布式的后端支持, 默认是'nccl'. 你可以选择的值包括: 'nccl', 'gloo', 'mpi', 'ccl'.
  • --seed: 全局的seed, 默认使用42. 用于复现训练效果.
  • --resume_from_checkpoint: 用于断点续训, 默认为None. 你可以将其设置为checkpoint的路径, 例如: 'output/qwen-7b-chat/vx-xxx/checkpoint-xxx', 来进行断点续训.
  • --dtype: 基模型载入时的torch_dtype, 默认为'AUTO', 即智能选择dtype: 如果机器不支持bf16, 则使用fp16, 如果MODEL_MAPPING中对应模型有指定torch_dtype, 则使用其对应dtype, 否则使用bf16. 你可以选择的值包括: 'bf16', 'fp16', 'fp32'.
  • --dataset: 用于选择训练的数据集, 默认为[]. 可以选择的数据集可以查看支持的数据集. 如果需要使用多个数据集进行训练, 你可以使用','或者' '进行分割, 例如: --dataset alpaca-en,alpaca-zh or --dataset alpaca-en alpaca-zh.
  • --dataset_seed: 用于指定数据集处理的seed, 默认为42. 以random_state形式存在, 不影响全局seed.
  • --dataset_test_ratio: 用于指定子数据集切分成训练集和验证集的比例, 默认为0.01. 如果子数据集已经进行了训练集和验证集的切分, 则此参数无效.
  • --train_dataset_sample: 对训练集进行采样, 默认是20000, 用于加快训练的速度. 该参数是为了避免数据集过大, 单个epoch训练时间过长的问题. 如果你指定为-1, 则使用完整的训练集进行训练.
  • --val_dataset_sample: 对验证集进行采样, 默认是None, 自动选取合适数量的数据集数量进行验证. 如果你指定为-1, 则使用完整的验证集进行验证.
  • --system: 对话模板中使用的system, 默认为None, 即使用模型默认的system. 如果指定为'', 则不使用system.
  • --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'表示会将超过文本的左边给切除掉, 这可能会切到special token, 会影响性能, 并不推荐.
  • --check_dataset_strategy: 默认值为'none', 即不做检查. 如果你训练的模型是LLM, 则推荐使用'warning'作为数据检查的策略. 如果你的训练目标为句子分类等任务, 则建议设置为'none'.
  • --custom_train_dataset_path: 默认值为[]. 具体的含义参考自定义与拓展.
  • --custom_val_dataset_path: 默认值为[]. 具体的含义参考自定义与拓展.
  • --self_cognition_sample: 自我认知数据集的采样数. 默认为0. 你该值设置为>0时, 需要同时指定--model_name, --model_author. 如果你想了解更多, 可以查看自我认知微调最佳实践.
  • --model_name: 默认为[None, None]. 如果开启了自我认知数据集的采样(即self_cognition_sample>0), 你需要传入两个值, 分别代表模型的中文名和英文名. 例如: --model_name 小黄 'Xiao Huang'.
  • --model_author: 默认为[None, None]. 如果开启了自我认知数据集的采样, 你需要传入两个值, 分别代表作者的中文名和英文名. 例如: --model_author 魔搭 ModelScope.
  • --quantization_bit: 用于指定是否进行量化和量化的bit数, 默认为0, 即不进行量化. 如果要使用4bit qlora, 你需要设置--sft_type lora --quantization_bit 4
  • --bnb_4bit_comp_dtype: 在进行4bit量化时, 我们需要在模型的forward和backward时, 将其进行反量化. 该参数用于指定反量化后的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量化时开启double量化, 默认为True. 当quantization_bit为0时, 该参数无效.
  • --lora_target_modules: 指定lora模块, 默认为['DEFAULT']. 如果lora_target_modules传入'DEFAULT' or 'AUTO', 则根据model_type查找MODEL_MAPPING中的lora_target_modules(默认指定为qkv). 如果传入'ALL', 则将所有的Linear层(不含head)指定为lora模块. 如果传入'EMBEDDING', 则Embedding层指定为lora模块. 如果内存允许, 建议设置成'ALL'. 当然, 你也可以设置['ALL', 'EMBEDDING'], 将所有的Linear和embedding层指定为lora模块. 该参数只有当sft_type指定为'lora'时才生效.
  • --lora_rank: 默认为8. 只有当sft_type指定为'lora'时才生效.
  • --lora_alpha: 默认为32. 只有当sft_type指定为'lora'时才生效.
  • --lora_dropout_p: 默认为0.05, 只有当sft_type指定为'lora'时才生效.
  • --lora_bias_trainable: 默认为'none', 可以选择的值: 'none', 'all'. 如果你要将bias全都设置为可训练, 你可以设置为'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', 则将RMSNormLayerNorm添加到lora_modules_to_save.
  • --lora_dtype: 默认为'fp32', 指定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的backend,默认使用transformers库, 当训练VL模型时可能遇到不适配的情况, 此时建议指定为swift.
  • --gradient_checkpointing: 是否开启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中最长句子的长度进行padding, 从而引入无效的计算量.
  • --eval_batch_size: 评估时的batch_size, 默认为None, 即当predict_with_generate为True时, 设置为1, 为False时, 设置为batch_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'.
  • --learning_rate: 默认值为None, 即如果sft_type为lora, 则设置为1e-4, 如果sft_type为full, 则设置为1e-5.
  • --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: 默认值为'linear', 你可以选择: 'linear', 'cosine', 'constant'等.
  • --warmup_ratio: warmup占用总的训练steps的比例, 默认为0.05.
  • --eval_steps: 每训练多少steps进行评估, 默认为50.
  • --save_steps: 每训练多少个steps进行保存, 默认为None, 即设置为eval_steps.
  • --save_only_model: 是否只保存模型参数, 而不存储断点续训所需的中间状态, 默认为None, 即如果sft_type为'lora'并且不使用deepspeed(deepspeedNone), 设置为False, 否则设置为True(e.g. 使用了全参数微调或者使用了deepspeed).
  • --save_total_limit: 保存的checkpoint的数量, 默认为2, 即保存best和last的checkpoint. 如果设置为-1, 则保存所有的checkpoint.
  • --logging_steps: 每训练多少步打印训练信息(e.g. loss, learning_rate等), 默认为5.
  • --dataloader_num_workers: 默认值为1.
  • --push_to_hub: 是否将训练的checkpoint同步推送到ModelScope Hub中, 默认为False.
  • --hub_model_id: 推送到的ModelScope Hub的model_id, 默认为None, 即设置为f'{model_type}-{sft_type}'. 你可以将其设置为model_id, 也可以设置为repo_name. 我们会根据hub_token推断出user_name. 推送的远程仓库如果不存在, 则会创建一个新的仓库, 如果存在, 则复用之前的仓库. 该参数只有在push_to_hub设置为True时才生效.
  • --hub_token: 推送时需要的SDK token. 可以从https://modelscope.cn/my/myaccesstoken获取, 默认为None, 即从环境变量MODELSCOPE_API_TOKEN中获取. 该参数只有在push_to_hub设置为True时才生效.
  • --hub_private_repo: 推送的ModelScope Hub中的模型仓库的权限是否设置为私有, 默认为False. 该参数只有在push_to_hub设置为True时才生效.
  • --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, 即我们会根据template的类型进行智能选择, LLM的模型通常设置为False, 多模态的模型通常设置为True(避免图片和音频加载导致过多的内存占用).
  • --preprocess_num_proc: 在对数据集预处理时(对文本进行tokenize), 使用多进程. 默认为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支持的模型.
  • --ignore_args_error: 是否忽略命令行传参错误抛出的Error, 默认为False. 如果需要拷贝代码到notebook中运行, 需要设置成True.
  • --check_model_is_latest: 检查模型是否是最新, 默认为True. 如果你需要断网进行训练, 请将该参数设置为False.
  • --logging_dir: 默认为None. 即设置为f'{self.output_dir}/runs', 表示tensorboard文件存储路径.
  • --report_to: 默认为['tensorboard'].
  • --acc_strategy: 默认为'token', 可选择的值包括: 'token', 'sentence'.
  • --save_on_each_node: 该参数在多机训练时生效, 默认为True.
  • --save_strategy: 保存checkpoint的策略, 默认为'steps', 可选择的值包括: 'steps', 'no'.
  • --save_safetensors: 默认为True.
  • --max_new_tokens: 默认为2048. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --do_sample: 默认为True. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --temperature: 默认为0.3. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --top_k: 默认为20. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --top_p: 默认为0.7. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --repetition_penalty: 默认为1.. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --num_beams: 默认为1. 该参数只有在predict_with_generate设置为True的时候才生效.
  • --gpu_memory_fraction: 默认为None. 该参数旨在指定显卡最大可用显存比例的情况下运行训练,用于极限测试.
  • --train_dataset_mix_ratio: 默认为0. 该参数定义了如何进行数据集打混训练. 指定该参数时, 训练集会以train_dataset_mix_ratio倍数混合train_dataset_mix_ds指定的通用知识数据集, 使整体数据集长度达到train_dataset_sample.
  • --train_dataset_mix_ds: 默认为ms-bench. 用于防止知识遗忘的通用知识数据集.
  • --use_loss_scale: 默认为False. 生效时会将Agent的部分字段(Action/Action Input部分)的loss权重加强以强化CoT, 对普通SFT场景没有任何效果.

LoRA+微调参数

  • --lora_lr_ratio: 默认值None, 建议值10~16, 使用lora时指定该参数即可使用lora+.

GaLore微调参数

  • --use_galore: bool : 默认值False, 是否使用GaLore.
  • --galore_target_modules: Union[str, List[str]] : 默认值None, 不传的情况下对attention和mlp应用GaLore.
  • --galore_rank: int : 默认值128, GaLore的rank值.
  • --galore_update_proj_gap: int : 默认值50, 分解矩阵的更新间隔.
  • --galore_scale: int : 默认值1.0, 矩阵权重系数.
  • --galore_proj_type: str : 默认值std, GaLore矩阵分解类型.
  • --galore_optim_per_parameter: bool : 默认值False, 是否给每个Galore目标Parameter设定一个单独的optimizer.
  • --galore_with_embedding: bool : 默认值False, 是否对embedding应用GaLore.

LLaMA-PRO微调参数

  • --llamapro_num_new_blocks: 默认值4, 插入的新layers总数.
  • --llamapro_num_groups: 默认值None, 分为多少组插入new_blocks, 如果为None则等于llamapro_num_new_blocks, 即每个新的layer单独插入原模型.

AdaLoRA微调参数

以下参数sft_type设置为adalora时生效. adalora的target_modules等参数继承于lora的对应参数, 但lora_dtype参数不生效.

  • --adalora_target_r: 默认值8, adalora的平均rank.
  • --adalora_init_r: 默认值12, adalora的初始rank.
  • --adalora_tinit: 默认值0, adalora的初始warmup.
  • --adalora_tfinal: 默认值0, adalora的final warmup.
  • --adalora_deltaT: 默认值1, adalora的step间隔.
  • --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的Linear名称, 该名称必须在ia3_target_modules中.
  • --ia3_modules_to_save: IA3参与训练的额外模块. 具体含义可以参考lora_modules_to_save的含义.

dpo 参数

dpo参数继承了sft参数, 除此之外增加了以下参数:

  • --ref_model_type: 对比模型的类型, 可以选择的model_type可以查看MODEL_MAPPING.keys().
  • --max_prompt_length: 最大的提示长度, 该参数会传入DPOTrainer中, 使prompt长度不超过该值的设置, 默认值1024.
  • --beta: DPO logits的正则项,默认为0.1.
  • --label_smoothing: 是否使用DPO smoothing, 默认值为0,一般设置在0~0.5之间.
  • --loss_type: DPOloss类型, 支持'sigmoid', 'hinge', 'ipo', 'kto_pair', 默认值'sigmoid'.
  • --sft_beta: 是否在DPO中加入sft loss, 默认为0.1, 支持[0, 1)区间,最后的loss为(1-sft_beta)*KL_loss + sft_beta * sft_loss.

merge-lora infer 参数

  • --model_type: 默认值为None, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --model_id_or_path: 默认值为None, 具体的参数介绍可以在sft.sh命令行参数中查看. 推荐使用model_type的方式指定.
  • --model_revision: 默认值为None. 具体的参数介绍可以在sft.sh命令行参数中查看. 如果model_id_or_path为None或者是本地的模型目录, 则该参数失效.
  • --sft_type: 默认值为'lora', 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --template_type: 默认值为'AUTO', 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --infer_backend: 你可以选择'AUTO', 'vllm', 'pt'. 默认使用'AUTO', 进行智能选择, 即如果没有传入ckpt_dir或使用全参数微调, 并且安装了vllm且模型支持vllm则使用vllm引擎, 否则使用原生torch进行推理. vllm环境准备可以参考VLLM推理加速与部署, vllm支持的模型可以查看支持的模型.
  • --ckpt_dir: 必填项, 值为SFT阶段保存的checkpoint路径, e.g. '/path/to/your/vx-xxx/checkpoint-xxx'.
  • --load_args_from_ckpt_dir: 是否从ckpt_dirsft_args.json文件中读取模型配置信息. 默认是True.
  • --load_dataset_config: 该参数只有在--load_args_from_ckpt_dir true时才生效. 即是否从ckpt_dirsft_args.json文件中读取数据集相关的配置信息. 默认为False.
  • --eval_human: 使用数据集中的验证集部分进行评估还是使用人工的方式评估. 默认值为None, 进行智能选择, 如果没有任何数据集(含自定义数据集)传入, 则会使用人工评估的方式. 如果有数据集传入, 则会使用数据集方式评估.
  • --seed: 默认值为42, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --dtype: 默认值为'AUTO, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --dataset: 默认值为[], 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --dataset_seed: 默认值为42, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --dataset_test_ratio: 默认值为0.01, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --val_dataset_sample: 表示想要评估和展示的验证集的数量, 默认值为10.
  • --system: 默认值为None. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --max_length: 默认值为-1. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --truncation_strategy: 默认是'delete'. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --check_dataset_strategy: 默认值为'none', 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --custom_train_dataset_path: 默认值为[]. 具体的含义参考README.md中的自定义数据集模块.
  • --custom_val_dataset_path: 默认值为[]. 具体的含义参考README.md中的自定义数据集模块.
  • --quantization_bit: 默认值为0. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --bnb_4bit_comp_dtype: 默认值为'AUTO'. 具体的参数介绍可以在sft.sh命令行参数中查看. 若quantization_bit设置为0, 则该参数失效.
  • --bnb_4bit_quant_type: 默认值为'nf4'. 具体的参数介绍可以在sft.sh命令行参数中查看. 若quantization_bit设置为0, 则该参数失效.
  • --bnb_4bit_use_double_quant: 默认值为True. 具体的参数介绍可以在sft.sh命令行参数中查看. 若quantization_bit设置为0, 则该参数失效.
  • --max_new_tokens: 生成新token的最大数量, 默认值为2048.
  • --do_sample: 是使用贪婪生成的方式还是采样生成的方式, 默认值为True.
  • --temperature: 默认值为0.3. 该参数只有在do_sample设置为True时才生效. 该参数会在部署参数中作为默认值使用.
  • --top_k: 默认值为20. 该参数只有在do_sample设置为True时才生效. 该参数会在部署参数中作为默认值使用.
  • --top_p: 默认值为0.7. 该参数只有在do_sample设置为True时才生效. 该参数会在部署参数中作为默认值使用.
  • --repetition_penalty: 默认值为1.. 该参数会在部署参数中作为默认值使用.
  • --num_beams: 默认为1.
  • --use_flash_attn: 默认值为None, 即为'auto'. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --ignore_args_error: 默认值为False, 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --stream: 是否使用流式输出, 默认为True. 该参数只有在使用数据集评估并且verbose为True时才生效.
  • --merge_lora: 是否将lora权重merge到基模型中, 并保存完整的权重, 默认为False. 权重会保存在ckpt_dir的同级目录中, e.g. '/path/to/your/vx-xxx/checkpoint-xxx-merged'目录下.
  • --merge_device_map: merge-lora时使用的device_map, 默认为None, 为减少显存占用, 在仅有merge-lora过程时使用auto,其他情况默认使用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, 则输出推理的query, response, label. 默认为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时才生效.

export 参数

export参数继承了infer参数, 除此之外增加了以下参数:

  • --merge_lora: 默认为False. 该参数已在InferArguments中定义, 不属于新增参数. 是否将lora权重merge到基模型中, 并保存完整的权重. 权重会保存在ckpt_dir的同级目录中, e.g. '/path/to/your/vx-xxx/checkpoint-xxx-merged'目录下.
  • --quant_bits: 量化的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的同级目录中, e.g. f'/path/to/your/vx-xxx/checkpoint-xxx-{args.quant_method}-int{args.quant_bits}'目录下.
  • --quant_method: 量化方法, 默认为'awq'. 你可以选择为'awq', 'gptq'.
  • --dataset: 该参数已在InferArguments中定义, 在export时含义为量化数据集. 默认为[]. 推荐设置为--dataset ms-bench-mini. 该数据集含多语言的内容(中文为主)且质量很高, 量化中文模型具有很好的效果. 你也可以设置--dataset pileval, 使用autoawq默认量化数据集, 该数据集的语言为英文. 更多细节: 包括如何自定义量化数据集, 可以参考LLM量化文档.
  • --quant_n_samples: 量化参数, 默认为None, 如果使用awq量化设置为256, 如果使用gptq量化设置为1024. 当设置为--quant_method awq时, 如果出现量化的时候OOM, 可以适度降低--quant_n_samples--quant_seqlen. --quant_method gptq通常不会出现量化OOM.
  • --quant_seqlen: 量化参数, 默认为2048.
  • --quant_device_map: 默认为'cpu', 节约显存. 你可以指定为'cuda:0', 'auto', 'cpu'等, 表示量化时模型导入的设备.
  • --push_to_hub: 默认为False. 是否将最后的ckpt_dirpush到ModelScope Hub中. 如果你指定了merge_lora, 则将推送全量参数; 如果你还指定了quant_bits, 则将推送量化后的模型.
  • --hub_model_id: 默认为None. 推送到的ModelScope Hub的model_id. 如果push_to_hub设置为True, 该参数必须被设置.
  • --hub_token: 默认为None. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --hub_private_repo: 默认为False. 具体的参数介绍可以在sft.sh命令行参数中查看.
  • --commit_message: 默认是'update files'.

app-ui 参数

app-ui参数继承了infer参数, 除此之外增加了以下参数:

  • --server_name: 默认为'127.0.0.1'. 传递给gradio的demo.queue().launch(...)函数.
  • --server_port: 默认为7860. 传递给gradio的demo.queue().launch(...)函数.
  • --share: 默认为False. 传递给gradio的demo.queue().launch(...)函数.

deploy 参数

deploy参数继承了infer参数, 除此之外增加了以下参数:

  • --host: 默认为'127.0.0.1.
  • --port: 默认为8000.
  • --ssl_keyfile: 默认为None.
  • --ssl_certfile: 默认为None.

标签:--,lora,sft,微调,默认,命令,参数,默认值,Swift
From: https://www.cnblogs.com/AlwaysSui/p/18072940

相关文章

  • Linux 常用命令
    ls-列出目录内容示例:ls-l(以详细列表格式显示文件)cd-切换工作目录示例:cd/path/to/directorypwd-显示当前工作目录的路径mkdir-创建新目录示例:mkdirnew_directorycp-复制文件或目录示例:cpfile1file2(将file1复制为file2)mv-移......
  • cmd命令制作Bat文件
    将CMD命令转换为BAT文件的过程如下所示:打开任意文本编辑器(比如记事本)。在新建的空白文档中输入需要运行的CMD命令。每条命令应该单独放置于一行上。保存文件时选择“全部类型”或者“.txt”作为文件格式,并以.bat作为文件后缀名。例如,可以将文件保存为 my_script.bat。双击运......
  • PING命令 获取的TTL值 注册表位置
    对TTL进行伪装或隐藏是一种网络欺骗技术,通常用于隐匿数据包的传输路径或减少网络攻击的暴露。以下是一种可能的方法和基础技术原理:使用代理服务器:通过设置代理服务器来修改数据包的TTL值,然后再将其发送到目标服务器。代理服务器会在转发数据包时更改TTL的值,使得接收方无......
  • Windows10, 11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件 Windows server 2
    Windows11上,您可以使用以下PowerShell命令来启用Hyper-V功能组件:powershellCopyCodeEnable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All这个命令将启用所有与Hyper-V相关的功能组件。请确保以管理员权限在PowerShell中运行此命令。执行以上命令后,系......
  • 滴水逆向笔记系列 - 4.内存地址_堆栈-5.标志寄存器-6.JCC命令
    第四课内存地址_堆栈内存地址db与dd命令db:d表示查找,b表示bytedd:d表示查找,d表示dworddb命令在数据区找出目的内存地址,发现数据区内和堆栈区显示的是相反的反汇编窗口和寄存器窗口的都是从高位到低位,数据区反之(比如数据0x12345678,12是高位,8是低位)所以0012FFDC这块内存(1字节)......
  • Windows下Nginx的启动,停止,重启等命令
    假设安装在E:\server\nginx-1.20.0目录下cmd命令进入安装文件启动E:\server\nginx-1.20.0>startnginx或E:\server\nginx-1.20.0>nginx.exe注意:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。停止E:\server\nginx-1.20.0>nginx.exe-sstop或E:\serv......
  • Git进阶命令-reset
    之前有关Git,写过一片文章:Git五个常见问题及解决方法一、reset命令使用场景有时候我们提交了一些错误的或者不完善的代码,需要回退到之前的某个稳定的版本,面对这种情况有两种解决方法:解决方法1:修改错误内容,再次commit一次解决方法2:使用gitreset命令撤销这一次错误的commi......
  • 全网最最最详细的virtualenv的使用命令详解
    使用virtualenv可以创建一个隔离的Python环境。以下是virtualenv的一些基本和详细使用命令,帮助更好地理解和使用这个工具:安装virtualenv首先,确保你已经安装了virtualenv。如果还没有安装,可以使用下面的命令安装:pipinstallvirtualenv创建虚拟环境要创建一个新的虚拟......
  • 【LLM实战】 基于QLoRA对微软Phi-2进行对话摘要任务微调
    本文将在DialogSum数据集上使用2张T4卡对2.7B的microsoft/phi2进行LORA微调。博客翻译自Kaggle项目fine-tuning-llm-for-dialogue-summarizationhttps://www.kaggle.com/code/aisuko/fine-tuning-llm-for-dialogue-summarization一、安装依赖首先,安装依赖包%%capture!pip......
  • 一文看明白Transformer微调过程中嵌入向量的变化
    TL;DR微调在图像分类中显著影响嵌入向量。微调前的嵌入向量提供通用性表征,而微调后的嵌入向量捕获任务特定的特征。这种区别可能导致在异常检测和其他任务中的不同结果。微调前和微调后的嵌入向量各有其独特优势,应结合使用以实现图像分类和分析任务中的全面分析。请查看本......