? Arxiv Preprint
Dieses Repo beherbergt den Code für das Papier "Asymmetrie in niedrigen Adaptern von Fundamentmodellen". Wir entdecken und analysieren die Asymmetrie der Lora -Adaptermatrizen B und A ,.
Schritt 1 : Bitte befolgen Sie die Installationsschritte. Stellen Sie zunächst sicher, dass Sie Pytorch installiert haben.
pip3 install torch==1.13.0 torchvision
Schritt 2 : Dann installieren Sie den Rest der erforderlichen Pakete:
cd AsymmetryLoRA
pip install -r requirement.txt
Unser Lorasymmodul folgt der Struktur des PEFT -Moduls. Insbesondere bieten wir eine flexible Schnittstelle zur Berücksichtigung der Initialisierungseinstellungen der Matrizen A und B :
torch.nn.init.kaiming_uniform_ für zufällige einheitliche Verteilung, wodurch die Aktivierungen der neuronalen Netzwerkschicht optimiert werden.Sie können Matrizen A und B mit diesen Optionen anpassen.
| Matrix | Optionen | Beispiel | Erläuterung |
|---|---|---|---|
| A | V , rand , he , zero | A_rand | A wird als zufällige orthonormale Matrix intialisiert und während des Trainings gefriert. |
| B | U , rand , he , zero | hB_zero | B wird als Null initialisiert und wird aktualisiert. |
Erklärung: A_rand_hB_zero bedeutet, dass A als zufällige orthonormale und unverändert initialisiert wird, während B bei Null beginnt und aktualisiert wird.
Wir bieten eine Wrapper, die mit anderen Modellen aus den Transformatormodellen von Huggingface zusammenfasst. Das Folgende ist ein Beispiel für die Nutzung:
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 )Verwenden Sie den folgenden Befehl, um das Roberta-Large-Modell für Aufgaben im Klebebank zu fein.
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
Wenn Sie Fragen zu dem Code oder dem Papier haben, können Sie Jiacheng Zhu ([email protected]) per E -Mail senden. Bitte öffnen Sie ein Problem, wenn Sie bei der Verwendung des Code auf Probleme stoßen.
Bitte zitieren Sie unser Papier, wenn Sie das Repo in Ihrer Arbeit hilfreich finden:
@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 } ,
}