切断された環境での Docker コンテナーの使用

コンテナーを使用すると、独自の環境で Cognitive Services API を実行でき、セキュリティとデータ ガバナンスの固有の要件に対応できます。 切断されたコンテナーを使用すると、これらの API のいくつかをインターネットから切断して使用できます。 現時点では、次のコンテナーをこの方法で実行できます。

切断されたコンテナーは、次の Applied AI Services でも使用できます。

オフライン環境で Docker コンテナーの実行を試みる前に、コンテナーを正常にダウンロードして使用するための手順がわかっていることを確認してください。 次に例を示します。

  • ホスト コンピューターの要件と推奨事項。
  • コンテナーをダウンロードするために使用する Docker pull コマンド。
  • コンテナーが実行されていることを検証する方法。
  • 実行後に、コンテナーのエンドポイントにクエリを送信する方法。

切断された環境でコンテナーを使用するためのアクセスを要求する

インターネットから切断されたコンテナーへのアクセスを要求するには、要求フォームに記入して送信します。

このフォームでは、ユーザー、会社、コンテナーを使用するユーザー シナリオに関する情報が要求されます。 フォームを送信すると、Azure Cognitive Services チームがそれを確認して、10 営業日以内に決定事項を含むメールを返信します。

重要

  • このフォームでは、Azure サブスクリプション ID に関連付けられているメール アドレスを使用する必要があります。
  • コンテナーの実行に使用する Azure リソースは、承認された Azure サブスクリプション ID で作成されている必要があります。
  • Microsoft からのアプリケーションの状態に関する更新については、電子メール (受信トレイと迷惑フォルダーの両方) を確認してください。

承認されると、Microsoft Container Registry (MCR) からコンテナーをダウンロードしてから、そのコンテナーを実行できるようになります。これについては、記事の後半で説明します。

お使いの Azure サブスクリプションが承認されていない場合は、コンテナーを実行することができません。

アクセスできるのは、次の要件を満たすお客様に限定されます。

  • Microsoft Enterprise Agreement または同等の契約を組織が結んでいる必要があります。また、Microsoft の戦略的な顧客またはパートナーとして認定されている必要があります。
  • 切断されたコンテナーは完全にオフラインで実行されることになるため、ユース ケースは以下または同様の要件のいずれかを満たしている必要があります。
    • インターネットへの接続性がまったくない環境またはデバイス。
    • インターネットに断続的にアクセスできるリモートの場所。
    • どのような種類のデータもクラウドに返送しないという厳格な規制の下にある組織。
  • 指示に従って申請を完了してください - 承認に必要なすべての情報を確実に提供するために、申請全体を通じて提供されるガイダンスに細心の注意を払ってください。

切断された環境でコンテナーを使用するためのコミットメント プランを購入する

新しいリソースを作成

  1. Azure portal にサインインし、上の一覧にある該当するいずれかの Cognitive Services または Applied AI サービスに対して [新しいリソースを作成する] を選択します。

  2. リソースを作成するための該当する情報を入力します。 価格レベルとして [コミットメント レベルの切断済みコンテナー] を選択してください。

    注意

    • お客様が Microsoft によって承認されている場合にのみ、コミットメント レベルを購入するオプションが表示されます。
    • 価格の詳細は、単に例を示しているだけです。

    Azure portal でのリソースの作成を示すスクリーンショット。

  3. ページの下部にある [確認および作成] を選択します。 情報を確認し、[作成] を選択します。

必須パラメーターの収集

すべての Cognitive Services のコンテナーに対して必須である、3 つの主要なパラメーターがあります。 使用許諾契約 (EULA) が、accept の値と共に存在する必要があります。 また、切断された使用のためにコンテナーを構成するには、それを最初に実行するときに、エンドポイント URL と API キーの両方が必要です。

キーとエンドポイントは、リソースのキーとエンドポイントのページにあります。

重要

キーとエンドポイントは、切断された環境で実行されるようにコンテナーを構成するためにのみ使用します。 コンテナーを構成した後で、API 要求を送信するためには必要はありません。 Azure Key Vault を使用するなどして、安全に保管してください。 このプロセスに必要なキーは 1 つだけです。

docker pull を使用した Docker コンテナーのダウンロード

ライセンス ファイルを入手したら、切断された環境で実行するための承認を受けている Docker コンテナーをダウンロードします。 次に例を示します。

docker pull mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice:latest

切断された環境で実行されるようにコンテナーを構成する

コンテナーをダウンロードしたので、docker run コマンドで DownloadLicense=True パラメーターを指定してコンテナーを実行する必要があります。 このパラメーターは、インターネットに接続されていないときに Docker コンテナーを実行できるようにするライセンス ファイルをダウンロードします。 有効期限も含まれており、それを過ぎると、そのライセンス ファイルを使用してコンテナーを実行できなくなります。 ライセンス ファイルは、お客様が承認されている対象の適切なコンテナーでのみ使用できます。 たとえば、音声テキスト変換コンテナーのライセンス ファイルを Form Recognizer コンテナーで使用することはできません。

重要

  • 翻訳コンテナーのみ:
    • 翻訳する言語のモデル ファイルをダウンロードするには、パラメーターを含める必要があります。 たとえば次のようになります。-e Languages=en,es
    • コンテナーでは、コンテナーを実行するために使用できる docker run テンプレートが生成されます。これには、ダウンロードされたモデルと構成ファイルに必要なパラメーターが含まれています。 このテンプレートを保存してください。

次の例では、使用する docker run コマンドの形式と、プレースホルダーの値を示します。 これらのプレースホルダーの値は、実際の値に置き換えます。

プレースホルダー 形式または例
{IMAGE} 使用するコンテナー イメージ。 mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{LICENSE_MOUNT} ライセンスがダウンロードされ、マウントされるパス。 /host/license:/path/to/license/directory
{ENDPOINT_URI} サービス要求を認証するためのエンドポイント。 それは、Azure portal で、お使いのリソースの [キーとエンドポイント] ページで見つけることができます。 https://<your-custom-subdomain>.cognitiveservices.azure.com
{API_KEY} 自分の Text Analytics リソースのキー。 それは、Azure portal で、お使いのリソースの [キーとエンドポイント] ページで見つけることができます。 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{CONTAINER_LICENSE_DIRECTORY} コンテナーのローカル ファイル システム上のライセンス フォルダーの場所。 /path/to/license/directory
docker run --rm -it -p 5000:5000 \ 
-v {LICENSE_MOUNT} \
{IMAGE} \
eula=accept \
billing={ENDPOINT_URI} \
apikey={API_KEY} \
DownloadLicense=True \
Mounts:License={CONTAINER_LICENSE_DIRECTORY} 

コンテナーを構成したら、次のセクションに従って、ライセンスを使用し、適切なメモリと CPU の割り当てを行って、環境でコンテナーを実行します。

切断された環境でコンテナーを実行する

重要

Translator、ニューラル テキスト読み上げ、または音声テキスト変換のコンテナーを使用している場合は、下の「追加のパラメーター」セクションを参照して、使用する必要があるコマンドまたは追加のパラメーターについての情報を確認してください。

ライセンス ファイルがダウンロードされたら、切断された環境でコンテナーを実行できます。 次の例では、使用する docker run コマンドの形式と、プレースホルダーの値を示します。 これらのプレースホルダーの値は、実際の値に置き換えます。

コンテナーを実行する場所では必ず、ライセンス ファイルをコンテナーにマウントする必要があり、コンテナーのローカル ファイルシステム上のライセンス フォルダーの場所を Mounts:License= で指定する必要があります。 課金用の使用状況レコードを書き込むことができるように、出力マウントも指定する必要があります。

プレースホルダー 形式または例
{IMAGE} 使用するコンテナー イメージ。 mcr.microsoft.com/azure-cognitive-services/form-recognizer/invoice
{MEMORY_SIZE} コンテナーに割り当てるメモリの適切なサイズ。 4g
{NUMBER_CPUS} コンテナーに割り当てる CPU の適切な数。 4
{LICENSE_MOUNT} ライセンスが配置され、マウントされるパス。 /host/license:/path/to/license/directory
{OUTPUT_PATH} 使用状況レコードを記録するための出力パス。 /host/output:/path/to/output/directory
{CONTAINER_LICENSE_DIRECTORY} コンテナーのローカル ファイル システム上のライセンス フォルダーの場所。 /path/to/license/directory
{CONTAINER_OUTPUT_DIRECTORY} コンテナーのローカル ファイル システム上の出力フォルダーの場所。 /path/to/output/directory
docker run --rm -it -p 5000:5000 --memory {MEMORY_SIZE} --cpus {NUMBER_CPUS} \ 
-v {LICENSE_MOUNT} \ 
-v {OUTPUT_PATH} \
{IMAGE} \
eula=accept \
Mounts:License={CONTAINER_LICENSE_DIRECTORY}
Mounts:Output={CONTAINER_OUTPUT_DIRECTORY}

追加のパラメーターとコマンド

コンテナーを実行するために必要な追加のパラメーターとコマンドについては、次のセクションを参照してください。

翻訳コンテナー

Translator コンテナーを使用している場合は、ダウンロードされた翻訳モデルとコンテナー構成のパラメーターを追加する必要があります。 上記のようにコンテナーを構成すると、これらの値が生成され、コンテナー出力に表示されます。 次に例を示します。

-e MODELS= /path/to/model1/, /path/to/model2/
-e TRANSLATORSYSTEMCONFIG=/path/to/model/config/translatorsystemconfig.json

音声テキスト変換およびニューラル テキスト読み上げコンテナー

音声テキスト変換およびニューラル テキスト読み上げコンテナーは、実行時にライセンス ファイルと課金ログを書き込む既定のディレクトリを提供します。 既定のディレクトリはそれぞれ /license と /output です。

docker run -v コマンドを使用してこれらのディレクトリをコンテナーにマウントする場合は、コンテナーを実行する前に、ローカル コンピューターのディレクトリの所有権が user:group nonroot:nonroot に設定されていることを確認してください。

ファイルとディレクトリの所有権を設定するコマンドの例を以下に示します。

sudo chown -R nonroot:nonroot <YOUR_LOCAL_MACHINE_PATH_1> <YOUR_LOCAL_MACHINE_PATH_2> ...

使用状況レコード

切断された環境で Docker コンテナーを運用する場合、コンテナーは、使用状況レコードをボリュームに書き込んで、時間をかけて収集されるようにします。 REST エンドポイントを呼び出して、サービス使用状況に関するレポートを生成することもできます。

ログを格納するための引数

切断された環境で実行する場合は、使用状況ログを格納するために、コンテナーで出力マウントを利用できる必要があります。 たとえば、下の例では -v /host/output:{OUTPUT_PATH}Mounts:Output={OUTPUT_PATH} を含め、{OUTPUT_PATH} をログが格納されるパスに置き換えます。

docker run -v /host/output:{OUTPUT_PATH} ... <image> ... Mounts:Output={OUTPUT_PATH}

コンテナー エンドポイントを使用してレコードを取得する

コンテナーには、その使用状況に関するレコードを返すための 2 つのエンドポイントが用意されています。

すべてのレコードを取得する

次のエンドポイントは、マウントされた課金レコード ディレクトリに収集されたすべての使用状況を要約するレポートを提供します。

https://<service>/records/usage-logs/

下の例のような JSON が返されます。

{
  "apiType": "noop",
  "serviceName": "noop",
  "meters": [
    {
      "name": "Sample.Meter",
      "quantity": 253
    }
  ]
}

特定の月のレコードを取得する

次のエンドポイントは、特定の月と年の使用状況を要約するレポートを提供します。

https://<service>/records/usage-logs/{MONTH}/{YEAR}

下の例のような JSON 応答が返されます。

{
  "apiType": "string",
  "serviceName": "string",
  "meters": [
    {
      "name": "string",
      "quantity": 253
    }
  ]
}

切断されたコンテナーのために別のコミットメント プランを購入する

切断されたコンテナーのコミットメント プランには、暦年のコミットメント期間があります。 プランを購入すると、すぐに価格の全額が課金されます。 コミットメント期間中にコミットメント プランを変更することはできませんが、年間の残りの日数については、日割り計算の価格で追加のユニットを購入できます。 コミットメントの最終日の午前 0 時 (UTC) までコミットメント プランを終了することができます。

リソースの [Commitment Tier pricing] (コミットメント レベルの価格) 設定で別のコミットメント プランを選択できます。

コミットメント プランを終了する

コミットメント プランの購入を継続しない場合、リソースの自動更新を [自動更新しない] に設定することができます。 コミットメント プランは、表示されたコミットメントの終了日に期限切れになります。 この日以降、コミットメント プランの料金は課金されません。 引き続き Azure リソースを使用して API を呼び出すことができ、従量課金制の料金で課金されます。 切断されたコンテナーについて、年の最終日の午前 0 時 (UTC) までコミットメント プランを終了することができ、その場合、翌年は課金されません。

トラブルシューティング

出力マウントとログを有効にした状態でコンテナーを実行すると、コンテナーによってログ ファイルが生成されます。これらはコンテナーの起動時または実行時に発生した問題のトラブルシューティングに役立ちます。

ヒント

トラブルシューティング情報とガイダンスの詳細については、「切断されたコンテナーについてよくあるご質問 (FAQ)」を参照してください。

次の手順

Azure Cognitive Services コンテナーの概要