源自 : https://github.com/modelscope/swift/blob/main/docs/source/LLM/LLM微調文件.md
命令列引數
目錄
- sft 引數
- dpo 引數
- merge-lora infer 引數
- export 引數
- app-ui 引數
- deploy 引數
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'
, 則將RMSNorm
和LayerNorm
新增到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(deepspeed
為None
), 設定為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_dir
的sft_args.json
檔案中讀取模型配置資訊. 預設是True
.--load_dataset_config
: 該引數只有在--load_args_from_ckpt_dir true
時才生效. 即是否從ckpt_dir
的sft_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_dir
push到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
.