此儲存庫是AdvPrompter的官方實作 (arxiv:2404.16873)。
請加星號?如果您喜歡(和/或使用)我們的工作,請將此存儲庫並引用我們的論文,謝謝!
conda create -n advprompter python=3.11.4
conda activate advprompter
pip install -r requirements.txt
我們使用 Hydra 作為組態管理工具。主要設定檔: ./conf/{train,eval,eval_suffix_dataset,base}.yaml
AdvPrompter 和 TargetLLM 在 conf/base.yaml 中指定,各種選項已經實作。
透過在conf/base.yaml中設定對應的選項,程式碼庫可以選擇支援wandb。
跑步
python3 main.py --config-name=eval
在給定資料集上針對 TargetLLM 測試指定 AdvPrompter 的效能。您必須在conf/base.yaml 中指定TargetLLM 和AdvPrompter。另外,如果 AdvPrompter 之前經過微調,您可能需要指定 peft_checkpoint 的路徑:
// 參見conf/prompter/llama2.yaml
洛拉參數:
熱啟動:真
lora_checkpoint:“path_to_peft_checkpoint”
評估期間產生的後綴將保存到./exp/.../suffix_dataset
中運行目錄下的新資料集以供以後使用。這樣的資料集對於根據 TargetLLM 評估基線或手動製作的後綴也很有用,並且可以透過運行來評估
python3 main.py --config-name=eval_suffix_dataset
在eval_suffix_dataset.yaml
中填入suffix_dataset_pth_dct
後
跑步
python3 main.py --config-name=train
根據 TargetLLM 訓練指定的 AdvPrompter。它會定期自動執行上面指定的評估,並且還將 AdvPrompter 的中間版本保存到./exp/.../checkpoints
下的運行目錄中,以供以後熱啟動。檢查點可以使用模型配置中的lora_checkpoint
參數指定(如 1.1 評估中所示)。訓練也將每個時期使用 AdvPrompterOpt 產生的目標後綴保存到./exp/.../suffix_opt_dataset
。這允許透過在train.yaml
中的 pretrain 下指定相應的路徑來對這樣的後綴資料集進行預訓練
conf/train.yaml 中需要考慮的一些重要超參數: [epochs, lr, top_k, num_chunks, lambda_val]
注意:您可能需要將 target_llm.llm_params.checkpoint 替換為本機路徑。
範例 1: Vicuna-7B 上的 AdvPrompter:
python3 main.py --config-name=train target_llm=vicuna_chat target_llm.llm_params.model_name=vicuna-7b-v1.5
範例 2: Vicuna-13B 上的 AdvPrompter:
python3 main.py --config-name=train target_llm=vicuna_chat target_llm.llm_params.model_name=vicuna-13b-v1.5 target_llm.llm_params.checkpoint=lmsys/vicuna-13b-v1.5 train.q_params.num_chunks=2
範例 3: Mistral-7B-chat 上的 AdvPrompter:
python3 main.py --config-name=train target_llm=mistral_chat
範例 4: Llama2-7B-chat 上的 AdvPrompter:
python3 main.py --config-name=train target_llm=llama2_chat train.q_params.lambda_val=150
安塞姆·保盧斯*、阿曼·扎爾甘貝托夫*、郭傳、布蘭登·阿莫斯**、田遠東**
(* = 同等第一作者,** = 同等建議)
我們的原始碼採用 CC-BY-NC 4.0 授權。