
¡Hemos agregado puntos de control para abrazar la cara para una reproducción más fácil!
Hemos agregado continuo_prain.ipynb como un ejemplo autónomo del escenario de masas suaves. ¡Funciona bien sin GPU!
La masaje suave también puede funcionar en el ajuste continuo convencional . ¡Mira nuestro último artículo EMNLP23!
¿Se pregunta si puede adaptar un LLM de caja negra sin preocuparse por la actualización de sus parámetros? ¡Mira nuestro último artículo sobre Generación Agumentada (RAG) de recuperación aquí!
En 2021, presentamos Pycontinual, un marco directo y flexible para el aprendizaje continuo. Nuestra investigación se ha beneficiado significativamente de este marco. Hoy, estamos entusiasmados de compartir el continuo , un marco de aprendizaje continuo extensible centrado en los modelos de idiomas (LMS), diseñado para mantener los beneficios del aprendizaje continuo (CL) en este campo.
El aprendizaje continuo para LMS es distinto del CL tradicional porque
Nuestro repositorio incluye una implementación de Pytorch de una colección de métodos de última generación (SOTA), utilizando la misma tubería de capacitación y evaluación. Este repositorio se compromete a avanzar en el campo del aprendizaje continuo para LMS. Los métodos incluidos son:
De nuestro grupo:
De otros grupos (más por venir) :
Líneas de base ampliamente empleadas para el aprendizaje continuo:
Hemos agregado continual_pretrain.ipynb como un ejemplo autónomo del escenario de masas suaves. ¡Funciona bien sin GPU!
Cuando se trata del aprendizaje continuo de los modelos de idiomas (LMS), encontrar conjuntos de datos apropiados es crucial. Los conjuntos de datos que proporcionamos se adhieren a los siguientes principios:
Lanzamos nuestro conjunto de datos que comprende 6 dominios distintos, cada uno acompañado de su tarea final correspondiente. El conjunto de datos se puede encontrar aquí. A continuación se presentan algunas estadísticas para cada dominio:
| Corpus de dominio | Tamaño | Tarea final | Tarea | #Capacitación | #Pruebas | #Clases |
|---|---|---|---|---|---|---|
| Restaurante yelp | 758mb | Restaurante | Clasificación de sentimientos de aspecto (ASC) | 3,452 | 1.120 | 3 |
| Teléfono de Amazon | 724 MB | Teléfono | Clasificación de sentimientos de aspecto (ASC) | 239 | 553 | 2 |
| Cámara amazónica | 319MB | Cámara | Clasificación de sentimientos de aspecto (ASC) | 230 | 626 | 2 |
| Documentos de ACL | 867MB | LCA | Clasificación de intención de citas | 1.520 | 421 | 6 |
| Documentos de IA | 507mb | AI | Clasificación de relaciones | 2,260 | 2,388 | 7 |
| Papeles | 989mb | Pubmed | Predicción de interacción química-proteína | 2,667 | 7,398 | 13 |
La arquitectura del continuo sigue en gran medida la de Pycontinual, CPT y DGA.
conda create --name continuallm --file requirements.txt
transformers==4.17.0 y adapter-transformers==3.0.1 . Recomendamos usar estas versiones específicas, ya que usar otras versiones puede dar lugar a errores inesperados.
Aquí es donde ocurre el aprendizaje continuo. Aprenderemos un sequnce de dominios.
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 : elija la secuencia de tareas. ./sequences para obtener más detalles.--baseline : consulte la introducción de los modelos de referencia disponibles (ver choices en config.py ). Después del aprendizaje Conitinual de LMS, ahora podemos evaluar el rendimiento ejecutando el ajuste de la tarea final individualmente .
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 Para aquellos que estén interesados únicamente en el modelo resultante o desean continuar por capacitar el modelo con sus propios datos, ¡tenemos buenas noticias! Ofrecemos puntos de control a través de la cara abrazada.
¡Puede importar fácilmente nuestro modelo continuamente posttrado con 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 encuentra algún problema al cargar directamente los modelos por la API de Huggingface, también puede descargar los modelos manualmente desde el modelo y usar model = AutoModel.from_pretrained({PATH TO THE DOWNLOAD MODEL}) .
La secuencia continua previa al entrenamiento es la primera secuencia en ./sequences/posttrain (de restaurante a cámara ), puede usar los pesos descargados para ajustar la tarea final correspondiente.
Si está interesado en los archivos de importancia, consulte before_distill0 y after_mlm{domain_id} . before significa la importancia calculada antes de la capacitación previa, que se realiza solo una vez antes del primer dominio para el conocimiento general previamente capacitado. after indica la importancia calculada después del pre-entrenamiento de dominio_id.
Apreciamos mucho su acto de mirar y citar. Su atención al detalle y el reconocimiento es muy valorada.
@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 tiene alguna pregunta sobre el código, no dude en enviar un correo electrónico a Zixuan Ke, Yijia Shao o Haowei Lin. Alternativamente, puede abrir un problema. Nos gustaría expresar nuestra gratitud a Bing Liu, Hu Xu y Lei Shu por sus valiosos comentarios y opiniones