GPT-4o的速度革命来了!
OpenAI刚刚宣布推出了一项名为“预测输出”的新特性,旨在显著降低GPT-4o和GPT-4o-mini的延迟。
这个功能听起来很神奇,但名字却让不少开发者困惑。xjdr (@_xjdr) 直接发问:
既然所有的自回归输出本来就是预测的,为什么还要特意强调预测输出?还能有什么替代方案吗?
其实,这背后藏着一个巧妙的技术创新。
OpenAI 开发团队成员 Steve (@stevendcoffey) 解释说:
我们使用预测来进行推测性解码(speculative decoding),这让模型可以并行验证大批量的输入,而不是一个接一个地采样token!
这项技术究竟有多强?
研究员 Apoorv Saxena (@apoorv_umang) 表示:这种「提示查找解码」技术可以在不影响输出质量的情况下,将延迟降低 2-4 倍!
让我们深入了解这项技术的工作原理。
以修改代码为例,假设你要把一个 C# 类中的「Username」属性改为「Email」,传统方式需要模型逐字逐句地生成新代码。
/// <summary>
/// Represents a user with a first name, last name, and username.
/// </summary>
public class User
{
/// <summary>
/// Gets or sets the user's first name.
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// Gets or sets the user's last name.
/// </summary>
public string LastName { get; set; }
/// <summary>
/// Gets or sets the user's username.
/// </summary>
public string Username { get; set; }
}
但使用预测输出功能,你可以把现有的代码作为预测内容传入,模型就能快速定位并只修改需要变动的部分。
import OpenAI from "openai";
const code = `
/// <summary>
/// Represents a user with a first name, last name, and username.
/// </summary>
public class User
{
/// <summary>
/// Gets or sets the user's first name.
/// </summary>
public string FirstName { get; set; }
/// <summary>
/// Gets or sets the user's last name.
/// </summary>
public string LastName { get; set; }
/// <summary>
/// Gets or sets the user's username.
/// </summary>
public string Username { get; set; }
}
`;
const openai = new OpenAI();
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{
role: "user",
content: "Replace the Username property with an Email property. Respond only with code, and with no markdown formatting."
},
{
role: "user",
content: code
}
],
prediction: {
type: "content",
content: code
}
});
// Inspect returned data
console.log(completion);
David Hinkle (@Drachs1978) 指出:
这不就是推测性解码吗?我猜他们是把提供的文本通过草稿模型运行,然后基于此启动正常的推测性解码。
shb (@himbodhisattva) 补充道:
我认为他们是把预测输出当作草稿模型的输出来使用。
优化过程的细节
OpenAI 的文档详细说明了这项技术的优化过程:
并行处理:不再是逐个token处理,而是批量并行验证
智能预测:系统能预判哪些部分需要修改
高效验证:快速验证预测结果的准确性
应用场景
根据 OpenAI 的文档,预测输出特别适合:
更新博客文章内容
迭代优化之前的回复
重写现有代码文件
深入解析:客服机器人的优化案例
让我们通过一个具体的客服机器人优化案例,来理解这项技术的强大之处。
优化前的问题
响应速度慢
token 处理效率低
系统资源消耗大
具体优化步骤
合并查询上下文
将查询上下文化和检索检查步骤合并,减少请求次数。同时,对新的提示使用经过微调的小型 GPT-3.5 模型,加快 token 处理速度。
拆分助手提示
将助手提示分为两部分,推理部分使用微调过的 GPT-3.5,显著提升处理速度。
并行化处理
检索检查和推理步骤实现并行处理,大幅减少等待时间。
优化输出结构
通过缩短推理字段名称并将注释移至提示中,减少生成的 token 数量。比如:
「message_is_conversation_continuation」简化为「cont」
「user_requesting_to_talk_to_human」简化为「human」
这个小改动就减少了 19 个输出 token。虽然在 GPT-3.5 中可能只能节省几毫秒,但在 GPT-4 中可以减少将近一秒的处理时间。
最终优化效果
优化后的系统实现了:
查询上下文和检索检查步骤的合并
使用微调的 GPT-3.5 加快 token 处理
推理步骤的并行化处理
输出结构的精简优化
这样的优化案例清晰地展示了如何通过多个维度的优化来提升系统性能。每一个小的改进都在为整体性能的提升贡献力量。
性能提升的秘密
通过优化token处理方式,系统实现了显著的性能提升。
Taha Yassine (@taha_yssne) 称:
在学术文献中,这被称为推测性解码(speculative decoding)。
swyx (@swyx) 还分享了一个有趣的发现:
有人把它称为「prompt lookup」(提示查找),这个名字更直观地描述了它的工作方式。
这项创新技术的出现,不仅提升了模型的响应速度,也展示了 AI 优化的新方向:
通过巧妙的技术创新来提高效率,而不是简单地提升模型性能。
👇
👇
👇
👇
本文同步自知识星球《AGI Hunt》
星球实时采集和监控推特、油管、discord、电报等平台的热点AI 内容,并基于数个资讯处理的 AI agent 挑选、审核、翻译、总结到星球中。
每天约监控6000 条消息,可节省约800+ 小时的阅读成本;
每天挖掘出10+ 热门的/新的 github 开源 AI 项目;
每天转译、点评 10+ 热门 arxiv AI 前沿论文。
星球非免费。定价99元/年,0.27元/天。(每+100人,+20元。元老福利~)
一是运行有成本,我希望它能自我闭环,这样才能长期稳定运转;
二是对人的挑选,鱼龙混杂不是我想要的,希望找到关注和热爱 AI 的人。
欢迎你的加入!