Redian新闻
>
CodeFuseEval - 代码类大模型多任务评估基准

CodeFuseEval - 代码类大模型多任务评估基准

公众号新闻




背景


2023年是大模型全面发展的一年,截止7月,中国累计有130个大模型问世,国外大模型138个,可谓名副其实的百模争鸣。在大模型研发过程中,模型能力评估已然成为必要环节。相比传统的系统架构,模型输出的内容是预测生成式,具有很大的不确定性,它可以基于已知的知识生成未知的知识,这些涌现的新知识证明了模型推理及泛化能力但也带来了不确定风险,特别是模型融入会话式产品,面对用户各类的问答,更容易激发能力涌现,如何及时发现这些新涌现的能力及如何保障模型的输出是有用的、无害的、真实的,是当前大模型评估面临的很大挑战,为此,代码大模型的评估基准必然需要多类多维。

附:代码类大模型HumanEval数据集打榜趋势图    
如上图,可以看到进入23年以来,各个代码类大模型在HumanEval数据基准上pass@1表现提升显著,然而,我们发现代码领域打榜与实际用户体验,仍然存在一定的差异,这也说明靠单任务百十道题目证明模型的代码能力是远远不够的。在此背景下,我们基于蚂蚁代码大模型CodeFuse系列评测经验及众测反馈,探索并构建了适合企业项目的代码大模型的评测范式。后续,也将持续构建并开放“企业级”的「多类型代码任务」评测基准,帮助和牵引代码类大模型针对各编码场景的代码下游任务训练和调优,生成贴合企业场景的更高质量的代码内容。




什么是代码大模型评测


1、代码大模型的评测内容  

代码领域作为自然语言大模型的一个垂类,除去NLP通用的一些技术能力评估、模型认知评估和安全可信评估外,对编码领域自身,需针对性评估模型自身在技术能力层面的表现,如不同类型代码生成能力、上下文或计算机知识的理解能力,以及在对外服务能力层面的表现,如服务体验、稳定性、开放性等。
附:编码垂类评估内容示意图    
如下图,针对代码生成类和理解类的2个效果截图示例(代码补全和添加注释),在这2大类下会有一些技术能力和服务能力层面的共同关注点(代码正确性、语义准确性/可读、产品交互体验、内容合规安全等),
附:生成和理解2类效果示例

2、代码大模型的评测方法  

目前对于大语言模型评测按照生成的结果是否可定量衡量分为「客观评测」和「主观评测」。其中客观评测指的是基于评测基准对生成内容进行各维度量化评估;主观评测指的是组织多位专业人员通过人模交互观察模型表现并根据基础标准、专家知识和经验综合评估。
按照评测执行方式可分为自动化评测、人工评测和模型评测三类。模型训练完成后,基于评估基准跑出评分,这个过程可以工程化的执行,因此称为自动化评测。人工评测部分,特别是领域知识,需要召集各领域专家进行测评,此种方式评估成本较高,但是评估结果更主观更具有说服力。模型评测模型即通过训练大模型学习到人类对不同生成文本的总体偏好,并作出基于习得的人类偏好来进行评价,这种评价方式相比人工更稳定、高效。    
按照prompts设置方法评测又可分为:零样本(zero-shot)、小样本(few-shot)、零样本思维链(zero-shot-cot)、小样本思维链(few-shot-cot)。代码生成能力目前大部分采用的策略是零样本(zero-shot)。
附:prompts分类评测示例




什么是CodeFuseEval


1、代码能力评测基准介绍  

GPT3.5解释代码大模型评测基准回复如下,    
附:GPT的回答
模型评测基准是优化模型、衡量不同架构模型的同类场景功能表现的最有效工具。如下表格,可以看到业界不同代码类评测基准,包含数据集、支持的代码语言、关键评估指标、支持的评测粒度等各个维度信息。
附:代码任务评估基准
从上述表格可以看到,代码类的评测基准也在逐步演进,从早期的单类型代码语言以及静态指标度量,到近几年支持多种类型代码语言和可执行的度量指标,到今年大模型迸发式发展后,多类型代码语言、多类型指标结合的基准体系。因此在可以预见的未来,代码评测也会成为一个很重要的大模型评测垂类领域。   
附:评估基准的演进

2、CodeFuseEval评测基准介绍  

CodeFuseEval是结合CodeFuse大模型多任务场景,在开源的HumanEval-x、MBPP、DS1000评测基准基础上,开发的面向大模型代码垂类领域的企业级多类型编程任务评估基准。可用于评估大模型在代码补全、自然语言生成代码、测试用例生成、跨语言代码翻译、中文指令生成代码、代码注解释、Bug检测/修复、代码优化等不同任务的能力表现。旨在贴近企业实际应用场景,构建一套能够衡量大模型代码生成相关能力的「多维」、「多样」和「可信」的评测基准。
附:多任务评估基准(任务和指标)
当前,CodeFuseEval已开源。本期开放的评测集包括代码生成、代码翻译、自然语言生成代码等多类任务共6300+任务覆盖Java、C++、JS、Python等6种编程语言。同时,开放了配套的环境镜像及框架,欢迎大家体验试用:    
  • GitHub 地址:https://github.com/codefuse-ai/codefuse-evaluation
  • ModelScope 地址:https://modelscope.cn/datasets/codefuse-ai/CodeFuseEval

评测数据集构建  

根据不同的任务类型,我们构建动态代码评测集对当前代码大模型不同类型任务进行持续评估。评测数据集按照来源可分为:开源评测集、内部数据评测集、众测数据、待训数据集按比例划分;
  • 开源评测集:调研选取业界权威机构发布的开源评测集评测代码类大模型,便于与业界进行横向对比如HumanEval-x/wikisql/CoNaLa等,注意开源评测集在纳入评测前需要先校验评测集是否被污染,是否有错误等;
  • 众测标注数据集:根据代码大模型的目标场景及用户,我们构建了基于代码类知识及众测信息的数据评测集,通过组织不同编程语言的专家众测和白名单用户众测,收集并分析这些真实的、贴合实际的、多样的数据补充开源数据集中缺失部分,比如中文场景/计算机学科知识等,建立代码类特定场景的基准便于版本迭代的纵向比较;
  • 待训数据集划分:从准备的完整数据集中按比例切分用来做测试集,划分比例会根据原始数据集大小来调整。

{            
  "task_id": "Python/177",            
  "prompt": "import java.io.*;\nimport java.lang.*;\nimport java.util.*;\nimport java.math.*;\n\n\nclass ProdSquare {\n    /**\n     * * Write a Java function to check whether the given number can be represented by product of two squares or not.\n     *\n     * > prodSquare(25)\n     * false\n     * > prodSquare(30)\n     * false\n     * > prodSquare(16)\n     * true\n     */\n    public static Boolean prodSquare(int n) {\n{\n        int a = 1;\n        int b = 1;\n        for (int i = 1; i <= n; i++) {\n            if (a * i < 0) {\n                b = b * i;\n            } else {\n                a = a * i;\n            }\n        }\n        return b == 1;\n    }\n}",            
  "canonical_solution": "Write a python function to check whether the given number can be represented by product of two squares or not.def prod_Square(n):\r\n    for i in range(2,(n) + 1):\r\n        if (i*i < (n+1)):\r\n            for j in range(2,n + 1):\r\n                if ((i*i*j*j) == n):\r\n                    return True;\r\n    return False;",            
  "test": ["assert prod_Square(25) == False", "assert prod_Square(30) == False", "assert prod_Square(16) == True"],            
  "desc_en": "Write a python function to check whether the given number can be represented by product of two squares or not.",            
  "Difficulty": "mbpp",            
  "desc_cn": "写一个函数来检查给定的数字是否可以用两个正方形的乘积来表示。"            
}            
   

附1:开源评测集样例(翻译场景)
   附2:评测样本prompt(含格式)示例

评测执行框架  

大模型的代码能力相比文本评估对执行环境有更强的依赖。当前各个模型的基座、技术路径不尽相同,prompt、模型参数和分词加载策略也有很大差异,模型敏感度稍有不同,结果就不近人意,因此,为了从不同的维度衡量模型的代码类任务,我们的评测框架了增加了适配层的研发、构建了多语言执行镜像、评测基准保鲜策略等,旨在充分了解模型的最佳状态和风险阈值进而指导模型做工程化部署。
附:评测工程化框架
通过主观和客观相结合的方式进行评测包含代码补全、代码生成、代码注/解释等关键能力场景。如代码补全主要根据开发者编写的上下文快速生成符合该上下文的代码段包括函数、变量、表达式、注释等,代码生成则主要根据自然语言描述生成对应的代码实现,代码注/解释则主要根据代码和上下文生成与之对应的自然语言注释或解释等。如下2图,为针对代码生成类任务的客观和主观评测的实现示例。    
附1:代码生成(翻译场景)客观评测示例,评测指标pass@k
附2:代码生成主观评测执行示例

3、评测结果示例  

各类指标计算示例  

详细评测执行过程可参考CodeFuseEval Github README文档:https://github.com/codefuse-ai/codefuse-evaluation/blob/master/README_CN.md

pass@k(功能正确性)

bluert(语义相似度)        

bleu(词相似)

codebleu(语法相似)        

评测结果可视化   

「单任务-多模型-多代码语言」柱状图示例
「多任务-多模型」雷达图示例
       

4、未来展望  

代码生成作为大模型研究的重点场景之一,模型评估见证着它的蓬勃发展。智能代码助理必将加快企业的研发速度,提升企业研发竞争力。代码大模型的评估基准也将从评测模型技术能力和服务能力两个方向四个维度(技能/效能/鲁棒/稳定)持续深入探索。
评测技术方面,我们坚持开放、创新、持续提升评测质量和效能,确保结果的可信度和可重复性,以适应模型快速增长的能力,匹配用户的真实体验。后续也会持续迭代和开放我们的评测基准,请大家保持关注。    




参考文献


  • Evaluating large language models trained on code.Codex HumanEval https://arxiv.org/pdf/2107.03374.pdf

  • HumanEval-X benchmark for evaluating multilingual models by hand-writing the solutions in C++, Java, JavaScript, and Go. CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X https://arxiv.org/pdf/2303.17568.pdf

  • The Mostly Basic Programming Problems (MBPP) dataset contains 974 programming tasks(500 test tasks), designed to be solvable by entry-level programmers. Google Research. Program Synthesis with Large Language Models https://arxiv.org/pdf/2108.07732.pdf

  • Code Comment Generation metrics is Bleu .codeTRans .an encoder-decoder transformer model for tasks in the software engineering domain.https://arxiv.org/pdf/2104.02443.pdf    

  • CodeXGLUE: A Machine Learning Benchmark Dataset for Code Understanding and Generation https://arxiv.org/pdf/2102.04664.pdf

  • Holistic Evaluation of Language Models https://arxiv.org/pdf/2211.09110.pdf

  • Program Synthesis with Large Language Models https://arxiv.org/pdf/2108.07732.pdf

  • Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement Learning. WikiSQL, a dataset of 80654 hand-annotated examples of questions and SQL queries distributed across 24241 tables from Wikipedia。https://arxiv.org/abs/1709.00103    


往期推荐



微软和OpenAI的桥段,30年前已经上演过
Sam Altman重返OpenAI担任CEO

幕后黑手曝光,96%员工集体“逼宫”,OpenAI危矣




这里有最开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
用AI评估AI,上交大新款大模型部分任务超越GPT-4,模型数据都开源晚讯 |HIV首个长效注射治疗方案在中国获批、美国FDA将评估基因组编辑疗法的安全性免费大模型实战课|首周聚焦百度智能云千帆大模型平台使用,《大模型应用实践》实训营11月16日开讲![9月26日]科学历史上的今天——金·赫尔尼(Jean Amédée Hoerni)Fuchsia Dunlop on the Past, Present, and Future of Chinese FoodUC伯克利团队开源MemGPT大模型上下文内存管理方案;AgentLM、多模态Fuyu-8B、数学LLEMMA等专用大模型开源北京理工大学发布双语轻量级语言模型,明德大模型—MindLLM,看小模型如何比肩大模型NeurIPS 2023 | 扩散模型解决多任务强化学习问题AutoDev Coder 6.7B 代码微调模型(v1 试验版)石正丽的更危险毒株致死率90%背后隐藏什么码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成Stability AI发布全新代码模型Stable Code 3B!媲美70亿Code Llama,没GPU也能跑工业异常检测大模型来了!哈工大提出Myriad:利用视觉专家进行工业异常检测的大型多模态模型小模型如何比肩大模型,北理工发布明德大模型MindLLM,小模型潜力巨大AAAI 2024 | 浙大赵天成博士团队提出全新评测基准OVDEval,全面审视开放词汇目标检测模型的泛化能力北大开源代码大模型CodeShell,提供了配套的IDE插件ChatGPT代码生成飙升10%!北大华人一作:细化prompt,大幅改进大模型代码能力快消外企社招 | Lagardère拉格代尔,世界三大旅行零售商之一,百年外企,平均月薪17.2k,0经验可投,留学生有优势解题准确率较GPT高出70% 夸克大模型多项考试评测成绩领先行红色日记 不迷航 5.16-31LLM生成延迟降低50%!DeepSpeed团队发布FastGen:动态SplitFuse技术,提升2.3倍有效吞吐量长周末Get Away, 时光中的孟菲斯给大模型评分的基准靠谱吗?Anthropic来了次大评估人手一个编程助手!北大最强代码大模型CodeShell-7B开源,性能霸榜,IDE插件全开源真相或许比想象的更。。。。冲击ISEF晋级名额!老查留学4位同学入选英才计划全国终评名单,1位同学入围ISEF四川科学工程大赛!学会 CompletableFuture:让你的代码免受阻塞之苦!别让大模型被基准评估坑了!测试集乱入预训练,分数虚高,模型变傻中国已经有238个大模型了?李彦宏劝各位少做点大模型多搞搞应用吧调降中国主权债务评级展望——三大误判李开复零一万物发布首款大模型;马斯克xAI发布首个大模型;360、美团、昆仑万维等最新消息;vivo发布蓝心AI大模型住在西班牙的柴静,还是原来的柴静----陈丹琦新作:一个LLM的评估基准LLMBar2023中文大模型基准测评报告发布;微软Copilot将升级至GPT-4 Turbo;AI奥林匹克数学奖设立丨AIGC大事日报AI早知道|微软Copilot将可免费使用GPT-4Turbo; 国产670亿参数大模型DeepSeek亮相
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。