NVIDIA GPU による世代 AI アプリケーションのモニタリング
大規模言語モデル (LLM) とジェネレーションAIを活用して実際のビジネス問題を解決するアプリケーションを構築する組織が増えています。これらのアプリケーションには、次のような特徴があります。
- 多くが Python を使用して記述されており、from などの市販の LLM モデルを使用しています。 オープンAI または アントロピック 。
- また、次のようなオープンソースモデルを利用する場合もあります。 メタのラマ 。
- 彼らは走り続ける NVIDIA GPU ハードウェア 通常は Kubernetes に搭載されています。
- また、次のようなフレームワークも使用しています。 ラングチェーン 合同会社の API の詳細を抽象化することです。
- また、次のようなベクターデータベースを使用しています 松ぼっくり と クロマ の埋め込みを保存するには 検索拡張世代 (RAG) 。
他のアプリケーションと同様に、LLMのパフォーマンスを維持し、最適なユーザーエクスペリエンスを提供するためには、オブザーバビリティが不可欠です。この記事では、Splunk Observability CloudでジェネレーションAIアプリケーションの監視を開始するために実行できる手順の概要を説明します。
オブザーバビリティとジェネレーティブAI
オープンテレメトリ Gen AI の分野では急速に勢いを増しています。いくつかのオープンソースプロジェクトでは、最も一般的なGen AI アプリケーションコンポーネントに OpenTelemetry が組み込まれています。
Splunk オブザーバビリティクラウドは OpenTelemetry のネイティブであるため、GenAI アプリケーションのモニタリングに適しています。この記事ではインストルメンテーションに OpenLIT を使用していますが、Splunk は一般的なエージェント AI フレームワークの多くを直接サポートしています。フレームワーク固有のインストルメンテーションガイダンスについては、以下を参照してください。 Splunk ヘルプ 。
Splunk Observability Cloudを使用して自社のジェネレーションAIアプリケーションにオブザーバビリティを追加する方法を見ていきましょう。
このユースケースでの Splunk ソフトウェアの使い方
ステップ 1: Splunk オブザーバビリティクラウドにアクセスする
まず、メトリクスとトレースデータを送信する Splunk オブザーバビリティクラウド組織が必要です。現在 Splunk Observability Cloud のお客様でない場合は、クラウドへのアクセスをリクエストできます。 Splunk オブザーバビリティクラウド無料版 ; クレジットカードは必要ありません。
ステップ 2: OpenTelemetry コレクターの Splunk ディストリビューションをデプロイする
Kubernetes 用 OpenTelemetry Collector の Splunk ディストリビューションを Helm チャートを使用してインストールし、Kubernetes アプリケーションを次のように定義、インストール、およびアップグレードできます。 ここで説明しました 。
Helm を使用してコレクターをインストールするコマンドは、次のようになります。
helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart helm repo update helm install splunk-otel-collector \ --set="splunkObservability.realm=$REALM" \ --set="splunkObservability.accessToken=$ACCESS_TOKEN" \ --set="splunkObservability.profilingEnabled=true" \ --set="clusterName=$CLUSTER_NAME" \ --set="environment=$ENVIRONMENT" \ --set="splunkPlatform.token=$HEC_TOKEN" \ --set="splunkPlatform.endpoint=$HEC_URL" \ --set="splunkPlatform.index=$INDEX" \ -f ./values.yaml \ splunk-otel-collector-chart/splunk-otel-collector
上のコマンドはという名前のファイルを参照していることに注意してください。
values.yaml
このファイルは、コレクターの設定をさらにカスタマイズするために使用されます。また、環境変数を使用してアクセストークンや HEC URL などの設定を定義します。
コレクタが実行されたら、に移動するとデータが入力されるはずです インフラストラクチャ -> クベルネテス -> クベルネテス・クラスタ 次に、クラスター名を検索します。
ステップ 3: NVIDIA GPU メトリクスをキャプチャする
ザ・ NVIDIA GPU オペレーター は通常、NVIDIA GPU ハードウェアを搭載した Kubernetes クラスタにデプロイされます。これは、この特殊なハードウェアを必要とするポッドにこの専用ハードウェアを利用できるようにするプロセスを簡素化するためです。
オペレーターには次のものが含まれます
/metrics
OpenTelemetry Collector で実行されている Prometheus レシーバーでスクレイピングしてメトリクスをキャプチャできるエンドポイント。
プロメテウスレシーバーは、を使用して追加できます
values.yaml
次のようなファイル
ここで見つかりました
。
次のようなコマンドを使用して変更を適用します。
helm upgrade splunk-otel-collector \ --set="splunkObservability.realm=$REALM" \ --set="splunkObservability.accessToken=$ACCESS_TOKEN" \ --set="splunkObservability.profilingEnabled=true" \ --set="clusterName=$CLUSTER_NAME" \ --set="environment=$ENVIRONMENT" \ --set="splunkPlatform.token=$HEC_TOKEN" \ --set="splunkPlatform.endpoint=$HEC_URL" \ --set="splunkPlatform.index=$INDEX" \ -f ./values.yaml \ splunk-otel-collector-chart/splunk-otel-collector
結果のメトリクスから GPU インフラストラクチャに関する豊富な情報が得られ、ハードウェアが効率的に使用されているかどうか、または GPU の容量が不足するリスクがあるかどうかを把握できるため、エンドユーザーに悪影響が及ぶ前に対策を講じることができます。
ステップ 4: Splunk オブザーバビリティクラウド向けに Python アプリケーションをインストルメントする
OpenTelemetry Python の Splunk ディストリビューションの Python エージェントは、サポートされているライブラリに動的にパッチを適用することで、Python アプリケーションを自動的にインストルメントできます。以下に従ってください。 手順はこちら Python ベースの Gen AI アプリケーションからのメトリクスとトレースの収集を開始します。
アクティベート 常時稼働プロファイリング アプリケーションの CPU コールスタックもキャプチャしたい場合。
アプリケーションがインストルメントされると、サービスマップにはさまざまなアプリケーションコンポーネント間の相互作用が表示されます。
ステップ 5: OpenLit によるインストルメンテーションの強化
OpenTelemetry Python の Splunk ディストリビューションでキャプチャされたメトリクスとトレースデータは、次のようなオープンソースソリューションで強化できます。 OpenLit 。
これを行うために必要な手順は 2 つだけです。まず、openlit パッケージをインストールします。
pip install openlit
次に、openlit パッケージを Python コードにインポートし、初期化します。
import openlit … # Initialize OpenLIT instrumentation openlit.init()
OpenLit がデータのエクスポート先を認識できるように、アプリケーションのデプロイに使用する Kubernetes マニフェストファイルにいくつかの環境変数を設定する必要があります。
env:
- name: OTEL_SERVICE_NAME
value: "my-service"
- name: OTEL_RESOURCE_ATTRIBUTES
value: "deployment.environment=my-environment"
- name: SPLUNK_OTEL_AGENT
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://$(SPLUNK_OTEL_AGENT):4317"
- name: OTEL_EXPORTER_OTLP_PROTOCOL
value: "grpc"
これをデプロイすると、商用およびオープンソースの LLM へのすべての呼び出しや、ベクターデータベースとのやり取りなど、より詳細なトレースデータが表示されます。
LLMを呼び出すスパンをクリックすると、使用されたトークンの数、コスト、さらにはプロンプトと応答の全文などの追加データが表示されます。
プロンプトと応答の詳細はデバッグに非常に役立ちますが、実稼働環境ではPIIデータがキャプチャされないように無効にする必要があります。そのためには、コードを以下のように (および) 変更してください。
ここで説明されています
):
openlit.init(trace_content=False)
AlwaysOn Profiling を有効にした場合、トレースの一部のスパンでキャプチャされた CPU コールスタックも表示されます。これにより、CPU 時間がどこで消費されているかが正確にわかります。
ステップ 6: データの使用を開始する
これで、詳細なメトリクスとトレースのデータを収集できたので、そのデータを使用してアプリケーションのパフォーマンスを把握できます。レイテンシーやエラーが発見されたら、次のような機能を使用できます。 タグ:スポットライト 根本原因を迅速に把握できます。
たとえば、アプリケーションが OpenAI を呼び出すと、次のようなことが起こります。
openai.RateLimitError errors
これは、アプリケーションが一定期間に OpenAI API に送信したリクエストの数が多すぎる場合に発生する可能性があります。このエラーがわかったところで、以下を使用してください。
OpenAI からのガイダンス
これらのエラーを減らすかなくすため。
サマリー
この記事では、LLM とジェネレーティブ AI を活用するアプリケーションを構築するために組織が使用しているテクノロジーの概要を説明しました。
次に、Splunk Observability Cloudを使用してジェネレーションAIアプリケーションの監視を開始するために実行できる手順のリストを示しました。
- Splunk オブザーバビリティクラウドにアクセスしましょう。
- OpenTelemetry コレクターの Splunk ディストリビューションをデプロイします。
- NVIDIA GPU メトリクスをキャプチャします。
- Python アプリケーションを Splunk オブザーバビリティクラウド向けにインストゥルメントします。
- OpenLit でインストルメンテーションを強化しましょう。
- データの使用を開始します。
これらの手順で問題が発生した場合は、お問い合わせください Splunk のエキスパート 助けて

