Project Icon

ContinualLM

语言模型持续学习的开源框架

ContinualLM是专注于语言模型持续学习的开源框架。它集成多种先进方法,采用统一的训练评估流程。支持领域自适应预训练和端任务微调,包含6个领域数据集。该框架致力于推动语言模型持续学习研究,为研究人员提供灵活有力的工具。

持续学习语言模型


想象一个不仅能轻松获取新知识,还能保持技能掌握,同时成功传递知识的语言模型。这真的可能吗?

新闻

🔥 我们已在Hugging Face添加了检查点,以便更轻松地复现!

🔥 我们添加了continual_pretrain.ipynb作为软掩蔽场景的自包含示例。它无需GPU也能很好地运行!

🔥 软掩蔽也可以应用于常规持续微调中。请查看我们最新的EMNLP23论文!

🔥 想知道如何在不担心参数更新的情况下适应黑盒大语言模型吗?请查看我们最新的检索增强生成(RAG)论文

快速链接

介绍

2021年,我们推出了Pycontinual,这是一个简单灵活的持续学习框架。我们的研究从这个框架中受益匪浅。今天,我们很高兴分享ContinualLM,这是一个专注于语言模型(LMs)的可扩展持续学习框架,旨在保持持续学习(CL)在这一领域的优势。

语言模型的持续学习与传统的CL不同,因为:

  • 每个任务都被视为一个特定领域的语料库(目前,我们主要关注领域适应性预训练,也称为预微调或后训练)。
  • 此外,评估过程涉及对相应的最终任务进行微调

我们的仓库包含了一系列最先进(SoTA)方法的PyTorch实现,使用相同的训练和评估流程。该仓库致力于推进语言模型持续学习领域的发展。包括的方法有:

简单示例

我们添加了continual_pretrain.ipynb作为软掩码场景的独立示例。它无需GPU也能很好地运行!

数据集

在语言模型(LMs)的持续学习中,找到适当的数据集至关重要。我们提供的数据集遵循以下原则:

  • **领域特定:**领域语料库必须足够特定,以提高最终任务的性能。
  • **可用的最终任务:**我们倾向于通过最终任务而不是依赖困惑度来评估训练好的语言模型,因为前者代表了一种更可靠的评估方法。

我们发布了包含6个不同领域的数据集,每个领域都有相应的最终任务。数据集可以在这里找到。以下是每个领域的一些统计数据:

领域语料库大小终端任务任务#训练#测试#类别
Yelp 餐厅758MB餐厅方面情感分类 (ASC)3,4521,1203
亚马逊手机724MB手机方面情感分类 (ASC)2395532
亚马逊相机319MB相机方面情感分类 (ASC)2306262
ACL 论文867MBACL引用意图分类1,5204216
AI 论文507MBAI关系分类2,2602,3887
PubMed 论文989MBPubMed化学物质-蛋白质相互作用预测2,6677,39813

架构

ContinualLM 的架构主要参考了 PycontinualCPTDGA

安装

conda create --name continuallm --file requirements.txt

:warning: 我们的模型基于 transformers==4.17.0adapter-transformers==3.0.1。我们建议使用这些特定版本,因为使用其他版本可能会导致意外的错误。

领域自适应预训练

这是持续学习发生的地方。我们将学习一系列领域。

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:选择任务序列。更多详情请参见 ./sequences
  • --baseline:查看简介中可用的基线模型(参见 config.py 中的 choices)。

终端任务微调

在语言模型的持续学习之后,现在我们可以通过单独运行终端任务微调来评估性能。

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

Huggingface 上的检查点

对于那些只对最终模型感兴趣或想用自己的数据继续预训练模型的人来说,我们有好消息!我们通过 Hugging Face 提供检查点。

你可以轻松地使用 HuggingFace 的 transformers 导入我们持续后训练的模型!

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# 导入我们的模型。该包会自动处理模型的下载
tokenizer = AutoTokenizer.from_pretrained("UIC-Liu-Lab/DAS-Rest2Cam")
model = AutoModelForSequenceClassification.from_pretrained("UIC-Liu-Lab/DAS-Rest2Cam", trust_remote_code=True)

# 对输入文本进行分词
texts = [
    "有个孩子在玩滑板。",
    "一个孩子正在玩滑板。",
    "一个孩子在屋子里。"
]
inputs = tokenizer(texts, padding=True, truncation=True, return_tensors="pt")

# 获取模型输出!
res = model(**inputs)

如果你在直接使用 HuggingFace 的 API 加载模型时遇到任何问题,你也可以从仓库手动下载模型,然后使用 model = AutoModel.from_pretrained({下载模型的路径})。 ⚠ 持续预训练序列是位于 ./sequences/posttrain第一个序列(从餐厅到相机),您可以使用下载的权重来微调相应的终端任务。

⚠ 如果您对重要性文件感兴趣,请参考 before_distill0after_mlm{domain_id}before 表示在预训练之前计算的重要性,这只在第一个领域之前进行一次,用于通用预训练知识。after 表示在 domain_id 预训练之后计算的重要性。

参考文献

我们非常感谢您的关注和引用。您对细节的关注和认可对我们来说非常宝贵。


@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}}

联系方式

如果您对代码有任何疑问,请随时发送电子邮件给柯子轩邵义家林浩伟。或者,您也可以提出一个问题。我们要感谢刘兵徐虎舒蕾提供的宝贵意见和建议。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号