Redian新闻
>
强大高效的LLM:微调Flan-T5 XXL

强大高效的LLM:微调Flan-T5 XXL

公众号新闻

面对越来越多的大型语言模型(LLM),用户不得不问自己一个重要的问题——哪种模型能在性能和效率之间取得适当的平衡?


超大型模型(如ChatGPT)通常较大,因为它们承载了更多的世界知识,并能在自由文本生成方面提供更强的性能。这在人工智能助手或聊天机器人中很有用,但并不能使它们成为每项任务的最高效解决方案。


我们可以使用Flan-T5等更小巧、更具成本效益的模型,在各种自然语言处理应用中实现最先进(SOTA)的性能。


我们在Paperspace上推出推理notebooks时,曾介绍过Flan-T5的Large和XL版本的优势


现在,我们很高兴推出针对Graphcore(拟未) IPU的Flan-T5 XXL(和XL)微调。通过对这一110亿参数版本的Flan-T5进行微调,开发人员和企业可以针对其特定的自然语言处理工作负载进行性能优化。


由于Flan-T5 XXL及其预训练的权重是开源的,可以免费下载,因此可以修改后用于商业用途,而不受许可限制。


利用Paperspace Gradient Notebooks,Flan-T5 XXL及其相对较小的30亿参数Flan-T5 XL可以在IPU Pod16以上的任何Graphcore系统上微调和运行。


我们也为这两种尺寸的Flan-T5提供了推理notebooks。


Flan-T5 XXL最低可在IPU-Pod16上运行,而Flan-T5 XL推理可在IPU-Pod4上运行(Paperspace提供六小时免费试用)。


https://ipu.dev/JKcoSs

https://ipu.dev/UOonLS

https://ipu.dev/vyODS3


性能


Flan-T5[1]是一个编码器-解码器transformer模型,可将所有自然语言处理任务重构为文本到文本格式。与T5相比,Flan-T5在1000多个额外任务上进行了微调。


通过观察它在多任务语言理解(MMLU)基准测试中的表现,我们可以发现它与更大的模型相比具有很强的竞争力。


部分MMLU leaderboard来自Papers With Code[2]


如欲了解对Flan-T5及其在各种自然语言处理任务中性能的深入分析,敬请查看我们的往期文章:



微调Flan-T5 XXL


语言模型之所以强大,是因为大量任务都可以表述为文本到文本问题,从而适应生成设置,即要求模型预测未来的标记(token)。更多详情,请参阅T5论文[3]和Flan-T5论文[4]


在本文和随附的notebook[5]中,我们将应用T5论文中的观点,并使用GLUE MNLI[6]数据集在文本蕴涵任务中对Flan-T5进行微调。我们还将介绍如何轻松调整此示例,从而对多个下游任务进行自定义微调。


注:该notebook同时支持Flan-T5 XXL和Flan-T5 XL,但本文中的代码片段针对的是XXL模型。



数据集


MNLI数据集由成对的句子组成,一个前提,一个假设。任务是预测前提和假设之间的关系,这种关系可以是:


  • 蕴涵:假设从前提中引申出来

  • 矛盾:假设与前提相矛盾

  • 中性:假设和前提无关


MNLI数据集的数据拆分如下:


  • 训练拆分:392'702个例子

  • 验证匹配拆分:9'815个例子

  • 验证不匹配拆分:9'832个例子


匹配拆分的样本与训练集中的样本来源相同,而不匹配拆分的样本与训练集中的样本来源不同,因此与训练时看到的样本并不相似。在验证时,我们将使用后者。


您可以在Hugging Face上探索MNLI数据集[7]



如前所述,T5采用编码器-解码器结构,因此需要两个输入序列:一个用于编码器,另一个用于解码器。编码器的输入提示格式为:


mnli hypothesis: {hypothesis} premise: {premise}


我们向解码器提供相应的标签,标签向右移动并以标记作为前缀:


<pad>{label}


例如,编码器序列为:


mnli hypothesis: Product and geography are what make cream skimming work. premise: Conceptually cream skimming has two basic dimensions - product and geography.


同样,解码器序列示例为:


<pad>neutral


填充标记作为T5模型的decoder_start_token_id。


然后,编码器和解码器序列被标记化并填充到模型序列长度512。


由于训练模型是为了预测MNLI类别,因此标签只是将解码器输入序列向左移动一个标记,这意味着标签仅为MNLI类别,而不包括开头的填充标记。



自定义配置


如果需要,我们可以自定义一些微调和验证的参数。


在微调方面,我们可以更改训练步数、学习率、优化器参数以及与定期检查点相关的参数。


如果您有足够的IPU可用,您可以通过使用数据并行来加快训练速度。T5-XXL需要16个IPU,因此如果有64个IPU,可以将数据并行性设为4;同样,XL变体需要8个IPU,因此如果有16个IPU,可以将数据并行性设为2。


对于验证,您可以控制模型生成的最大标记数。您可以根据验证数据集中遇到的句子的最大长度来减少序列长度,这样我们就可以增加批处理量。



创建T5训练器


我们使用Google在Hugging Face上提供的Flan-T5检查点。这些权重是我们进行微调的起点。


pretrained = T5ForConditionalGeneration.from_pretrained("google/flan-t5-xxl")


在T5Trainer类的帮助下,我们可以创建训练了。


trainer = T5Trainer(

    config,

    pretrained,

    dataset,

    eval_dataset,

    eval_config,

    tokenizer,

    accuracy_metric,

    postprocess_mnli_predictions,

)



运行微调


现在,我们可以用下面一行运行微调:


trainer.train()



运行验证


最后,我们在MNLI数据集的validation_mismatched拆分上验证我们的模型。微调500步后,模型的准确率应达到87%。


trainer.evaluate()



转换为Hugging Face检查点


您可以保存微调后的权重,以便将其上传到Hugging Face。


finetuned = trainer.save_hf_checkpoint(hf_checkpoint_path, ckpt_path)



使用Hugging Face流水线运行模型


您之后可以以标准的Hugging Face流水线在任何硬件上使用与之相同的模型。


from transformers import pipeline

tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-xxl")

hf_model = T5ForConditionalGeneration.from_pretrained(hf_checkpoint_path)

generator = pipeline("text2text-generation", model=hf_model, tokenizer=tokenizer)

prompt = (

    "mnli hypothesis: Your contributions were of no help with our students' education. "

    "premise: Your contribution helped make it possible for us to provide our students with a quality education."

)

out = generator(prompt)


输出:


[{'generated_text': ' contradiction'}]


结论


使用Paperspace中的IPU可以轻松对Flan-T5 XXL进行微调,该模型适用于大量的自然语言处理应用。在各种自然语言处理任务中,该模型都能够以非常低的成本达到大模型的性能。Flan-T5 XXL可以进一步微调,以在特定应用中实现SOTA。因此,在大型语言模型的性能和成本权衡方面,它表现出色。


随附的notebook[8]在Graphcore Pod16上运行,这是一个低成本的云实例,也是一个不错的探索Flan-T5的出发点。


[1]https://huggingface.co/docs/transformers/model_doc/flan-t5

[2]https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu

[3]https://arxiv.org/pdf/1910.10683.pdf

[4]https://arxiv.org/pdf/2210.11416.pdf

[5]https://ipu.dev/JKcoSs

[6]https://huggingface.co/datasets/glue#mnli

[7]https://huggingface.co/datasets/glue/viewer/mnli/train

[8]https://ipu.dev/JKcoSs





获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。

Graphcore中国官网

Graphcore官方微信

Graphcore微博创新社区

Graphcore知乎创新社区


点击阅读原文,查看英文blog。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Llama2 7B中文魔改PK:「雅意」百万指令集微调 VS「伶荔」扩词+增量预训练+指令微调赏花养心刷新20项代码任务SOTA,Salesforce提出新型基础LLM系列编码器-解码器Code T5+又见婆婆DISC-MedLLM:复旦大学团队发布中文医疗健康个人助手,开源47万微调数据6.7k Star量的vLLM出论文了,让每个人都能轻松快速低成本地部署LLM服务GPT-4、ChatGLM2、Llama2、PaLM2在KDD LLM Day上一起开了个会40个简单但有效的Linux Shell脚本示例DreamLLM:多功能多模态大型语言模型,你的DreamLLM~刘知远等众多机构提出ToolLLM:促进大型语言模型掌握16000+真实世界的APIsPentecostWhen RS Meets LLM:推荐系统如何从大语言模型中取长补短?面向应用视角的全面综述​华盛顿大学提出全新量化和微调方法,在DB-GPT上享受33B参数的LLM博采众长!我全都要!Allen AI推出集成主流大语言模型的LLM-BLENDER框架XXXXXXL码旅行博主因太胖要求航司提供免费额外座位,"飞机座位太欺负胖子了"...LLM 全景图 (The Landscape of LLM)RLHF中的「RL」是必需的吗?有人用二进制交叉熵直接微调LLM,效果更好终于知道龚俊芭莎衣服的英文了以 LLM 为核心 LLM@Core:程序员的大语言模型技术指南LLM-Pruner: 剪枝+少量数据+少量训练 = 高效的LLM压缩后院牡丹情·2023蔚来ET5旅行版车型更名为ET5T,定位扩大至主流家庭用车市场从零训练一个多模态LLM:预训练+指令微调+对齐+融合多模态+链接外部系统GPT-4,Llama2,ChatGLM2,PaLM2共聚一堂 | LLM Day @KDD 2023Erklärung zur Zusammenarbeit获星1.9k,LLM微调神器Lamini上演速度与激情,免费可用真我GT5“燃模式”上线,消息称真我GT5 Pro将搭载潜望镜头LLM综述全新出炉:51页论文带你盘点LLM领域专业化技术懂3D的语言模型来了!UCLA、上交、MIT等联合提出3D-LLM:性能大涨9%周五谈资 | 饶晓志导演《杏仁豆腐心》卡司官宣,美宝莲为动车刷睫毛,魔都惊现XXXXXL号牛仔裤BELLE-7B-1M逆袭ChatGLM?10B量级开源中文对话LLM,谁成常识问答任务的黑马?复旦大学团队发布中文智慧法律系统DISC-LawLLM,构建司法评测基准,开源30万微调数据一篇关于LLM指令微调的综述11个LLM一起上,性能爆炸提升!AI2联合USC开源LLM-Blender集成学习框架:先排序再融合|ACL 2023RLHF中的「RL」是必需的吗?斯坦福提出用二进制交叉熵直接微调LLM
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。