模型微调‌ 代码模型自我进化超越GPT-4o蒸馏!UIUC伯克利等提出自对齐方法

默认分类12小时前发布 admin
5 0
星河超算AI数字人

在整个数据生成过程中,使用相同的基础模型进行推理,分为三步:

首先,从高质量的种子片段中提取不同的编码概念,以生成新任务。

然后,对每个任务的多个响应进行采样,将每个响应与测试用例配对,并在沙盒环境中对其进行验证。

最后,选择验证通过的示例来进行指令调优。

是第一个完全透明的,使用纯自生成的指令数据对基础代码模型进行自对齐。

实验表明,使用对.5-7B进行指令微调,在+上实现了67.1 pass@1,超过了参数量大10倍的-70B-。

在全部的三项基准测试(代码生成、数据科学编程、代码编辑)中,都战胜了之前最先进的指令微调方法。

此外,在+上,的性能超越了基于GPT-3.5-Turbo的蒸馏方法(包括 OSS-(61.6)和Evol-(59.1)),甚至打败了GPT-4o的直接输出蒸馏(65.9)!

这意味着,从模型自己的数据分布对齐中学习,可能胜于使用强大的模型。

适用于各种规模(从3B到33B)的LLM,比如-就是以此为基础创建的(base model为-15B)。

自对齐代码生成

下图以-15B的指令调优过程为例,展示了的流程:

种子选择

模型微调‌ 代码模型自我进化超越GPT-4o蒸馏!UIUC伯克利等提出自对齐方法

首先从The Stack V1中收集一组种子代码片段。

此步骤中,确保种子片段多样化且高质量至关重要,它们将用作生成说明和响应的起点。

为了收集种子片段,研究人员从The Stack V1中提取所有带有文档字符串的函数,然后应用一系列过滤规则来确保种子片段的质量。

通过运行类型检查器、删除基准项、过滤掉文档质量差的函数,以及删除几乎重复的函数,总共从5M个函数中过滤出250k个函数。

概念生成

收集种子函数后,开始执行Self-OSS-,对OSS-的自对齐进行修改,以生成不同的指令。

具体来说,这里采用上下文学习(In- )让基础模型从给定的种子代码片段中自行生成指令。

### System : I - > R 
You are an extremely intelligent AI coding assistant . Please provide an accurate and reliable response to each user instruction . After delivering your response , verify its consistency and correctness by writing a series of executable tests . 
### System : C - > I 
Create a series of independent coding tasks that are original , distinct , diverse , and high - quality , fostering logical thinking . Each task must adhere to specified properties : 
- category : the type of task ( e . g . , function implementation , class implementation , or program implementation ) 
- language : the programming language to be used 
- difficulty : the complexity level of the task ( e . g . , easy , medium , or hard ) 
- concepts : fundamental principles and techniques the task is designed to incorporate , which developers must understand to effectively solve the task 
Design the tasks so that the relevant concepts emerge naturally as the most appropriate solutions , without explicitly mentioning that a particular concept should be used .

模型微调‌ 代码模型自我进化超越GPT-4o蒸馏!UIUC伯克利等提出自对齐方法

作者使用了21个精心设计的示例来教模型如何工作:

指令生成过程分为以下两个步骤:

概念提取:对于每个种子函数,提示基本模型生成函数中存在的代码概念列表。代码概念是指编程中使用的基本原则和技术,例如模式匹配和数据类型转换。

指令生成:提示基本模型根据已识别的代码概念和两个附加属性(难度和类别)自生成编码任务,随机抽样以丰富生成指令的多样性。

执行筛选

根据Self-OSS-生成的指令,下一步是将每条指令与高质量模型(比如GPT-4)相匹配。

不过,很多强大的商业模型不允许用蒸馏来做这种事,而且,模型也不一定就更加厉害,毕竟老师也会犯错误,这时就会起到负作用。

作者建议,明确指示模型在产生与自然语言交错的响应后,生成用于自我验证的测试来自对齐基本模型。

具体来说,对于每个指令,基本模型对格式的多个输出(响应、测试)进行采样,然后过滤掉那些在沙箱环境中测试失败的响应。然后,为每个指令随机选择一个验证通过的响应,应用于最终的指令微调数据集。

实验评估

本文全面评估了在各种编码任务中的表现,包括:

函数生成:给定自然语言描述,要求LLM生成一个自包含函数,并测试函数的正确性和效率。

类生成:给定一个包含类级和方法级信息的代码框架,要求LLM生成类及其方法。

数据科学编程:给定数据科学任务的描述和部分代码片段,要求LLM完成代码片段以通过相应的测试。

323AI导航网发布

© 版权声明

相关文章

星河超算AI数字人

暂无评论

暂无评论...