在 AI 领域中,代码生成和编辑工具一直是开发者们关注的焦点。
本周,零一万物开源了 Yi-Coder 系列模型,它作为 Yi 系列模型家族中的“编程小能手”,展现了卓越的代码生成能力。这是继今年 5 月 13 日开源 Yi-1.5 系列模型之后,零一万物在开源方向上的又一重要成果。
Yi-Coder 模型 Demo 展示
01 模型简介
Yi-Coder 系列模型专为编码任务而生,提供 1.5B 和 9B 两种参数。其中,Yi-Coder- 9B 的表现优于其他 10B 参数以下的模型,如 CodeQwen1.5 7B 和 CodeGeex4 9B,甚至能够与 DeepSeek-Coder 33B 相媲美。
02 模型特点
小参数,强性能:尽管 Yi-Coder 的参数量相对较小,但它在各种任务,包括代码生成、代码理解、代码调试和代码补全中的表现十分出色。10B 以下的大小也让它易于使用,方便端侧部署。128K 长序列建模:Yi-Coder 能够处理长达 128K tokens 的上下文内容,有效捕捉长期依赖关系,适用于复杂项目级代码的理解和生成。强大的代码生成能力:支持 52 种主要编程语言,Yi-Coder 在代码生成和跨文件代码补全方面表现优异。03 模型成绩
Yi-Coder 在代码生成基准测试中名列前茅
LiveCodeBench 是一个旨在为大语言模型提供全面公平的评测平台。它实时收集来自 LeetCode、AtCoder、CodeForces 等竞赛平台的新问题,构成了一个动态而全面的基准测试库。
为确保没有数据污染(Yi-Coder 的训练数据截止时间是 2023 年底),我们选取了 2024 年 1 月到 9 月的题目进行测试。在下图榜单中,Yi-Coder-9B-Chat 的通过率达到了 23.4%,在 10B 以下参数量的模型中是唯一一个通过率超过 20% 的模型。这一成绩超过了 :
DeepSeek-Coder-33B-Instruct 的 22.3%CodeGeex4-All-9B 的 17.8%CodeLLama-34B-Instruct 的 13.3%CodeQwen1.5-7B-Chat 的 12%除了竞赛级别的高难度评测,我们还选取了 Zero-shot HumanEval、3-shot MBPP 和 CRUXEval-O 等业内流行基准测试,用于评估模型的基础代码生成和推理能力。
下图评测结果表明,Yi-Coder 在这三个评估任务之下都取得了优异的性能。具体来说,Yi-Coder-9B-Chat 在 HumanEval 和 MBPP 的通过率分别达到了 85.4% 和 73.8%,超过其他 Coder 模型。此外,Yi-Coder 9B 在 CRUXEval-O 的准确率在开源 Coder 模型中首次达到了 50% 以上。
代码编辑和补全能力强劲
CodeEditorBench 涵盖了四个关键领域:代码调试、代码翻译、代码优化和代码需求转换。结果表明,在开源代码大语言模型中,Yi-Coder-9B-Chat 取得了优异的成绩,在 Primary 和 Plus 两个子集中始终优于 DeepSeek-Coder-33B-Instruct 和 CodeQwen1.5-7B-Chat。
代码补全方面,Yi-Coder 也表现出色。与代码生成不同,跨文件代码补全要求模型访问并理解跨多个文件的资源库,这些文件之间存在大量的跨文件依赖关系。本次评估采用了 CrossCodeEval 基准,在两种不同的情况下进行:检索相关上下文和不检索相关上下文。
下图结果表明,Yi-Coder 在有检索和无检索的情况下都优于其他同等规模的模型。这一成功验证了在具有较长上下文长度的软件仓库级代码语料库上进行训练能够使 Yi-Coder 有效捕捉长期依赖关系,从而提高其性能。
长序列建模表现优秀
我们效仿文本领域流行的长序列评测,合成了一个 128K 长序列的“Needle in the code” 评估任务,长度双倍于 CodeQwen1.5 所构建的 64K 长序列评测。它通过在长代码库中随机插入一个简单的自定义函数,测试模型能否在代码库最后重复这个函数。该测试旨在检测模型 LLM 是否能从长文本中提取出这些关键信息,从而反映 LLM 其对长文本的理解基础能力。
下图全绿结果表示,Yi-Coder-9B 在 128K 长度范围内完美完成了这一任务。
数学推理能力毫不逊色
DeepSeek Coder 先前的研究表明,模型强大的编码能力可以增强其数学推理能力。Yi-Coder 在七个数学题数据集上评估了代码辅助(PAL: Program-aided Language Models)解题能力,在每个数据集中,模型都要通过生成 Python 代码然后执行代码得出最后的答案。这七个任务的平均准确率得分如下图所示,Yi-Coder 9B 的准确率达到 70.3%,超过了 DeepSeek-Coder 33B 的 65.8%。