- arxiv preprint
repo นี้เป็นเจ้าภาพรหัสสำหรับกระดาษ "ความไม่สมมาตรในอะแดปเตอร์ระดับต่ำของโมเดลรากฐาน" เราค้นพบและวิเคราะห์ความไม่สมดุลของเมทริกซ์อะแดปเตอร์ 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 ถูกทำให้เป็นเมทริกซ์แบบสุ่ม orthonormal และถูกแช่แข็งในระหว่างการฝึกอบรม |
| ข | U rand he เป็น zero | hB_zero | B เริ่มต้นเป็นศูนย์และจะได้รับการปรับปรุง |
การอธิบาย: A_rand_hB_zero หมายถึง A เริ่มต้นเป็นแบบสุ่ม orthonormal และไม่เปลี่ยนแปลงในขณะที่ B เริ่มต้นที่ศูนย์และกำลังได้รับการปรับปรุง
เรามีเสื้อคลุมที่รวบรวมกับรุ่นอื่น ๆ จากโมเดลหม้อแปลงของ HuggingFace ต่อไปนี้เป็นตัวอย่างของการใช้งาน:
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 ขนาดใหญ่สำหรับงานในเกณฑ์มาตรฐานกาว
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]) โปรดเปิดปัญหาหากคุณพบปัญหาใด ๆ เมื่อใช้รหัส
โปรดอ้างอิงกระดาษของเราหากคุณพบว่า repo มีประโยชน์ในงานของคุณ:
@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 } ,
}