Edited at
CogbotDay 6

Cognitive Services Containers を利用して ローカルの Docker コンテナーで LUIS (自然言語処理) を試す (2)Container 設定編

"人工知能パーツ" Web API として提供されている Azure Cognitive Services の一部機能を Docker コンテナにダウンロード、構築して利用できる Azure Cognitive Services Containers が提供開始となっています。(2018年12月現在プレビュー)

ローカル環境の Docker に Cognitive Services の Language Understanding (LUIS) コンテナ―を作成、稼働させて利用する方法を紹介します。


Cognitive Services Container を試すシリーズ


Cognitive Services Container とは

"人工知能パーツ" Azure Cognitive Services をコンテナーで利用できるサービス。Cognitive Services は分析モデルがマイクロソフトのデータセンターにありますが、同レベルの分析モデルをローカル環境で利用できます。そのため、分析したいデータをマイクロソフトのデータセンターに送信する必要がなくなります。(※サービス利用のための課金APIには接続している必要があります。)

CognitiveServicesContainer.PNG


手順


2. Docker 環境にコンテナ―を作成&起動して利用

Cognitive Services Containers で予め用意されているイメージがあるので、そちらをダウンロードして、稼働させます。


2.1 Docker 環境にコンテナ―作成、起動


Docker 環境の準備


Docker 環境の確認

0.準備 - Docker 環境 を確認して、Linux コンテナーをインストール、設定します。


作業ディレクトリに LUIS App を配置

1.3 LUIS Portal で LUIS App の Export の手順でダウンロードした LUIS App を 展開したりファイル名を変更したりしないで、そのまま 作業ディレクトリに配置します。

今回はこのようなディレクトリを作業ディレクトリとします。

C:\demo\container


作業ディレクトリとして、LUIS App を配置しておく Input ディレクトリ と、ログを保存する Output ディレクトリ が必要です。今回は Input と Output を同じにします (が分けても OK です)。



Cognitive Services Containers (LUIS) のイメージダウンロードと起動

Docker CLI で LUIS のイメージを pull して取得します。(latest オプションで最新を取得しています)

docker pull docker pull mcr.microsoft.com/azure-cognitive-services/luis:latest

イメージが取得できたことを確認します。

docker images

LUISContainer01.PNG

こちらを以下のオプションで起動します。


  • 2CPU/メモリ 4GB

  • TCP port 5000

  • 終了後にコンテナーを削除

Cognitive Services Containers のパラメーターとして以下として設定します。


  • input フォルダー(今回は C:\demo\container) に保存した LUIS App をマウント

  • output フォルダー(今回は C:\demo\container) にログを保存

  • Billing : Azure Portal で取得した Endpoint (今回は WestUS(米国西部) を設定)

  • ApiKey : Azure Portal で取得した Key1

docker run --rm -it -p 5000:5000 --memory 4g --cpus 2 --mount type=bind,src=c:\demo\container,target=/input --mount type=bind,src=C:\demo\container,target=/output

mcr.microsoft.com/azure-cognitive-services/luis Eula=accept Billing=https://westus.api.cognitive.microsoft.com/luis/v2.0 ApiKey={___YOUR_API_KEY___}

無事コンテナーが起動したら、アクセスして動作を確認します。

LUISContainer02.PNG


2.2 Cognitive Services Containers (LUIS) のテスト

ブラウザーでこちらを開き、"Your Cognitive Services Container is up and running" と表示されれば無事起動しています。

http://localhost:5000

LUISContainer03.PNG


Swagger で Rest API アクセスの確認(GET)

ページ内の Service API Description のリンクをクリック、または下記URLにアクセスして、Swagger で Web API の定義の確認や GET/POST のテストを行います。

http://localhost:5000/swagger

LUISContainer04.PNG

[Luis] の欄にある [GET] /luis/v2.0/apps/{appId} をクリック、[Try it out] をクリックします。

取得しておいた AppId を入力、q の欄には自然言語処理を行う文章を入力します。入力できたら [Execute] をクリックしてリクエストを送信します。

LUISContainer05.PNG

Code 200 が返ってきて、JSON 形式で分析結果が表示されれば完了です。

この時表示される Request URL を使って アプリ等から Rest API アクセスできます。(コピーして保存しておきます)

LUISContainer06.PNG


Postman で Rest API アクセスの確認(GET)

Postman など、Web API ツールを使って、Rest API アクセスを確認します。

(以下 Postman を使用して確認します)

コピーしておいた GET 用の Request URL を URL 欄にペーストします。

Parameter が自動認識されますので、[Send] をクリックして送信します。

Swagger と同じ結果が帰ってきたら確認 OK です。

LUISContainer07.PNG


Swagger / Postman で Rest API アクセスの確認(POST)

LUIS API は GET と POST の両方で自然言語分析結果を取得できます。

Swagger でも POST のページから仕様を確認できます。

LUISContainer08.PNG

Postmanから POST でアクセスする場合、以下のように設定する必要があります。


  • Header: content=application/json

  • Body: "(分析したい文章を入力)"

LUISContainer09.PNG

LUISContainer10.PNG


2.3 Cognitive Services Containers (LUIS) のログ確認

作業ディレクトリに LUIS App を配置 で設定した output の作業ディレクトリにログが出力されます。

output の作業ディレクトリ\luis{Container 起動時に表示された文字列}{LUIS App ID}.csv がログファイルです。

ログファイルの中身は、query (q として送信した文章)、Response (分析結果)、Timestamp です。

LUISContainer11.PNG

Response の部分は Rest API で得られる推定結果と同じ(JSON)で、これを整理すると、どのような入力(query) があったときにどのように推定しているのかを確認することができます。

LUISContainer12.PNG

Ctrl+C を入力して、Container を終了します。