微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 小模型也能推理!Qualcomm用工具替代思考,让1B模型修复Python代码

小模型也能推理!Qualcomm用工具替代思考,让1B模型修复Python代码

2025-07-23 10:01
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2025-07-23 10:01 科技行者

这项由Qualcomm AI Research团队的Corrado Rainone、Tim Bakker和Roland Memisevic完成的研究发表于2025年7月,论文标题为"Replacing thinking with tool usage enables reasoning in small language models",有兴趣深入了解的读者可以通过arXiv:2507.05065v1获取完整论文。

现在的大语言模型就像一个聪明的学生,当遇到复杂问题时,它们会先在心里默默思考一番,然后再给出答案。这种"思考"过程被称为Chain-of-Thought(思维链),就像你在考试时会在草稿纸上写下解题步骤一样。但是,这种方法有个大问题:只有那些"优等生"(超大型模型)才能很好地运用这种思考方式,而那些"普通学生"(小型模型)往往在思考过程中迷失方向。

研究团队提出了一个有趣的解决方案:既然小模型不擅长自由思考,那就给它们一个专门的工具来帮助思考。这就像给一个不太会心算的学生提供一个计算器一样,虽然他们不能在脑海中完成复杂运算,但借助工具同样能解决问题。

传统的大模型推理就像一个作家在写作时的思考过程,他们会在心里构思情节、斟酌词句,然后将完整的想法写在纸上。但对于小模型来说,这种内心的构思过程往往会变得混乱无序。研究团队的创新之处在于,他们不再要求小模型进行这种抽象的内心思考,而是让它们通过与一个具体的编程工具进行交互来解决问题。

这个编程工具就像一个智能的文本编辑器,它可以执行代码、提供反馈,并告诉模型哪里出了错。模型不需要在脑海中想象代码的运行结果,而是可以实际运行代码,看到真实的执行结果。这种方法被研究团队称为Chain-of-Edits(编辑链),因为模型的每一步操作都是对代码的具体编辑。

一、从抽象思考到具体操作

传统的思维链方法就像让学生在考试时写下详细的解题思路。当面对一道数学题时,学生会写:"首先,我需要找到未知数x的值。然后,我将方程两边同时加上3。接下来,我将两边都除以2..."这种方法对于优秀的学生来说很有效,因为他们能够清晰地表达自己的思路。

但是,小型模型在进行这种抽象思考时经常会陷入困境。它们可能会重复相同的话语,或者产生不连贯的推理过程。这就像一个学习有困难的学生,当被要求写出详细的解题步骤时,他们往往会写出"我需要解这个方程,然后我需要解这个方程,然后..."这样的重复内容。

研究团队意识到,问题的根源在于小模型缺乏足够的能力来进行抽象的推理表达。因此,他们提出了一个根本性的转变:不再要求模型进行抽象思考,而是让它们通过具体的操作来解决问题。

这种转变就像是从要求学生写出"我要把蛋打散,然后加入面粉,再倒入牛奶"这样的抽象描述,改为让学生实际操作:"现在打蛋,现在加面粉,现在倒牛奶"。每一步都是具体的、可验证的操作,而不是抽象的思考描述。

在代码修复任务中,这种转变特别有意义。传统方法需要模型说:"我发现这段代码有语法错误,需要修正变量名,然后调整逻辑结构..."而新方法则是让模型直接执行:"替换第3行的变量名,删除第5行的多余代码,在第8行添加新的语句。"每一步操作都会立即得到反馈,模型可以看到修改后的代码是否能正确运行。

二、智能文本编辑器的设计

研究团队为小模型设计了一个特殊的工作环境,这个环境就像一个增强版的代码编辑器。这个编辑器不仅能显示代码内容,还能立即执行代码并提供详细的反馈信息。

这个编辑器的界面设计得非常直观。代码的每一行都有清晰的行号标记,就像我们在Word文档中看到的行号一样。当模型需要修改代码时,它只需要指定行号和具体的修改内容即可。比如,模型可以说:"将第5行替换为'return sum(numbers)'",编辑器就会立即执行这个修改。

更重要的是,每次修改后,编辑器都会立即运行代码并显示结果。如果代码运行成功,编辑器会保持静默;如果出现错误,编辑器会显示详细的错误信息,包括错误类型、错误位置和可能的原因。这就像一个耐心的老师,每次学生写完一行代码后都会立即检查并给出反馈。

为了让模型能够高效地与编辑器交互,研究团队设计了一套简单而强大的命令语言。这套语言包含了五个基本命令:添加新行(ADDL)、替换现有行(REPL)、替换单词(REPW)、删除行(DELL)和退出(EXIT)。每个命令都有明确的语法格式,比如"ADDL 5 >>>print('Hello World')"表示在第5行添加一个打印语句。

这种命令设计的巧妙之处在于,它将复杂的代码编辑操作分解为简单的原子操作。模型不需要一次性理解整个代码的结构,而是可以逐步进行小的修改。这就像用积木搭建复杂结构一样,每次只需要专注于放置一个积木块,而不需要考虑整个建筑的宏观设计。

三、训练过程的巧妙设计

训练一个能够熟练使用这种编辑工具的模型需要大量的示例数据,但手动创建这些示例是非常耗时的工作。研究团队设计了一个聪明的自动化数据生成系统,这个系统就像一个会故意犯错的学生和一个会改正错误的老师的组合。

数据生成过程从一个正确的代码开始,就像从一幅完整的拼图开始一样。然后,系统会故意向这个代码中引入各种错误,比如删除某些行、添加多余的代码、引入拼写错误或者改变变量名。这个过程就像是把完整的拼图打散成碎片。

接下来,系统会记录如何将这些错误逐步修正,直到恢复到原始的正确代码。这个过程就像是记录如何重新组装拼图的每一个步骤。最终,系统得到的是一个完整的修复轨迹,包括每一步的编辑操作和相应的反馈信息。

这种反向工程的方法确保了每个训练示例都有一个明确的正确解决路径。模型在学习过程中不仅能看到最终的正确结果,还能学习到达到这个结果的具体步骤。这就像给学生提供了详细的解题步骤说明,而不仅仅是答案。

研究团队使用这种方法从MBPP(Mostly Basic Python Problems)数据集中生成了35,223个训练示例。每个示例都包含了完整的问题描述、损坏的代码、修复过程和最终的正确代码。这些示例涵盖了各种常见的编程错误和修复策略,为模型提供了丰富的学习素材。

四、强化学习的智能应用

仅仅学会模仿示例是不够的,模型还需要能够处理更复杂、更真实的问题。研究团队采用了强化学习的方法来进一步训练模型,这个过程就像让学生从做教科书上的练习题转向解决实际的工程问题。

在强化学习阶段,模型面对的是更加困难的代码修复任务。这些任务中的错误代码不是通过简单的人工破坏生成的,而是由另一个语言模型在尝试解决编程问题时产生的。这些错误更加复杂和真实,就像学生在实际编程中可能遇到的各种问题。

强化学习的奖励机制设计得非常直观。当模型成功修复代码,使其能够通过所有测试用例时,它会获得正面奖励。如果模型使用了错误的命令格式或者在代码已经修复后没有及时退出,它会受到轻微的惩罚。这种奖励机制就像一个耐心的老师,会在学生做对时给予鼓励,在犯错时给予温和的提醒。

强化学习过程中的一个关键创新是使用了"按回合标准化"的方法。传统的强化学习可能会因为某些任务特别困难而导致学习过程不稳定。研究团队的方法就像在考试中使用标准化分数一样,确保模型在面对不同难度的任务时都能获得合理的反馈。

五、实验结果的令人惊喜发现

研究团队在三个不同规模的模型上测试了他们的方法:1B参数的Llama-3.2-1B、3B参数的Llama-3.2-3B和8B参数的Llama-3.1-8B-Instruct。实验结果展现了一个有趣的规律,就像不同年级的学生在面对同样的学习方法时会有不同的反应。

对于最小的1B模型,这种工具辅助方法带来了显著的提升。在直接回答模式下,这个模型的成功率只有1.3%,就像一个刚开始学编程的新手。但是通过使用编辑工具,它的成功率提升到了7.82%,这是一个将近6倍的改进。更重要的是,传统的思维链方法在这个小模型上几乎完全失效,成功率只有0.15%。

3B模型的表现更加出色,工具辅助方法将成功率从6.9%提升到了13.8%,这是一个翻倍的改进。同样,传统思维链方法在这个模型上的表现也不理想,成功率只有1.44%。这些结果证明了对于小模型来说,具体的工具操作比抽象的思考描述更加有效。

然而,当实验来到8B模型时,结果出现了有趣的逆转。这个较大的模型在直接回答模式下就能达到33.4%的成功率,而传统思维链方法也能达到23.3%的成功率。但是,工具辅助方法的表现反而有所下降,只达到了21.7%的成功率。这就像一个已经很擅长心算的学生,当被要求使用计算器时反而可能会因为不熟悉工具而影响发挥。

六、深入分析:为什么工具比思考更有效

这些实验结果揭示了一个重要的认知科学原理:不同能力水平的学习者需要不同的学习策略。对于能力较弱的学习者,具体的、有结构的任务比抽象的、开放式的任务更容易掌握。

小模型在使用传统思维链方法时经常会陷入重复循环或产生不连贯的内容。研究团队观察到,这些模型可能会重复输出相同的代码行号,或者反复提到同样的问题描述,就像一个学生在考试时因为紧张而不断重复同一句话。

相比之下,工具辅助方法为模型提供了明确的行动框架。每一步操作都有具体的语法要求,每一次修改都会立即得到反馈。这种结构化的环境帮助小模型避免了在抽象思考中迷失方向的问题。

另一个重要优势是反馈的即时性和具体性。在传统方法中,模型需要在生成完整的思考过程后才能知道最终结果是否正确。而在工具辅助方法中,每一步操作都会立即得到反馈,模型可以根据这些反馈调整后续的行动。这就像学习骑自行车时,立即的平衡反馈比事后的指导更有效。

七、技术实现的精巧细节

研究团队在技术实现上做了许多精巧的设计,这些细节虽然看起来不起眼,但对最终效果至关重要。就像烹饪中的各种小技巧,每一个都不可或缺。

首先,他们使用了LoRA(Low-Rank Adaptation)技术来训练模型。这种技术就像给汽车加装改装套件一样,不需要改变原始引擎,只需要添加一些新的组件就能改善性能。这种方法大大减少了训练成本,使得在普通的GPU上也能训练大型模型。

其次,研究团队在强化学习中使用了改进的GRPO(Group Relative Policy Optimization)算法。这个算法的改进就像在团队比赛中使用更公平的评分系统,确保每个参与者都能得到合理的评价。具体来说,他们将原本基于整个任务序列的标准化改为基于单个回合的标准化,这样可以更准确地评估每一步操作的价值。

模型的输入输出格式也经过了精心设计。代码编辑器的状态信息包括带行号的代码内容和详细的执行反馈,这些信息用特殊的分隔符(三个星号"***")清晰地分开。这种格式设计既保证了信息的完整性,又便于模型理解和处理。

在训练过程中,研究团队还采用了梯度累积技术来模拟更大的批次大小。这就像在烹饪时分批处理食材,最后统一调味一样,既保证了处理质量,又避免了资源不足的问题。

八、实际应用价值和局限性

这项研究的实际应用价值远不止于代码修复。它为小模型的应用开辟了新的可能性,证明了通过适当的工具设计,即使是资源有限的模型也能完成复杂的任务。

在实际应用中,这种方法可以用于开发更加平民化的编程助手。目前的大型编程助手需要巨大的计算资源,普通开发者很难承担。而基于这种工具辅助方法的小模型助手可以在普通的个人电脑上运行,为更多的人提供编程帮助。

此外,这种方法还可以扩展到其他需要结构化操作的领域。比如,可以设计专门的工具来帮助小模型进行数据分析、文档编辑或者系统管理等任务。每个领域都可以有自己的专用工具集,让小模型在特定领域内发挥出色的表现。

然而,这项研究也有一些局限性。首先,它主要针对的是代码修复任务,对于其他类型的推理任务是否同样有效还需要更多的验证。其次,这种方法需要为每个应用领域设计专门的工具,这可能会增加开发成本。

另外,研究团队也注意到,对于较大的模型,这种工具辅助方法可能不如传统方法有效。这提醒我们,不同规模的模型需要不同的优化策略,不存在一种万能的方法。

九、对未来研究的启示

这项研究为语言模型的发展方向提供了新的思路。它表明,模型的能力提升不一定要通过简单的规模扩大来实现,而是可以通过更巧妙的设计和更合适的工具来达到。

未来的研究可能会朝着更加专业化的方向发展。不再追求单一的超大模型,而是为不同的任务和应用场景设计专门的模型和工具组合。这就像从通用工具转向专业工具一样,虽然专业工具的适用范围可能更窄,但在特定领域内的表现往往更加出色。

另一个有趣的研究方向是如何设计更好的人机交互界面。目前的工具辅助方法还相对简单,未来可能会有更加复杂和智能的交互方式。比如,可以设计能够理解自然语言指令的编程工具,或者能够主动提供建议的智能助手。

此外,这项研究也提示了一个重要的研究问题:如何为不同能力水平的模型选择最合适的学习和推理策略。这不仅对模型开发者有指导意义,对教育领域也有重要启示。

说到底,这项研究最大的价值在于它改变了我们对模型能力的理解。它告诉我们,智能不一定要表现为抽象的思考能力,具体的操作能力同样重要。通过合适的工具设计,即使是能力有限的模型也能完成复杂的任务。这种观念的转变可能会影响未来很长一段时间内的AI发展方向。

研究团队的工作也体现了AI研究的一个重要趋势:从追求通用智能转向追求实用智能。与其花费巨大的资源去训练一个什么都能做的超级模型,不如设计一系列针对特定任务的专用模型和工具。这种方法不仅更加经济实用,也更容易让普通人从AI技术中受益。

这项研究还有一个重要的社会意义:它降低了使用AI技术的门槛。当小模型也能通过适当的工具设计完成复杂任务时,更多的开发者和用户就能够享受到AI技术带来的便利。这对于推动AI技术的普及和民主化具有重要意义。

最后,这项研究也提醒我们,在AI快速发展的今天,我们需要更加关注如何让AI技术真正服务于人类的需求,而不是单纯地追求技术指标的提升。通过Qualcomm团队的工作,我们看到了一种更加务实和人性化的AI发展路径。

Q&A

Q1:什么是Chain-of-Edits?它与传统的思维链有什么区别? A:Chain-of-Edits(编辑链)是一种新的AI推理方法,让模型通过与编程工具的具体交互来解决问题,而不是进行抽象的思考描述。传统思维链要求模型写出"我需要修改这段代码的逻辑"这样的思考过程,而编辑链则让模型直接执行"替换第3行代码"这样的具体操作。对于小模型来说,具体操作比抽象思考更容易掌握。

Q2:为什么小模型用工具辅助方法比传统思维链效果更好? A:小模型在进行抽象思考时容易陷入重复循环或产生不连贯内容,就像学习有困难的学生在写作文时会重复相同的句子。工具辅助方法为模型提供了明确的行动框架和即时反馈,每一步操作都有具体的语法要求,这种结构化环境帮助小模型避免在抽象思考中迷失方向。

Q3:这种方法能应用到代码修复以外的其他领域吗? A:理论上可以,但需要为每个领域设计专门的工具。这种方法的核心思想是将抽象推理转化为具体操作,因此可以扩展到数据分析、文档编辑、系统管理等需要结构化操作的任务。不过,每个应用领域都需要开发相应的工具集和交互界面,这可能会增加开发成本。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-