掘力计划第 21 期 – CodeGeeX: 从代码生成模型到 AI 编程助手 十大券商策略:积极做多,紧握两大方向“抢反弹”浙江世宝H1净利暴增22倍 业内预计下半年车企继续降价将挤压汽配企业利润儒竞科技申购 年内九成高价股已破发统筹增量存量及其他金融产品价格关系,三部门发声释放何信号?张继强:“活跃资本市场”一揽子举措后五大积极因素正在积聚从“借船出海”到“造船出海”,出口承压下家电企业应对有道多家理财公司新高管“走马上任” 体系内部输送仍为常态行业首例!方正证券一集合资管计划管理人变更为旗下公募中报销售费用猛增!又有逾700亿元解禁来袭 联影医疗风险暗藏港股IPO周报:出行服务平台如祺出行递表 生物药企宜明昂科通过聆讯人民银行等三部门:调整优化房地产信贷政策新茶饮掀起上市潮:供应链企业是“躺赢”还是更卷了?卖得最火的玩具IP不是奥特曼,而是奇趣蛋10家银行系险企上半年业绩出炉,二季度偿付能力普遍下行需“补血”永福股份再次中标特高压工程项目

8 月 12 日,在掘力计划系列第 21 场《解析大语言模型的训练和应用》活动中,智谱 AI 的薛宇飞博士应邀作了题为《CodeGeeX:从代码生成模型到 AI 编程助手》的技术分享。

薛宇飞博士是智谱 AI 大模型事业部的副总裁,他拥有清华大学计算机系的博士学位和博士后经历,在人工智能领域有多年的研究和产品经验,曾任职于多家顶级科技公司。这次薛博士以自身团队在代码生成模型方面的研究为切入点,详细介绍了从训练一个大规模的通用代码生成模型,到落地产品化并开发 IDE 插件,最终使广大开发者能够享受到 AI 编程助手带来的便利。

背景:编程向更简单方向发展

从计算机诞生以来,编程工作就在不断朝着更简单、更符合人的思维逻辑方向发展。早期的机器语言极为复杂难懂,汇编语言相比机器语言提高了可读性和生产效率,然后出现了面向过程和面向对象的高级语言,进一步降低了编程的门槛。近年来,低代码平台的兴起使不专业的开发者也能参与软件开发,AI 辅助代码生成技术更是让自动编程成为可能。

自动生成代码的想法随着人工智能技术的进步也在逐步实现。早期主要采用基于规则的方法,2015 年第一次有研究将深度学习应用于代码生成,取得了一定进展。2020 年, Transformer 架构不仅通过 GPT-3 模型展示它在自然语言生成方面的惊人能力,也开始被应用到了代码生成领域。2021 年,OpenAI 推出了规模达到百亿参数的 Codex 代码生成模型,使自动代码生成真正具备实用性。此后,业界纷纷推出自己的代码生成模型和编程助手产品。

CodeGeeX 模型训练

CodeGeeX 项目于 2022 年 1 月启动,4 月开始正式训练,6 月训练完成。训练数据主要来源于公开数据集和 GitHub 高质量代码。公开数据集提供初始训练语料,GitHub 代码经筛选后确保质量。第一版 CodeGeeX 支持 23 种编程语言,其中 Python、C++、Java 的训练代码量最大。大模型可以从不同语言中学习通用逻辑,不需要语言完全均衡。

原始代码数据需要进行预处理。首先对代码进行分词,然后将每个词转换成对应的 ID,得到模型可直接识别的格式。此外,每个代码片段前加语言标识,让模型更好地学习到不同语言的特性。

CodeGeeX 采用 GPT 结构,包含 40 个 Transformer 层,参数总量达到 130 亿。基于 GPT 的生成方式是顺序生成,每次根据前文预测下一个词。训练过程中团队与华为合作,在华为昇腾 910 AI 处理器上完成。使用 FP16 精度、数据并行和模型并行训练技术,经过两个月完成。

训练过程中,CodeGeeX 团队还与华为昇思 MindSpore 团队的工程师一起对训练框架进行了优化。如通过算子融合等技术,将训练速度提升了 2.5 倍;加入流水线并行后,整体效率可提升 3 倍之多。这些成果为后续国产芯片的大模型训练带来借鉴。

模型评测与优化

训练完成后,对模型进行评测与优化才能使其投入实际使用。由于之前针对多语言代码生成模型缺乏科学的评测基准,团队基于 HumanEval 构建了 HumanEval-X 评测基准,将其从只支持 Python 扩展到 C++、Java、JavaScript 和 Go 五种语言,可以更全面地评估模型的多语言生成能力。

评测结果显示,CodeGeeX 在 Python 和 Java 上的 Pass@1 指标明显优于对手模型,其他语言也有出色表现,是当时综合表现最优的开源多语言代码生成模型。

为减小模型大小便于实际部署,团队使用量化与推理优化技术。最终模型从 27GB 降低到 15GB,推理速度也提升 2 倍多。基于上述工作,CodeGeeX 能够在普通 GPU 上流畅运行。

AI 编程助手应用

代码生成模型完成之后,团队着手开发 IDE 插件,将模型应用到实际编程过程中。CodeGeeX 插件支持 VS Code 和 JetBrains 等主流 IDE。用户可以利用代码补全、生成注释等功能,也可以通过自然语言聊天提问。

代码补全可以智能提示后续代码 ; 语义代码注释可自动添加详细注释 ; 代码翻译可以在多种语言之间转换。这些功能都基于 CodeGeeX 模型或在其基础上进行微调得到。用户可以选择中文或英文注释。新版模型支持更多语言,如 Kotlin、Vue 等。

CodeGeeX 插件可以自动生成复杂 SQL 查询语句,通过公开 SQL 练习平台的题目,前 20 题全部正确,最后 10 题也有很多正确,达到可助力编程的程度。该插件已经累积 15 万用户,日活跃 2.5 万,获得广大开发者认可。

CodeGeeX 2.0 模型升级

今年 7 月团队推出了第二代模型 CodeGeeX2-6B。它 使用 ChatGLM2-6B 作为基底模型,在此基础上使用代码数据进行微调。这样一来,新模型规模减小到 6B,但效果显著提升,如 Python Pass@1 提升 57%,已超过参数规模更大的 StarCoder 模型。

CodeGeeX2 继承了 ChatGLM2 的中英文语言理解能力,支持更长的文本序列。此外,支持语言种类从 23 种提升到上百种。新版模型权重对学术研究完全开放,可在 GitHub 或 Hugging Face 上获取权重的下载及使用方式。

结语

综上所述,CodeGeeX 从一个编程语言生成模型发展成一个可供广大开发者使用的 AI 编程助手,已经走过两年时间。期间团队进行了模型设计、训练、评估、优化、产品化等一系列创新性的工作。先使用 GPT 结构训练出百亿参数规模的通用模型,然后以 ChatGLM 为基础进行调优,使新版模型效果更优。在 IDE 插件中集成代码生成等功能,真正将 AI 的力量带入到开发的日常之中。

当前 CodeGeeX 插件已经积累大量用户,也获得他们的认可。团队将继续改进产品,以期让编程对所有人来说都更简单、更有效率。大模型编程助手正在成为编程发展的新方向,相信未来必将惠及更多开发者,提升软件开发的生产力。

关于掘力计划

掘力计划由稀土掘金技术社区发起,致力于打造一个高品质的技术分享和交流的系列品牌。聚集国内外顶尖的技术专家、开发者和实践者,通过线下沙龙、闭门会、公开课等多种形式分享最前沿的技术动态。(作者:蒋浩)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧