

发布一天,Code Llama代码能力突飞猛进,微调版HumanEval得分超GPT-4
source link: https://awtmt.com/articles/3696440
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

发布一天,Code Llama代码能力突飞猛进,微调版HumanEval得分超GPT-4
昨天,Meta 开源专攻代码生成的基础模型 Code Llama,可免费用于研究以及商用目的。
Code Llama 系列模型有三个参数版本,参数量分别为 7B、13B 和 34B。并且支持多种编程语言,包括 Python、C++、Java、PHP、Typescript (Javascript)、C# 和 Bash。
Meta 提供的 Code Llama 版本包括:
-
Code Llama,基础代码模型;
-
Code Llama-Python,Python 微调版;
-
Code Llama-Instruct,自然语言指令微调版。
就其效果来说,Code Llama 的不同版本在 HumanEval 和 MBPP 数据集上的一次生成通过率(pass@1)都超越 GPT-3.5。
此外,Code Llama 的「Unnatural」34B 版本在 HumanEval 数据集上的 pass@1 接近了 GPT-4(62.2% vs 67.0%)。不过 Meta 没有发布这个版本,但通过一小部分高质量编码数据的训练实现了明显的效果改进。

一天刚过,就有研究者向 GPT-4 发起了挑战。他们来自 Phind(一个组织,旨在构造一款为开发人员而生的AI 搜索引擎),该研究用微调的 Code Llama-34B 在 HumanEval 评估中击败了 GPT-4。
Phind 联合创始人 Michael Royzen 表示:「这只是一个早期实验,旨在重现(并超越)Meta 论文中的「Unnatural Code Llama」结果。将来,我们将拥有不同 CodeLlama 模型的专家组合,我认为这些模型在现实世界的工作流程中将具有竞争力。」

两个模型均已开源:

研究者在 Huggingface 上发布了这两个模型,大家可以前去查看。
接下来我们看看这项研究是如何实现的。
我们先看结果。这项研究用 Phind 内部数据集对 Code Llama-34B 和 Code Llama-34B-Python 进行了微调,分别得到两个模型 Phind-CodeLlama-34B-v1 以及 Phind-CodeLlama-34B-Python-v1。
新得到的两个模型在 HumanEval 上分别实现了 67.6% 和 69.5% pass@1。
作为比较,CodeLlama-34B pass@1 为 48.8%;CodeLlama-34B-Python pass@1 为 53.7%。
而 GPT-4 在 HumanEval 上 pass@1 为 67%(OpenAI 在今年 3 月份发布的「GPT-4 Technical Report」中公布的数据)。
图源:https://ai.meta.com/blog/code-llama-large-language-model-coding/

图源:https://cdn.openai.com/papers/gpt-4.pdf

谈到微调,自然少不了数据集,该研究在包含约 8 万个高质量编程问题和解决方案的专有数据集上对 Code Llama-34B 和 Code Llama-34B-Python 进行了微调。
该数据集没有采用代码补全示例,而是采用指令 - 答案对,这与 HumanEval 数据结构不同。之后该研究对 Phind 模型进行了两个 epoch 的训练,总共有约 16 万个示例。研究者表示,训练中没有使用 LoRA 技术,而是采用了本地微调。
此外,该研究还采用了 DeepSpeed ZeRO 3 和 Flash Attention 2 技术,他们在 32 个 A100-80GB GPU 上、耗时三个小时,训练完这些模型,序列长度为 4096 个 token。
此外,该研究还将 OpenAI 的去污染(decontamination)方法应用于数据集,使模型结果更加有效。
众所周知,即便是非常强大的 GPT-4,也会面临数据污染的困境,通俗一点的讲就是训练好的模型可能已经接受评估数据的训练。
这个问题对 LLM 非常棘手,举例来说,在评估一个模型性能的过程中,为了进行科学可信的评估,研究者必须检查用于评估的问题是否在模型的训练数据中。如果是的话,模型就可以记住这些问题,在评估模型时,显然会在这些特定问题上表现更好。
这就像一个人在考试之前就已经知道了考试问题。
为了解决这个问题,OpenAI 在公开的 GPT-4 技术文档《 GPT-4 Technical Report 》中披露了有关 GPT-4 是如何评估数据污染的。他们公开了量化和评估这种数据污染的策略。
具体而言,OpenAI 使用子串匹配来测量评估数据集和预训练数据之间的交叉污染。评估和训练数据都是通过删除所有空格和符号,只保留字符(包括数字)来处理的。
对于每个评估示例,OpenAI 随机选择三个 50 个字符的子字符串(如果少于 50 个字符,则使用整个示例)。如果三个采样的评估子字符串中的任何一个是处理后的训练样例的子字符串,则确定匹配。
这将产生一个受污染示例的列表,OpenAI 丢弃这些并重新运行以获得未受污染的分数。但这种过滤方法有一些局限性,子串匹配可能导致假阴性(如果评估和训练数据之间有微小差异)以及假阳性。因而,OpenAI 只使用评估示例中的部分信息,只利用问题、上下文或等效数据,而忽略答案、回应或等效数据。在某些情况下,多项选择选项也被排除在外。这些排除可能导致假阳性增加。
关于这部分内容,感兴趣的读者可以参考论文了解更多。
论文地址:https://cdn.openai.com/papers/gpt-4.pdf
不过,Phind 在对标 GPT-4 时使用的 HumanEval 分数存在一些争议。有人说,GPT-4 的最新测评分数已经达到了 85%。但 Phind 回复说,得出这个分数的相关研究并没有进行污染方面的研究,无法确定 GPT-4 在接受新一轮测试时是否看到过 HumanEval 的测试数据。再考虑到最近一些有关「GPT-4 变笨」的研究,所以用原始技术报告中的数据更为稳妥。
在此处输入图片说明

不过,考虑到大模型评测的复杂性,这些测评结果能否反映模型的真实能力依然是一个有争议的问题。大家可以下载模型后自行体验。
参考链接:
https://benjaminmarie.com/the-decontaminated-evaluation-of-gpt-4/
https://www.phind.com/blog/code-llama-beats-gpt4
本文作者:陈萍,来源:机器之心,原文标题:《发布一天,Code Llama代码能力突飞猛进,微调版HumanEval得分超GPT-4》
Recommend
-
67
课程热招中,请各位热爱学习的小伙伴尽快预定,名额有限! 博赛网络——华为认证山东区域/内蒙古区域官方授权培训 考试中心 博赛&am...
-
51
[ 摘要 ]由于AI背后的海量数据资源的优势,AI在辩论过程中能够随意引用相关研究成果来佐证自己的观点这一点,要绝对远胜过人类。 ...
-
27
程序员 - @yuankui - 啥时候 Java 也能有 webpack,babel,可以对 Java 代码进行 ET ( extract,tranform ),然后编译的,这种工具?那 Java 的开发效率,还不蹭蹭蹭的上去啊
-
48
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。 你的编程能力从什么时候开始突飞猛进?11月17日深夜,这个问题出现在了知乎上。
-
52
腾讯云AI产品和解决方案矩阵 中新网10月13日电 刚刚获悉,国际权威分析机构Forrester发布《Now Tech: Predictive Analytics And...
-
14
DIY VSCode 插件,让你的开发效率突飞猛进 2019-10-10 发布于
-
6
AI 研发提效:四种代码生成微调方式大比拼? Posted by: Phodal Huang April 12, 2023, 5:25 p.m. 在过去的几周里,我们尝试自己结合开源的大模型 LLaMA、ChatGLM 进行模型微...
-
5
Posted by: Phodal Huang Jan. 7, 2024, 11:34 a.m. 太长不读性: 适用于 AutoDev 的编码大模型 AutoDev Coder 6.7B 第一个勉强可用的版本...
-
3
你的编程能力从什么时候开始突飞猛进的?
-
4
马斯克突发Grok 1.5!上下文长度至128k、HumanEval得分超GPT-4
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK