最近,终于让我在 github 发现了「取名废」之光,由清华大学与 openbmb 开源社区推出的大模型趣味应用:「智取标题」,输入正文内容就能一键生成劲爆标题!
开箱即用,试过后我只能说:真香!
在线体验:https://live.openbmb.org/ant
github:https://github.com/openbmb/cpm-live
提到这个标题党神器,就不得不先好好聊一聊它的「本体」——大模型 cpm-ant。
cpm-ant 作为国内首个直播训练百亿大模型, 训练耗时 68 天,于 2022 年 8 月 5 日完成,并由 openbmb 正式发布!
五大卓越特性四大创新突破训练过程 低成本且环境友好!最重要的是——完全开源!作为首个直播训练中文大模型,cpm-ant 在大模型训练、微调、压缩、推理、应用等环节均提供了一份可行的实践方案,希望能为不同的关注者提供不同的帮助与参考。
下面,让我们一起来看看 cpm-ant 发布成果内容报告吧!
模型概览cpm-ant 是一个开源的中文预训练语言模型,拥有 10b 参数,也是 cpm-live 直播训练过程中的第一个里程碑。
整个训练过程低成本且环境友好,不需要高昂的硬件要求和运行成本,基于 增量微调(delta tuning)方法,在 cuge 基准测试中取得了优异的结果。
cpm-ant 相关代码、日志文件和模型参数在一个开放的许可协议下完全开源。除了完整的模型,openbmb 还提供了各种压缩版本以适应不同的硬件配置。
cpm-ant 的五大卓越特性:
(1)计算高效
通过 bmtrain[1] 工具包,能够充分利用分布式计算资源的能力来高效训练大模型。
cpm-ant 的训练持续了 68 天,花费了 43 万人民币,是谷歌训练 t5-11b 模型约 130 万美元费用的 1/20。训练 cpm-ant 的温室气体排放量约为 4872kg co₂e,而训练 t5-11b 的排放量为 46.7t co₂e[9] ,cpm-ant 的方案约为其排放量的 1/10。
(2)性能优异
借助 opendelta[3] 工具,能够非常方便地通过增量微调将 cpm-ant 适配到下游任务。
实验表明,cpm-ant 仅仅微调了 6.3m 参数就在 3/6 个 cuge 任务上取得了最好的结果。这一结果超越了其他全参数微调的模型,举例来说:cpm-ant 的微调参数量仅为 cpm2(微调了 11b 参数) 的 0.06%。
(3)部署经济
借助bmcook[7] 和 bminf[4] 工具包,能够在有限的计算资源下驱动 cpm-ant。
基于 bminf ,能够替代计算集群 在单块 gpu 上进行大模型推理(即便是一块 gtx 1060 这样的消费级显卡)。为了使 cpm-ant 的部署更加经济, openbmb 使用 bmcook 进一步将原始的 10b 模型压缩为不同的版本。压缩后的模型(7b,3b,1b,300m)能够适应不同低资源场景下的需求。
(4)使用便捷
不管是原始 10b 模型还是相关的压缩版本,通过几行代码就能够轻松地加载与运行。
openbmb 也会将 cpm-ant 加入到 modelcenter[8] 中,对模型的进一步开发会变得更加容易。
(5)开放民主
cpm-ant 的训练过程完全开放。
openbmb 发布了所有的代码、日志文件和模型存档并提供开放获取。cpm-ant 也采用了允许商业化的开放许可协议。
一份完整的大模型训练实践对于有能力进行大模型训练的厂商与研究机构,cpm-ant 训练过程提供了一份完整的中文大模型训练实战记录。
openbmb 发布了 cpm-live 系列模型的 模型设计、训练方案、数据需求和实现代码。基于 cpm-live 的模型架构,能够方便快速地设计实现大模型训练方案并整理相关的业务数据,完成模型预研和数据准备工作。
官方网站中记录了训练过程中的 全部训练动态,包括损失函数、学习率、已学习数据、吞吐量、梯度大小、花费成本曲线,以及模型内部参数均值和标准差实时展示,通过这些训练动态,使用者能够快速诊断模型训练过程是否出现问题。
模型训练内部参数实时展示
此外,openbmb 的研发同学每天实时更新 训练记录总结,总结内容包括损失值、梯度值、总体进展,还记录了遇到的一些问题和训练过程中的 bug,方便使用者提前了解模型训练过程中的可能会遇到的各种「坑」。
在模型训练「风平浪静」的日子,研发小哥也会抛出一些名言名句、介绍一些最新论文、甚至发起猜谜活动。
日志中的一次猜谜活动
除此之外,openbmb 还提供了 成本经济 的 训练方案,对于实际有大模型训练需求的企业,通过相关训练加速技术,训练成本已经降低到可以接受的水平。
使用 bmtrain[1] 工具包,百亿大模型 cpm-ant 训练的算力花费仅 43 万人民币(当前花费依照公有云价格计算,实际成本会更低),是 11b 大模型 t5 外界估算成本 130 万美元的约 1/20!
一份屡创 sota 的高效微调方案cpm-ant 如何帮助我们进行下游任务适配?
对于大模型研究者,openbmb 提供了一份基于参数高效微调的大模型性能评测方案,方便快速进行下游任务适配并评测模型性能。
使用参数高效微调,即增量微调(delta tuning)来评估 cpm-ant 在六个下游任务上的性能。实验中采用了 lora[2] ,它在每个注意层中插入了两个可调整的低秩矩阵,并冻结了原始模型的所有参数。使用这种方法,每个任务只微调了 6.3m 的参数,仅占总参数的 0.067%。
在 opendelta[3] 的帮助下,openbmb 进行了所有的实验,而没有修改原始模型的代码。需要指出的是,在下游任务上评测 cpm-ant 模型时,没有使用任何数据增强的方法。实验结果如下表所示:
可以看到,在仅微调极少参数的情况下,openbmb 的模型在三个数据集上的性能已经超过了 cpm-2 和源 1.0。
有些任务(例如 lcsts)在微调参数极少时可能会比较难以学习, cpm-live 的训练过程将会持续进行,在各个任务上的性能也会被进一步打磨。
感兴趣的同学,可访问下方 github 链接,抢先体验下 cpm-ant 和 opendelta,进一步探索 cpm-ant 在其他任务上的能力!
https://github.com/openbmb/cpm-live
一系列硬件友好的推理方式大模型性能固然惊艳,但高昂的硬件要求和运行成本一直困扰着许多使用者。对于大模型使用者,openbmb提供了一系列硬件友好的使用方式,能够较为方便地在不同硬件环境下运行不同的模型版本。
使用 bminf[4] 工具包, cpm-ant 可以在单卡 1060 这样的 低资源环境 中运行!
除此之外,openbmb 还将 cpm-ant 进行了压缩。这些压缩的模型包括 cpm-ant-7b/3b/1b/0.3b。而所有这些模型压缩尺寸都可以对应于现有的开源预训练语言模型的经典尺寸。
考虑到用户可能会在发布的检查点上进行进一步的开发,openbmb 主要使用 任务无关的结构化剪枝 来压缩 cpm-ant。剪枝过程也是渐进的,即从 10b 到 7b,从 7b 到 3b,从 3b 到 1b,最后从 1b 到 0.3b。
在具体的剪枝过程中,openbmb 会训练一个 动态的可学习的掩码矩阵,然后用这个掩码矩阵来 裁剪相应的参数。最后,根据掩码矩阵的阈值修剪参数,该阈值是根据目标稀疏度确定的。更多压缩的细节可以参考技术博客[5] 。
下表展示了模型压缩的结果:
硬核的内容讲完了,那么大模型到底怎么帮我们「取标题」呢?
一款出乎意料的大模型趣味应用基于 cpm-ant,所有大模型开发者与爱好者都可以开发感兴趣的文本趣味应用。
为了进一步验证模型的有效性并提供范例,openbmb 在 cpm-ant 基础上微调了一个 劲爆标题生成器 以展示模型能力。
只需要把正文内容粘贴到下方文本框,一键点击生成,就可以得到大模型提供的劲爆标题!
cpm-ant 成果报告首发文章标题即由生成器生成
这款 demo将不断被打磨,并在未来添加更多的特殊效果,增强用户体验
感兴趣的用户也可以使用 cpm-ant 构建自己的展示应用。如果有任何应用想法、需要技术支持或者在使用 demo 过程中遇到任何问题,可以随时在 cpm-live 论坛[6] 发起讨论!
cpm-ant 的发布是 cpm-live 的第一个里程碑,但也仅仅是训练的第一期,未来openbmb还会继续进行一系列训练。
简单剧透一下,下一期的训练中将新增多语言支持、结构化输入输出等新特性,欢迎大家继续关注!
传送门|项目链接项目 github 地址:
https://github.com/openbmb/cpm-live
demo 体验地址(仅限 pc 访问):
https://live.openbmb.org/ant
以上就是干掉「标题党」,清华团队又一开源力作!的详细内容。
