? ARXIV Préimpression
Ce référentiel héberge le code du papier "Asymétrie dans les adaptateurs de bas range des modèles de fondation". Nous découvrons et analysons l'asymétrie des matrices de l'adaptateur LORA B et A ,
Étape 1 : Veuillez suivre les étapes d'installation. Tout d'abord, assurez-vous que Pytorch soit installé.
pip3 install torch==1.13.0 torchvision
Étape 2 : puis installez le reste des packages requis:
cd AsymmetryLoRA
pip install -r requirement.txt
Notre module Lorasym suit la structure du module PEFT. Plus précisément, nous fournissons une interface flexible pour tenir compte des paramètres d'initialisation des matrices A et B :
torch.nn.init.kaiming_uniform_ pour la distribution uniforme aléatoire, optimisant les activations de la couche de réseau neuronal.Vous pouvez personnaliser les matrices A et B avec ces options.
| Matrice | Options | Exemple | Explication |
|---|---|---|---|
| UN | V , rand , he , zero | A_rand | A est intiré comme matrice orthonormale aléatoire et est congelée pendant l'entraînement. |
| B | U , rand , he , zero | hB_zero | B est initialisé comme zéro et sera mis à jour. |
Explication: A_rand_hB_zero signifie que A est initialisé en tant qu'orthonormal aléatoire et inchangé, tandis que B commence à zéro et est mis à jour.
Nous fournissons un wrapper qui compile avec d'autres modèles des modèles Transformer de HuggingFace. Ce qui suit est un exemple d'utilisation:
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 )Utilisez la commande suivante pour affiner le modèle Roberta-Large pour les tâches dans la référence de colle.
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
Si vous avez des questions liées au code ou au journal, n'hésitez pas à envoyer un courriel à Jiacheng Zhu ([email protected]). N'hésitez pas à ouvrir un problème si vous rencontrez des problèmes lors de l'utilisation du code.
Veuillez citer notre article si vous trouvez le repo utile dans votre travail:
@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 } ,
}