ヒント
このガイドの説明に良く合うのが、MLflow トレースがここで説明されている概念をどのように表現しているかを示すトレース データ モデルガイドです。
トレースとは
機械学習 (ML) のコンテキストでのトレースとは、ML モデルの実行中のデータ フローと処理手順の詳細な追跡と記録を指します。 データ入力から予測出力まで、モデルの操作の各ステージに対する透明性と分析情報を提供します。 この詳細な追跡は、ML モデルのパフォーマンスのデバッグ、最適化、および理解に不可欠です。
スパンの概念
トレースのコンテキストでは、スパンはシステム内の 1 つの操作を表します。 開始時刻、終了時刻、操作に関するその他のコンテキスト情報などのメタデータをキャプチャします。 メタデータと共に、作業単位に提供される入力 (GenAI モデルの呼び出し、ベクター ストアからの取得クエリ、関数呼び出しなど) と、操作からの出力が記録されます。
次の図は、GenAI モデルの呼び出しと、スパン内の関連情報のコレクションを示しています。 スパンには、開始時刻、終了時刻、要求引数などのメタデータと、呼び出し呼び出しの入力と出力が含まれます。
トレースの概念
GenAI トレースのコンテキストでのトレースは、非同期的に呼び出され、プロセッサに記録される、有向非循環グラフ (DAG) のような Span イベントのコレクションです。 各スパンは、システム内の 1 つの操作を表し、開始時刻、終了時刻、その他のコンテキスト情報などのメタデータが含まれます。 これらのスパンはリンクされ、トレースが形成され、エンド ツー エンドプロセスの包括的なビューが提供されます。
- DAG に似た構造: DAG 構造は、一連の操作にサイクルがないことを保証し、実行のフローを理解しやすくします。
- スパン情報: 各スパンは、関数呼び出し、データベース クエリ、API 要求などの個別の作業単位をキャプチャします。 スパンには、操作に関するコンテキストを提供するメタデータが含まれます。
- 階層的な関連付け: スパンはアプリケーションの構造を反映しているため、さまざまなコンポーネントがどのように相互作用し、相互に依存しているかを確認できます。
これらのスパンを収集して分析することで、実行パスを追跡し、ボトルネックを特定し、システムのさまざまなコンポーネント間の依存関係と相互作用を理解できます。 このレベルの可視性は、問題の診断、パフォーマンスの最適化、GenAI アプリケーションの堅牢性の確保に不可欠です。
RAG アプリケーションでトレース全体がキャプチャできる内容を示すには、次の図を参照してください。
このアプリケーションに関係するサブシステムは、システムの品質と関連性に不可欠です。 最終段階のLLMと対話する際に、データの通る経路が把握できない場合、データの各要素を個別に、高度で退屈かつ費用のかかる手動検証によってのみ品質を達成できるアプリケーションが作成されます。
GenAI ChatCompletions のユース ケース
生成 AI(GenAI)アプリケーション、例えばチャット生成においては、モデルや GenAI を利用するアプリケーションの開発者にとって、トレースの重要性が大幅に増します。 これらのユース ケースでは、入力プロンプトに基づいて人間のようなテキストを生成します。 GenAI モデルを拡張するためのエージェントまたは情報取得を含む GenAI アプリケーションほど複雑ではありませんが、チャット インターフェイスはトレースの利点を得ることができます。 チャット セッションを介して GenAI モデルとの対話ごとのインターフェイスでトレースを有効にすると、コンテキスト履歴、プロンプト、入力、および構成パラメーター全体を出力と共に評価し、GenAI モデルに送信された要求ペイロードの完全なコンテキストをエンアキュレーションできます。
たとえば、次の図は、デプロイ サーバーでホストされているモデルを外部 GenAI サービスに接続するために使用される ChatCompletions インターフェイスの性質を示しています。
推論プロセスを取り巻く追加のメタデータは、課金、パフォーマンス評価、関連性、幻覚の評価、一般的なデバッグなど、さまざまな理由で役立ちます。 主要なメタデータには、次のものが含まれます。
- トークン数: 処理されたトークンの数。課金に影響します。
- モデル名: 推論に使用される特定のモデル。
- プロバイダーの種類: モデルを提供するサービスまたはプラットフォーム。
- クエリ パラメーター: 生成プロセスに影響を与える温度やトップ k などの設定。
- クエリ入力: 要求入力 (ユーザーの質問)。
- クエリ応答: クエリ パラメーターを使用して生成を調整する、入力クエリに対するシステム生成応答。
このメタデータは、生成された応答の品質とパフォーマンスにさまざまな設定がどのように影響するかを理解するのに役立ち、微調整と最適化に役立ちます。
高度な Retrieval-Augmented 生成 (RAG) アプリケーション
Retrieval-Augmented 生成 (RAG) などのより複雑なアプリケーションでは、効果的なデバッグと最適化のためにトレースが不可欠です。 RAG には、ドキュメントの取得や GenAI モデルとの対話など、複数のステージが含まれます。 入力と出力のみが表示されると、問題の原因や改善の機会を特定することが困難になります。
たとえば、GenAI システムで不十分な応答が生成された場合、問題は次のようになります。
- ベクター ストアの最適化: ドキュメント取得プロセスの効率と精度。
- 埋め込みモデル: 関連するドキュメントのエンコードと検索に使用されるモデルの品質。
- 参考資料: クエリ対象のドキュメントの内容と品質。
トレースを使用すると、RAG パイプライン内の各ステップを調査し、品質を判断できます。 トレースは、すべてのステージを可視化することで、取得プロセス、埋め込みモデル、または参照資料の内容のいずれにおいて、調整が必要な場所を特定するのに役立ちます。
たとえば、次の図は、単純な RAG アプリケーションを形成する複雑な相互作用を示しています。GenAI モデルは、最終的な出力生成応答をガイドする追加の取得データと共に繰り返し呼び出されます。
このような複雑なシステムでトレースを有効にしないと、問題やボトルネックの根本原因を特定するのは困難です。 次の手順は、実質的に "ブラック ボックス" になります。
- 入力クエリの埋め込み
- エンコードされたクエリ ベクターの戻り値
- ベクター検索の入力
- Vector Database から取得したドキュメント チャンク
- GenAI モデルへの最終的な入力
各要求に関連付けられた入力、出力、およびメタデータをキャプチャするようにインストルメンテーションを構成した 5 つの重要な手順を使用せずに、このようなシステムの応答に関する正確性の問題を診断すると、このようなアプリケーションをデバッグ、改善、または調整するための困難なシナリオが生じます。 応答性またはコストのパフォーマンス チューニングを検討する場合、これらの各手順の待機時間を把握できない場合、これらの各サービスの構成と手動インストルメンテーションが必要になる、まったく異なる課題が生じます。
MLflow でのトレースの始め方
MLflow でトレースを使用する方法については、 MLflow トレース ガイドを参照してください。
GenAI を超えて: 従来の機械学習のトレース
注
このドキュメントでは、トレースが最も価値の高い GenAI アプリケーションに焦点を当てていますが、MLflow Tracing は従来の ML ワークフローにも適用できます。 次のセクションでは、このユース ケースを完全にするために簡単に説明します。
従来の ML では、推論プロセスは比較的簡単です。 要求が行われると、入力データがモデルにフィードされ、データが処理され、予測が生成されます。
次の図は、入力データ、モデル サービス インターフェイス、およびモデル自体の関係を示しています。
このプロセスは完全に表示されます。つまり、入力と出力の両方が明確に定義され、エンドユーザーが理解できます。 たとえば、スパム検出モデルでは、入力は電子メールであり、出力は電子メールがスパムかどうかを示すバイナリ ラベルです。 推論プロセス全体が透過的であるため、送信されたデータと返された予測を簡単に判断できるため、定性モデルのパフォーマンスのコンテキスト内でほとんど無関係なプロセスを完全にトレースします。
ただし、トレースは、サーバーに対して行われた要求の処理の性質、モデルの予測の待機時間、およびシステムへの API アクセスのログ記録に関する追加の分析情報を提供するために、デプロイ構成の一部として含まれる場合があります。 待機時間とパフォーマンスの観点から推論要求に関連付けられたメタデータが監視およびログ記録されるこの従来の形式のトレース ログでは、これらのログは通常、モデル開発者やデータ サイエンティストがモデルの操作を理解するために使用されません。
次のステップ
これらの推奨されるアクションとチュートリアルを使用して、体験を続けます。
- トレースを使用してアプリをインストルメント化 する - GenAI アプリケーションにトレースを追加する方法について説明します
- アプリをデバッグして観察 する - トレースを使用してアプリケーションの動作を分析する
- トレースを使用して品質を向上させる - トレースを利用して体系的な改善を行う
リファレンス ガイド
関連する概念に関する詳細なドキュメントを確認します。
- トレース データ モデル - MLflow がトレースとスパンを表す方法を理解する
- SDK を使用したトレースのクエリ - プログラムによるトレース分析について学習する
- ログ評価 - トレースにフィードバックを添付する方法を理解する