
Adicionamos pontos de verificação no rosto abraçando para facilitar a reprodução!
Adicionamos continual_pretrain.ipynb como um exemplo independente do cenário de mascaramento suave. Funciona bem sem GPUs!
A mascaração macia também pode funcionar em ajustes finos contínuos convencionais . Confira nosso mais recente papel EMNLP23!
Quer saber se você pode adaptar um LLM de caixa preta sem se preocupar com a atualização de seus parâmetros? Confira nosso último artigo sobre Geração de Recuperação (RAG) aqui!
Em 2021, introduzimos o PyContinual, uma estrutura direta e flexível para o aprendizado contínuo. Nossa pesquisa se beneficiou significativamente com essa estrutura. Hoje, estamos entusiasmados em compartilhar o Continuallm , uma estrutura de aprendizado contínua extensível focada nos modelos de idiomas (LMS), projetada para sustentar os benefícios do aprendizado contínuo (CL) nesse campo.
O aprendizado contínuo para o LMS é distinto do CL tradicional porque
Nosso repositório inclui uma implementação de Pytorch de uma coleção de métodos de última geração (SOTA), usando o mesmo pipeline de treinamento e avaliação. Este repositório está comprometido em avançar o campo de aprendizado contínuo para o LMS. Os métodos incluídos são:
Do nosso grupo:
De outros grupos (mais por vir) :
Linhas de base amplamente empregadas para aprendizado contínuo:
Adicionamos continual_pretrain.ipynb como um exemplo independente do cenário de mascaramento suave. Funciona bem sem GPUs!
Quando se trata do aprendizado contínuo dos modelos de idiomas (LMS), encontrar conjuntos de dados apropriados é crucial. Os conjuntos de dados que fornecemos aderem aos seguintes princípios:
Lançamos nosso conjunto de dados compreendendo 6 domínios distintos, cada um acompanhado por sua tarefa final correspondente. O conjunto de dados pode ser encontrado aqui. Abaixo estão algumas estatísticas para cada domínio:
| Corpus de domínio | Tamanho | Tarda final | Tarefa | #Treinamento | #Testing | #Classes |
|---|---|---|---|---|---|---|
| Restaurante Yelp | 758 MB | Restaurante | Classificação de sentimentos de aspecto (ASC) | 3.452 | 1.120 | 3 |
| Amazon Telefone | 724 MB | Telefone | Classificação de sentimentos de aspecto (ASC) | 239 | 553 | 2 |
| Câmera da Amazon | 319 MB | Câmera | Classificação de sentimentos de aspecto (ASC) | 230 | 626 | 2 |
| Documentos da ACL | 867 MB | ACL | Classificação de intenção de citação | 1.520 | 421 | 6 |
| Documentos da IA | 507 MB | Ai | Classificação da relação | 2.260 | 2.388 | 7 |
| PubMed Papers | 989 MB | PubMed | Previsão de interação com proteínas químicas | 2.667 | 7.398 | 13 |
A arquitetura de continua a seguir segue em grande parte a de PyContinual, CPT e DGA.
conda create --name continuallm --file requirements.txt
transformers==4.17.0 e adapter-transformers==3.0.1 . Recomendamos o uso dessas versões específicas, pois o uso de outras versões pode resultar em bugs inesperados.
É aqui que o aprendizado contínuo acontece. Aprenderemos um Sequnce de domínios.
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 : escolha a sequência de tarefas. Veja ./sequences para obter mais detalhes.--baseline : consulte a introdução para modelos de linha de base disponíveis (consulte choices em config.py ). Após a aprendizagem coníptina do LMS, agora somos capazes de avaliar o desempenho executando o ajuste fino da tarefa 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 aqueles que estão interessados apenas no modelo resultante ou desejam continuar por treinamento do modelo com seus próprios dados, temos boas notícias! Oferecemos pontos de verificação através do rosto abraçando.
Você pode importar facilmente nosso modelo pós-treino continuamente com transformers da 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 ) Se você encontrar algum problema ao carregar diretamente os modelos pela API do HuggingFace, também poderá baixar os modelos manualmente do repo e usar model = AutoModel.from_pretrained({PATH TO THE DOWNLOAD MODEL}) .
A sequência de pré-treinamento contínua é a primeira sequência em ./sequences/posttrain (do restaurante para a câmera ), você pode usar os pesos baixados para ajustar a tarefa final correspondente.
Se você estiver interessado nos arquivos de importância, consulte before_distill0 e after_mlm{domain_id} . before significa a importância calculada antes do pré-treinamento, o que é feito apenas uma vez antes do primeiro domínio para o conhecimento geral pré-treinado. after indica a importância calculada após o pré-treinamento do domain_id.
Agradecemos muito o seu ato de olhar e citar. Sua atenção aos detalhes e reconhecimento é muito valorizada.
@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 } } Se você tiver alguma dúvida sobre o código, não hesite em enviar um email para Zixuan KE, Yijia Shao ou Haowei Lin. Como alternativa, você pode abrir um problema. Gostaríamos de expressar nossa gratidão a Bing Liu, Hu Xu e Lei Shu por seus valiosos comentários e opiniões