みなさんこんにちは。
パブリッククラウドで AI を利用するメリットのひとつとして、「学習済みモデルが提供されており、簡単な操作で迅速に利用開始できる」という点が挙げられるかと思います。 Azure の場合は Azure AI Services (旧称: Azure Cognitive Services)のように様々な学習済みモデルが提供されていますので、AI を利用したサービスの開発を気軽に始めることができるようになっています。(もちろん、Azure Machine Learning でモデルを構築するということも可能です。)
一方で、AI で利用したいデータがオンプレミスに存在するようなケースもあるでしょう。 そのような環境ですぐに学習済みモデルが欲しい場合はどうすればよいでしょうか。 実は、オンプレミスでも Azure AI Services を利用することが可能です。
Docker などコンテナ実行環境があれば、Azure AI Services を Azure の外(オンプレミス / 他社パブリッククラウド)でも利用できるようになっています。 コンテナとして利用可能なサービスについてはこちらに掲載されています。 言語や音声など、様々なサービスが提供されています。(一部、プレビューのものもあります。)
今回は言語サービスの「言語検出(テキスト言語検出)」を Docker で扱ってみたいと思います。
言語サービスの「言語検出」とは
ここで今回利用する Azure AI Services の機能について簡単に確認しておきましょう。 Azure AI Services では文字情報や音声、画像や動画など様々な事柄に対する AI のサービスが提供されています。 このうち言語に関するサービスは「Azure AI Language」とも呼ばれます。 Azure AI Language の機能の一例をご紹介しますと、「キーフレーズ抽出」機能を利用すれば文章内の鍵となる表現を抜き出すことができますし、「感情分析」機能を利用すれば文章が肯定的か否定的か感情を判別することができます。(その他の機能や詳細についてはこちらをご参照ください。)
今回利用する「言語検出」機能は、何らかの文章を与えられた場合にその文章が何語で書かれているかを検出するというものです。
言語検出でサポートされている言語についてはこちらに記載されている通り、日本語も含めて多数あります。 Azure のユーザーはモデルをトレーニングする手間を省いてこの機能を利用できるようになっているのです。
Docker で言語検出のためのコンテナを扱う
検証環境
今回は下図のようにオンプレミスの Ubuntu に Docker をインストールし、言語検出のためのコンテナを起動します。 前提条件・要件についてはこちらに記載されていますので事前に確認しておくとよいでしょう。(ただし後述のメモリ使用率など考慮し、リソースに余裕をもたせた環境を用意頂くことをおすすめいたします。)
また、コンテナを起動する環境自体はオンプレミスではありますが、Azure に Azure AI Language リソースを作成する必要があります。 このため、Azure サブスクリプションが必要です。(リソース作成の詳細については後述します。)
なお、今回はインターネット接続が可能な環境における操作をご紹介しますが、インターネット接続がない状態で Azure AI Services のコンテナを利用する方法も用意されています。 インターネット接続がない環境で利用する場合、こちらに記載の通りMicrosoft社へ申請を行うなど本ブログ記事に記載の手順とは異なる点がありますのでご留意ください。 また、各種コンテナがインターネット接続なしで利用できるかどうかについてはこちらでご確認ください。
Azure AI Language のリソースを作成
言語検出のコンテナを起動する際、Azure AI Language のキーならびにエンドポイントを利用します。 事前に Azure AI Language のリソースを作成しておきましょう。 今回は Azure Portal でリソースを作成します。 Azure AI Services の言語サービスで「作成」をクリックします。
「リソースの作成を続行する」をクリックします。
今回はリージョンやインスタンス名など以下のように指定しました。
リソース作成後、「キーとエンドポイント」でキーとエンドポイントを確認しておきます。
Docker でコンテナを起動
Microsoft Learn の記載に従ってイメージを pull します。
docker pull mcr.microsoft.com/azure-cognitive-services/textanalytics/language:latest
イメージを確認するとサイズは約5.5GBのようです。 なお、イメージは随時更新されておりバージョンによってサイズが変動します。 サイズについてはこちらで確認可能です。
次に、以下のコマンドを実行してコンテナを起動します。 ここで前述の Azure AI Language のキーならびにエンドポイントを利用します。また、"Eula"でライセンスに同意する必要があります。(コンテナの構成要素についてはこちらで確認が可能です。)
docker run --rm -it -p 5000:5000 --memory 8g --cpus 1 \
mcr.microsoft.com/azure-cognitive-services/textanalytics/language \
Eula=accept \
Billing=<ENDPOINT_URI> \
ApiKey=<API_KEY>
なお、コンテナのリソース使用状況を確認してみると以下のようになっていました。 もう少しメモリを割り当ててもよかったかもしれません。
docker container stats
Webブラウザでアクセスしてみる
Webブラウザで<IP_ADDRESS>:5000にアクセスするとコンテナが起動していることが確認できます。
"Service API Description"をクリックすると Swagger を確認することもできます。
言語検出のテスト
Ubuntu のローカルで言語検出の機能をテストしてみます。 テスト用に以下の簡単な JSON ファイルを用意しました。 id:1 のテキストは英語、id:2 のテキストは日本語です。(今回は短いテキストを利用していますが、入力する文章が長いほど正しく認識される可能性が高くなると言われています。 利用にあたっては制限やベストプラクティスも併せてご参照ください。)
以下の curl コマンドを実行して結果を確認すると、id:1 のテキストは英語、id:2 のテキストは日本語として検出されました。
curl -X POST -H "Content-Type: application/json" -d @<FILE_NAME> \
http://<IP_ADDRESS>:5000/text/analytics/v3.1/languages | jq
まとめ
今回は Azure AI Services のコンテナをオンプレミスに展開する様子をご紹介しました。 (基本的な機能や手順をご紹介するためシンプルな構成にしていたという側面もありますが)簡単にオンプレミスへ学習済みモデルを導入することができました。
モデルを自身で用意しようとすると AI に関する知識も求められますし、時間や労力もかかってしまいますが、Azure AI Services のコンテナを利用することで学習コストや時間的コストをカットして AI に触れることが可能です。 本ブログ記事でご紹介した通り、コンテナや Azure の簡単な操作だけでオンプレミス環境でも AI を利用することができました。
今回は Azure AI Language を利用しましたが、他にもこちらに記載の通り様々な用途に対応したコンテナイメージが用意されています。(例えば JPEG や PNG、PDF といったファイルから文字を抽出する OCR(光学式文字認識)など) 様々な AI に気軽に触れることができますので、オンプレミスにおける AI 活用の第一歩に Azure AI Services をご利用頂いてもよいかもしれません。
SB C&SはAzureを取り扱われているパートナー企業様へ様々なご支援のメニューを用意しております。 メニューの詳細やAzureに関するご相談等につきましては以下の「Azure相談センター」をご確認ください。
Azure相談センター
https://licensecounter.jp/azure/
※ 本ブログは弊社にて把握、確認された内容を基に作成したものであり、製品の動作や仕様について担保・保証するものではありません。サービスや製品の動作、仕様等に関しては、予告なく変更される場合があります。
Azureに関するブログ記事一覧はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
中原 佳澄