Docs Menu
Docs Home
/

MongoDB Atlasと Fireworks AIによるAIパフォーマンスの最適化

MongoDB Atlasと Fireworks AI は、 AI推論の高速化、コストの削減、効率的な RAG アプリケーションを提供します。

ユースケース: 生成系 AIModel Performance Tuning

業種: 金融サービス

製品: MongoDB Atlas

パートナー: Fireworks AILangChain

AIアプリケーションには高いパフォーマンスとコスト効率 の両方が必要です。エンタープライズは、速度と効率の向上がコストのメリットにつながるように、価格とパフォーマンスの比率を最適化する必要があります。MongoDBと Fireworks AI は、コストを削減しつつパフォーマンスを向上させるソリューションを提供します。MongoDB がデータ管理を取り扱う間、ファイアワークAI がモデルを最適化します。また、運用コストを最小限に抑えながら、レイテンシとスループットが向上します。

このソリューションは、次のトピックに対処します。

  • MongoDBとFireworks AIでパフォーマンスを向上させ、TCOを削減するメソッド

  • MongoDB Atlasと生成系AIモデルでRAGを最適化するためのキャッシュ戦略

  • LM から SVM を微調整することで、同等の応答品質でパフォーマンスが向上します

  • モデルの微調整、推論の迅速化、ハードウェア要件の削減を実現するためにAIプラットフォームを導入することで、

  • レイテンシ、メモリ使用量、コスト効果が定量化されたクレジットカードの推奨ケーススタディ

  • 本番環境の配置とスケーリングに関するベストプラクティス

このソリューションは、具体的な例とパフォーマンス メトリクスにサポートされている、コストを削減してAIパフォーマンスを向上させるための実行可能な戦略を提供します。

MongoDB の 柔軟なスキーマ、効率的なインデックスの作成、分散されたアーキテクチャにより、組織はオンデマンドでデータ インフラストラクチャを増やすことができます。Fireworks AI のモデル最適化機能と組み合わせることで、このソリューションはコストを削減しつつAI のパフォーマンスを向上させます。

FireOptimizerフレームワークは、 MongoDB をFireworks AI のモデル調整プロセスと統合し、次のコンポーネントによるバッチする推論を高速化します。

  • Firetention:リクエスト処理を強化し、リソース使用を最適化

  • パラメーター効率の微調整: LoRA メソッドと QLoRA メソッドを使用して、データをトレースまたはラベル付けしてモデルを効率的に微調整し、計算要件を削減します

FireOptimizer

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

このソリューションには、次のメリットが得られます。

  • 推論速度の向上: FireOptimizer の適応型推測的実行により、本番ワークロードのレイテンシが最大 3x 改善されます。

  • 自動最適化: FireOptimizer は複雑な最適化プロセスを自動的に取り扱います。

LVM は一度に 1 つのトークンを生成するため、長時間の出力の応答が遅くなります。推測的デコードは、メインの LLM がプロセスしている間に複数のトークン候補を生成するためにより小さいドラフトモデルを使用することで、このプロセスを高速化します。LLM は正確な予測のみを評価し保持します。

ジェネリック データを使用して訓練された従来のドラフト モデルは一般的なタスクには適していますが、コーディングや財務分析などの特殊なドメインでは精度が低くなります。

Fireworks AIでは、適応型推測的実行により、汎用モデルではなくドメイン固有のモデルまたはユーザープロファイルにカスタマイズされたモデルを使用することで、このアプローチが改善されます。この最適化により、コード生成の精度と成功率が 29% から 76% のように向上し、推論コストが削減され、レイテンシが最大 3x まで改善されます。

8K-32K トークンを使用するプロンプトが長いと、ドキュメント分析やコード完了などのアプリケーションのパフォーマンスのボトルネックが生じます。ファイアワーク AI の FireAttention V2 は、次の機能を通じて長時間コンテキスト タスクのプロセシングを12x高速化することで、この挑戦に対処します。

  • 注意のスケーリングの最適化: 長い入力の計算オーバーヘッドを軽減

  • マルチホスト配置: GPU 全体にワークロードを効率的に分散

  • 高度なカーネル: 操作を効率化し実行を高速化

Firetention V3 は、NVIDI のコスト効率が高い代替手段として、AMD の Mi300 CPU へのサポートを拡張します。パフォーマンスの向上には、次のものが含まれます。

  • 1.4xプライマリ1.8xLLaMA 8B や 70B などのモデルのより高いスループット

  • 低レイテンシ シナリオでは最大 5.5x の速度向上

  • カーネルの再設計とメモリ使用量の最適化によるパフォーマンスの向上

これらの機能により、ドメイン固有のタスクの長時間コンテキスト入力を効率的にプロセシングできるようになります。最適化された Atlas のメカニズムは、計算のオーバーヘッドを削減し、訓練サイクルをより速くし、マルチホスト CPU の配置全体でバッチするサイズを大きくします。

Fireworks AIの最適化は、スループットとコスト効率を最大化する 3 つの手法を通じて適応型推測を超えて拡大します。

  • 適応型キャッシュ: 頻繁に計算を再利用して冗長な作業をスキップし、高トラフィック ワークロードのレイテンシを30-50% 削減します

  • カスタマイズ可能な数量化: 4-/8 ビットの精度とモデルの品質をバランスさせ、バッチする処理タスクの精度を 99% 以上維持し、速度を 2 倍にします

  • シャーディングの廃止: 複雑なタスクのために複数の軽量モデルのコピーをホストしたり、大規模なモデルを CPU でシャーディングたりして、ハードウェアロード タイプにワークロード割り当てをカスタマイズします。

より小さく、効率的なモデルは、リソース効率を維持しつつ、特定の適応型を微調整する機会を提供します。クラウド、オンデバイス、専用ハードウェア配置向けに SLS を最適化するための調査を継続します。

微調整には、次のようなものがあります。

1

このカテゴリでは、元の重みを変更せずに、既存の事前訓練されたモデルに追加の訓練可能なパラメーターを紹介します。

  • アダプター: モデル レイヤーの間に小さく、訓練可能なレイヤーを挿入します。アダプターは、事前訓練されたパラメーターを変更せずにタスク固有の変換を学びます。

  • ソフト プロンプト: 入力シーケンスに追加された訓練可能なベクトル埋め込み。これらはモデル動作を目的のタスクにガイド。

  • プレフィックス調整: 入力シーケンスに訓練可能なプレフィックスを追加します。プレフィックスは、コアモデルを変更せずにタスク固有の情報を学ぶ。

2

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

  • 低ランクのアダプティブ: 低ランクのマトリックスを使用して、アタッチ レイヤーの重みの更新を近似します。これにより、訓練可能なパラメータが減少します。

  • 量子化されたLoRA: 量子化の手法で LRA を強化し、メモリ使用量と計算コストを削減します。

3

このカテゴリは、特定の事前訓練されたモデル パラメーターを選択的に微調整し、 計算効率を向上させます。

  • BitFit: バイナリ 期間またはその他の特定のパラメーターのみを微調整し、計算効率を向上させます。

  • DiffPruning: モデル パフォーマンスに最小限関連するパラメーターを識別して除き、訓練可能なパラメーターを減らします。

4

これらの戦略では、特定の事前訓練されたモデル レイヤーをフリーズし、他のモデル レイヤーを微調整して適用を最適化します。

  • 固定して再構成する: 特定のモデル レイヤーを固定し、残りのレイヤーを微調整して適用を最適化します。

  • FindMask: マスクを使用して、特定のタスクのレイヤーを選択的にフリーズしたり、微調整したりします。

最も一般的な手法は PEFT です。PEFT メソッドは、少数のパラメーターを調整することで、大規模な事前訓練されたモデルを新しいタスクに適応させます。このアプローチは、オーバーフィックスを防止し、完全な微調整と比較して計算とメモリの要件を削減し、LM の因果忘れを軽減します。PEFT を使用すると、完全な再学習なしで効率的なモデル カスタマイズが可能になるため、リソースが制限された環境に最適です。

モデル インタラクションから生成されたトレース データと、タスクに明示的に注釈が付けられたラベル付けされたデータを使用して、広範な計算リソースなしで特定のタスクで高パフォーマンスを実現するよう、小さいモデルを微調整できます。

実際のアプリケーションでは、この例ではMongoDBクレジットカードアプリケーションのデモを使用します。このデモでは、予測分析を使用してクレジットスコアリング用のMongoDBを説明し、生成系AIを使用してクレジットリング結果を説明し、LVM と RG を使用してクレジットカードの推奨を実行します。この微調整例では、LVM を使用したクレジット評価の説明の簡素化に焦点を当てています。このアプリケーションには、ユーザー プロファイルの生成、製品の推奨、合計による再ランク付けが含まれています。アプリケーションの設計とソースコードの詳細については、MongoDBクレジット カード アプリケーション ソリューション ライブラリのページを参照してください。

LVM では、数億のパラメータにわたる複雑な計算が行われるため、応答時間が遅くなります。クレジットカードの推奨事項には複数の LLM クエリが必要になるため、合計応答時間は 10 ~ 20 秒になり、各クエリには 5 以上かかります。LLMs を数百万のユーザー向けに配置および増やすのは困難であり、コストがかかります。

  • 小規模言語モデル: SLM はより高速なプロセシングとコスト効率を提供します。SVM は必要な計算能力が低いため、リソースが限られているデバイスに適しています。より高速な応答を提供し、運用コストを削減します。

  • PEFT と LoRA: PEFT と LoRA はパラメーター サブセットを最適化することで効率を向上させます。このアプローチにより、メモリ必要と運用コストが削減されます。MongoDB統合により、データ処理が強化され、効率的なモデル調整が可能になります。

  • MongoDB: MongoDB は、 運用効率を向上させるデータ管理とリアルタイム統合を提供します。MongoDB はトレースデータを JSON として保存し、効率的な検索とストレージを可能にし、モデルの微調整に価値を加えます。MongoDB は、同一のリクエストに対する繰り返しの LLM 呼び出しを回避するためのキャッシュレイヤーとして機能します。

クレジット カード アプリケーションのデモでは、明確な言語でカスタマーにクレジットスコアを説明します。メタの LLaMA 3.1-405B のような LLM は、ユーザープロファイルパラメータ、モデル入力機能、カスタマーのクレジットスコアまたは評価を予測するモデルの重要性を使用してこれらの説明を生成します。SVM では効果的な理由付けと説明のパラメーターが限られているため、これらのタスクを一貫して実行することはできません。目的の結果を得るには、 Fireworks AI微調整プラットフォームで微調整プロセスを使用します。

SM を微調整するプロセスでは、次のワークフローが使用されます。

LLM の微調整プロセス

図 2. LLM/SLM の微調整プロセス

微調整プロセスは、関連するタスク固有のデータを収集するから始まります。図 2 は、MongoDB Atlas がクレジットカードアプリケーションの入力に基づいて特定のユーザーの LLM/SLM 応答をキャッシュする方法を示しています。ユーザーは、ウェブUIでクレジットプロファイルをシミュレートできます。次のPythonコード スニペットは、MongoDB Atlasで LLM 応答をキャッシュするように修飾子を設定する方法を示しています。

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 application.
Args:
prompt (str): The prompt to pass to the LLM.
"""
response = llm.invoke(prompt)
return response

図に示すように、シミュレーターを使用して訓練データセットを生成できます。この例では、階層化されたサンプリングによってユーザー プロファイルをシミュレートし、すべての 3 つのクレジット評価(良好、標準、低)で等しいサンプルを選択します。このデモは、約 1,300 のサンプル応答を生成します。

生成された応答を、微調整のために 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モデルのパフォーマンスがコストを抑えて向上する方法が示されています。

モデルを サーバーレスAPIとして Fireworks プラットフォームに配置した後、図 2 に表示されているモデル id models/ft-m88hxaga-pi11m を使用して、希望言語モデルフレームワークを使用して微調整された SM モデルを呼び出します。

クレジットカードの推奨事項用に SLM を微調整すると、次の結果が得られます。

  1. 応答時間の改善: LLM 応答時間は平均 5 秒です。SVM では、これが約 0.15 秒に短縮され、19xレイテンシが削減されます。

    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
    invoke LLM method can invoke either a LLM or SLM based on the
    Fireworks Model ID initialized.
    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. メモリ削減: LVM には通常、8x80 GB VRAM が必要です。SVM は 16 GB VRAM で動作し、メモリ使用量を 97.5% 削減します。

  3. ハードウェアの削減: LVM にはハイエンドの CPU または複数のサーバーが必要です。SLMs は標準の CPU または単一サーバーに配置できるため、ハードウェアコストを削減できます。

  • 所有権の合計コストの削減: LogRA および QLoRA メソッドにより、SM の微調整のための計算要件が削減されます。MongoDB の分散されたアーキテクチャと効率的なインデックスの作成により、データインフラをオンデマンドで増やすことができ、ストレージコストを最小限に抑え、運用コストを削減します。

  • データとAIワークフローを効率化: MongoDB はAIモデルのリアルタイムデータ統合を可能にします。Fireworks AI の微調整ツールと統合により、モデルが更新され、意思決定の精度が向上するワークフローが作成されます。

  • RAGソリューションの強化: MongoDB AtlasとFireworks AIを組み合わせて作成することで、ストレージと取得が改善されたRAGフレームワークが作成されます。MongoDB Atlas はスケーラブルな埋め込みストレージを提供し、Fireworks AI はマネージド LLM/SLM ホスティングを提供します。

  • Wei You Pan、MongoDB

  • Ashwin Gangadhar、MongoDB

  • Peyman Parsi, MongoDB

  • ベニー・チェン、Fireworks AI

  • Ayaan Momin、Fireworks AI

戻る

エージェント的AIによるドキュメント インテリジェンス

項目一覧