您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[2024 第23届 GOPS 全球运维大会暨 XOps 技术创新峰会 · 北京站]:评测驱动代码大模型 “码力”提升 - 王一男 - 发现报告

评测驱动代码大模型 “码力”提升 - 王一男

AI智能总结
查看更多
评测驱动代码大模型 “码力”提升 - 王一男

王一男2024.06 L L M代 码 能 力 评 测 方 法 目录 L L M代 码 能 力 评 测 数 据 集 L L M代 码 能 力 评 测 反 馈 闭 环 实 践 王一男 腾讯|研发效能产品专家 腾讯智能化软件工程数据与评测团队负责人。曾任百度工程效能部产品负责人,开源中国产品总监。北京航空航天大学软件工程本科、硕士。致力于通过设计软件研发效率工具,推动软件工程实践落地来提升组织的研发效能。曾主笔制定企业软件工程规范,主导多个企业级研发效能平台的规划设计与系统开发。 主屏(写代码模式) l代码补全l代码生成 使用混元代码大模型 侧屏(Chat模式) l原生能力 l计算机知识问答l代码漏洞、缺陷检测和修复l代码优化l单测代码生成l通用代码生成ltRPC领域代码生成 比较多种模型迭代优化 腾讯代码智能化产品:工蜂CopilotAI评审 解释CR->识别问题->修复代码 工蜂CopilotAICR LLM代码能力评测方法 模型评测——用户问题 快速、准确、全面评估模型代码生成能力帮助提高代码智能化产品的迭代速度和产品质量 人工评测—代码大模型综合能力评测 •5档评分•档位+权重计算总分•参考标准答案•1题3人评测,计算Agreement G O P S全 球 运 维 大 会 暨X O p s技 术 创 新 峰 会2 0 2 4·北 京 站 自动化评测——代码生成场景 评测数据集:HumanEval/HumanEval-0-Shot/T-HumanEval •OpenAI为了评测Codex模型而构造的评测数据集•164个问题•Python语言(HumanEval–X支持5种语言)•每个task(case)包含提示语、规范的解决方案、单元测试、文字说明、函数声明、单元测试样例•单元测试用例平均7.7个/每问题 自动化评测——代码补全场景 评测方法: 1.在一段评测代码中掩盖X%行的代码后,作为prompt输入模型2.模型返回代码中取第一行,与1中的prompt组成新的prompt继续输入模型3.重复第2步,直到模型将代码补全完成4.将第3步补全完成的代码,执行单元测试,计算Pass@1 自动化评测——测试生成场景 评测方法: 1.指标采用单测正确率和覆盖率 2.采用humaneval数据集为基础,提供正确的目标函数代码,由模型生成相应的单测,然后计算单测覆盖率和正确性 提示语://According to the code, generate a unit testfunction that can be run directly, and the coverage rateis required to be as high as possible prompt =提示语+test_set_up+code_solution+单测函数声明 标准测试函数通过率=(模型生成的测试函数中所有测试用例全部执行通过,且该测试函数的覆盖率达到80%以上)/总数 测试生成场景——评测结果 LLM代码能力评测数据集 模型评测——代码大模型应用分类 模型评测——评测任务分类 •22种任务分类•12个高优先级场景分类 基于LLM代码应用分类,设计代码大模型评测任务分类 模型评测——评测体系框架 •根据“从产品到技术”的思路,划分用户/产品、场景/任务、领域/框架、开发语言四个评测维度•以用户/产品的场景/任务为出发点,设计评测指标,确定任务优先级和指标权重 代码综合能力评测数据集制作流程 •11类主要任务场景•5种主流编程语言•3个月内的新数据•500题滚动更新 代码大模型人工评测数据集出题标准 出题标准: 1.模拟真实用户Chat场景,Prompt指令清楚如“生成完整代码”、“写Python代码”、“续写代码”、“写单元测试用例”等 2.Prompt中避免有互斥的指令,如“请生成一个测试用例,且测试覆盖率60%以上” 3.尽量找新的数据(最近3个月内的) APPSHumanEvalMBPPDS-1000CoderEvalClassEvalMathQACodeXGlUEXLCoSTAiXBenchODEDeepFixDefect4JAsleepatthekeyboard GitHubGitee国内外竞赛数据集API开发文档StackOverflowStackExchangeQuoraReddit漏洞数据集恶意代码数据集主流开发语言开发框架编程教程自己的代码工程项目 数据源: 外部数据源:找最近3个月新增的Case 开源评测数据集:少用(占比不超过20%),要改写/补充chat场景的prompt 代码大模型人工评测数据集出题标准 •代码生成根据用户指令从头到尾生成完整代码;也包含重构/改写代码 GoodCase BadCase 帮我用c++实现以下函数,函数的输入有三个,分别为一个排序好的数组arr,一个整数n和一个整数k,要求从数组中找到最靠近x的n个数。返回的结果按升序排列。提示:整数x比整数y更接近k需要满足:|x-k| < |y-k|或者|x-k| == |y-k|且x < y 有三个发帖很多的ID,他们的发帖数目超过了帖子总数目的1/4,请从发帖ID列表中找出它们。请用代码实现。 给你一个整数数组nums和两个整数k、s。nums包含0、1和2。每一次移动,你可以选择相邻两个数字并将它们交换。请你返回使nums中包含k个连续1和s个连续2的最少交换次数。 代码生成评测数据集制作 •在HumanEval评测集基础上,增加难度 •覆盖5种主流编程语言 •每道题5个以上单元测试用例 •人工审核 •共150题 代码补全评测数据集制作 •以MBPP数据集为基础,MBPP数据集有946个用例,每个用例包含自然语言描述、函数/方法的规范示例、3个单元测试用例 •选取函数方法规范示例中代码行数>5行的用例,共314个用例 •自动化评测 •Pass@1 LLM代码能力评测反馈闭环实践 模型“刷题”了吗? Vue版本较低——增训新版Vue数据 一些语言知识时效性不足:如JavaScripts仍然使用vue2的语法回答 制作vue3数据续训 代码注释/解释的格式问题——规范训练数据格式 混元经常把全部注释都写在同一行。进一步分析改进训练数据 评测驱动混元模型快速提升代码能力 完成7次混元代码模型大版本评测,驱动模型SFT和续训改进,混元模型代码能力vsGPT指标从1月份89.49%,到5月提升至97.35%,为所有评测模型中进步最快 评测工作当前问题与不足 评测如何真实反映用户的感受?(混元助手&工蜂Copilot)•从模型评测到产品评测 出题速度怎样才能更快? •从现网badcase/goodcase数据中直接生成 评测如何适应未来产品发展?(CodeAgent/AutoDev) •长上下文•推理•记忆•多轮 •SWE-benchmark•RepoBench•LiveCodeBench 感谢大家观看