
Nous avons ajouté des points de contrôle dans le visage étreint pour une reproduction plus facile!
Nous avons ajouté continual_pretrain.ipynb comme exemple autonome du scénario de masquage doux. Il fonctionne bien sans GPU!
Les mascations souples peuvent également fonctionner dans un réglage final conventionnel . Découvrez notre dernier papier EMNLP23!
Vous vous demandez si vous pouvez adapter un LLM Black-Box sans vous soucier de la mise à jour de ses paramètres? Découvrez notre dernier article sur la génération (RAG) (RAG) de la récupération!
En 2021, nous avons introduit Pycontinual, un cadre simple et flexible pour l'apprentissage continu. Nos recherches ont considérablement bénéficié de ce cadre. Aujourd'hui, nous sommes ravis de partager le continuallm , un cadre d'apprentissage continu extensible axé sur les modèles de langue (LMS), conçu pour maintenir les avantages de l'apprentissage continu (CL) dans ce domaine.
L'apprentissage continu pour LMS est distinct du CL traditionnel car
Notre référentiel comprend une implémentation Pytorch d'une collection de méthodes de pointe (SOTA), en utilisant le même pipeline de formation et d'évaluation. Ce référentiel s'engage à faire progresser le domaine de l'apprentissage continu pour LMS. Les méthodes incluses sont:
De notre groupe:
D'autres groupes (plus à venir) :
Bâlines largement utilisées pour l'apprentissage continu:
Nous avons ajouté continual_pretrain.ipynb comme exemple autonome du scénario de masquage doux. Il fonctionne bien sans GPU!
En ce qui concerne l'apprentissage continu des modèles de langue (LMS), la recherche de jeux de données appropriés est cruciale. Les ensembles de données que nous fournissons adhèrent aux principes suivants:
Nous libérons notre ensemble de données comprenant 6 domaines distincts, chacun accompagné de sa tâche d'extrémité correspondante. L'ensemble de données peut être trouvé ici. Vous trouverez ci-dessous quelques statistiques pour chaque domaine:
| Corpus de domaine | Taille | Tâche finale | Tâche | #Entraînement | #Essai | #Classes |
|---|---|---|---|---|---|---|
| Restaurant Yelp | 758 Mo | Restaurant | Classification du sentiment des aspects (ASC) | 3 452 | 1 120 | 3 |
| Téléphone Amazon | 724 Mo | Téléphone | Classification du sentiment des aspects (ASC) | 239 | 553 | 2 |
| Caméra Amazon | 319 Mo | Caméra | Classification du sentiment des aspects (ASC) | 230 | 626 | 2 |
| Papiers LCA | 867 Mo | ACL | Classification de l'intention de citation | 1 520 | 421 | 6 |
| Papiers IA | 507 Mo | IA | Classification des relations | 2 260 | 2 388 | 7 |
| Papiers PubMed | 989 Mo | Pubment | Prédiction d'interaction chimique-protéine | 2 667 | 7 398 | 13 |
L'architecture du continualm suit en grande partie celle de Pycontinual, CPT et DGA.
conda create --name continuallm --file requirements.txt
transformers==4.17.0 et adapter-transformers==3.0.1 . Nous vous recommandons d'utiliser ces versions spécifiques, car l'utilisation d'autres versions peut entraîner des bogues inattendus.
C'est là que l'apprentissage continu se produit. Nous apprendrons un sequce de domaines.
max_samples=640000
for idrandom in 0
do
for pt_task in 0 1 2 3 4 5
do
python -m torch.distributed.launch --nproc_per_node 4 --use_env posttrain.py
--per_device_train_batch_size 62
--fp16
--max_seq_length 164
--max_samples ${max_samples}
--idrandom ${idrandom}
--ntasks 6
--pt_task ${pt_task}
--baseline ' das '
done
done --idrandom : choisissez la séquence de tâches. Voir ./sequences pour plus de détails.--baseline : Voir l'introduction pour les modèles de base disponibles (voir choices dans config.py ). Après l'apprentissage conitinuel de LMS, nous sommes désormais en mesure d'évaluer la performance en faisant fonctionner les tâches finales individuellement .
max_samples=640000
seed=(2021 111 222 333 444 555 666 777 888 999)
for round in 0 ; do
for idrandom in 0 ;
do
for pt_task in 0 1 2 3 4 5
do
for ft_task in $( seq 0 ${pt_task} ) ;
do
python finetune.py
--max_seq_length 164
--pt_task ${pt_task}
--ft_task ${ft_task}
--idrandom ${idrandom}
--ntasks 6
--max_samples ${max_samples}
--seed ${seed[$round]}
--baseline ' das '
done
done
done
done Pour ceux qui s'intéressent uniquement au modèle qui en résulte ou qui souhaitent continuer par entraînement le modèle avec leurs propres données, nous avons de bonnes nouvelles! Nous offrons des points de contrôle par le visage étreint.
Vous pouvez facilement importer notre modèle en permanence continue avec transformers de HuggingFace!
import torch
from transformers import AutoTokenizer , AutoModelForSequenceClassification
# Import our model. The package will take care of downloading the models automatically
tokenizer = AutoTokenizer . from_pretrained ( "UIC-Liu-Lab/DAS-Rest2Cam" )
model = AutoModelForSequenceClassification . from_pretrained ( "UIC-Liu-Lab/DAS-Rest2Cam" , trust_remote_code = True )
# Tokenize input texts
texts = [
"There's a kid on a skateboard." ,
"A kid is skateboarding." ,
"A kid is inside the house."
]
inputs = tokenizer ( texts , padding = True , truncation = True , return_tensors = "pt" )
# Get the model output!
res = model ( ** inputs ) Si vous rencontrez un problème lorsque vous chargez directement les modèles en étreignant l'API de HuggingFace, vous pouvez également télécharger les modèles manuellement à partir du repo et utiliser model = AutoModel.from_pretrained({PATH TO THE DOWNLOAD MODEL}) .
La séquence de pré-formation continue est la première séquence sur ./sequences/posttrain (du restaurant à la caméra ), vous pouvez utiliser les poids téléchargés pour affiner la tâche finale correspondante.
Si vous êtes intéressé par les fichiers d'importance, veuillez vous référer à before_distill0 et after_mlm{domain_id} . before cela signifie l'importance calculée avant la pré-formation, ce qui ne se fait qu'une seule fois avant le premier domaine pour les connaissances générales pré-formées. after indique l'importance calculée après la pré-formation de domaine_id.
Nous apprécions fortement votre acte de regarder et de citer. Votre attention aux détails et à la reconnaissance est très appréciée.
@inproceedings { ke2022dgs ,
title = { Continual Learning of Language Models } , author = { Ke, Zixuan and Shao, Yijia and Lin, Haowei and Konishi, Tatsuya and Kim, Gyuhak and Liu, Bing } , booktitle = { International Conference on Learning Representations (ICLR) } , year = { 2023 } }
@inproceedings { ke2022dga ,
title = { Adapting a Language Model While Preserving its General Knowledge } , author = { Ke, Zixuan and Shao, Yijia and Lin, Haowei and Xu, Hu and Shu, Lei, and Liu, Bing } , booktitle = { Empirical Methods in Natural Language Processing (EMNLP) } , year = { 2022 } }
@inproceedings { ke2022continual ,
title = { Continual Training of Language Models for Few-Shot Learning } , author = { Ke, Zixuan and Lin, Haowei and Shao, Yijia and Xu, Hu and Shu, Lei, and Liu, Bing } , booktitle = { Empirical Methods in Natural Language Processing (EMNLP) } , year = { 2022 } } Si vous avez des questions concernant le code, n'hésitez pas à envoyer un e-mail à Zixuan Ke, Yijia Shao ou Haowei Lin. Alternativement, vous pouvez ouvrir un problème. Nous tenons à exprimer notre gratitude à Bing Liu, Hu Xu et Lei Shu pour leurs précieux commentaires et opinions