【云驻共创】走进CPM-Bee大模型
本文分别从模型结构、数据格式、微调及推理演示三个方面带大家全方位了解CPM-Bee大模型。
1. CPM-Bee总体概要
CPM-Bee发布于2023年5月27日,是一个完全开源、允许商用的百亿参数中英文基座模型,也是CPM-Live训练的第二个里程碑,它采用Transformer自回归架构(auto-regressive),在超万亿(trillion)高质量语料上进行预训练,拥有强大的基础能力,它是一个基座模型,即从零开始通过预训练得来,我们可以在自己的场景和数据上进行适配/微调/对齐。
2.模型结构
2.1多段式机制和统一建模架构
CPM-Bee采用了统一编码器架构,通过灵活的Attention Mask统一不同的子任务。它使用了Pre-LayerNorm结构,相比传统的Post-LayerNorm具有更稳定的训练过程。其可通过简单设置mask的方式让模型同时具有理解和生成能力。
2.2位置编码
对于Bucket position bias,Segment内:相对距离;Segment间:统一bucket。
它可以保持段内位置关系,同时使段间token的位置关系依赖于段本身,支持更复杂的文本训练。
2.3输入数据
数据采取嵌套字典输入方式,如{"a":"A","b":"B"}。文本段之间bucket由树上关系决定。不同任务可由嵌套字典的方式指定,便于支持多任务的零样本能力。
2.4训练任务与输入数据示例
"填空":{"input":"心理学领域的研究,人员发现,做出重要决定的最好方法之一,比如选择一所大学或<mask_0>,都涉及到使用决策工作表。研究优化的心理学家将<mask_1>与理论理想决策进行比较,看看它们有多相似。工作表程序的支持者认为它会产生最优的,也就是说,最好的决策,虽然有<mask_2>可以接受,但它们在本质上都是相似的,",
"<ans>":{
"<mask >":"","<mask 1>":" "."<mask_2>":" "
}
"文本生成":{"input":"今天天气很好,我和妈妈一起去公园,""prompt":"往后写约188字","<ans>":" "
}
"翻译":{
"input":"北京是中国的首都","prompt":"中翻英",
<ans>":" "
}
"同答":{"input":"NGC 6231是一个位于天蝎座的疏散星团,天球座标为赤经16时54分,赤纬-41座48分,视觉观测大小约45角分,亮度约2.6视星等,距地球5988光年。N6C 6231年龄约为三百二十万年,是一个非常年轻的星团,星团内的最亮星是5等的天蝎座 (1星。用双简望远镜或小型望远镜就能看到个别的行星。NGC 6231在1654年被意大利天文学家乔瓦尼·巴蒂斯特·霍迪尔纳(Giovanni Battista Hodierna)以Luminosae的名字首次纪录在星表中,但是未见记载于夏尔·楠西耶的天体列表和威廉·赫歌尔的深空天体目录。这个天体在1678年被爱德蒙·哈雷(1.7)、1745年被夏西亚科斯(ean-Phillippe Loys de cheseaux)(9)、1751年被尼可拉·路易·拉卡伊(II.13)分别再次独立发现。","question":"NGC 6231的经结度是多少?","<ans>":" "
}
"评分预测":{"input":"之前多次聚餐都选择这里,有各种大小的包房同时能容纳很多人,环境好有特色还有表演,整体聚餐氛围一下被带动起来。现在由于炭火改成了电烤羊,口感真的不如从前,不过其他菜品都还是不错,烤羊剩下的拆骨肉最后还能再加工一下椒盐的也很好吃。","question":"评分是多少?(1-5)","<ans>":""
}
"选择题":{"input":"父母都希望自己的孩子诚实、勇敬、有礼貌。要想让孩子成为这样的人,父母首先得从自己做起,要是连自己都做不到,又怎能要求孩子做到呢?","options":{
"<option_0>";"少提要求",
"<opt1on_1>":"降低标准",
"<option_2>":"自己先做好",
"<option_3>":"让孩子拿主意"},
"question":"教育孩子时,父母应该:","<ans>":" "}
2.5任务扩展--多轮对话
代码{"input":"" "<ans>":""},{"input":"<用户>你好!<AI>你好,请问有什么我可以帮助您的。<用户>我想看电影,帮我推荐几部电影吧!<AI>""<ans>":""}。程序运行后的效果如下:
用户:你好!
AI:你好,请问有什么我可以帮助您的.
用户:我想看电影,帮我推荐几部电影吧!
3.使用方法
3.1核心文件
CPM-Bee提供了模型训练、微调、推理所需要的一系列代码,可以支持大模型全流程开发。
CPM-Bee是一种用于处理复杂系统的数学建模和模拟方法。然而,CPM-Bee并不是一个特定的程序或软件,它更像是一种方法论或者概念。如果我们想要实现CPM-Bee方法,需要自行定义核心文件。这通常包括以下几个步骤:1.定义系统的状态空间。2.设计控制策略。3.编写模拟算法来模拟系统的行为。
3.2预训练
总体来看,预训练分为四步,依次如下。
3.2.1数据清洗
需要将每个样本放置为一行,换行进行转义变为\n,格式可为txt也可为json。
{"template": "Does the answer correctly answer the question", "sentence": "unicade hasthe explicit aim of transcending |..", "question": "What is the aim of Unicode?", "options":{"coption 0>":"no","<option_1>":"yes"},"<ans>":"<option_1>"}
3.2.2数据处理
CPMBee为了高效读取数据以及在分布式文件系统上进行数据集部署,需要将其转化成二进制文件,具体调用build_dataset.py。
3.2.3编写任务转换脚本和数据集脚本
• 对于每个数据集,可以撰写任务转换脚本来对数据集中的json格式进行改写,改写成各类预训练任务。
• 所有参与训练的数据集需要一个数据集脚本来进行信息汇总,数据集脚本也是一个json文件,一般用datasets.json命名。
3.2.4编写预训练脚本并启动预训练
• 配置scripts/pretrain_cpm_bee.sh中的参数。
• 启动预训练。
$cd CPMBee/src
$bash scripts/pretrain_cpm_bee.sh
3.3微调
相较于预训练,微调不需要配置数据集脚本datasets.json,相应的,需要把所有任务数据都集中在一个文件里。
3.3.1数据清洗
把每行数据转换为含"<ans>"的CPM-Bee可读格式。
{"target":"@","input":"(翻译]清晨还是西北风。[@]清晨西北转[1]河岳西来转[2]凌晨从北园[3]西北转银潢[答案]"}《"input":"清晨还是西北风。","options":{"<opt1on_8>":"清晨西北转","<opt1on_1>":"河岳西来转","<aption_2>":"凌展从北固","<option_3>":"西北转很满"},"questian":"这段话形容了哪句诗的意境?","<5>":*coption 8>"}
3.3.2数据处理
面向训练/验证/测试的工作流,调用preprocess_dataset.py。
$python ../../src/preprocess dataset.py
--input bee_data
--output_path bin_data
--output_name ccpm_data
3.3.3配置微调脚本并开启微调
根据需要修改scripts/finetune_cpm_bee.sh中的参数,并运行。
3.4推理
推理方式主要有两种:基于CPM-Bee仓库进行推理和基于Huggingface进行推理,相关的部分代码如下。
4.CPM-Bee-chat模型微调示例
最后,进行了一个CPM-Bee-chat模型微调的示例演示。
综上所述,本文分别从模型结构、数据格式、微调及推理演示这些方面阐述了下CPM-Bee大模型。CPM-Bee采用了统一编码器架构,通过灵活的Attention Mask统一不同的子任务。开发者和研究者可以在CPM-Bee基座模型的基础上在各类场景进行适配来以创建特定领域的应用模型。
本文参与华为云社区【内容共创】活动第26期 。
任务6:昇思MindSpore技术公开课 大模型专题(第二期)第八讲: CPM-Bee
- 点赞
- 收藏
- 关注作者
评论(0)