使用 MongoDB 和 Fireworks AI 优化 AI:实现更快的推理、更低的成本和更高效的 RAG 应用。
行业: 金融服务
产品: MongoDB Atlas
合作伙伴: Fireworks AI、LangChain
解决方案概述
在当今 AI 驱动的环境中,提供高性能仅仅是成功的一半。真正的成功在于实现性能与总拥有成本 (TCO) 之间的完美平衡。企业始终面临优化性价比的挑战,要确保速度或效率的每一次提升都能转化为切实的成本收益。MongoDB 与 Fireworks.AI 建立了战略合作伙伴关系,这一强强联合将助力组织在提升性能的同时节省资源。这一协作将 MongoDB 强大的数据管理能力与 Fireworks.AI 的模型优化工具无缝融合,不仅缩短了延迟,增加了吞吐量,还有效降低了运营成本。
本文将讨论以下主题:
利用 MongoDB 和 Fireworks.AI 提高性能并降低 TCO 的方法。
将 MongoDB Atlas 与生成式 AI 模型结合使用时,制定策略来缓存查询和响应,以帮助优化后续的检索增强生成 (RAG)。
基于大型语言模型 (LLM) 微调小型语言模型 (SLM),以实现更快的性能和相当的响应质量。
Fireworks.AI 平台采用的技术可以微调模型、加快推理速度,并降低 LLM 的硬件需求。
一个信用卡推荐系统的案例研究,展示了延迟、内存利用率和成本效益方面的量化改进。
在生产环境中部署和扩展这些解决方案的最佳实践。
读完本文后,读者将获得一套提升 AI 性能且降低开支的综合且可行的策略,同时配合实践案例与性能指标作为支撑。
MongoDB 和 Fireworks AI 的强大功能
MongoDB 以其灵活的模式、高效的索引和分布式架构而闻名,支持组织按需扩展其数据基础架构。当与 Fireworks.AI 的尖端模型调优功能结合使用时,企业便可以实现显著的效率和性能提升,且不会产生任何财务压力。
FireOptimizer 和 FireAttention:核心组件简介
这种优化方法的核心是 FireOptimizer 框架,它将 MongoDB 灵活的高性能数据库与 Fireworks.AI 的模型微调流程相集成。
该框架通过诸如 FireAttention 之类的解决方案加速批处理推理,FireAttention 利用现有硬件提升请求处理效率,从而优化资源利用。此外,参数高效微调 (PEFT),包括 LoRA 和 QLoRA 等方法,能够利用轨迹数据或标签数据高效地微调模型以完成特定任务,从而提升模型的可移植性并降低计算资源消耗。
图 1。FireOptimizer 架构用于自适应优化和高质量推理
可实现的关键优势是:
更快的推理:通过 FireOptimizer 的自适应推测执行,各种模型的生产工作负载实现了最高达 3 倍的延迟提升,确保应用始终保持高度响应。
无忧优化:FireOptimizer 自动化复杂的优化过程,让您专注于构建应用程序,其余工作由我们来处理。
让我们更深入地了解 FireOptimizer 框架。
FireOptimizer:通过适应生成更智能的词元
LLM 通常一次生成一个单词(或词元)的输出,这会使响应速度变慢,尤其是对于较长的输出。为了加速这一过程,采用了一种称为“推测解码”的技术。该技术涉及一个规模较小、速度更快的草稿模型,它可以在主 LLM 仍在处理时,提前快速生成多个可能的单词或短语。然后,主 LLM 会评估这些猜测的单词或短语,并只保留准确的猜测结果。这种技术通常被称为推测执行或解码。
这种传统方法的局限在于,大多数草稿模型都是基于通用数据(例如公开对话)进行训练的。虽然这种方法对一般任务有效,但在诸如编码或金融分析等专业场景中的准确性或“命中率”会显著降低。
相比之下,Fireworks AI 通过自适应推测执行增强了这一方法。它并非使用通用的草稿模型,而是使用针对特定领域或用户配置文件定制的模型。利用这种自适应方法,它可以根据特定领域的特征优化预测。这种方法提高了准确性,增加了命中率(例如,在代码生成任务中将命中率从 29% 提高到 76%),并降低了推理成本,最终实现了高达 3 倍的延迟优化。
专有 LLM 服务堆栈:掌握长上下文工作负载
处理长提示(8K-32K 词元)对于文档分析或代码补全等应用程序至关重要,但往往会拖慢系统速度。Fireworks AI 的 FireAttention V2 解决了这个问题,将长上下文任务的处理速度提高了 12 倍。
作用方式:
优化的注意力扩展:在处理较长输入时减少计算开销。
多主机部署:在多个 GPU 间高效分配工作负载。
高级内核:简化操作,加快执行速度。
借助 FireAttention V3,Fireworks AI 将其领先优势扩大到 AMD 的 MI300 GPU,提供了一个经济高效的 NVIDIA 替代方案。性能亮点包括:
1.4x–1.8x 更高的吞吐量:针对 LLaMA 8B 和 70B 等模型,相较于标准配置。
速度提升高达 5.5 倍:在低延迟场景中,性能优于 AMD 自家的 vLLM。
这一飞跃得益于架构上的调整,例如重新设计的注意力核以及更智能地使用内存,这证明了 AMD GPU 现在已成为 LLM 推理领域的强势竞争者。
借助上述功能,FireAttention 可以通过高效处理长上下文输入(8K–32K 词元)显著改进小型语言模型的微调,而这对于文档分析或多轮对话等特定领域的任务往往至关重要。其优化的注意力机制减少了计算开销,缩短了训练周期并增加了批处理大小。通过支持多主机 GPU 部署和高级注意力内核,它简化了硬件上的工作负载,提高了吞吐量,降低了延迟,并能更快、更经济地完成微调。
规模化效率提升:自适应资源优化
Fireworks AI 的优化不仅限于自适应推测解码。其三大关键技术可最大限度提升吞吐量与成本效益:
自适应缓存:复用频繁计算(例如,重复的 API 调用)以跳过冗余工作,将高流量工作负载的延迟降低 30–50%。
可定制的量化:在保持模型质量的同时,平衡 4-位和 8-位精度,实现速度翻倍,并在批处理等任务中保持超过 99% 的准确率。
解耦式服务:根据工作负载类型调整硬件分配,可以托管多个轻量级模型副本(例如,8 个 GPU → 8 个并行实例),也可以将大型模型(例如,LLaMA 70B)分片到多个 GPU 以处理复杂任务。
构建该解决方案
针对小型高效模型的微调策略:基于 MongoDB 的信贷应用实战演示
更小、更高效的模型为微调提供了独特的机会,使其能够在保持资源效率的同时进行专门的适应。由于对云、设备、专用硬件等多种媒介进行微调或优化的 SLM 变得极具竞争力,该领域的研究一直在持续进行。
这些微调技术可以分为以下几类:
其中最受欢迎的技术是基于 PEFT 的技术。PEFT 技术与大型预训练模型结合使用,可以通过仅调整其一小部分参数来使其适应新任务。这种方法有助于防止过拟合,尤其是针对较小的数据集,并且与全面微调相比,显著降低了计算和内存需求。PEFT 还能有效缓解 LLM 中的灾难性遗忘问题。这些技术无需完全重新训练即可实现高效的模型定制,因而成为资源受限环境的理想选择。
我们可以采用 PEFT LoRA 技术,结合轨迹数据(模型交互产生的数据)和标注数据(为特定任务明确标注的数据),实现对小型模型的微调,从而在无需大量计算资源的情况下,在特定任务上达到高性能表现。
为了突出实际应用,我们以一个 MongoDB 信用卡申请演示为例,展示如何利用 MongoDB 进行信用评分的预测分析,使用生成式人工智能解释信用评分结果,并通过结合大语言模型 (LLM) 的检索增强生成 (RAG) 方法进行信用卡推荐。在本次微调示例中,我们将重点使用大语言模型 (LLM) 简化信用评级说明。该应用涵盖多个功能范围,即用户个人资料生成、产品推荐以及带有摘要功能的重新排序任务。应用程序的设计细节和源代码可在 MongoDB Credit Card Application Solution Library Page 中找到。
当前的挑战
由于 LLM 必须对数十亿个参数执行复杂的计算,因此可能会导致响应时间变慢。例如,生成信用卡推荐可能需要多个 LLM 查询,导致总响应时间长达 10 到 20 秒(每个查询需要 5 秒或更长时间)。此外,LLM 的规模化生产和百万级用户部署也面临很大困难且成本高昂。
转向小型语言模型
利用 SLM,企业可以显著提升处理速度和成本效率。SLM 需要的计算能力较低,非常适合资源有限的设备,同时还能提供更快的响应速度并降低运营成本。
参数高效微调和 LoRA
PEFT 及其 LoRA 方法通过仅优化部分参数显著提高了效率。这种方法减少了内存需求并降低了运营成本。与 MongoDB 的协同作用增强了数据处理能力,并促进了高效的模型调优过程。
MongoDB 唯一值
MongoDB 作为不可或缺的部分,通过无缝数据管理与实时集成能力,显著提升系统运营效率。通过将跟踪数据存储为 JSON 并实现高效的检索和存储,MongoDB 为微调模型的过程增加了可观的价值。MongoDB 还可以兼作缓存层,以避免在对相同数据的重复请求上不必要地调用 LLM。
使用 Fireworks AI 微调小型语言模型的逐步指南
信用卡申请演示的一个关键方面是用清晰、通俗的语言向客户解释信用评分或信用评级。前沿大语言模型(如 Meta 的 LLaMA 3.1-405B)可基于以下要素生成解释性分析:用户个人资料参数、模型输入特征,以及预测客户替代性信用评分/信用评级所用模型的特征重要性。然而,由于有效推理和解释所需的参数数量有限,这些任务无法通过 SLM 一致地实现。为了实现预期的结果,我们需要利用 Fireworks AI 微调平台中所述的微调过程。
以下步骤将逐步介绍如何使用该平台来微调 SLM。
以下是如何利用此平台和工具:
图 2. LLM/SLM 微调过程
微调过程从收集相关的、特定任务的数据开始。如图 2 所示,MongoDB Atlas 作为一款通用型数据库,可以用于缓存大语言模型 (LLM) 或小语言模型 (SLM) 基于用户在信用卡申请中的输入生成的响应(用户被允许在网页界面上模拟用户的信用档案)。以下是一个示例 Python 代码片段,演示如何设置一个装饰器,用于在 MongoDB Atlas 中缓存 LLM/SLM 的响应:
class mdbcache: def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): key = str(args) + str(kwargs) ele = ccol.find_one({"key": key}) if ele: return ele["response"] value = self.function(*args, **kwargs) ccol.insert_one({"key":key, "response": value}) return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The llm.invoke method can invoke either a LLM or SLM based on the Fireworks Model ID provided at the start of applicaiton. Args: prompt (str): The prompt to pass to the LLM. """ response = llm.invoke(prompt) return response
如图所示,微调过程所需的培训数据集可以通过模拟器生成。这里,我们尝试使用分层抽样方法来模拟用户个人资料,从三个信用等级(良好、一般和较差)分别选取相等数量的示例。在本次演示中,我们生成了大约 1300+ 个示例响应。
现在,生成的响应需要被转换成 Fireworks AI 平台支持的格式,以启动微调过程。下面用于微调过程的文件 "cc_cache.jsonl" 可以通过运行以下代码生成:
from pymongo import MongoClient import pandas as pd import json client = MongoClient("mongodb+srv://<uid>:<pwd>@bfsi-demo.2wqno.mongodb.net/?retryWrites=true&w=majority") df = pd.DataFrame.from_records(client["bfsi-genai"]["cc_cache"].find({},{"_id": 0})) df["prompt"] = df["key"].apply(lambda x: x.strip('(').strip('"').strip(")").strip("\\")) del df["key"] df["response"] = df["response"].apply(lambda x: x.strip()) df.to_json("cc_cache.jsonl", orient="records", lines=True) # transform cache to messages messages = [] for item in df.iterrows(): messages += [{"messages": [{"role": "user", "content": item["prompt"].strip(" \\")}, {"role": "assistant", "content": item["response"]}]}] with open("cc_cache.jsonl", "w") as f: for item in messages: f.write(json.dumps(item) + "\n")
既然我们已经准备好了数据集并生成了 “cc_cache.jsonl”文件,就可以按照以下步骤开始微调预训练的 “llama-v3p1-8b-instruct” 模型。
MongoDB 和 Fireworks.AI 的无缝集成简化了以经济高效的方式提升 AI 模型性能的流程。这在上述提供的逐步微调指南中得到了体现。
在将模型作为无服务器 API 部署到 Fireworks 平台后,图 2 中显示的模型 ID(models/ft-m88hxaga-pi11m)可用于通过您选择的语言模型框架调用微调的 SLM 模型。
关键要点
对小语言模型 (SLM) 进行信用卡推荐的微调已取得了显著成果:
在将上述微调步骤应用于替代性信用卡产品推荐流程中的 SLM(小型语言模型)后,我们观察到:经过微调的 SLM 使流程响应时间得到显著提升
响应时间改进:最初,大型 LLM 的响应时间约为 5 秒。通过使用小语言模型 (SLM),延迟可减少约 19 倍。
import time class tiktok: """ Decorator to time the execution of a function and log the time taken. """ def __init__(self, function): self.function = function def __call__(self, *args, **kwargs): import time start = time.time() value = self.function(*args, **kwargs) end = time.time() print(f"Time taken for {self.function.__name__}: {end - start} seconds") return value def invoke_llm(prompt): """ Invoke the language model with the given prompt with cache. The invole LLM method can invoke either a LLM or SLM based on the Fireworks Model ID initialised. Args: prompt (str): The prompt to pass to the LLM. """ ... 模型推理时间 1 (秒)推理时间 2 (秒)推理时间 3 (秒)平均时间(秒)llama-v3p1-405b-instruct
5.5954
7.5936
4.9121
6.0337
SLM - fine-tuned llama-v3p1-8b
0.3554
0.0480
0.0473
0.1502
内存减少:LLM 通常需要大量内存,通常在 8×80 GB VRAM 范围内。使用大约 16 GB 的 VRAM,SLM 可以高效运行,从而将内存使用量减少 97.5%。
硬件减少:部署 LLM 通常需要高端 GPU 或多台服务器。使用小语言模型 (SLM) 可以大幅降低硬件需求,可能实现基于标准 CPU 或单台服务器的部署,从而大幅降低硬件成本。
结论
MongoDB 与 Fireworks AI 的集成显著提高了培训 SLM 的效率和成本效益。这种合作伙伴关系使先进的 AI 解决方案更易获取且经济上可行,确保面向未来的 AI 投资。本次合作的关键价值主张包括:
降低总体拥有成本:Fireworks AI 的 LoRA 和 qLoRA 技术通过应用低秩适配和量化,最大限度地减少了计算资源需求,从而降低了微调小语言模型 (SLM) 的成本。MongoDB 通过其分布式架构、灵活的模式设计和高效的索引机制,支持按需扩展数据基础设施并最大限度地降低存储成本,从而减少了资本支出 (CapEx) 和运营支出 (OpEx)。
集成数据和 AI 工作流程:MongoDB 促进实时数据集成,使 AI 模型能够即时获取数据,从而提高效率。与 Fireworks AI 的微调工具的集成确保了简化的工作流程,使 AI 模型保持持续更新和相关性,从而改善决策并提供准确的见解。
强大的 RAG 解决方案:MongoDB Atlas 与 Fireworks AI 的无缝结合,简化了 RAG 框架的创建,提升了数据存储和检索的效率。MongoDB Atlas 提供了可扩展的向量存储平台,而 Fireworks AI 则提供托管的大语言模型 (LLM)/小语言模型 (SLM) 服务及其他功能。我们共同实现了可扩展且智能的系统,通过相关信息检索来提升用户体验。
采用此策略的组织能够实现 AI 性能加速、资源节省和未来可持续的解决方案,从而推动各行业的创新与竞争优势。
深入阅读
Fireworks AI 平台如何加速推理速度和吞吐量:
FireAttention V2:这一创新提升了在线推理时处理长上下文的效率,实现了最高达 12 倍的加速处理。
FireAttention V3:这一进展使得可以将 AMD 硬件作为 GPU 推理的可行替代方案,从而拓宽了硬件选择,并有可能降低成本。
FireOptimizer:该工具支持对生产环境推理任务的延迟和质量进行自定义,使用户能够根据自身需求调整性能表现。
使用的技术和产品
MongoDB 开发者数据平台
合作伙伴技术
作者
Wei You Pan,MongoDB
Ashwin Gangadhar,MongoDB
Peyman Parsi, MongoDB
Benny Chen,Fireworks AI
Ayaan Momin,Fireworks AI