MongoDB & Fireworks AIでAIを最適化: より高速な推論、コスト削減、効率的なRAGアプリケーション。
ユースケース: 生成系 AI、Model Performance Tuning
業種: 金融サービス
製品: 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 の紹介: コア コンポーネント
この最適化されたアプローチの中心となるのは、MongoDB の柔軟で高性能なデータベースを Fireworks.AI のモデル調整プロセスと統合する FireOptimizer フレームワークです。
このフレームワークは、既存のハードウェアを使用してリクエスト処理を強化し、リソースの利用を最適化する手法である FireAttention などのソリューションにより、バッチ推論を高速化します。さらに、LoRA や QLoRA などの手法を含むパラメータ効率に優れた微調整(PEFT)は、トレースデータやラベルデータを使用して、特殊なタスクを効率的に完了するようにモデルを微調整し、移植性を高め、計算のフットプリントを削減します。
図 1. 適応型最適化と高品質な推論のための FireOptions アーキテクチャ
達成可能な主なメリットは以下の通りです。
推論の高速化: FireOptimizerの適応型推測実行により、さまざまなモデルにわたる本番ワークロードのレイテンシが最大3倍改善され、アプリケーションの応答性が常に高く保たれます。
手間のかからない最適化: FireOptimizer は複雑な最適化プロセスを自動化するため、アプリケーションの構築に専念でき、それ以外の業務は MongoDB が処理します。
FireOptimizer フレームワークについて詳しく見ていきましょう。
FireOptimizer: 調整によるスマートなトークン生成
LLM は通常、一度に 1 つの単語(またはトークン)を生成するため、特に長い出力の場合、応答が遅くなることがあります。このプロセスを加速するために、推測的デコーディングと呼ばれる手法が用いられます。これは、メインの LLM が処理を続けている間に、いくつかの単語やフレーズ候補を事前にすばやく生成する、ドラフト モデルと呼ばれる小型で高速なモデルを含みます。次に、主要な LLM はこれらの推測を評価し、正確なものだけを保持します。この手法は、一般的に投機的実行またはデコーディングと呼ばれています。
この従来のアプローチの限界は、ほとんどのドラフトモデルが一般的なデータ(例: 一般的な会話)で訓練されている点にあります。このアプローチは一般的なタスクには有効ですが、コーディングや財務分析などの専門的なシナリオでは、その精度や「的中率」が大幅に低下します。
これに対して、Fireworks AI は、適応型投機的実行を通じてこのアプローチを強化します。画一的なドラフト モデルを使用する代わりに、特定のドメインやユーザープロファイルに合わせてカスタマイズされたモデルを使用します。この適応型アプローチを使用することにより、分野固有の特性に基づいて予測を最適化します。この方法により、精度が向上し、的中率が向上(例: コード生成タスクでは 29% から 76% へ)し、推論コストが削減されるため、レイテンシは最大 3 分の 1 まで削減されます。
独自の LLM サービングスタック: 長いコンテキストのワークロードをマスター
長いプロンプト(8K~32K トークン)のプロセシングは、ドキュメント分析やコード補完などのアプリケーションにとって重要ですが、多くの場合、システムのクロール速度が低下します。Fireworks AI の FireAttention V2 はこの問題に対処し、長いコンテキスト タスクの処理を 12 倍速くします。
仕組み:
注意拡大の最適化: 長い入力を処理する際の計算オーバーヘッドを軽減します。
マルチホスト配置: ワークロードを GPU 全体に効率的に分散させます。
高度なカーネル: 操作を効率化し、実行を高速化します。
FireAttention V3 により、Fireworks AI は AMD の MI300 GPU に対するリードを拡大し、NVIDIA に代わるコスト効率の高い選択肢を提供します。パフォーマンスのハイライトには以下が含まれます。
1.4 倍~1.8 倍の高いスループット: LLaMA 8B や 70B などのモデルで、標準設定と比較した場合。
最大 5.5 倍の速度向上: 低レイテンシのシナリオでは、AMD 独自の vLLM を上回るパフォーマンスを発揮します。
この飛躍は、再設計されたアテンション カーネルやよりスマートなメモリ使用などのアーキテクチャの調整によるもので、AMD GPU が LLM 推論において強力なプレーヤーであることを証明しています。
上記の機能により、FireAttention は、ドキュメント分析やマルチターン対話などの分野固有のタスクで重要となることが多い長いコンテキストの入力(8K~32K トークン)を効率的に処理することで、小規模言語モデルの微調整を大幅に強化できます。最適化された注意メカニズムにより、計算オーバーヘッドが削減されるため、訓練サイクルの高速化とバッチサイズの拡大が可能となります。マルチホストする GPU 配置と高度なアテンション カーネルのサポートにより、ハードウェア全体でワークロードが効率化され、スループットが向上し、レイテンシが削減され、微調整がより迅速かつ経済的になります。
大規模運用における効率性: 適応型のリソース最適化
Fireworks AI の最適化は、適応型推測だけにとどまりません。次の 3 つの手法により、スループットとコスト効率を最大化します。
適応型キャッシュ: 頻繁な計算(繰り返し行われる API 呼び出しなど)を再利用して冗長な作業をスキップし、トラフィックの多いワークロードではレイテンシを 30–50% 削減します。
カスタマイズ可能な量子化: 4 ビットおよび 8 ビットの精度とモデルの品質のバランスを調整することで、バッチ処理のようなタスクで 99% 超の精度を維持しつつ、速度を 2 倍にします。
分散型サービング: ワークロードの種類に応じてハードウェアの割り当てを調整します。複数の軽量モデルのコピー(例: 8 GPU → 8 並列インスタンス)をホストしたり、複雑なタスクのために大規模なモデル(例: LLaMA 70B)を GPU 間でシャードしたりします。
ソリューションを構築する
小型で効率的なモデルのための微調整戦略: MongoDB を用いた実用的なクレジット申請デモ
小さく効率的なモデルは、微調整を行うための固有の機会を持てるため、リソース効率を維持しつつ特定の適応が可能です。この分野では、クラウド、デバイス上、専用ハードウェアなど、さまざまな媒体向けに微調整または最適化された SLM 開発の競争が激化しており、絶えず研究が進められています。
これらの微調整手法は、次のように分類されます:
加法的パラメーター効率的ファインチューニング(PEFT)
このカテゴリには、元の重みを変更せずに、既存の事前訓練済みモデルに追加の訓練可能なパラメータを導入するアプローチが含まれます。
アダプター: これらのメソッドは、事前訓練済みモデルのレイヤー間に、アダプター モジュールと呼ばれる小さな訓練可能なレイヤーを挿入することを含みます。これらのアダプターはタスク固有の変換を学習し、事前にトレーニングされたパラメーターを変更せずに新しいタスクに適応できるようにします。
ソフトプロンプト: これらは入力シーケンスに追加される学習可能なベクトル埋め込みです。これらはガイダンス キューとして機能し、モデルの動作が望ましいタスクに向かうように影響を与えます。
プレフィックス チューニング: この手法では、入力シーケンスに学習可能なプレフィックスを追加します。このプレフィックスは、コアモデルのアーキテクチャを変更することなく、タスク固有の情報を学習します。
これらの中で最も人気のある手法は、PEFT ベースのものです。大規模な事前訓練済みモデルで使用される PEFT 技術は、パラメーターのごく一部を調整するだけで、新しいタスクに適応させることができます。このアプローチは、特にデータセットが小さい場合に過剰適合を防ぐのに役立ち、完全なファインチューニングと比較して計算量とメモリ要件を大幅に削減します。PEFT は、LLM における破滅的忘却も軽減します。これらの技術は、完全な再トレーニングを必要とせずにモデルを効率的にカスタマイズすることを可能にし、リソースが限られた環境に最適です。
PEFT LoRA 技術を採用することにより、トレースデータ(モデルの対話から生成されたデータ)とラベル付きデータ(特定のタスク用に明示的に注釈が付けられたデータ)の両方を利用できるため、比較的小規模なモデルを微調整して、広範な計算リソースを必要とせずに、特定のタスクで高いパフォーマンスを実現できます。
実用的な用途について強調するために、MongoDB によるクレジットカード アプリケーションのデモを行い、MongoDB が予測分析を用いた信用評価にどのように使用できるかを示し、生成系 AI を用いて信用評価の結果を説明し、LLM を用いた RAG アプローチによるクレジットカードの推奨を実行する方法を説明します。この微調整の例では、LLM を使用して信用格付けの説明を簡略化することに焦点を当てます。このアプリケーションは、ユーザープロファイルの生成、製品の推薦、要約タスクを用いた再ランク付けなど、さまざまな機能範囲を網羅しています。アプリケーションの設計とソースコードの詳細は、「MongoDB クレジットカード アプリケーション ソリューション ライブラリ ページ」で確認できます。
現在の課題
LLM は数十億のパラメータに対して複雑な計算を行う必要があるため、応答時間が遅くなる可能性があります。例として、クレジットカードの推奨を生成するには複数の LLM クエリが必要になる場合があり、その結果合計応答時間は 10 ~ 20 秒(各クエリには 5 秒以上かかります)となります。さらに、LLM を数百万のユーザー向けに本番環境で使用し、拡大することは難しく、費用がかかる場合があります。
小型言語モデルへの移行
SLM を活用することにより、エンタープライズは処理速度とコスト効率を大幅に向上させることが可能です。SLM は計算能力が少なくて済むため、リソースが限られているデバイスに最適であり、応答が速くなり、運用コストが削減されます。
パラメーター効率に優れた微調整と LoRA
PEFT とその LoRA メソッドは、パラメーターのサブセットのみを最適化することで効率を大幅に向上させます。このアプローチにより、メモリ要件が削減され、運用コストが削減されます。MongoDB とのシナジーにより、データ処理が強化され、効率的なモデル チューニング プロセスが促進されます。
MongoDB の一意の値
MongoDB は、シームレスなデータ管理とリアルタイム統合を提供し、運用効率を向上させる重要な役割を果たしています。トレース データを JSON 形式で保存し、効率的な検索と保存を可能にすることで、MongoDB はモデルの微調整プロセスに大きな価値を与えます。MongoDB は、同じデータに対する反復的なリクエストで LLM が不必要に呼び出されることを避けるために、キャッシュ レイヤーとしても機能します。
Fireworks AI を使用した小規模言語モデルの微調整手順ガイド
クレジット カード申請におけるデモの重要な点は、信用評価または信用格付けを、顧客に対して明確かつ平易な表現で説明することです。Meta 社の LLaMA 3.1-405 B などの Frontier LLM は、顧客の代替信用評価または信用格付けを予測するために使用されるモデルから、ユーザー プロファイル パラメーター、モデル入力機能、機能の重要性などの要素を使用して、これらの説明を生成できます。ただし、効果的な推論と説明に必要なパラメータの数が限られているため、これらのタスクは SLM では一貫して達成できません。望ましい結果を得るには、Fireworks AI の微調整プラットフォームを使用して、上記で説明したファインチューニング プロセスを活用する必要があります。
次の手順では、プラットフォームを使用して SLM を微調整する方法を段階的に説明します。
このプラットフォームとツールを活用する方法は次のとおりです。
図 2. LLM/SLM の微調整プロセス
微調整プロセスは、関連するタスク固有のデータのコレクションから始まります。図 2 に示すように、汎用データベースである MongoDB Atlas を活用することで、クレジットカード申請への入力に基づいて特定のユーザーの LLM/SLM 応答をキャッシュできます(ユーザーは Web UI でユーザーのクレジットプロファイルをシミュレートできます)。以下は、MongoDB Atlas で LLM/SLM の応答をキャッシュするためのデコレータを設定する方法を示すサンプルの Python コード スニペットです。
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
図に示されているように、微調整プロセスに必要な訓練データセットは、シミュレーターを使用して生成できます。ここでは、層別サンプリング法を用いて、3 つの信用格付け(良好、普通、不良)すべてに等しい数のサンプルを選択するように、ユーザープロフィールのシミュレートを試みています。このデモでは、約 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 モデルのパフォーマンスを向上させるプロセスを、対費用効果が高く効率的な方法で合理化します。これは、上記で提供されている微調整に関するステップバイステップガイドで明示されています。
Fireworks のプラットフォームにモデルをサーバーレス API として配置した後、図 2 に示されているモデル ID(models/ft-m88hxaga-pi11m)を使用して、選択した言語モデル フレームワークで微調整された SLM モデルを呼び出すことができます。
キーポイント
クレジットカードの提案のために SLM を微調整した結果、素晴らしい成果が得られました。
上記の微調整手順を代替クレジットカード商品提案プロセスのコンテキストで SLM モデルに適用したところ、微調整された SLM を使用したプロセスの応答時間が大幅に改善されたことがわかりました。
応答時間の改善: 元々、大規模な LLM を使用した場合の応答時間は約 5 秒でした。SLM を使用することで、レイテンシを約 19 分の 1 に削減できます。
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 - 微調整された llama-v3p1-8b
0.3554
0.0480
0.0473
0.1502
メモリ削減: LLM は通常、8×80GB VRAM の範囲で大量のメモリを必要とします。SLM は約16 GB の VRAM メモリで効率的に動作し、メモリ使用量を97.5%削減します。
ハードウェアの削減: LLM を配置するには、多くの場合、ハイエンドの GPU または複数のサーバーが必要です。SLM を使用すると、ハードウェア要件を大幅に削減でき、標準の CPU または単一のサーバーへの配置が可能になり、ハードウェアコストの大幅な削減につながります。
まとめ
MongoDB と Fireworks AI の統合により、SLM の訓練の効率とコスト効果が大幅に向上します。このパートナーシップにより、高度な AI ソリューションがより利用しやすく、経済的に実行可能になり、将来を見越した AI 投資が確保されます。このコラボレーションの重要な価値提案には、以下が含まれます。
総所有コストの削減: Fireworks AI の LogRA および 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
ベニー・チェン、Fireworks AI
Ayaan Momin、Fireworks AI