Docs Menu
Docs Home
/ /
Atlas Architecture Center
/ / /

Fireworks AI と MongoDB による生成系 AI アプリケーションの最適化で最高のパフォーマンスを実現

MongoDB & Fireworks AIでAIを最適化: より高速な推論、コスト削減、効率的なRAGアプリケーション。

ユースケース: Gen AIモデルPerformanceチューニング

業種: 金融サービス

製品: MongoDB Atlas

パートナー: Fireworks AILangChain

今日の AI 主導の環境では、高いパフォーマンスを提供することは戦いの半分に過ぎません。真の成功は、パフォーマンスと総所有コスト(TCO)の完璧なバランスを取ることにあります。エンタープライズは常に価格/性能比を最適化し、スピードや効率の向上が具体的なコストメリットに結びつくように挑戦しています。MongoDBとFireworks.AIの戦略的パートナーシップに参加する—組織がリソースを節約しつつパフォーマンスを向上させる強力な組み合わせ。MongoDB の堅牢なデータ管理機能と Fireworks.AI のモデル最適化ツールをシームレスに統合することで、この協力関係はレイテンシとスループットを向上させるだけでなく、運用コストを効果的に削減します。

この記事では、以下のトピックについて説明します。

  • MongoDBとFireworks.AIを活用してパフォーマンスを向上させ、TCOを削減する方法。

  • クエリと応答をキャッシュするための戦略は、MongoDB AtlasをジェネレーティブAIモデルと組み合わせて使用する際に、検索拡張生成(RAG)の最適化に役立ちます。

  • 大規模言語モデル(LLM)を基に小規模言語モデル(SLM)を微調整し、同等の応答品質を維持しながら、より高速なパフォーマンスを実現します。

  • Fireworks.AI プラットフォームで使用される手法により、モデルを微調整し、推論速度を加速し、LLM のハードウェア要件を削減します。

  • クレジットカード推薦システムを取り上げたケーススタディで、レイテンシ、メモリ使用率、コスト効率の定量的な改善を示しています。

  • これらのソリューションを本番環境に配置し、スケーリングするためのベストプラクティス。

この記事を読み終えると、読者は、実用的な例とAIパフォーマンスメトリクスに支えられた、コストを削減しつつAIのパフォーマンスを向上させるための包括的で実行可能な戦略を得ることができます。

MongoDB は柔軟なスキーマ、効率的なインデックスの作成、分散されたアーキテクチャで知られており、組織は必要に応じてデータインフラストラクチャをオンデマンドで増やすことができます。Fireworks.AI の最先端のモデル調整機能と組み合わせると、エンタープライズは金銭的負担をかけずに、顕著な効率とパフォーマンスの向上を達成できます。

FireOptimizer と FireAttention の紹介: コア コンポーネント

この最適化されたアプローチの中心となるのは、MongoDB の柔軟で高性能なデータベースを Fireworks.AI のモデル調整プロセスと統合する FireOptimizer フレームワークです。

このフレームワークは、既存のハードウェアを使用してリクエスト処理を強化し、リソースの利用を最適化する手法である FireAttention などのソリューションにより、バッチ推論を高速化します。さらに、LoRA や QLoRA などの手法を含むパラメータ効率に優れた微調整(PEFT)は、トレースデータやラベルデータを使用して、特殊なタスクを効率的に完了するようにモデルを微調整し、移植性を高め、計算のフットプリントを削減します。

FireOptimizer

図1。適応型最適化と高品質の推論のための FireOptions アーキテクチャ

達成可能な主な利点は以下の通りです。

  • 推論の高速化: FireOptimizerの適応型推測実行により、さまざまなモデルにわたる本番ワークロードのレイテンシが最大3倍改善され、アプリケーションの応答性が常に高く保たれます。

  • 手間のかからない最適化:FireOptimizer は複雑な最適化プロセスを自動化しますので、お客様はアプリケーションの構築に専念でき、残りは弊社が取り扱います。

FireOptimizer フレームワークについて詳しく見ていきましょう。

LLM は通常、一度に 1 つの単語(またはトークン)を生成するため、特に長い出力の場合、応答が遅くなることがあります。このプロセスを加速するために、推測的デコードと呼ばれる手法が使用されます。これは、メインの 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.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間でシャードしたりします。

小さく効率的なモデルは、微調整を行うための固有の機会を持てるため、リソース効率を維持しつつ特定の適応が可能です。この分野では、クラウド、デバイス上、専用ハードウェアなど、さまざまな媒体向けに微調整または最適化された SLM 開発の競争が激化しており、絶えず研究が進められています。

これらの微調整手法は、次のように分類されます:

1

このカテゴリには、元の重みを変更せずに、既存の事前訓練済みモデルに追加の訓練可能なパラメータを導入するアプローチが含まれます。

  • アダプター:これらのメソッドは、事前訓練済みモデルのレイヤー間に、アダプターモジュールと呼ばれる小さな訓練可能なレイヤーを挿入することを含みます。これらのアダプターはタスク固有の変換を学び、事前にトレーニングされたパラメーターを変更せずに新しいタスクに適応できるようにします。

  • ソフトプロンプト:これらは入力シーケンスに追加されるトレーニング可能なベクトル埋め込みです。これらはガイダンスとして機能し、モデルの動作を望ましいタスクに向けて影響を与えます。

  • プレフィックス・チューニング:この手法では、入力シーケンスに学習可能なプレフィックスを追加します。このプレフィックスは、コアモデルのアーキテクチャを変更することなく、タスク固有の情報を学びます。

2

このアプローチでは、低ランク近似を用いて既存のモデルの重みを再パラメータ化し、学習可能なパラメータの数を減らします。

  • 低ランク適応(LoRA):LoRAは、低ランク行列を使用して、事前学習されたモデルの注意層における重みの更新を近似します。これにより、訓練可能なパラメータの数が大幅に減少します。

  • 量子化 LoRA (QLoRA): QLoRA は、量子化技術を取り入れることで LoRA を強化し、メモリ使用量と計算コストをさらに削減します。

3

このカテゴリでは、事前訓練されたモデルの特定のパラメーターを選択的に微調整することにより、計算効率を向上させることに焦点を当てています。

  • BitFit:このメソッドは、事前訓練されたモデルのバイアス項または他の特定のパラメーターのみを微調整し、計算効率を向上させます。

  • DiffPruning:この手法は、モデルの性能にほとんど寄与しないパラメータを特定して除き、学習可能なパラメータの数を削減します。

4

これらの戦略には、事前学習済みモデルの特定の層を戦略的に凍結し、他の層を微調整することで、適応プロセスを最適化することが含まれます。

  • 凍結と再構成(FAR):FAR では、事前学習済みモデルの特定の層を凍結し、残りの層を微調整してモデルの適応を最適化します。

  • FishMask:この技術は、特定のタスクに対する適応を最適化するために、レイヤーを選択的に凍結または微調整するマスクを使用します。

これらの中で最も人気のある手法は、PEFT ベースのものです。大規模な事前訓練済みモデルで使用される PEFT 技術は、パラメーターのごく一部を調整するだけで、新しいタスクに適応させることができます。このアプローチは、特にデータセットが小さい場合に過剰適合を防ぐのに役立ち、完全なファインチューニングと比較して計算量とメモリ要件を大幅に削減します。PEFT は、LLM における破滅的忘却も軽減します。これらの技術は、完全な再トレーニングを必要とせずにモデルを効率的にカスタマイズすることを可能にし、リソースが限られた環境に最適です。

PEFT LoRA 技術を採用することにより、トレースデータ(モデルの対話から生成されたデータ)とラベル付きデータ(特定のタスク用に明示的に注釈が付けられたデータ)の両方を利用できるため、比較的小規模なモデルを微調整して、広範な計算リソースを必要とせずに、特定のタスクで高いパフォーマンスを実現できます。

実用的な用途について強調するために、MongoDB によるクレジットカード アプリケーションのデモを行い、MongoDB が予測分析を用いた信用評価にどのように使用できるかを示し、生成系 AI を用いて信用評価の結果を説明し、LLM を用いた RAG アプローチによるクレジットカードの推奨を実行する方法を説明します。この微調整の例では、LLM を使用して信用格付けの説明を簡略化することに焦点を当てます。このアプリケーションは、ユーザープロファイルの生成、製品の推薦、要約タスクを用いた再ランク付けなど、さまざまな機能範囲を網羅しています。アプリケーションの設計とソースコードの詳細は、「MongoDB クレジットカード アプリケーション ソリューション ライブラリ ページ」で確認できます。

LLM は数十億のパラメータに対して複雑な計算を行う必要があるため、応答時間が遅くなる可能性があります。例として、クレジットカードの推奨を生成するには複数のLLMクエリが必要になる場合があり、合計応答時間は10~20秒(各クエリには5秒以上かかります)となります。さらに、LLM を数百万のユーザー向けに本番環境で使用し、増やすことは難しく、費用がかかる場合があります。

SLMを活用することにより、エンタープライズは処理速度とコスト効率を大幅に向上させることが可能です。SLM は計算能力が少なくて済むため、リソースが限られているデバイスに最適であり、応答が速くなり、運用コストが削減されます。

PEFT とその LoRA メソッドは、パラメーターのサブセットのみを最適化することで効率を大幅に向上させます。このアプローチにより、メモリ要件が削減され、運用コストが削減されます。MongoDBとのシナジーにより、データ処理が強化され、効率的なモデルチューニングプロセスが促進されます。

MongoDB は、シームレスなデータ管理とリアルタイム統合を提供し、運用効率を向上させる重要な役割を果たしています。トレースデータをJSON形式で保存し、効率的な検索と保存を可能にすることで、MongoDBはモデルの微調整プロセスに大きな価値を提供します。MongoDB は、同じデータに対する繰り返しのリクエストで LLM が不必要に呼び出されるのを避けるために、キャッシュレイヤーとしても機能します。

クレジット カード アプリケーションのデモの重要な点は、クレジットスコアまたはクレジット評価を明確に毎日のカスタマーで説明することです。Meta の LLaMA 3.1 - 405 Bなどの Frontier LLM は、顧客の代替クレジット スコアまたはクレジット レーティングを予測するために使用されるモデルから、ユーザー プロファイル パラメーター、モデル入力機能、機能の重要性などの要素を使用して、これらの説明を生成できます。ただし、効果的な推論と説明に必要なパラメータの数が限られているため、これらのタスクは SLM では一貫して達成できません。目的の結果を得るには、Fireworks AI微調整プラットフォームを使用して、上記で説明したファインチューニングプロセスを活用する必要があります。

次の手順では、プラットフォームを使用して SLM を微調整する方法を段階的に説明します。

このプラットフォームとツールを活用する方法は次のとおりです。

LLM の微調整プロセス

図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
@mdbcache
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」モデルの微調整を開始できます。

1
pip install firectl
2
firectl login
3
firectl create dataset <dataset_name> cc_cache.jsonl
4
firectl create sftj --base-model accounts/fireworks/models/llama-v3p1-8b-instruct --dataset <dataset_name> --output-model ccmodel --lora-rank 8 --epochs 1
5
微調整プロセスのモニタリング

図3。ファインチューニングプロセスのモニタリング

6
firectl deploy ccmodel

MongoDB と Fireworks.AI のシームレスな統合は、AI モデルのパフォーマンスを向上させるプロセスを、対費用効果が高く効率的な方法で合理化します。これは、上記で提供されている微調整に関するステップバイステップガイドで明示されています。

fireworks プラットフォームにモデルをサーバーレス API として配置した後、図2に示されているモデル id (models/ft-m88hxaga-pi11m) を使用して、選択した言語モデルフレームワークで微調整された SLM モデルを呼び出すことができます。

クレジットカードの推奨のために SLM を微調整した結果、素晴らしい成果が得られました:

上記の微調整手順を代替クレジットカード商品推奨プロセスのコンテキストでSLMモデルに適用したところ、微調整されたSLMを使用したプロセスの応答時間が大幅に改善されたことがわかりました。

  1. 応答時間の改善: 元々、大規模な 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
    @tiktok
    @mdbcache
    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

  2. メモリ削減: LLM は通常、8×80GB VRAM の範囲で大量のメモリを必要とします。SLM は約16 GB の VRAM メモリで効率的に動作し、メモリ使用量を97.5%削減します。

  3. ハードウェアの削減: LLM を配置するには、多くの場合、ハイエンドの GPU または複数のサーバーが必要です。SLMを使用すると、ハードウェア要件を大幅に削減でき、標準のCPUまたは単一のサーバーへの配置が可能になり、ハードウェアコストを大幅に削減できます。

MongoDBとFireworks AIの統合により、SLMの訓練の効率とコスト効果が大幅に向上します。このパートナーシップにより、高度なAIソリューションがより利用しやすく、経済的に実行可能になり、将来にわたってAI投資が保証されます。このコラボレーションの重要な価値提案には、以下のものが含まれます。

  • 所有権の総コストの削減 : Fireworks AI の LogRA およびqLoRA メソッドは、低ランクの整合性と量子化を適用して計算リソースの必要性を最小限に抑え、SM の微調整に関連するコストを削減します。MongoDBは、分散されたアーキテクチャ、柔軟なスキーマ、効率的なインデックスの作成でこれをサポートしており、データインフラストラクチャをオンデマンドで増やし、ストレージコストを最小限に抑え、キャパシティーと運用コストの両方を削減します(CapExとOpEx)。

  • データとAIの統合ワークフロー:MongoDBはリアルタイムデータ統合を促進し、AIモデルに即時にデータを提供することで、運用効率を向上させます。Fireworks AI の微調整ツールとの統合により、AIモデルが継続的に更新され、関連性が保たれる効率的なワークフローが実現され、意思決定が向上し、正確なインサイトが提供されます。

  • 堅牢な RAG ソリューション:MongoDB AtlasとFireworks AIのシームレスな組み合わせにより、RAGフレームワークの作成が効率化され、データのストレージと取得が向上します。MongoDB Atlas は埋め込みストレージ用のスケーラブルなプラットフォームを提供し、Fireworks AI は管理された LLM/SLM ホスティングやその他の機能を提供します。共に、関連情報の検索によってユーザーエクスペリエンスを向上させる、スケーラブルなインテリジェントなシステムを実現します。

この戦略を採用する組織は、AIパフォーマンスの向上、リソースの節約、将来にわたるソリューションを実現し、さまざまなセクターでイノベーションと競争優位性を推進します。

Fireworks AI のプラットフォームが推論速度とスループットを加速する方法:

  • Wei You Pan、MongoDB

  • Ashwin Gangadhar、MongoDB

  • Peyman Parsi, MongoDB

  • ベニー・チェン、Fireworks AI

  • Ayaan Momin、Fireworks AI

戻る

生成系 AI を活用したクレジットカード申請

項目一覧