2019 年 7 月

Volume 34 Number 7

[Azure ML]

Azure AI サービスを理解する

著者: Ashish Sahu | 2019 年 7 月

クラウド コンピューティングによって、製品やサービスを思い描き、創り出す方法が一変しました。ソフトウェア ソリューションの設計方法も変わりましたし、開発者が地球的規模でアプリを構築できるようにもなりました。また、世界中のすべての開発者にとって人工知能 (AI) が手の届くものとなる道が開かれました。

Microsoft Azure は、さまざまな AI サービスを通じた開発者の支援という点で群を抜いています。ただし、選択肢が多い場合に起こりがちなことですが、いつどのようなサービスを使用するのが最適であるかを識別することが難しくなっています。この記事では、Microsoft Azure で使用できる AI サービスについて説明すると共に、ご自身の要件を分析し、十分に理解したうえでその要件に従って使用するべきサービスを決定するために必要な情報と背景知識を提供します。一部のアーキテクチャでは、ご自身の目標を達成するために、連携して動作する複数の AI サービスのパイプラインが必要になる場合もあります。

利用できるさまざまなサービスの中で、Microsoft Azure では AI と機械学習 (ML) を対象としたサービスが 35 以上も提供されています。これらのサービスは、すぐに使用できる RESTful API から、独自のデータを使用してゼロから AI モデルを作成するために使用できるサービスや SDK まで広範囲にわたります。記事では、これらのサービスについて説明し、ご自身で試すことができるコードを提供します。また、どのサービスがどのような場合に適しているのかを理解できるように、これらのサービスのシナリオ、要件、および対象ユーザーについても検討します。

実際に活動中の、ソフトウェアや ML の開発者/アーキテクトであるあなたは既にご存知だと思いますが、AI および ML という用語は、ソフトウェア ツール、フレームワーク、アルゴリズム、データ処理技法から成る膨大な領域を指します。AI によって提供される機能は、たとえば、パーソナライズされたレコメンデーション システムのような単純なものから、動画内の動きを識別するような極端に複雑なものまで広範囲に及びます。

Azure の AI および ML サービスは、地球上のありとあらゆることが対象になります。また、そこには、RESTful API 呼び出しを使用して現在のソリューションに統合できる事前構築済みの AI サービスも含まれます。特別な要件を満たすためにカスタム ML モデルが必要な場合は、それを構築して使用できるようにするためのツールやサービスもあります。オープンであることは Microsoft Azure プラットフォームの基本原則であり、Microsoft AI プラットフォームを使用することで、現在のツールセットやフレームワークを使用しながら Azure AI サービスを活用して ML ワークフローをエンド ツー エンドで効率化できます。

AI サービスの概要

わかりやすく言うと、AI サービスは大まかに 3 つのカテゴリに整理できます。つまり、AI アプリとエージェント、知識マイニング、機械学習です。これらのカテゴリを確認してみましょう。

AI アプリとエージェント: AI アプリとエージェントのカテゴリは、Microsoft Cognitive Services と Azure Bot Service によって提供されるサービスのサブセットです。Microsoft Cognitive Services は事前構築済みの AI サービスで、開発者はわずかな数の RESTful API 呼び出しを使用して自分のアプリやサービスにインテリジェントな機能をすばやく追加できます。これらのサービスには、仕様要件に合うようにカスタマイズ オプションが提供されるものもありますが、Microsoft が開発、トレーニング、およびホストしたモデルを使うことによって大きな力が発揮されるため、モデルの開発プロセスをすべてゼロから行う必要がありません。

Azure Bot Service は、Microsoft Bot Framework プラットフォームに基づいており、実際に機能するボットの使用を短時間で開始できるようにする方法を提供します。これらのボットは Microsoft Cognitive Services や Azure のその他の AI サービスを使用して機能を拡張することができます。ご自身で開発している任意の AI サービスを統合することもできます。音声および言語の Cognitive Services は、Azure Bot Service と併せて会話型 AI サービスとも呼ばれます。

知識マイニング: 知識マイニングは Azure AI プラットフォームの一領域で、インテリジェントな情報の抽出を主要チャネルとして、構造化および非構造化データのコーパスから分析情報を浮かび上がらせます。Microsoft Azure Search (とその認知技術) および Azure Form Recognizer サービスは、このカテゴリに含まれる優れたサービスの 2 つの例です。

機械学習: AI アプリおよびエージェントと、知識マイニングという 2 つのカテゴリには、どちらも事前構築済みの AI サービスが含まれます。ただし、Azure AI プラットフォームにはカスタマイズ可能なサービスも含まれているため、すべてのデータ サイエンティストにとって使いやすいものになっています。機械学習のカテゴリには、ML モデルを現実のものとする Microsoft AI プラットフォーム サービスが含まれています。これらの Azure サービスでは、データの準備段階から、トレーニングのテストや管理、ランタイムの評価に至るまで、ML の実験管理を支援します。また、インフラストラクチャ、プラットフォーム、スケーリングに煩わされることなく、実験コードのみに集中できるように、柔軟なコンピューティング先オプションも提供されます。Azure Machine Learning Studio、自動 Machine Learning service (SDK も含む)、Azure Notebooks、および Azure Machine Learning service では、実験開発の生産性を向上させるプラットフォーム ツールおよびサービスが提供されます。

実際に即して

利用可能なサービスの一覧を確認することと、さまざまな組織に適用される実際のシナリオのコンテキストで、そのサービスがどのように機能し、どのようにやり取りをするかを理解することはまったく別の話です。そのことを念頭に、まずシナリオについて説明し、そのシナリオを用いて、特定の Azure コンポーネントが、関連付けられているタスクにどう対応できるかを示します。

以降の解説のために、簡単に背景事情の説明から始めましょう。あなたは、おなじみの会社 Contoso の開発リーダー、アーキテクト、または AI エンジニアであるとします。Contoso は先日、ビジネス プロセスの最新化を発表しましたが、そのプロジェクトの 1 つとして、10 年前に社内で構築した経費管理ソリューションの変革を掲げています。中核となるビジネス ロジックや承認ワークフローの変更は必ずしも行わない場合でも、AI を使用することでユーザー操作、データ入力、および情報処理を改善することができます。

この点を明らかにするために、考えられるプロジェクト関連タスクを把握したうえで、実装する各タスクに特定の AI サービスを割り当ててみましょう。図 1 は、このプロジェクトに関連するタスクを示しています。

Contoso 経費管理最新化のタスク マップ
図 1 Contoso 経費管理最新化のタスク マップ

図 1 のタスクをすべて確認し、どの Microsoft AI サービスを各タスクに使用できるかを検討してみましょう。

領収書からの情報抽出: 単純なものと複雑なもの

このシナリオの要件は、ユーザーによってアップロードされたスキャン済み領収書やデジタル領収書からの情報取得を自動化することです。このステージでは、領収書から現場、金額、ベンダー情報を抽出し、データ ストアにプッシュしたり、UI に表示できるように経費アプリケーションにプッシュしたりします。

関連するサービス: "Azure Cognitive Services、Azure Search、Azure Form Recognizer Service"

画像をスキャンしてテキスト (光学式文字認識 [OCR]) または一連の画像とドキュメントを認識しなければならないシナリオでは、Azure Search と認知技術、Computer Vision、Cognitive Services Text Analytics が必要です。最後に挙げたサービスは、このタスクを完了するために、エンティティとキー フレーズ ("シアトル" や "ディナー" など) の抽出に使用されます。

対象ユーザー: AI エンジニアおよびアプリケーション開発者。

ハンズオン サンプル:

  • クイックスタート: Azure Search 内で認知技術を使用して AI インデックス作成パイプラインを作成する (bit.ly/2WNDooN)
  • JavaScript での Computer Vision API サンプル (bit.ly/2YCcFvB)
  • クイックスタート: .NET SDK と C# を使用して Text Analytics サービスを呼び出す (bit.ly/2VKkyST)

過去の傾向から学習し予算を予測する ML モデルを開発する

データ サイエンス コミュニティの成長の基盤には、コラボレーションと知識の共有があります。しかし、データの規模や要件の複雑さが増すにつれ、独自の ML モデルの構築が必要になってきます。その方が大規模なデータ内のパターンをより効果的に理解できるからです。これらのモデルは、カスタム ML モデルと呼ばれます。

インテリジェントな機能の配布やカスタム ML モデルの構築のライフサイクルは、Team Data Science Process (TDSP) またはデータ サイエンス ライフサイクルと呼ばれます。TDSP のステージでは、アプリケーションの開発ライフサイクルとよく似た構造が開発プロセスで使用されます。このプロセスは、ビジネス要件を理解することから始まり、顧客による受け入れで終了します。その間に、必要に応じて反復が可能な中間段階 (データの取得と理解、モデリング、配置など) があります。データ サイエンス ライフサイクルの詳細については、bit.ly/2XbmKj3 を参照してください。

この例では、社内のデータ サイエンス チームが過去の支出に関する統計的モデルを作成し、経理部門が次年度の計画を立てる際に役立つように将来の支出パターンを予測します。データ サイエンスの専門家は経費データ ストアからサンプル データを抽出し、使い慣れたツールを使用して Exploratory Data Analysis (EDA) を実行します。結果として得られるカスタム ML モデルは、特定の要件に合わせて調整されてから、収集したデータを使用して学習を行います。

関連するサービス: Azure Data Science Virtual Machine (DSVM)、Azure Notebooks、Azure ML service、Azure ML Studio

DSVM はカスタムの ML 実験の開発を迅速化するために作成された、テンプレート化された OS イメージで、一方、Azure Notebooks と Visual Studio は、データ サイエンス実験プロジェクトを実行するための優れた環境を提供します。Azure ML service では、データ サイエンティストのチームが、Notebook VM、コード、コンピューティング環境を使用して共同でモデルを維持し、アプリケーション ライフサイクルを管理するのを支援します。自動 ML service も、高性能のモデルを生成するための選択肢の 1 つです。視覚化されたドラッグ アンド ドロップ インターフェイスを使用して実験を行う場合は、Azure ML Studio を使用することもできます。Azure Notebooks は、公開または非公開で Jupyter Notebook をホストするもう 1 つの方法で、トレーニングとデプロイのために ML コンピューティングに接続したままにすることができます。

対象ユーザー: データ サイエンティストとデータ サイエンティストのチーム、開発者、アナリスト、アーキテクト

ハンズオン サンプル:

  • Azure Notebooks (notebooks.azure.com)
  • クイックスタート: クラウドベースのノートブック VM を使用して Azure ML の使用を開始する (bit.ly/2WJEOR3)
  • チュートリアル: 自動化された ML を使用して回帰モデルを構築する (bit.ly/2W7SbgH)
  • Azure AI Gallery での Azure ML Studio を確認する (gallery.azure.ai)

実際の過去データやさまざまなデータ ソースを使用して大規模にカスタム モデルをトレーニングする

このシナリオでは、組織内のデータ サイエンティストは、実際のデータに基づいてモデルを実行し、予測の精度を把握しようとします。ここでの重要な要素の 1 つは、できる限りトレーニング時間を短縮することです。

関連するサービス: Azure Databricks、Azure ML service、Azure Data Lake

通常、カスタム ML モデルを作成するための実験では、サンプリングされたデータが使用されます。サンプル データを使ってモデルを開発したら、ギガバイトまたはテラバイト サイズの実際のデータでこのモデルをトレーニングします。この規模のデータを使用して学習を行う場合、最適なパフォーマンスを得るために分散コンピューティングとビッグ データ ストレージが不可欠です。Azure ML service は、この規模でトレーニングを行う際のコンピューティング先の選択を支援します。選択範囲は GPU 仮想マシン (VM) から Azure Kubernetes クラスターまでさまざまです。チームにビッグ データの専門家がいる場合は、コンピューティング レイヤーに Azure Databricks を使用するか (Spark/MMLSpark デプロイ向け)、または Azure Data Lake Analytics を使用して (データが Azure Data Lake に存在する場合)、大規模トレーニングのシナリオを実行することができます。

Azure Databricks では、データ インジェスト、ETL、オーケストレーションのタスクを支援するデータエンジニアリング プラットフォームも用意されています。

対象ユーザー: データ サイエンティスト、データ エンジニア、データ開発者

ハンズオン サンプル:

  • クイックスタート: Azure portal を使用して Azure Databricks で Spark ジョブを実行する (bit.ly/2EevltO)
  • チュートリアル: Azure Databricks を使用してデータの抽出、変換、読み込みを行う - bit.ly/30pj3bs

モデルをパッケージ化し、アプリで使用できるようにデプロイする

これでカスタム マシン モデルの準備ができました。多様な評価方法がありますが、ほとんどのアプリケーションでは API を介してモデルとやり取りします。さらに、顧客のホスティング プラットフォーム (OS) は、多くの要素に基づいて異なる可能性があります。そのため、DevOps チームと ML チームは緊密に連携して、モデルがクロスプラット フォームでアクセス可能であることや動作することを確認する必要があります。

関連するサービス: Azure IoT Edge、Azure Container Instances、Azure ML service

コンテナー プラットフォームではアプリと依存関係が 1 つの移植可能なユニットにパッケージ化されるため、アプリケーションのホスティング シナリオにおいてコンテナー プラットフォームが多用されるようになってきました。コンテナーを使用すると、クラウド、ハイブリッド、エッジ、プライベートの各ホスティング シナリオにおいて、モデルを柔軟にパッケージ化することができます。ここでは Azure ML service を使用して、ローカル Web サービス、Azure IoT Edge、Azure Kubernetes Service、Azure Container Instances、Azure ML コンピューティングなどのさまざまな環境にモデル ファイルをデプロイできます。Computer Vision からエクスポートされた AI モデルは、さまざまな OS とオーケストレーション プラットフォーム上でコンテナーとして実行できます。

対象ユーザー: アプリケーション開発者、DevOps エンジニア、データ サイエンティスト

ハンズオン サンプル:

  • コンテナーに Computer Vision OCR をインストールして実行する (bit.ly/2Jq6ozF)
  • Azure ML service を使用してモデルをデプロイする (bit.ly/2YwoHGY)

ML.NET でモデルを使用し、モデル アプリを開発する

Contoso の基幹業務アプリの大部分は .NET Core で作成されていますが、一部のソリューションはエッジやモバイル アプリで動作しています。この場合、アプリケーション チームやアーキテクトは、データ サイエンス チームによって開発された ML モデルをモバイル アプリやエッジ アプリに読み込む必要があります。

関連するサービス: ML.NET、Azure Cognitive Services

ML.NET は、.NET に慣れている開発者が好みの言語で ML アプリケーションの開発を開始できる、.NET Core ベースのクロスプラット フォーム フレームワークです。ML.NET を介して .NET Core アプリに ONNX モデルと TensorFlow モデルを読み込むことができます。また、データからモデルを作成して保存し、他の ML.NET アプリで評価するために読み込むこともできます。フル スタック アプリケーション開発者の場合は、広範な Azure Cognitive Services を使用して AI をアプリに組み込むというオプションがあります。

一部の Cognitive Services からエクスポートされたモデルは、iOS アプリや Android アプリに読み込むこともできます。

対象ユーザー: アプリケーション開発者、.NET 開発者、モバイル アプリケーション開発者、AI 開発者

ハンズオン サンプル:

  • ML.NET を使用して、MNIST データセットで 0 から 9 の手書きの数字を分類する (bit.ly/2EfpzZ4)
  • Cognitive Services SDK の包括的サンプル (bit.ly/30pPTcf)

エンタープライズ チャットボットで対話型エクスペリエンスと分析情報を提供する

経費のファイル登録は繰り返しの多い面倒な日常タスクの 1 つです。AI 機能を備えたボットを使用することで、データの入力時間を短縮して従業員の負担を軽減できます。これらのボットは Azure Bot Service を使用して作成できる Web アプリです。Computer Vision API を使用して、領収書を受け入れて分析し、OCR を実行するように拡張できます。次に、長期にわたって分析情報を作成できるように、この情報を格納します。

関連するサービス: Azure Bot Service、Language Understanding Intelligence Service (LUIS)、仮想アシスタント、音声サービス、QnA Maker

Azure Bot Service と共に LUIS や Computer Vision コグニティブ サービスを利用したボットを使用すると、経費を登録するユーザーは会話型のエクスペリエンスを享受できます。音声コグニティブ サービスを追加することで、ナチュラル スピーチに対応したボットを作成できます。このボットを使用すると声で入力ができます。また、オープンソースの仮想アシスタント ソリューションを調べて、完全に機能するボットを簡単に実行することもできます。その後で、このボットを要件に合わせてカスタマイズできます。最後に、QnA Maker サービスを使用すると、ユーザーから寄せられる主な質問に回答できます。

対象ユーザー: アプリケーション開発者、AI 開発者

ハンズオン サンプル:

  • Cognitive Services SDK の包括的サンプル (bit.ly/30pPTcf)
  • クイックスタート: .NET Core 用 Speech SDK を使用して音声を認識する (bit.ly/2VvN7P1)
  • 仮想アシスタント ソリューションの概要 (bit.ly/2YyfKgf)
  • クイックスタート: 初めての仮想アシスタントを作成する (C#) (bit.ly/2Hy69zc)
  • クイックスタート: QnA Maker API サービス ポータルを使用してナレッジ ベースを作成する (bit.ly/2EhddzD)

まとめ

ここまで、図 1 で取り上げたシナリオについて説明し、一般的な AI 機能の統合と開発シナリオに適用される幅広い Azure AI サービスについて概説してきました。

アプリにインテリジェントな機能を追加することを検討していて、Azure で提供されている AI サービスの評価を行っている場合は、まず、Microsoft Cognitive Services のいずれかを使用できるかどうか、あるいはカスタムの ML モデルを構築する必要があるかどうかを判断する必要があります。多くの場合、Cognitive Services とカスタム ML モデルの組み合わせを使用することで、望ましい結果を実現することができます。

Microsoft Cognitive Services を使用すると、多くの場合、デジタル ドキュメントでの OCR の実行、内容に基づく画像の分類、アプリへの会話型 AI の追加など、比較的単純なシナリオの要件を満たすことができます。Custom Vision サービスや LUIS などの一部のサービスでも、非常に単純な要件に対応する広範なカスタマイズが提供されています。

Azure Databricks、Azure Data Warehouse、Azure ML service などのビッグ データ分析サービスは、あらゆる規模の複雑なシナリオに利用できます。自動化された ML と ML パイプラインを備えた Azure ML を使用すると、DevOps プロセスを合理化し、実験時間を短縮することによって、組織のデータ サイエンス チームの生産性を向上させることができます。

Azure AI サービスについて確認し、Contoso の経費処理を最新化する際の要件を検討しました。では、オンラインの対話型クイズ (ashisa.github.io/AzureAIQuiz) に挑戦して、あなたの理解度をテストしてみましょう。


Ashish Sahu "は、Microsoft India に勤務するシニア テクノロジ エバンジェリストで、技術的課題の克服、最新テクノロジの採用、ソリューションのレベル向上に関して、ISV やスタートアップ企業を支援しています。"

Sagar Bhanudas Joshi "は、6 年以上の間、開発者と協力して、ユニバーサル Windows プラットフォームと Microsoft Azure プラットフォームを採用する際の支援をしてきました。現在は、特に ML と AI を中心に、ソリューションの設計と Microsoft クラウド プラットフォームへのオンボードで SaaS 企業のアーキテクトを支援する役割も担っています。"

この記事のレビューに協力してくださった Microsoft 技術スタッフの Sandeep Alur に感謝いたします


この記事について MSDN マガジン フォーラムで議論する