〇 自社の技術レベルに合うのはどれ?
適材適所でクラウドを使い分ける企業が増えている。ここで課題になるのがクラウドごとの違いだ。AWS(アマゾン・ウェブ・サービス)、Google Cloud、Microsoft Azureはサービスのラインアップが似ているが、用語やサービスの構造、利用できる機能などに差異がある。本連載ではテーマ別に各クラウドの特徴を取り上げ、違いを浮き彫りにしていく。第13回から第15回は、最近注目されている技術である人工知能(AI)をテーマに解説する。第13回はAzureを取り上げる。
昨今、人工知能(AI)を利用したソフトウエアは我々の生活のいたる所に導入されており、日常に深く浸透しています。IDC Japanの「国内AIシステム市場予測、2022年~2026年」 IDC Japanの発表 によると、2021年の国内AIシステム市場は市場規模が2771億円。2026年には8120億円まで拡大すると予想されており、ビジネス面でも強い存在感があります。様々な業界で多くの企業がAI分野への早急な参入を検討していることでしょう。
しかし、その一方でAIの導入には大きな障害が存在します。特に大きいのがAI人材の不足です。AI人材を育成するには、2~3年の長期的な教育が必要となります。また、既にAI人材を確保しているIT企業であっても、AIの適用範囲を広げる場合は新たな人材の獲得が必須となります。

ここで注目したいのがクラウドです。クラウドでは、AI技術の習熟度にかかわらず、広いユースケースに対して、AIシステムの構築からデプロイ、保守運用までを支援し、円滑にするサービスが提供されています。AI開発に必要となる高性能なコンピューティングリソースも提供されているため、企業はハードウエアの導入コストを抑えて、AIサービスのスモールスタートを実現できます。
AIはここ10年の最重要トピックとなっていることもあり、AWS(アマゾン・ウェブ・サービス)、Google Cloud、Microsoft Azureの3大クラウドはどれもAI関連サービスを多数取りそろえています。今回はMicrosoft AzureのAI関連サービスについて解説します。Microsoft AzureのAI関連サービスの特徴を簡単にまとめると、
- ヒトの認知機能に基づいた学習済みモデルを提供する
- 専用ユーザーインターフェースにより初学者でも使えるAI開発環境を提供する。
の2つとなります。
学習済みモデルを提供するAzure Cognitive Services。
クラウドでのAI開発には、大きく2つの選択肢があります。1つは、クラウド事業者が提供する事前学習済みモデルを利用する方法。もう1つは、ユーザーが自らモデルを構築して開発する方法です。Microsoft Azureでは、両方に対するサービスを提供しています。前者に該当するのが「Azure Cognitive Services」 日本マイクロソフトのAzure Cognitive Servicesのページ 、後者に該当するのが「Azure Machine Learning(Azure ML)」 日本マイクロソフトのAzure Machine Learningのページ です。
Azure Cognitive Servicesは、ヒトの認知機能に基づいて、視覚、音声、言語、意思決定に関する事前学習済みのモデルを提供するサービスです。4つの分野それぞれで、ユースケースに応じて細分化したサービスを用意しています。視覚を例にすると、画像内の人物識別を行う「Face API」、物体認識やキャプション作成が可能な「Computer Vision」、数十枚の画像のみで独自のモデルを構築できる「Custom Vision」などを提供しています。
分野 | サービス名 | サービスの内容 |
---|---|---|
視覚 | Face API | 画像内の人物識別を行う |
Computer Vision | 物体認識やキャプション作成などを行う | |
Custom Vision | 数十枚の画像のみで独自のモデルを構築できる | |
音声 | Speech to Text | 音声をテキストに変換する |
言語 | Language service | キーフレーズ抽出や属性を自動で分類する |
Sentiment analysis | テキストから感情と意見を検出する | |
Translator | 100を超える言語や方言を検出して翻訳する | |
意思決定 | Personalizer | パーソナライズしたユーザー体験を作成する |
Content Moderator | 不快または望ましくないコンテンツを検出する |
一般に、こうしたモデルを構築するには、データの収集、データの前処理、高精度の分類・回帰を実現できる学習、パラメーターのチューニングを実施する必要があります。この工程はAIの専門家でも試行錯誤が必要で、かなりの手間と時間を要します。
Azure Cognitive Servicesの事前学習済みモデルを利用すれば、こうした工程を省けます。データ収集やモデル学習に要する時間を大幅に削減できるうえ、モデル構築に関する高度な専門スキルも不要です。ユーザーは検証用のデータを用意するだけで、AIを活用したアプリケーションの開発に取りかかれます。
使い方もシンプルです。専用のユーザーインターフェースや、Webサービスで一般的なAPIである「REST API」、ソフトウエア開発キット(SDK)を通じて利用できます。ユーザーはデータを送信するだけで、AIによる解析結果を受け取れるので、容易かつ迅速に開発システム内にAIを取り入れられます。
オンプレミス稼働のリアルタイム分析が可能でIoTにも向く。
Azure Cognitive Servicesのような事前学習済みAIモデルのクラウドサービスを利用することに対し、セキュリティやリアルタイム性に不安を感じる人もいるかもしれません。「クラウドにデータを送るのは心配」「レスポンスが返ってくるのに時間がかからないか」といったことです。
Azure Cognitive Servicesでは、こうした懸念に対する解決策が用意されています。実はオンプレミス環境で利用できるのです。Azure Cognitive ServicesのDockerコンテナが提供されており、クラウドと同じ機能を自前で用意したサーバー上で動作させられます。この仕組みを使えば、コンプライアンスやセキュリティの理由でクラウドにデータを送ることが難しかったり、閉域網内でデータのやり取りを完結させたかったりする場合にも対応できます。
オンプレミス環境でAzure Cognitive Servicesを稼働させるのは、リアルタイム性を高める目的でも有用です。システムの利用端末付近にサーバーを設置し、そのサーバー上でAzure Cognitive Servicesのコンテナを起動すれば、高速なレスポンスを得られます。IoT(モノのインターネット)分野での異常検知ではリアルタイムな分析が求められるため、Azure Cognitive Servicesのコンテナが活用されることになるでしょう。
以上のように、ユースケースに適したサービスがある場合には、Azure Cognitive Servicesは手っ取り早くて便利です。ただし、事前学習済みモデルゆえに、モデル構成の自由度は小さいものになります。ユースケースにうまく適合していないと、タスクに対する精度が低くなってしまいます。そうした場合は、ユーザーが自らモデルを含め開発するAzure MLを使うことになります。
ユーザー独自モデルを構築するAzure Machine Learning。
次に、ユーザーが自らモデルを含め開発する方法である「Azure Machine Learning(Azure ML)」について解説していきましょう。Azure MLは、ユーザー独自のモデルを構築するためのデータの学習機能を備えています。加えて、学習用データや機械学習コードの管理、モデルのデプロイ機能など、機械学習を使ったWebサービスをクラウドで構築・運用するための機能を一通りそろえています。
AI開発にはデータ収集、データ準備、学習、モデル評価、モデルデプロイといったステップがあります。Azure MLは、その各ステップに対応した機能を提供しています。さらに、AI開発を複数のステップをつないだ一連の流れとして管理する、「Azure Machine Learning Pipelines(ML Pipelines)」と呼ぶ機能も提供しています。
ML Pipelinesを利用すると「一定の精度を下回ったら再学習の流れを実行する」などの手順を定義できるため、AIシステムの本番導入後も機械学習モデルを継続的に改良する「MLOps」を実現できます。MLOpsとは、アプリケーション開発における「DevOps」の仕組みや方法論を機械学習モデル開発に適用したものです。
Azure MLのサービスを利用するには、
- 専用Webページ「Microsoft Azure Machine Learning Studio」にアクセスする。
- 自前のPC環境にインストールしたPython SDK、CLIで命令する。
- 統合開発環境(IDE)「Visual Studio Code(VSCode)」の拡張機能を利用する。
といった方法があります。
Microsoft Azure Machine Learning Studio(Azure ML Studio)は、Azure MLを使った機械学習モデルの開発に特化したWebページです。SDKとCLIでは、それぞれに対応するコマンドを使ってデータセットの作成、モデルの学習実行、モデルのデプロイなどを実行できます。VSCodeの拡張機能を利用すると、VSCodeのGUI(グラフィカル・ユーザー・インターフェース)からCLIの機能の一部をビジュアルに操作できるようになります。
Azure MLはAI開発のステップに対応した機能を提供していると前述しましたが、やはり中核となるのは機械学習モデルの構築です。Azure MLは、機械学習の初心者から上級者まで、様々なスキルレベルに対応する機能やサービスを提供しています。機械学習モデルの構築では、以下の3つの方法が用意されています。
- Notebooks
- 自動ML(AutoML)
- デザイナー
以降で、詳しく見ていきましょう。
経験者なら勉強ゼロでクラウド開発に移行できるNotebook。
Notebooksは、クラウド上でオープンソースの統合開発環境「Jupyter Notebook」を使ってモデルの開発・学習ができるサービスです。Jupyter Notebookを使えば、対話形式でプログラミングができます。例えばPythonコードを1行入力すると、出力結果をコードのすぐ下に表示できます。Webブラウザーでアクセスするだけでなく、ローカルマシン上のVSCodeから接続して編集することもできます。
既にオンプレミス環境でJupyter Notebookを使った機械学習をしたことがあるユーザーであれば、違和感なくクラウドを利用した開発体制に移行できるでしょう。その一方で、クラウド独自の機能が少なく、クラウドならではのメリットはあまり感じられません。
AutoMLは機械学習の初学者におすすめ。
AutoMLは、「自動機械学習」と呼ばれる方法でモデルを開発します。機械学習モデル構築に必要な知識やコーディングスキルがなくても、学習に必要なデータを用意すれば機械学習モデルを構築できます。自社が所有するデータを使って独自のモデルを作成したいユーザーに対し、最初におすすめしたいサービスです。
AutoMLでモデルを学習する場合、ユーザーがしなければならないことは、
- 学習用データセットの選択
- 計算資源の選択
- タスクの設定
の3つだけです。1つ目と2つ目はそれぞれ、Azure MLの機能である「データセット」「コンピューティング」という設定項目で、事前に登録したものから選択します。3つ目のタスクの設定では、データセットの中のどの値を推論対象とするか、推論したい値の特性は「分類」「回帰」「時系列予測」といったカテゴリのうちどれに当てはまるか、ということを選択します。
AutoMLでは、これらを設定するだけで、機械学習モデルの学習を実行できます。学習済みモデルは「ONNX(Open Neural Network eXchange)」形式でダウンロードができます。ONNXは、オープンソースで開発された、機械学習モデルを表現するためのフォーマットです。そのため、Azure上にデプロイするだけでなく、ほかのクラウドサービス、オンプレミスのサーバー、IoTデバイスなど様々な場所で利用できます。
AutoMLは初学者向けのサービスであり、多くの処理プロセスが自動化されています。詳しい知識がなくても機械学習モデルを作成できる点は魅力的ですが、自動化されている部分で何が実行されているかを分からないままにしておくと、「精度が出ない」といった壁に当たったときに対処できません。精度を改善する細かいカスタマイズをしたい場合は、自動化部分で実行されている処理について把握しておく必要があります。
AutoMLが「自動化」していること。
AutoMLが自動化している部分について簡単に解説します。機械学習モデルを開発するためには、
- データの前処理
- 学習アルゴリズムの選定・学習
- 学習済みモデルの精度検証
といった手順が必要です。AutoMLでは、各手順について一部分を自動化しています。以下では、各手順の概要と自動化されている内容を説明しています。
1.のデータの前処理では一般的に、学習結果を安定化させるため、データに含まれる特徴量に対して「正規化」や「標準化」、「白色化」などの処理を実施します。AutoMLでは、これらの処理を自動で実行します。加えて、大規模なデータで事前に学習した機械学習モデルを利用して、特徴量を生成することも可能です。
2.の学習アルゴリズムの選定・学習では、入力されたデータに対して適切と考えられる「アルゴリズム」と「ハイパーパラメーター」を選択して学習を実行します。Azure MLでは、機械学習タスクごとに複数のアルゴリズムを用意しています。ハイパーパラメーターは、アルゴリズム固有の設定値で、学習の開始に必須となります(学習とともに変化する「モデルの重みパラメーター」とは異なります)。一般に精度の良いモデルを作成するには、アルゴリズムを選んで、ハイパーパラメーターを調整しながら何度も学習を繰り返す必要があります。
AutoMLは、アルゴリズムとハイパーパラメーターの膨大な組み合わせを探索しながら、学習を自動で繰り返す機能を持っています。そのため、ユーザーはAutoMLを実行するだけで、適切な組み合わせのモデルを得られます。これらの探索はある程度並列で実行可能です。クラウドは基本的に実行時間に対して課金が発生するので、並列で実行することで費用を増やさずに短時間で探索できます。
3.の学習済みモデルの精度検証では、出来上がったモデルが学習用データに対して「過学習」を起こしていないかを確認するため、学習に用いていないデータを使って検証します。過学習とは、学習させたデータに忠実になりすぎてしまい、未知のデータが入力されると的外れな出力をしてしまう状態になることです。
AutoMLでは、学習データと検証データの自動分割、「k分割交差検証」といったよく使われる検証手法を自動で実行します。k分割交差検証とは、データをk個に分割して、k-1個を学習用データとして使い、残りの1個をテストデータとしてモデルの性能を検証する方法です。もちろん、ユーザーの定義した検証用のデータを利用することも可能です。
ここまで見てきたように、AutoMLを利用すれば、初心者でも比較的簡単に機械学習モデルを作成できます。中級者以上は、ハイパーパラメーターの探索のみを任せるといった使い方も可能です。Python SDKを使って対象のハイパーパラメーターを指定することで、ユーザーが開発したアルゴリズムに対する最適なハイパーパラメーターを探索できます。
やや上級者向け、「MLOps」への入り口に最適なデザイナー。
最後に説明するデザイナーは、データの前処理からモデルの検証まで一連の流れを「パイプライン」としてWeb上で編集して、モデルの開発・学習ができるようにします。前出の「ML Pipeline」を構築できるローコードツールという位置づけです。
デザイナーを使えば、データセットや学習アルゴリズムなどをGUI上でドラッグ&ドロップしていくだけで、機械学習の流れをパイプラインとして定義できます。パイプラインの中にはユーザーが作成したPythonやRのスクリプトを組み込め、AutoMLよりも柔軟に運用できます。
学習したモデルをデプロイすることで、リアルタイム推論やバッチ推論などに利用できます。
パイプラインは、GUI上のビジュアル部品を使う方法だけでなく、REST APIから呼び出す方法によっても実行できます。API経由でパイプラインを実行する際には、送信するパラメーターを変更することで、一度作ったパイプラインをテンプレートとして再利用可能です。例えば、学習に利用するデータセットや前処理方式を変化させたり、モデル構造に関するハイパーパラメーターを変化させてパイプラインを実行したりといったことができます。
以上のようにデザイナーの機能を使うと、用意されたデータに対する前処理から、学習した個々のモデルの精度検証まで、機械学習のフローを自動化できます。様々な条件による学習を簡単に実行することで、機械学習モデルの開発プロセスがより効率的になります。
Azureはほかに、データそのものを自動更新する「Data Pipeline」、学習されたモデルの品質を検証して実行環境にデプロイする「Release Pipeline」といった仕組みを提供しています。それらを統合すれば、データの作成から本番リリースまで、自動化の範囲をさらに広げられます。
機械学習のフローを作り、その実行を自動化することにより、DevOpsの手法を応用して、本番導入後も機械学習モデルを継続的に改良する「MLOps」を実現できます。デザイナーはAutoMLと比較するとやや上級者向けの機能となりますが、MLOpsの入り口としてぜひ利用を検討してください。
今回はAzureの提供する機械学習サービスについて解説してきました。機械学習モデルの学習をするだけなら、オンプレミスのサーバーとクラウドで大きな差はありません。しかし、自社の提供サービスに機械学習モデルを組み込んで継続的に改善するとなると、話は別です。今回見てきたように、クラウドと組み合わせることで様々な恩恵があります。クラウドを利用開始する際のハードルは決して高くありません。まずは試すところから始め、自社データを活用したサービス開発につなげていただければと思います。