大家好。在开始之前,我其实想问大家一个小问题:今天有多少人实际在使用像 ChatGPT 或 Anthropic 这样的闭源模型?好的。有多少人觉得成本真的很快就在飙升?好,看来这是大家的一个普遍感受。就像你们中许多人可能正在考虑出于成本或性能原因从闭源模型转向开源模型一样,其他客户和用户也在经历同样的转变。今天我将谈谈这些开源模型的亮点所在,以及如何使这些开源模型的性能或质量达到与闭源模型本身相当的水平。
在深入之前,让我简单介绍一下自己:我在 Fireworks 工作,领导应用机器学习团队的一部分。我叫 Jatashri,如果觉得方便的话可以叫我 Jet。让我们谈谈开源模型目前所经历的“从训练到部署”的闭环,这是用户从闭源转向开源时的关键路径。但在深入这一话题之前,让我们先谈谈当前 AI 生态系统中一些基本的事实。
第一个基本事实是:大多数情况下,开源模型已经准备好投入生产使用。如果你用过 GLM 5.2(注:此处原文为GLM,通常指代某模型),你就会知道这是真的,特别是在代码应用场景中。第二个事实是:如果开源模型不能击败或匹敌闭源模型的质量,那么区分因素在于你如何定制、训练和改进这些开源模型以匹配闭源模型的性能和质量。
第三个事实是:对于大多数客户和用户来说,AI 技术栈本身正在从“一次性部署模型”转变为一种持续的闭环,即通过训练到推理的持续迭代来改进同一个开源模型。这正是 Fireworks 发挥作用的地方,它使得整个训练和大规模托管这些开源模型的持续旅程变得更加容易且更具成本效益。我稍后会在演示中详细介绍我们如何进行训练以及提供的不同训练方式,但在此之前,我想先谈谈推理部分。
这部分在我们的客户和用户群中变得非常流行。在讨论训练之前,我想简要概述一下大规模推理的情况以及我们在部分客户和用户群中观察到的生产影响。目前,在规模化生产中,我们每天处理约 30 万亿个 token,而且这个数字还在增长。这个数据实际上是在 GLM 5.2 发布之前统计的,我相信现在每天至少增加了 5 万亿个 token。
随着 GLM 5.2 的发布,我们目前支持全球超过 10,000 家公司,每秒处理约 200k 次请求。我们在客户和用户群中观察到的生产影响非常显著。例如,Cursor(对于那些已经使用 Cursor 及其模型的用户),其 Composer 2 模型的训练和托管都在我们的平台上进行,得益于我们特有的 Fire Attention 引擎,推理速度提高了 13 倍。
Versel 也是我们的另一个大客户。我们帮助他们微调并将模型托管在平台上,他们实现了 40 倍的延迟改善。另一个重要的用例案例是 Genpark。Genpark Lovable 处于非常相似的领域,他们允许用户仅通过提示词来设计系统。当他们试图从闭源转向开源模型时,质量是一个主要瓶颈(或曾是主要瓶颈)。
我们帮助他们进行了微调,为他们做了 RFT(注:原文为RFD/RFT上下文推测),协助他们清洗数据集、定义评估函数。在 RFT 训练任务结束时,我们看到 Genpark 用例的质量提高了 12%。此外,我们在所有其他客户和用户群中也是一个受信任的平台,我们之前筹集了约 3.27 亿美元的 CDC(注:原文CDC可能指代融资轮次或类型),目前 Fireworks 有约 200 名员工。
这引出了下一部分的内容。我知道在上一张幻灯片中我提到我们让某些客户(如 Versel)的延迟更快,而我们在较高层面上实现这一目标的方法相当简单。在 Fireworks,我们拥有自己的推理引擎叫作 Fire Attention。当你有一个模型和 GPU 时,模型通过一个称为 CUDA 内核的翻译层放置在 GPU 之上。作为 Fire Attention 的一部分,我们构建了属于自己的 CUDA 内核。
当客户带着工作负载和性能目标来找我们要时,我们可以针对该特定用例优化这个特定的推理引擎以及整个 AI 技术栈(包括那个 CUDA 内核)。大多数时候,像上一张幻灯片中提到的 Versel 这样的客户会告诉我们:他们有 X 个输入 token,Y 个输出 token,Z 的提示缓存命中率,并且希望满足特定的延迟目标。
我们帮助他们优化整个推理栈(包括 CUDA 内核),以便以更低的成本提供服务,同时满足他们的性能目标并适配其特定的工作负载。作为 Fire Attention 和推理优化的一部分,我们还实施了 AI 领域中非常著名的技术,如投机解码(speculative decoding)、分离架构(disaggregation)和量化。
在投机解码方面,我们允许客户在我们的平台上训练他们的草稿模型(draft models)。他们甚至上传数据集的方式与微调或训练草稿模型时非常相似。这有助于主模型的运行速度更快,满足延迟要求;如果草稿模型训练得非常好,还能提供更好的吞吐量。
一旦人们达到这个阶段——主要是当他们对模型质量感到满意时——但在客户从闭源转向开源模型的过程中,最大的瓶颈或差距仍然是质量。我们试图通过我们的训练产品来解决这个问题,而该训练产品本身针对客户和用户群内的不同细分领域提供了三种不同的形式。第一种是“训练智能体”(Training Agent)。
这在那些刚进入 AI 推理和培训领域的产品经理和建设者中非常流行。
最近,代理可以通过我们的用户界面访问。你只需链接你在 Fireworks 平台上上传的数据集,并提供关于此次训练运行中你要做什么的描述。它甚至允许你选择模型,为你清理数据集,并帮助你进行超参数的微调本身,因为对于特定工作负载的训练来说,获得正确的超参数并不总是容易的。
我们客户和用户群中最受欢迎的另一种模式是托管训练,这也是大多数客户今天所使用的功能。他们可以通过 API 和 UI 界面使用我们的托管训练平台。这非常简单,你只需输入你认为对模型有利的超参数,选择模型,上传数据集本身,然后点击一个按钮。这就是我们在 Fireworks 上为托管训练所简化的流程。
我知道很多人面临的一个挑战是,一旦训练运行开始,可观测性就成了问题。因此,我们还有一个很好的 UI 仪表板,向你展示训练是如何进行的、模型在每个 epoch 中学习得如何以及损失函数的样子。此外,你还可以将你的 Weights and Biases API 密钥接入托管训练服务本身,并将一些可观测性指标导出到 Weights and Biases 等平台。
我们提供的第三种也是最高级的训练模式是训练 API 本身。训练 API 在组织内部或客户群中的某些机器学习工程师中非常受欢迎。在这个特定的产品功能中,让机器学习工程师定义自己的训练循环和损失函数。当你希望根据需求自定义训练任务时,这一点变得尤为重要,这远远超出了我们提供的托管训练服务。
这些不同的模式或训练生态系统内的产品功能适用于监督微调、强化微调和 DPO(直接偏好优化)。如今,我认为 RFT 变得极其流行。如果你需要帮助定义一个好的评估函数,我们曾与 Genpark 等客户合作(我在上一张幻灯片中提到过),帮助他们定义评估函数、清理数据集,特别是为 RFT 选择合适的超参数。
不幸的是,训练代理本身不支持 RF(可能是指某种特定的微调类型或笔误),因此它不能帮助你清理数据集甚至进行超参数调整,但如果你有一个大型用例,我们非常乐意提供帮助。既然我们已经了解了所有的训练产品功能,我还想展示每个产品的快速演示:训练代理、托管训练和训练 API 本身。
但在进入之前,我想简要总结一下我们平台上的数据飞轮现状。我知道在第一张幻灯片中我谈到了当今 AI 的现实情况,大多数人更喜欢进行连续循环:随着从用户处获得新数据和反馈,他们不断地训练和托管。我们正试图在我们的平台上使这一过程更加无缝,这也是为什么我们要提供不同的训练产品和功能,并使托管模型变得更加容易、更便宜和更快。
这个飞轮的工作原理非常简单。一旦这些模型训练完成(我将在下一张幻灯片的演示中展示),你只需点击一下即可将这些模型部署到生产环境中。一旦部署完成,你可以进行监控。我们有关键指标(如 token 数量、缓存命中率)以及如果训练了推测器,其工作情况的监控指标。我们帮助你收集所有已收集的指标的反馈。
如果你选择在同一平台上从你使用的检查点重新训练到新的检查点,这也是可行的。使这些数据飞轮成为可能的平台功能之一是拥有大量的 GPU 资源。我们与不同的云和新兴云计算提供商合作,这使我们更容易提供计算能力并以大规模托管这些模型。
另一项功能是热加载(hotloading),这在为 Cursor 训练模型时变得非常流行。这实际上是我们专门为 Cursor 实施的功能,然后我们认为它对公众在训练模型时也有用。热加载的本质含义是:当你有了一个新的检查点,你可以直接进行实时部署而无需停机。
如果你已经通过连续循环并训练了一个新的检查点,你只需点击一个按钮,就可以将之前使用的权重替换为新的端点。在我们平台上使训练更容易的另一个因素是数值保真度(numerical fidelity)。很多时候,客户在平台 A 上进行训练而在平台 B 上托管。但这样做时会出现模型质量问题,原因是混合精度在不同平台和不同平台上训练和托管时并不总是兼容。
这就是为什么我们在同一平台上提供训练和推理,并确保在完成训练后决定在平台本身托管该特定模型时,你不会发现任何数值差异。由于训练和推理在同一平台上进行,这使得整个过程更加无缝。你只需点击一下即可将模型部署到生产规模。
既然我们已经了解了推理和训练,我想展示不同培训产品的快速演示以及它们在我们平台上的工作方式。演示的第一部分展示了如何使用训练代理本身。在这里,你可以输入你的训练数据集在 Fireworks 中的位置及其名称。你也可以提供评估数据集本身。
我知道人们通常将训练、验证或测试数据集分开存放。因此,你将这两个数据集都提供给代理,然后要求它为你进行微调甚至选择超参数和模型。随后,代理会告诉你步骤
完成您赋予它的任务所需的时间,它会详细阐述监督微调(SFT)计划。它解释了为何选择该基础模型,在本例中选择了 Qwen 38B。此外,它还会提供关于超参数以及整个训练过程高层视图的信息。一旦您完成操作,并对智能体给出的输出感到满意后,您可以批准智能体所概述的任何内容。
获得批准后,它将执行不同的步骤,并随时向您通报进度:例如完成第二步时是什么样?成功完成第三步后又是怎样的情况?在整个训练运行结束时,它还会提供配置、基础模型以及不同超参数的摘要,并说明它们如何产生影响。
当整个模型训练完成后,它会提供诸如准确率和 F1 分数等指标。它还会重新总结并为您提供所做一切的整体概览。一个很酷的功能是,作为训练运行的一部分,它还会提供推荐的下一步操作。演示的下一部分实际上讲述了如何使用我们的管理培训平台。
我之前提到过,您只需选择模型、数据集和超参数,然后点击一下按钮即可实际训练模型。假设您已经上传了数据集并选择了模型,您只需前往评估器设置,选择评估器数据集。如果您决定为训练运行本身使用更细粒度的超参数,还可以作为可选设置选择相应的超参数。
一旦您对包括模型和数据集在内的所有配置感到满意,只需点击标有“创建”的按钮。一旦您点击该按钮,训练任务随即启动并运行。您可以看到,当训练任务实际完成时,用户界面看起来与此类似。
如果您点击特定的训练任务本身,它会提供关于所使用的数据集、超参数以及模型在训练期间的损失情况等信息。您甚至可以克隆这些运行,并使用不同的设置和配置来重现它们。一旦您对微调后的模型感到满意,您可以进入部署部分,选择刚刚在我们的平台上训练好的自定义模型。
在您对部署配置感到满意后点击“部署”。或者,您可以选择我们提供的一组部署配置,例如吞吐量、快速或最小化。这是一种模板,适用于我们通过优化吞吐量、延迟、首字生成时间及其他此类指标而针对通用工作负载优化的场景。
遗憾的是,由于设置因客户而异,我无法为我们训练 API 提供完整的演示。但我们的网站上有许多食谱(示例代码),您可以查看并遵循,特别是如果您有兴趣自定义自己的训练循环和损失函数。
以上就是我今天要分享的全部内容。我只是想简要概述一下从训练到推理的整个闭环流程。非常感谢大家。如果有任何问题,我很乐意在接下来的一分钟内为大家解答。