概述
这很重要,因为它可以将编码工具中大型重写的延迟缩短一个数量级。
深入探讨
当人工智能编辑文件时,它输出的大多数标记通常与原始代码相同;实际上只有几行发生了变化。 Naive 生成会逐个令牌重新发出整个文件令牌,这对于大文件来说很慢。推测性编辑利用未更改的结构:现有源充当模型将输出内容的高质量“草稿”。系统将原始代码块作为推测性猜测提供,并让模型在一次前向传递中验证其中的许多代码。如果模型同意,这些代币就会立即被接受;如果不一致,它会正常生成校正的跨度。 This is a code-specialized cousin of speculative decoding, but instead of a separate small draft model, the draft comes essentially for free from the file being edited, yielding large speedups on edit-heavy tasks.
现实世界的实施
IDE 助手重写 500 行文件以重命名函数,在几次传递中接受所有未更改的行,并且仅生成重命名的跨度。
“修复此 lint 错误”命令几乎立即生成更正的文件,因为 99% 的代码被重用为推测草案。
自主编码代理在存储库中应用数十个小差异,每次编辑延迟较低,从而保持整体任务的快速完成。
一种重构工具,可以重新格式化并向大型模块添加类型提示,并行验证大量未更改的逻辑而不是重新生成它。
代码模型推测性编辑的未来
大量编辑的代理和 IDE 助手将依靠这一点来近乎即时地应用大的差异,即使是在千行文件上。期望与结构化差异格式、尊重语法边界的树感知提案以及与检索的组合更紧密地集成,以便推测草案包括可能的重构。由于自主编码代理对每个任务进行多次编辑,推测性编辑成为保持多步骤工作流程响应灵敏且运行成本更低的关键杠杆。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是代码模型的推测编辑?
Speculative edits make AI code editing feel instant by predicting that most of a file will stay unchanged and only verifying the small parts that differ.这很重要,因为它可以将编码工具中大型重写的延迟缩短一个数量级。
哪些关键观察使推测性编辑有效?
编辑通常只更改几行,因此绝大多数输出标记与原始源匹配并且可以重复使用。
与普通的推测性解码相比,推测性编辑中的“草稿”来自哪里?
原始文件本身基本上免费提供推测性建议,而不是单独的草案模型。
标准自回归解码如何产生标记?
经典解码是顺序的,每次前向传递生成一个令牌,这使得大输出变慢。
在推测方法中,模型验证正确的一系列提议令牌会发生什么?
经过验证的提案会被并行接受,因此许多匹配的令牌只需花费一次而不是多次。
通过推测性编辑,生成成本与什么最接近?
未更改的跨度可以廉价地接受,因此实际生成的工作会根据实际更改的数量而不是文件长度进行扩展。