Azure OpenAI モデルのログと監視を実装する

Azure AI サービス
Azure API Management
Azure Monitor
Microsoft Entra ID

このソリューションを使用すると、Azure OpenAI Service API のエンタープライズ デプロイに対する、包括的なログ、監視、強化されたセキュリティが提供されます。 このソリューションを使用すると、高度なログ機能で API 使用状況やパフォーマンスを追跡したり、堅牢なセキュリティ対策で悪意のあるアクティビティを予防して機密データを保護したりできます。

アーキテクチャ

Diagram that shows an architecture that provides monitoring and logging for Azure OpenAI.

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  1. クライアント アプリケーションは、Azure OpenAI エンドポイントにアクセスして、テキスト生成 (入力候補) とモデル トレーニング (ファイン チューニング) を実行します。

  2. Azure Application Gateway は、Azure OpenAI モデルに単一のエントリポイントを提供し、API の負荷分散を提供します。

    Note

    モデルのファイン チューニング、デプロイ、ファイン チューニングされたモデルの推論など、ステートフル操作の負荷分散はサポートされていません。

  3. Azure API Management を使用すると、Azure OpenAI モデルのセキュリティ制御、監査、監視ができます。
    a. API Management での強化されたセキュリティ アクセスは、サブスクリプションベースのアクセス許可を持つ Microsoft Entra グループを介して付与されます。
    b. 監査は、Azure Monitor 要求ログを介し、モデルとのすべてのやり取りに対して有効になります。
    c. 監視を使用すると、使用状況の追跡可能性に関するプロンプト情報やトークン統計など、Azure OpenAI モデル使用状況の KPI やメトリックの詳細が提供されます。

  4. API Management は、すべての Azure リソースに Azure Private Link 経由で接続します。 この構成を適用すると、プライベート エンドポイント経由のすべてのトラフィックでセキュリティが強化され、トラフィックをプライベート ネットワーク内に制限できます。

  5. 複数の Azure OpenAI インスタンスを使用すると、API をスケールアウトして使用し、サービスの高可用性とディザスター リカバリーを確保できます。

Components

  • Application Gateway。 アプリケーション ロード バランサーを使用すると、Azure OpenAI API のすべてのユーザーに、モデルが完了するまでのとても高速な応答と、最適なスループットを確保するのに役立ちます。
  • API Management。 バックエンドの Azure OpenAI エンドポイントにアクセスするための API 管理プラットフォームです。 Azure OpenAI でネイティブには使用できない、監視とログを提供します。
  • Azure Virtual Network。 クラウド内のプライベート ネットワーク インフラストラクチャです。 ネットワーク分離を提供し、モデルのすべてのネットワーク トラフィックを Azure OpenAI にプライベートでルーティングします。
  • Azure OpenAI。 モデルをホストし、生成モデルの完了出力を提供するサービスです。
  • モニター。 エンドツーエンドのアプリケーション監視。 Kusto 照会言語を使用してアプリケーション ログにアクセスできます。 また、ダッシュボード レポート、監視、アラート機能も使用できます。
  • Azure Key Vault。 アプリケーションで使用されるキーとシークレット用の、セキュリティ強化されたストレージです。
  • Azure Storage。 クラウド上のアプリケーション ストレージです。 Azure OpenAI に、モデルのトレーニング成果物へのアクセシビリティを提供します。
  • Microsoft Entra ID。 セキュリティ強化された ID マネージャーです。 アプリケーションと、アプリケーションをサポートするプラットフォーム サービスに対するユーザー認証と認可を有効にします。 また、最小特権の原則をすべてのユーザーに確実に適用する、グループ ポリシーを提供します。

代替

Azure OpenAI には、ネイティブのログと監視が提供されます。 このネイティブ機能を使用してサービスのテレメトリを追跡できますが、既定のコグニティブ サービス ログでは、サービス (プロンプト、トークン、モデルなど) の入出力は追跡も記録もされません。 これらのメトリックは、コンプライアンス、およびサービスが期待どおりに動作することを保証するために特に重要です。 また、Azure OpenAI にデプロイされた大規模言語モデルとのやり取りを追跡することで、組織がサービスをどのように使用しているかを分析し、スケーリングとリソース割り当ての決定に役立つ、コストと使用パターンを識別できます。

次の表は、既定の Azure OpenAI ログで提供されるメトリックと、このソリューションで提供されるメトリックの比較を示しています。

メトリック 既定の Azure OpenAI ログ このソリューション
要求数 x x
データ入力 (サイズ) / データ出力 (サイズ) x x
Latency x x
トークン トランザクション (合計) x x
呼び出し元 IP アドレス x (最後のオクテットはマスク) x
モデル使用率 x
トークン使用率 (入出力) x x
入力プロンプト詳細 x (応答文字数に 8,192 の制限あり)
出力完了詳細 x (応答文字数に 8,192 の制限あり)
デプロイ操作 x x
埋め込み操作 x x (応答文字数に 8,192 の制限あり)

シナリオの詳細

生成 AI モデルを使用する大企業は、責任ある使用と企業コンプライアンスを遵守するため、これらのモデル使用における監査とログを実装する必要があります。 このソリューションにより、AI モデルとのすべてのやり取りにエンタープライズ レベルのログと監視が提供され、モデルの悪用が軽減し、セキュリティとコンプライアンス基準を確実に遵守する役に立ちます。 このソリューションでは、ほぼ変更なしで既存コード ベースを活用し、既存 API を Azure OpenAI と統合します。 管理者は、レポート用にサービス使用状況を監視することもできます。

このソリューションには、次の利点があります。

  • ソース IP アドレスを追跡できる、Azure OpenAI モデル実行の包括的なログ。 ログ情報には、ユーザーがモデルに送信するテキストと、モデルから受信するテキストが含まれます。 このログは、責任を伴ったモデルの使用と、サービスの承認されたユース ケース内でのモデルの使用を確保する役に立ちます。
  • トラフィックが 1 つの Azure OpenAI サービスの制限を超えた場合でも、ユーザー要求を確実に処理できるモデル API の高可用性。
  • 最小特権の原則が確実に適用されるようにするための、Microsoft Entra ID によって管理されるロールベースのアクセス。

使用状況監視のクエリ例

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend modelkey = substring(parse_json(BackendResponseBody)['model'], 0, indexof(parse_json(BackendResponseBody)['model'], '-', 0, -1, 2))
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])['total_tokens']
| extend ip = CallerIpAddress
| summarize
    sum(todecimal(prompttokens)),
    sum(todecimal(completiontokens)),
    sum(todecimal(totaltokens)),
    avg(todecimal(totaltokens))
    by ip, model

出力:

Screenshot that shows the output of usage monitoring.

プロンプト使用状況監視のクエリ例

ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend prompttext = substring(parse_json(parse_json(BackendResponseBody)['choices'])[0], 0, 100)

出力:

Screenshot that shows the output of prompt usage monitoring.

考えられるユース ケース

  • 生産性促進を目的とした、内部エンタープライズ ユーザー向けの Azure OpenAI デプロイ
  • 内部アプリケーション用 Azure OpenAI の高可用性
  • 規制対象の業界における Azure OpenAI 使用のセキュリティ強化

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

[信頼性]

信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。

このシナリオにより、エンタープライズ ユーザー向け大規模言語モデルの高可用性が確保されます。 Azure アプリケーション ゲートウェイにより、アプリケーションへの高速かつ一貫したアクセスの確保に効果的なレイヤー 7 アプリケーション配信メカニズムが提供されます。 API Management を使用すると、モデルへのアクセスを構成、管理、監視できます。 Storage、Key Vault、Virtual Network などのプラットフォーム サービス固有の高可用性により、アプリケーションに高い信頼性が確保されます。 最後に、Azure OpenAI の複数インスタンスにより、アプリケーション レベルの障害が発生した場合のサービス回復性が確保されます。 これらのアーキテクチャ コンポーネントは、エンタープライズ規模でアプリケーションの信頼性を確保するのに役立ちます。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

このシナリオでは、クラウド サービスのアプリケーション レベルとネットワーク レベルに、分離のベスト プラクティスを実装することで、データ流出とデータ漏えいのリスクを軽減します。 モデルに入力される、機密データを含む可能性のあるすべてのネットワーク トラフィックは、プライベート ネットワークに分離されます。 このトラフィックは、パブリック インターネット ルートを通過しません。 Azure ExpressRoute を使用すると、企業イントラネットへのネットワーク トラフィックをさらに分離し、エンドツーエンドのネットワーク セキュリティを確保できます。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させることです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

このシナリオの実行コストを確認するのに役立つよう、Azure 料金計算ツールにすべてのサービスを事前構成済みです。 ユース ケースによる価格の違いを理解するには、予想されるトラフィックに合わせて該当の変数を変更します。

次の 3 つのサンプル コスト プロファイルは、トラフィック量に基づいた見積もりを提供します。 (見積もりでは、ドキュメントに約 1,000 個のトークンが含まれると想定しています)。

  • : 1 か月あたり 10,000 のドキュメントを処理する場合。
  • : 1 か月あたり 100,000 のドキュメントを処理する場合。
  • : 1 か月あたり 10,000,000 のドキュメントを処理する場合。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • Ashish Chauhan | クラウド ソリューション アーキテクト (データ / AI)
  • Jake Wang | クラウド ソリューション アーキテクト (AI / Machine Learning)

その他の共同作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ