0

0

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布

WBOY

WBOY

发布时间:2023-08-26 21:01:11

|

1329人浏览过

|

来源于机器之心

转载

昨天,meta 开源专攻代码生成的基础模型 code llama,可免费用于研究以及商用目的。

code llama 系列模型有三个参数版本,参数量分别为 7b、13b 和 34b。并且支持多种编程语言,包括 python、c++、java、php、typescript (javascript)、c# 和 bash。

meta 提供的 code llama 版本包括:

  • 代码llama,基础代码模型;

  • 代码羊- Python,Python 微调版本;

  • 代码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 没有发布这个版本,但通过一小部分高质量编码数据的训练实现了明显的效果改进。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布图源:https://ai.meta.com/research/publications/code-llama-open-foundation-models-for-code/

一天刚过,就有研究者向 GPT-4 发起了挑战。他们来自 Phind(一个组织,旨在构造一款为开发人员而生的AI 搜索引擎),该研究用微调的 Code Llama-34B 在 HumanEval 评估中击败了 GPT-4

Phind 联合创始人 Michael Royzen 表示:「这只是一个早期实验,旨在重现(并超越)Meta 论文中的「Unnatural Code Llama」结果。将来,我们将拥有不同 CodeLlama 模型的专家组合,我认为这些模型在现实世界的工作流程中将具有竞争力。」

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布

两个模型均已开源:

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布

研究者在 Huggingface 上发布了这两个模型,大家可以前去查看。
  • Phind-CodeLlama-34B-v1:https://huggingface.co/Phind/Phind-CodeLlama-34B-v1
  • Phind-CodeLlama-34B-Python-v1:https://huggingface.co/Phind/Phind-CodeLlama-34B-Python-v1
接下来我们看看这项研究是如何实现的。

微调 Code Llama-34B 击败 GPT-4

我们先看结果。这项研究用 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」中公布的数据)。

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布图源:https://ai.meta.com/blog/code-llama-large-language-model-coding/

Kacha
Kacha

KaCha是一款革命性的AI写真工具,用AI技术将照片变成杰作!

下载

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布图源: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 变笨」的研究,所以用原始技术报告中的数据更为稳妥。

Code Llama代码能力飙升,微调版HumanEval得分超越GPT-4,一天发布

不过,考虑到大模型评测的复杂性,这些测评结果能否反映模型的真实能力依然是一个有争议的问题。大家可以下载模型后自行体验。

重写内容如下:参考链接:

需要进行改写的内容是:https://benjaminmarie.com/the-decontaminated-evaluation-of-gpt-4/

需要重写的内容是:https://www.phind.com/blog/code-llama-beats-gpt4

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

47

2026.02.13

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

192

2026.02.25

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6607

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

842

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1092

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

2134

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4.2万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号