开启新纪元:DeepSeek 团队引领代码智能化,大模型推理能力全面革新
深度领航,编码智慧启新篇
通过代码训练大型模型,可以同步提升其在其他领域的推理能力。
DeepSeek团队最近的研究成果展示了他们如何利用超过300万个实例,成功地将编程代码转化为思考过程,从而创建了数据集CODEI/O。这项创新的工作已经用于训练包括Qwen和Llama在内的多个模型。这一进展不仅极大地丰富了现有的机器学习资源库,而且为理解复杂的编码逻辑提供了新的视角。它表明,在未来的人工智能发展中,我们可能会看到更加高效和智能化的代码生成与解析工具,这无疑将推动软件开发行业迈向新的高度。
结果,在多种推理任务中,模型的性能均得到了显著提升,甚至在处理非代码类的推理任务时,也表现出色,展示了良好的迁移能力。
研究团队认为,代码中蕴含了多种场景下的思维过程,因此计划将这些思维过程“提炼”出来,用于训练推理模型。
他们创建了庞大的训练数据集来运行这些代码,随后将代码、输入与输出示例及功能说明一并输入到DeepSeek-V2.5中,进而自动生成自然语言形式的推理过程。
在此基础上,团队还引入了审核和修订流程,从而产生了更高标准的CODEI/O。
首先,作者从CodeMix、PyEdu-R等数据集中收集了80多万份代码文件,涉及多种编程语言(主要为Python),任务类型丰富多样,并且包含了众多复杂的推理模式。
但是,由于原始代码文件通常缺乏结构化,包含不相关的元素,难以以自包含的方式执行,作者使用 DeepSeek-V2.5 模型对其进行预处理,将其转换为统一的格式。
转换过程中的工作主要包括把核心逻辑功能提取到函数中,添加总结整体逻辑的主入口函数,明确定义主入口函数的输入 / 输出,创建独立的基于规则的输入生成器函数,以及基于主入口函数生成简明的问题陈述作为查询等等。
接下来,在转换后的每个函数上,使用输入生成器采样多个输入,并通过执行代码获得相应的输出,从而收集输入-输出对。
这一过程中,部分代码由于存在超时、复杂度过高、无法执行或结果不确定等问题,被作者跳过,最终生成了40多万份代码文档,产生了350万个样本实例。
然后,作者运用DeepSeek-V2.5,整合代码、输入输出示例以及功能说明等信息,生成自然语言思维链(CoT),以此来构建训练样本。
对于每一个输入-输出对,作者首先构建一个输入提示。这个提示由几个部分拼装而成:
函数定义:即之前结构化和标准化后的 Python 函数代码。
文本描述:用自然语言概括函数的功能和目的。
参考代码:在编程领域中,函数定义是一种基础且重要的概念。它不仅是一个代码块,还可能包含一些额外的上下文信息或注释,以便开发者更好地理解和维护代码。这些注释通常会解释函数的功能、参数含义以及返回值的用途,从而帮助其他开发人员更高效地使用和理解代码逻辑。 通过加入适当的注释,不仅可以提高代码的可读性,还能减少团队协作中的误解和错误。例如,在一个大型项目中,良好的注释习惯能够显著提升开发效率,减少调试时间。此外,当新成员加入团队时,详细的注释可以让他们更快地熟悉项目结构和功能,加速上手速度。 因此,编写清晰且详尽的注释应当被视为一种良好的编程实践,而不仅仅是在定义函数时的一种可选行为。这不仅有助于当前项目的顺利进行,也为未来的维护工作奠定了坚实的基础。
输入或输出:根据是输入预测还是输出预测任务,提示中会包含具体的输入或期望的输出。
好的,请提供您想要修改的原始新闻内容。
这段文本正是作者期望的推理过程——它需要阐明如何根据已有的输入得出相应的输出,或者在已知输出的情况下如何构建符合要求的输入。 请将上述新闻内容进行修改,使其成为意思相近的原创内容,同时确保新闻的核心内容不变。其中,如果存在数据、日期或中文固定表达,则需保持不变,且不得歪曲事实。请注意,这并不是一个问答环节,因此直接提供修改后的内容即可。
通过这种方式收集的数据集,就是 CODEI/O。
基于CODEI/O,作者进一步发挥了代码的可执行优势,从而合成出了数据质量更优的CODEI/O。
作者首先对 CODEI/O 中生成的所有响应通过重新执行代码进行正确性验证。对于验证为不正确的响应,作者将执行反馈追加为第二轮输入信息,并要求模型重新生成一个响应。
执行反馈通常涵盖输出预测的准确性、基于错误输入的执行结果,以及代码在执行过程中可能出现的错误信息等。 这种机制对于提升软件系统的可靠性和稳定性至关重要。通过收集这些反馈信息,开发团队能够更快地识别并修复潜在的问题,从而优化系统性能。此外,这也有助于提高用户体验,确保软件在各种情况下都能稳定运行。
在第二轮生成后,再次检查新响应的正确性。
无论第二轮结果如何,最终的响应都由四个部分按顺序构成:第一轮响应、第一轮反馈、第二轮响应和第二轮反馈。
对于首轮即准确回应的请求,首轮反馈简要标注为“成功”,并且不包含第二轮内容。
与 CODEI/O 一样,所有修订后的响应都会被保留。通过引入基于执行反馈的多轮修正所构建的增强型数据集就是 CODEI/O++。
在完成数据集构建之后,研究者们采取了一种创新的两阶段训练策略来优化相关模型。这种分阶段的方法不仅有助于更细致地调整模型参数,还能够显著提高模型在复杂任务中的表现能力。通过第一阶段的基础训练,模型可以获取到处理基本任务的能力;而在第二阶段的精调过程中,模型则能进一步学习到更为复杂的模式和特征,从而达到更好的性能水平。这种方法显示了在人工智能领域内,持续探索新的训练策略对于提升模型效果的重要性。
第一阶段先用 CODEI/O 或 CODEI/O++ 来训练推理能力,然后再用通用指令数据集进行微调,教会模型遵循自然语言指令、执行各种任务。
为了评估 CODEI/O 或 CODEI/O++ 的效果,作者一共找来了四个模型来进行测试,分别是 Qwen 2.5-7B-Coder、Deepseek v2-Lite-Coder、Llama 3.1-8B 和 Gemma 2-27B。
测试过程中,作者使用了20多个数据集,评估了模型在常识、数学、编程、物理和工程等方面的性能,具体数据集如下表所示:
经过CODEI/O的训练,Qwen-Coder在代码理解方面取得了显著的进步。不仅如此,在阅读理解和推理任务(如DROP)上的表现也有了明显的提升。这表明,通过代码训练所获得的推理能力确实能够迁移到其他领域。 这一成果不仅展示了人工智能技术在多任务处理上的潜力,还为未来的研究提供了新的方向。如何进一步优化算法,让机器在不同任务之间实现更高效的迁移学习,将是接下来的重要课题。此外,这也提示我们,在教育和技术培训方面,可能需要更加注重跨学科知识的应用与整合,以培养更具综合能力的人才。
DeepSeek-Coder在CODEI/O的训练过程中同样表现出了全面的进步,在不同方面都实现了稳步的提升。
Qwen-Coder和DeepSeek-Coder的表现表明,即使这些模型已经在代码领域接受了专门训练,它们仍然能够从这种结构化的推理训练中受益。
Llama在LeetCode-O上的性能提升了近150%,这表明即便是参数量较小的模型,通过采用适当的训练方法,仍然能够在特定任务上取得显著的进步。 这一显著的改进不仅展示了技术进步的可能性,也强调了算法优化和训练策略的重要性。在当前快速发展的AI领域,这种发现对于推动小型模型的应用具有重要意义。它表明,在资源有限的情况下,我们依然可以通过创新的方法来达到甚至超越大型模型的效果,这对于促进AI技术的普及和应用具有积极的推动作用。
Gemma作为迄今为止测试过的最大模型,证明了CODEI/O方法在大规模模型中的有效性。它在多个核心领域都取得了显著的进步,展现了这一技术的巨大潜力。这不仅标志着我们在人工智能领域的研究又向前迈进了一步,也预示着未来可能有更多突破性的成果出现。这种方法的成功应用,无疑为后续的大规模模型开发提供了宝贵的参考和指导。 通过Gemma的测试结果,我们可以看到CODEI/O方法在处理复杂任务时展现出的强大能力,这为未来的AI研究开辟了新的道路。同时,这也提醒我们,随着模型规模的不断扩大,如何有效管理和优化这些模型将成为一个新的挑战。
相较于数据量更为庞大的WebInstruct(WI),CODEI/O整体表现更佳;同时,与专为特定任务设计的OpenMathInstruct2(OMI2)、PyEdu等方法相比,CODEI/O展现出了更强的通用性。
本文的第一作者是来自上海交通大学的硕士生李俊龙,目前他在DeepSeek实习。 在我看来,这样的背景介绍不仅展示了作者扎实的学术基础,还体现了其实践经验的积累。李俊龙在上海交通大学接受了系统的教育,并且已经在DeepSeek获得了宝贵的实习机会,这对于他未来的职业发展无疑是一个积极的信号。这表明他在理论与实践相结合方面具备了相当的能力,未来的研究工作也更值得期待。
他在香港科技大学助理教授何俊贤的指导下进行研究工作,何俊贤同时也是该论文的通讯作者。这一指导关系不仅显示了他在学术上的成长与进步,也体现了何俊贤教授在科研领域的深厚造诣和对年轻学者的支持与培养。这样的合作关系对于推动科学研究,特别是在当前快速发展的科技领域,具有重要意义。通过紧密合作,不仅能够促进知识的传播与创新,还能为学生提供宝贵的实践经验,助力他们在学术道路上走得更远。
此外,DeepSeek的核心研究员、中山大学校友郭达雅也参与了这一项目,他之前参与了DeepSeek V2、V3以及R1的研发工作。
论文地址:
https://arxiv.org/abs/2502.07316
GitHub:
https://github.com/hkust-nlp/CodeIO
数据集:
https://huggingface.co/datasets/hkust-nlp/CodeIO-PyEdu-Reasoning
本文来自微信公众号:量子位(ID:QbitAI),作者:克雷西