メインコンテンツへスキップ

Splunk Lantern

NVIDIA GPU による世代 AI アプリケーションのモニタリング

大規模言語モデル (LLM) とジェネレーションAIを活用して実際のビジネス問題を解決するアプリケーションを構築する組織が増えています。これらのアプリケーションには、次のような特徴があります。

他のアプリケーションと同様に、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 などの設定を定義します。

コレクタが実行されたら、に移動するとデータが入力されるはずです インフラストラクチャ -> クベルネテス -> クベルネテス・クラスタ 次に、クラスター名を検索します。

K8s Cluster.png

ステップ 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 の容量が不足するリスクがあるかどうかを把握できるため、エンドユーザーに悪影響が及ぶ前に対策を講じることができます。

GPU Dashboard.png

ステップ 4: Splunk オブザーバビリティクラウド向けに Python アプリケーションをインストルメントする

OpenTelemetry Python の Splunk ディストリビューションの Python エージェントは、サポートされているライブラリに動的にパッチを適用することで、Python アプリケーションを自動的にインストルメントできます。以下に従ってください。 手順はこちら Python ベースの Gen AI アプリケーションからのメトリクスとトレースの収集を開始します。

アクティベート 常時稼働プロファイリング アプリケーションの CPU コールスタックもキャプチャしたい場合。

アプリケーションがインストルメントされると、サービスマップにはさまざまなアプリケーションコンポーネント間の相互作用が表示されます。

Service Map.png

ステップ 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 へのすべての呼び出しや、ベクターデータベースとのやり取りなど、より詳細なトレースデータが表示されます。

Trace.png

LLMを呼び出すスパンをクリックすると、使用されたトークンの数、コスト、さらにはプロンプトと応答の全文などの追加データが表示されます。

Trace with Span Attributes.png

プロンプトと応答の詳細はデバッグに非常に役立ちますが、実稼働環境ではPIIデータがキャプチャされないように無効にする必要があります。そのためには、コードを以下のように (および) 変更してください。 ここで説明されています ):
openlit.init(trace_content=False)

AlwaysOn Profiling を有効にした場合、トレースの一部のスパンでキャプチャされた CPU コールスタックも表示されます。これにより、CPU 時間がどこで消費されているかが正確にわかります。

Trace with Profiling.png

ステップ 6: データの使用を開始する

これで、詳細なメトリクスとトレースのデータを収集できたので、そのデータを使用してアプリケーションのパフォーマンスを把握できます。レイテンシーやエラーが発見されたら、次のような機能を使用できます。 タグ:スポットライト 根本原因を迅速に把握できます。

Tag Spotlight.png

たとえば、アプリケーションが OpenAI を呼び出すと、次のようなことが起こります。 openai.RateLimitError errors これは、アプリケーションが一定期間に OpenAI API に送信したリクエストの数が多すぎる場合に発生する可能性があります。このエラーがわかったところで、以下を使用してください。 OpenAI からのガイダンス これらのエラーを減らすかなくすため。

サマリー

この記事では、LLM とジェネレーティブ AI を活用するアプリケーションを構築するために組織が使用しているテクノロジーの概要を説明しました。

次に、Splunk Observability Cloudを使用してジェネレーションAIアプリケーションの監視を開始するために実行できる手順のリストを示しました。

  1. Splunk オブザーバビリティクラウドにアクセスしましょう。
  2. OpenTelemetry コレクターの Splunk ディストリビューションをデプロイします。
  3. NVIDIA GPU メトリクスをキャプチャします。
  4. Python アプリケーションを Splunk オブザーバビリティクラウド向けにインストゥルメントします。
  5. OpenLit でインストルメンテーションを強化しましょう。
  6. データの使用を開始します。

これらの手順で問題が発生した場合は、お問い合わせください Splunk のエキスパート 助けて