通义千问AI挑战赛赛后反思

文章讲述了在技术竞赛中,选手如何通过SFT提升基础模型的代码能力,重点介绍了微调和数据处理策略,包括使用Qwen1.8模型,针对不同任务(如代码修复和生成)设计针对性的数据集和prompt。第一名和第二名方案详细描述了数据集的选择、改造和预训练方法,强调了对测试数据的理解和数据清洗的重要性。
摘要由CSDN通过智能技术生成

个人理解:

初赛阶段主要聚焦在如何通过 SFT 提升基础模型的代码能力,需要选手基于最新开源的 Qwen 1.8 模型作为基础模型,上分的关键主要通过收集高质量的代码数据提升模型的在Python, JavaScript, Java, Go, C++, Rust六种编程语言的代码生成能力。

比赛要求采用通义千文模型,因此选手能做的只有微调和数据处理。
微调部分,无非是采用各种tune技术,如prefix-tune,prompt-tune,lora等;数据处理部分则是搜集网络上尽可能相关的数据集,在其上进行finetune。

个人方案

在这里插入图片描述

采用了XXXXX数据集,将其从alpha格式改造成了多轮对话模式。
缺点:没有针对性的挑选或改造数据集,没有针对评测数据的特点进行深入研究。举例来说,评测方案里有代码修复的任务,但是自己找的数据集里并没有相关的

第一名方案

初赛:
针对代码修复任务:(构造修复案例,加上改错入口)
通过写prompt让gpt辅助生产数据,主要是对leetcode-rosetta.jsonl、Evol-Instruction-66k、code_alpaca等公开数据集中相关语言的数据进行改造;

每种语言会单独写几个prompt example(覆盖不同的改错类型),给定题目和正确答案,让其把正确答案改为错误,作为fixtests的数据。

同时每条数据会生成对应的declaration、test、entry_point等,并在数据中加上f’Fix bugs in entry_point’的字样,使得构造的数据格式和预测框架更为一致。

针对代码生成任务:(拼接与测试集格式相同的信息)
使用原始数据中content/explanation/instruction等信息生成测试集格式的instruction、prompt、declaration。然后把这些字段信息拼接在一起作为synthesize的sft数据;这样也保证了构造数据的格式和测试集的格式一致

复赛:主要工作还是收集各种相关数据进行清洗和改造
借鉴点:SFT数据对与测试集相似的数据进行过采样;对于英文数据集,可以写prompt让gpt进行翻译

第二名方案

在这里插入图片描述

初赛:现在自然语言注释、文本、相关代码的数据集上进行预训练,再在编程训练数据集上进行微调。
利用OSS-INSTRUCT数据进行预训练。OSS-INSTRUCT如何得到的?使用大型语言模型生成,从来开源代码文档,生成符合预先设定的prompt代码数据。【从80K个代码文档中收集了80K个初始种子片段,其中包括40K的Python,以及C++,Java,TypeScript,Shell,C#,Rust,PHP,和Swift各5K。然后,每个收集到的种子代码片段被应用到图2所示的提示模板,一个教师模型将其作为输入,并输出一个代码问题及其解决方案。】

复赛:
收集LeetCode相关的Python语言开源数据,收集LeetCode相关解题思路,用于代码解释

心得:
1.第一步,先研究清楚测试数据是怎么样的

第三名方案

https://tianchi.aliyun.com/forum/post/659773
对数据、模型、框架的讲解都很仔细
初赛:主要还是收集数据,过滤去重,解决了任务不平衡和任务异质性的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值