AsymmetryLoRA
1.0.0
? ARXIV預印本
此存儲庫託管了“基礎模型低級適配器中的不對稱性”的代碼。我們發現並分析了Lora適配器矩陣B和A的不對稱性
步驟1 :請按照安裝步驟進行操作。首先,請確保安裝了Pytorch。
pip3 install torch==1.13.0 torchvision
步驟2 :然後安裝其餘所需的軟件包:
cd AsymmetryLoRA
pip install -r requirement.txt
我們的Lorasym模塊遵循PEFT模塊的結構。具體而言,我們提供一個靈活的接口來說明矩陣A和B的初始化設置:
torch.nn.init.kaiming_uniform_進行隨機均勻分佈,優化神經網絡層激活。您可以使用這些選項自定義矩陣A和B。
| 矩陣 | 選項 | 例子 | 解釋 |
|---|---|---|---|
| 一個 | V , rand , he , zero | A_rand | a被視為隨機正交基質,並在訓練過程中凍結。 |
| b | U , rand , he , zero | hB_zero | B初始化為零,並將更新。 |
解釋: A_rand_hB_zero表示A初始化為隨機正順序且不變,而B則以零開始並正在更新。
我們提供了一個包裝器,該包裝器與HuggingFace Transformer模型中的其他模型一起編譯。以下是用法的一個示例:
from transformers import AutoModelForSequenceClassification
from LoRASYM_peft . local_peft_model_all import PeftModelForCausalLM_local ,
from LoRASYM_peft . local_lorasym_all import LoRASYMConfig
model = AutoModelForSequenceClassification . from_pretrained (
model_args . model_name_or_path ,
)
update_rule_dict = para_dict = { "update_A" : False , "update_B" : True ,
"A_init" : "rand" , "B_init" : "zero" }
lorasym_config = LoRASYMConfig (
r = 16 ,
lora_alpha = 32 ,
lora_dropout = 0.05 ,
bias = "none" ,
modules_to_save = [ "classifier" ],
update_rule = update_rule_dict ,
task_type = "SEQ_CLS" ,
)
lora_model = PeftModelForCausalLM_local ( model , lorasym_config )使用以下命令對膠水基準中的任務進行微調Roberta-Large模型。
cd GPT_experiments
python -m run_glue_origin_ft --model_name_or_path roberta-large
--task_name rte
--ft_method LoRASYM
--bf16 True
--tf32 True
--do_train
--do_eval
--learning_rate 4e-4
--num_train_epochs 20
--input_seed 7
--lora_svd_method A_rand_hB_zero
--lora_rank 8
--lora_alpha 16
--overwrite_output_dir
如果您有與代碼或論文有關的任何疑問,請隨時通過電子郵件發送Jiacheng Zhu([email protected])。如果您在使用代碼時遇到任何問題,請隨時打開問題。
如果您發現回購對您的工作有幫助,請引用我們的論文:
@article { zhu2024asymmetry ,
title = { Asymmetry in Low-Rank Adapters of Foundation Models } ,
author = { Jiacheng Zhu and Kristjan Greenewald and Kimia Nadjahi and Haitz Sáez de Ocáriz Borde and Rickard Brüel Gabrielsson and Leshem Choshen and Marzyeh Ghassemi and Mikhail Yurochkin and Justin Solomon } ,
year = { 2024 } ,
}