IBM 最近发布了一组名为 "Granite Code" 的开源型,旨在帮助企业完成各种软件开发任务,并在基准测试中表现出色。这些模型不仅过了一些较大的开源竞争对手,而且在编程任务中展现出了强大的性能。
Granite Code 型分为基础模型和指导模型,每种模型都有四个不同规模的变种,参数数量从30到340亿不等。这些模型的上下文窗口相对较短,例如,其中一个模型的上下文窗口只有128K,这限制了其在包含特定文档或自己的代码库等提示信息时的有效性。不过,IBM 目正在开发具有更大上下文窗口的版本。
基础模型的训练分为两个阶段。第一阶段使用自116种编程语言的3-4万亿个标记进行训练,以建立广泛的理解能力。在第阶段,这些模型使用来自高质量代码和自然语言数据的5000亿个标记进行进一步训练,以强逻辑推理能力。
指导模型是通过对基础模型进行改进而创建的,改进方法包括筛选提交记录、自然语言指令记录和合成生成的代码数据集。
在包括代码合成、调试、解释、编辑、学推理等多个基准测试中,Granite Code 模型在各个规模和基准测试中表现出色,常常超过开源模型两倍以上的大小。例如,在 HumanEvalPack 基准测试中,Granite-8B-Code-Base 的平均得为33.2%,超过谷歌最佳表现的 CodeGemma-8B 模型的21.3%,尽管 Granite-8-Code-Base 所使用的标记数量明显较少。
这些模型的大部分训练数据来自一个清理过的 GitHub 集 StarCoderData 和其他公开可用的代码库。这一点非常重要,因为目前有一些关于其他代码型(包括 GitHub 本身)涉嫌侵犯训练数据版权的诉讼。
IBM 计划定期更新这些模型,很快将推出具有更大上下文窗口以及针对 Python 和 Java 的专业化版本。这些模型已经在 Hugging FaceGitHub 上可用,并且也是 IBM 的 watsonx 企业平台的一部分。
IBM 的 Granite Code 是一专门用于编程的开源模型,它们在基准测试中表现优异,同时具有较少的参数数量。些模型的特点包括灵活的规模选择、基于广泛训练数据的逻辑推理能力和良好的性能未来,IBM 还计划不断改进和更新这些模型,以满足不同编程任务的需求。