CodeShell大模型训练交流总结

CodeShell交流活动总结速记

CodeShell 参会总结

四川天府银行成立于2001年。现有员工2043人,下设10家省内外分行、119家营业机构;设立4家村镇银行、1家贷款公司、1家金租公司。该公司于2023年4月份开始和北京大学知识计算实验室叶蔚教授合作,开展多语言代码大模型基座研究工作。目前发布了CodeShell-7B代码大模型。CodeShell具有70亿参数,在五千亿Tokens进行了训练,上下文窗口长度为8194。在权威的代码评估Benchmark(HumanEval与MBPP)上,CodeShell取得同等规模最好的性能。天府银行在6、7月份投资抢购100张A100高端算力卡,用于CodeShell的训练。本次分享活动包括三方面内容:1、CodeShell基座模板冷启动(从零开始训练)过程的经验总结;2、CodeShell代码大模型的效果横向对比;3、CodeShell模型在天府银行的企业中台中的应用实践;

我行关注大模型的应用在四个方面:智能客服、写作助手、代码助手和智能投顾。 对比之下,天府银行的大模型之路更为聚焦:专注“代码助手”这一个领域,引入高端人才团队合作(北京大学知识计算实验室叶蔚教授团队),提前准备100张A100高端算力卡,投入大量的人力物力,实现了在中后台的AI全栈的落地。 目前双方基于这一成果成立独立的初创公司,专注于代码助手的产品在各企业的本地化部署落地。目前拥有开源和闭源两个版本,开源版本产品使用企业包括天府银行、极氪汽车等公司。除此之外,仍有部分产品仍在内部测试,没有披露详情,据了解和AI配置化生成产品相关(场景类似根据客户的风险偏好生成定制化的基金产品)。

对天府银行的AI大模型之路的思考:天府银行基于CodeShell大模型的应用体现的是AI对企业数字化转型的助力典型。企业能够稳健运营的的一个根本支撑是数据要素在企业IT系统中的流传的流畅度、数据加工的准确性、系统间数据交换的高效性,信息的一致性等。这些要求的实现,传统的做法是通过企业内部的数据治理体系的有效执行。而天府银行的AI在中后台的应用建设给我们展示了另外一种数据化转型的借鉴范例,即通过AI大模型改造中后台的代码开发,进而影响数据的流通、加工、交换、一致性等,从而实现企业在上层业务领域的灵活百变的支持。

与此同时,在和三位模型专家的交流过程中,也发现了目前这个模型领域的一些共性问题:模型的价值评估很难量化衡量,模型结果需要企业内部建立自己的模型质量评估体系。模型价值体现是需要时间积累的,短期内能感受到效率的提升,但是直接的价值评估很难衡量。模型效果的评估,需要集成到整个应用流程里面,这涉及到一套体系化的建设,目前企业里面真正意识到这个问题的仍比较少。我行在后续的大模型建设过程中,需要关注模型效果评估体系建设,特别是要嵌入到整个应用流程中。

CodeShell基座模板冷启动过程的经验总结

大模型的训练总结:

1、优先训练小模型,通过1亿参数的小模型训练,对模型的计算量、内存占用、训练时间等进行评估,然后再进行大模型的训练;

2、需要配套开发多种小模型进行数据样本的加工处理,用来提高训练的数据质量。

3、需要配套高质量数据集标注团队和标注工具,用来提高训练的数据质量。人工选择的高质量数据对比随机选择的数据,模型的效果差异巨大。

4、企业内部的大模型训练需要数据治理工作的配合,特别是对未来可持续的模型优化和迭代,需要有高质量的数据集和标注工具。高质量的数据集依赖于数据治理规范的制定和执行。

5、目前打榜的模型均存在“欺骗”性,打榜数据好看,但是实际应用效果不佳。原因在于打榜数据集的大部分存在了训练样本中,导致模型在打榜数据集上的效果好,但是在实际应用中效果不佳。企业实际需要构建自己的模型评估体系,包括数据集的构建、数据集的标注、数据集的质量评估、模型的效果评估等。

6、大模型的训练处理过程中,需要高阶专业人才,全身心投入。整个模型训练、应用配套人员约40人。

7、模型参数规模需要的算力遵循自然规律,目前70亿参数规模模型的算力大概是10^23算力。(按照我行2台机器,每台机器8张A800,预计耗时6000小时左右)。这个算力要求,的确不是一般企业可以承受的。

70亿参数代码模型,整个训练和调优过程,合计耗时3个月,训练过程中出现过一次严重的内存泄漏问题,导致训练过程中断。

CodeShell代码大模型介绍

CodeShell实际包括一系列的支撑:

1、CodeShell-7B基座模型;

2、CodeShell-7B Chat对话模型;

3、CodeShell-7B Int4 量化压缩模型(支持消费显卡单机部署和CPU部署);

4、CodeShell-7B IDE插件;

CodeShell的训练数据来源: Github,Stack, StarCoder以及未说明的高质量中英文数据。

数据的清洗加工总结:

1、基于MD5过滤重复的文本

2、基于MINHASH过滤相似的文本

3、基于规则过滤低质量文本,包括:代码长度、注释比例、是否包括配置文件、非英文的字符占比、是否包括高质量的依赖文件等。

4、基于困惑度过滤低质量文本

5、基于深度学习的模型过滤低质量的文本

数据的预处理的质量对模型效果的影响:

1、为验证数据质量的效果, 优先在10亿参数规模的小模型上进行训练和评估。

2、实验结果表明:相比于随机的数据样本训练, 高质量的数据样本对模型效果的提升是100%+。

CodeShell企业应用介绍

天府银行利用CodeShell代码检测模型,结合多层级向量数据库实现RAG本地生成能力。在全行IT开发领域落地了基于行内项目工程的代码补全、代码检视、漏洞扫描、安全性检测、性能检测等功能。天府银行已经将CodeShell模型嵌入到整个行内的开发流程中,实现项目组级别的代码向量数据库,使得CodeShell模型可以根据具体项目内容,实现项目级别的代码辅助开发,结合人工的检验,进一步提升了项目落地的质量和速度。

CodeShell在天府银行的中后台的应用有三个场景:

1、基于CodeShell进行产品设计,从而实现由传统配置化的产品设计,向针对客户定制化的产品设计转变。CodeShell模型可以根据客户的需求,自动化生成产品的代码,从而实现产品的快速落地。

2、将CodeShell嵌入到开发流程中,实现工程项目的快速落地。CodeShell模型可以根据项目的需求,开发环节实现代码补全、代码解释、代码问答。在工程管理环节实现代码检测、漏洞扫描和优化建议。测试环节实现测试案例自动生成、测试脚本自动生成、测试执行和测试报告总结生成等。

3、将CodeShell和运维平台结合,实现运维平台的自动化运维。包括如Docker环境配置自动生成、镜像打包自动生成、容器部署自动化、容器监控自动化、容器日志自动化、容器告警自动化等。


comments powered by Disqus