欢迎光临散文网 会员登陆 & 注册

官方教程|CPM-Bee在基础任务上的高效微调

2023-06-12 17:32 作者:OpenBMB  | 我要投稿


5月27日百亿参数中英双语基座模型 CPM-Bee 开源之后,在GitHub反响热烈,一度登上总榜第四、Python榜第三。

CPM-Bee 是一个基座模型,其开源的核心目的是更广泛地支持各种 NLP 应用场景,让大家可以自由地进行适配。我们在预训练的时候采用了一些特殊设计,所以它现在的输出比较稳定。如果在合适的数据上进行指令微调,CPM-Bee 会输出更高质量和有信息量的内容。

当然,有很多社区的朋友希望我们出模型的具体微调教程,我们决定首先推出 CPM-Bee基础微调教程


CPM-Bee 数据格式介绍


CPM-Bee 基座模型可以将多种自然语言处理任务统一用生成的方式解决。CPM-Bee 采用特殊的多任务预训练模式,所有的数据都统一用一个字典来管理。我们可以任意设计字典中的键值对来表达我们希望模型做的事情,同时预留一个<ans>字段,用于存储模型给出的答案。注意,<ans>字段是必需的,基本格式如下:

尽管输入数据的格式是任意的,但由于模型在预训练阶段使用了有限的几种数据格式,我们建议您在使用CPM-Bee推理时尽量使用这些参考格式。

文本生成

input字段用于填写上下文,它并不是唯一的,您可以使用"source", "document", "query", "text", "文章", "文档", "原文", "输入", "context", "上下文"等类似的键来替换。

prompt字段用来给出一些提示和指定任务,该字段并不是必需的,但是我们建议您使用合理的 prompt 来更好地驱动模型。prompt也可以被"hint", "task", "prompt", "任务", "提示", "目标", "target"等替换。请注意,prompt 一般会提供一些控制信息,如"往后写xxx字","中翻英","给这段话生成摘要"等。

翻译

CPM-Bee目前支持中英互译。prompt一般可选"中翻英"/"英翻中","中译英"/"英译中","把文章翻译为英文"/"把文章翻译为中文","Translate from English to Chinese"等。

问答

选择题

options可以等价替换为"answers", "candidates", "选项"...

命名实体识别

以上是一些常见的任务的数据格式。请注意里面用到的字段不是严格限定的,您可以做一些近似语义的替换,比如把"中翻英"替换为"把这段话翻译成英文"。您也可以在微调时自由设计数据格式,例如,当您希望微调一个对话模型,您可以构造数据格式为

您也可以不使用<sep>,如下格式也可以:

总之,您可以灵活定义您的数据格式。


微调流程

本教程将以一个序列-序列任务为例介绍对 CPM-Bee 基座模型的微调。这里我们选择的任务需要将一句白话文“翻译”成一句古诗。首先,微调需要准备原始数据,格式如下:

  • 放置在路径src/ccpm_example/raw_data/下;

  • 准备模型的checkpoint,放在路径src/ckpts/pytorch_model.bin下,可在此链接下载权重。

进入工作路径:

运行data_reformat.py重新调整数据格式。注意,这里我们将原始数据转化为上述推荐的格式。在您的实验中,可以自行设置需要的格式并且编写自己的data_reformat.py

得到调整后的数据格式:

  • 放置在路径src/ccpm_example/bee_data/

注:该格式为参考格式。微调时,您可以自由设计您的数据格式,可以不设置prompt字段,只要所提供的数据涵盖所有必要信息即可。但我们一般推荐将输入文本字段标识为input/document/doc,如果您的任务可以被转化成选择题,则应当添加options字段与question字段;如果是一般的文本生成,包含input+<ans>即可

构建二进制数据文件:

  • 放在路径ccpm_example/bin_data/

注:应确保没有同名路径ccpm_example/bin_data/,如存在同名路径,应先删除该路径再运行上述指令。如未提前删除,该指令会报错ValueError: Dataset name exists,同时产生一个新路径tmp/,此时应当连同tmp/与同名路径ccpm_example/bin_data/一并删除,之后再运行上述指令即可。

在模型微调脚本scripts/finetune_cpm_bee.sh中对超参数进行设置,我们对每一个超参数给出了注释:

只需要运行脚本即可开始微调

您可以在src/results/中查看存储的模型或者轻量级 Delta 模块。


以上是 CPM-Bee的基础微调教程。下期我们会继续推出指令微调教程,我们也会持续完善CPM-Bee的文档信息,欢迎感兴趣的朋友关注和参与开源共建!

 ➤  CPM-Bee开源地址

 🔗 https://github.com/OpenBMB/CPM-Bee

➤  加社群/ 提建议/ 有疑问 

请找 OpenBMB 万能小助手:

🔍 关注我们

微信搜索关注 “OpenBMB开源社区”

后台回复“CPM-Live” 即可加入CPM-Live加油群

还可获取更多大模型干货知识和前沿资讯!   


官方教程|CPM-Bee在基础任务上的高效微调的评论 (共 条)

分享到微博请遵守国家法律