Jaa


Azure Machine Learning の新機能の詳細

執筆者: Matt Winkler (Group Program Manager, Machine Learning)

このポストは、9 月 25 日に投稿された Diving deep into what’s new with Azure Machine Learning の翻訳です。

 

このたび、Azure Machine Learning が大幅に更新され、データ サイエンティストがあらゆる規模のモデルを構築、デプロイ、管理、監視するためのツールが提供されました。この 6 か月間、これらのツールのプライベート プレビューを実施し、100 社以上の企業にご参加いただきました。今回、この更新を皆様にお届けできることを光栄に思います。今回の記事では、Azure Machine Learning に関してマイクロソフトがこれまでに学んだこと、今日のお客様に見られる傾向、新機能を開発するうえで検討した主要な設計ポイント、新機能の詳細について説明します。

これまでに学んだこと

3 年前にリリースされた Azure Machine Learning Studio は、経験を積んだデータ サイエンティストとこの分野に新規参入するお客様の両方が ML モデルを簡単に作成、デプロイできるように設計されたツールです。Azure Machine Learning Studio では、構築した実験のサーバーレス トレーニングを (この用語が誕生する前から) 実現しており、グラフィカル インターフェイスで豊富なモジュール セットから選択するだけで実験を作成し、ワンクリックで Web サービスとしてデプロイすることができます。このサービスでは、データ サイエンティストが構築した数十万種類のモデルに対する何十億ものスコアリング要求を処理します。以下に、お客様による優れた活用事例をご紹介します。

マイクロソフトは長期間にわたり、一段階上の強力な機能と制御性を求めるお客様と協力してきました。今回の発表された機能は、このご要望にお応えするものです。お客様が実施しているデータ サイエンスのワークフローを詳細に確認したところ、以下の段階から構成されることが判明しました。

Business goals

主な傾向

この数年間、マイクロソフトはあらゆる業界のお客様と接してきました。お客様によって ML の経験も異なれば、解決している問題の分野も異なります。この経験から以下のような傾向が判明しました。

開発者による ML AI の採用が増加 : 開発者の皆様との話の中で、パーソナライズされた生産性の高い没入型のエクスペリエンスを構築したいという声がよく聞かれます。アプリの作成方法の一環として、ML や AI 機能は着実に浸透しつつあります。マイクロソフトの社内でも、開発しているアプリケーションに AI を使用する開発者が増加しています。特に興味深い例として、PowerPoint チームによる 2 つの活用方法が挙げられます。同チームは Microsoft Cognitive Services を活用して、リアルタイムで翻訳や字幕作成を行う機能と、箇条書きリストからタイムラインを作成する (英語) 言語認識ツールを開発しました。Microsoft Cognitive Services は、すぐに使用可能な 30 種類の AI API セットで構成されており、アプリケーションの強化を目的として数十万人の開発者に使用されています。AI に対する開発者の需要は増大する一方で、これらの新機能を使用したソフトウェアの作成方法が進化するにつれて、企業では自社のデータを基盤とする AI を容易に活用できるようにする方法がより一層求められています。

ハイブリッドでのトレーニングとスコアリング : データ要件はお客様によって異なり、データや決定を保存できる場所を判断するには、コンプライアンス、コスト、規制、物理的要因、既存のプロセスやアプリケーションなどのあらゆる要素が関係します。そのため、データの管理や移動に関する課題が生じると共に、あらゆるデータを扱えるツール、サービス、フレームワークが必要になります。また、モデルをさまざまな場所にデプロイできる必要もあります。多くのお客様が大量のデータをデータ レイクに集約し、Spark などのツールを使用してデータの準備と分析を行っていますが、生成されたモデルはさまざまなフォーム ファクターにデプロイする必要があります。ハイブリッドのパターンには、主に 2 種類あります。1 つ目は、オンプレミス システムに保存されている機密データを使用してモデルのトレーニングを行い、クラウドやアプリケーションにデプロイするパターンです。2 つ目は、クラウド (IoT アプリケーションなど) に取り込まれた大量のデータを使用してモデルのトレーニングを行い、そのモデルをオンプレミスや非接続型環境にデプロイするパターンです。

可能な限りイベントに近い場所でスコアリングを実行 : 前述のポイントに関連して、開発者が場所を問わずにモデルを使用できることの重要性が高まっており、エッジやデバイス上でのスコアリングが増加しています。先日、Custom Vision Service ではトレーニング済みの認識モデルを CoreML に出力して iOS から直接使用できる (英語) 機能を実現しました。IoT 分野のお客様は、モデルをデバイスに直接配置したり、独立して実行できるゲートウェイ デバイスに配置したりする方法を求めています。レイテンシに対応したいという場合でも、非接続時にもスコアリングをサポートしたいという場合でも、場所を問わずにモデルのトレーニングを柔軟に実行し、可能な限りイベントに近い場所でスコアリングを実行するようにデプロイ先を制御したいと考えています。

ハードウェア、フレームワーク、ツールの多様化が加速 : この分野に携わっていて興味深いことの 1 つに、スタックのすべての層において驚くべきスピードでイノベーションが進行していることが挙げられます。目もくらむほどの種類のツールが提供されており、それぞれが魅力的な特長を備えています。ハードウェア レイヤーでは、CPU、GPU、FPGA などの処理能力が指数関数的に向上しています。このイノベーションの結果、徐々にツールチェーンが成熟し、ハードウェア レベルでも特定のワークロードへの最適化が進み、お客様がコスト、レイテンシ、制御性のバランスを取りながら調整できるようになります。短期的には、お客様がさまざまなツール セットを試用して、自社のユース ケースに最適なものを発見しようとしている段階にあります。

設計ポイント

このように学んだことを踏まえ、マイクロソフトは今回の新機能を作成するにあたって、以下の 4 項目に重点を置いて設計を行いました。

大規模な機械学習

マイクロソフトが開発するサービスやツールは大規模で動作する必要があります。お客様は現在、少なくとも以下の 5 つの側面で「規模」の問題を抱えています。

あらゆるデータに対して動作する : お客様は、大規模なモデルの構築に必要なすべてのデータにアクセスできる必要があります。多くの場合、そのためにはデータ レイク内の増加を続けるデータに対して Spark などのツールを使用しますが、問題はそれだけではありません。お客様はデータを発見して取得してから、データを理解して整形する必要があります。データ サイズが増大しても各段階でボトルネックが発生しないように、マイクロソフトのツールは、ローカルの CSV ファイルからクラウド上のペタバイト規模のデータ レイクまで、あらゆる規模に合わせてスケーリングできる必要があります。

増大するコンピューティング ニーズに対応する ( スケールアップとスケールアウト ): データ量の増加以外に、マイクロソフトが使用している手法では処理能力をスケーリングする必要があります。これに対応するには、巨大なデータセットをインメモリで直接処理できるマシンや、ディープ ラーニング用の最新の GPU を搭載したマシンにお客様がスケールアップする必要があります。同時に、Spark などの分散型データ インフラストラクチャ上でスケールアウトして問題セットに対応したり、Azure Batch サービス上でスケールアウトしてハイパーパラメーター スイープの超並列処理やモデル評価を実行したりします。大規模なディープ ラーニングを実行するには、この 2 つの方法を組み合わせて、スケールアップされたマシンを多数使用する必要があります。

モデルと実験の数を増やす : チームでの実験速度が増加することで、実行される実験と生成されるモデルの数も増加します。その結果、これらのモデルを管理、監視、保守できることが非常に重要になります。チームはモデルの任意のバージョンを特定して再作成できる必要がありますが、企業が意思決定に AI を活用する機会が増加するにつれて、記録する必要がある成果物の数も増大しています。

モデルの使用規模を拡大する : 任意のツールやフレームワークを使用して生成されたモデルは、どれほど多数の要求にも対応できるように、簡単にスケーリングできる形でデプロイする必要があります。マイクロソフトはこれを実現するために、お客様が細かく制御できるようにモデルのコンテナーベースのデプロイメントを採用すると共に、Azure Container Service などのサービスを使用して Azure でスケーラブルなホスト レイヤーを提供する必要があります。

チームの規模を拡大する : データ サイエンティストのチームは 1 か所にまとまっているわけではありません。マイクロソフトのツールやサービスは、データ サイエンスのライフサイクルのあらゆる段階で、安全な共同作業や共有を可能にする必要があります。ソフトウェア開発において、さまざまな形態のチームやプロセスを柔軟にサポートするためにソース管理システムが進化したのと同様に、マイクロソフトのシステムはチームの成長に合わせて AI 開発ライフサイクルをサポートする必要があります。

現在使用しているツールで構築

お客様ごとに使用しているフレームワークやツールチェーンはさまざまです。エコシステムが急速に多様化する中で、お客様はさまざまなツールを試用して、自社に最適なものを選択できるようになりました。また、エコシステムにおけるイノベーションが急速に進行しているため、現在使用しているツール、フレームワーク、手法が 6 か月後にもそのまま通用するとは限りません。マイクロソフトが開発するサービスやツールには、データ サイエンティストがエコシステムの中からツールを自由に選択して使用できること、ツールが進化しても一貫したトレーニング、デプロイメント、管理のエクスペリエンスを提供することが求められます。

ツールが爆発的に増加した結果、再現性の確保が難しくなっています。12 か月後にはツールが変化していたら、どのように実験を再作成すればよいでしょうか。ソフトウェア開発者が検証済みの依存関係のチェックポイントを作成する必要があるのと同様に、マイクロソフトのシステムでは、フレームワークが変化しても結果を確実に再現できる必要があります。

実験速度を向上

データ サイエンス チームにとって主な負担となる分野として、よく耳にするのが以下の課題です。

  • データの取得、準備、理解
  • トレーニングの確実なスケーリング (ローカルでの迅速なプロトタイプ作成から大規模なデータセットへのスケーリング)
  • 異なるツールや手法でトレーニングされたモデルの比較と選択
  • 運用環境へのモデルのデプロイ
  • デプロイされたモデルからのテレメトリの取得とモデルの改良

各段階の負担と次の段階へ移行する際の負担を軽減することが、チームによる実験速度の向上につながるとマイクロソフトは考えます。これにより、優れたモデルを迅速に作成できるため、最終的にはお客様にもたらされる価値が高まり、チームの作業効率が向上します。マイクロソフトのサービスやツールは、これらの主な負担を軽減すると同時に、必要とされる柔軟性や制御性を維持する必要があります。

あらゆる場所にモデルをデプロイ

最後に、マイクロソフトが開発するサービスでは、あらゆる場所にモデルをデプロイして、管理、監視できる必要があります。お客様は、以下のようなフォーム ファクターに柔軟にデプロイできることが重要です。

  • クラウドへのデプロイ: スケーラブルな Web サービスとして膨大な数のデバイスやアプリで使用
  • データ レイクへのデプロイ: インタラクティブかつリアルタイムのストリーミング パイプラインで大規模にデータを一括処理
  • SQL Server 2017 などのデータ エンジンへのデプロイ: データをインラインでスコアリングしてトランザクション処理やデータ ウェアハウスの用途に使用
  • エッジ デバイスへのデプロイ: 可能な限りイベントに近い場所にスコアリングを移動し、非接続型シナリオをサポート

新機能の詳細

前述の設計ポイントを踏まえ、以下の Azure Machine Learning の新機能がリリースされました。

Azure Machine Learning Experimentation

Azure Machine Learning Experimentation Service により、開発者やデータ サイエンティストは実験速度を向上させることができます。すべてのプロジェクトは Git リポジトリでバックアップされており、シンプルなコマンド ライン ツールを使用して実験やトレーニングの実行を管理できるため、実行するたびに使用されたコード、構成、データを記録できます。さらに重要なこととして、モデルのファイル、ログ出力、主要なメトリックといった実験の出力も記録されるため、時間の経過と共に進化したモデルの履歴を確認できる強力なリポジトリとなります。

Experimentation Service では、お客様が希望する任意の Python ツールやフレームワークを活用できます。実験は、ローカル マシンで実行することも、ローカルまたはリモートの Docker コンテナー内で実行することも、Spark 上でスケールアウトして実行することもできます。HDInsight の Apache Spark を活用すると、データの準備や変換、大量のデータを使用したトレーニングを実行できます。ディープ ラーニング ベースの実験には、GPU アクセラレーション対応仮想マシンで Microsoft Cognitive Toolkit (英語)Tensorflow (英語)Caffe (英語)PyTorch (英語) などのフレームワークを使用します。今後は、Azure Batch AI (英語) サービスを試用してトレーニングの大規模なスケールアウトを行い、Model Management Service で運用化できるようになります。

Azure Machine Learning で使用可能な Machine Learning Server の Python ライブラリ (revoscalepymicrosoftml、英語) には、マイクロソフトが提供する Python バージョンの Parallel External Memory Algorithms (線形回帰、ロジスティック回帰、デシジョン ツリー、ブースト デシジョン ツリー、ランダム フォレスト) と、運用環境でテストされた ML アルゴリズムと変換 (ディープ ニューラル ネット、1 クラス SVM、高速ツリー、フォレスト、線形回帰、ロジスティック回帰) が含まれます。また、これらのライブラリには、リモートのデータ ソースやデプロイメント先に接続するための豊富な API が含まれています。これらのライブラリを使用すると、Experimentation Service でモデルをトレーニングして、これらのモデルを Machine Learning Server が実行されている場所 (SQL Server、HD Insight、Windows Server、Linux、Spark の 3 種類のディストリビューション) で運用化することができます。このトレーニングと運用化の機能はほぼすべての Python ツールキットで使用できます。これにより、お客様が普段使用しているデータ サイエンス環境から直接モデルを構築し、運用環境のデータ プラットフォームで運用化することができます。

データ サイエンスのプロセスは一方向ではありません。そこで、Experimentation Service では履歴を確認し、適切な結果が得られた実験を比較することができます。適切なバージョンを発見したら、使用されたコード、構成、データを現在のプロジェクトに設定することで、過去の任意の時点から開発を容易に開始できます。さらに、環境構成を記録することで、まったく同じ構成で新規環境を簡単かつ迅速にセットアップできます。Experimentation Service では、ローカル マシン上、ローカルやクラウドで実行されている Docker コンテナー内、HDInsight の Spark などの Azure のスケールアウト エンジン上のトレーニングを管理できます。コマンド ラインのパラメーターを変更するだけで、ジョブの実行場所をローカルからクラウドに容易に移動できます。

Azure Machine Learning Model Management

Model Management Service では、Azure やオンプレミスのモデルを IoT エッジ デバイスなどにデプロイし、ホスト、バージョン管理、管理、監視を行うことができます。このサービスでは Docker を大幅に活用し、モデルをホストするメカニズムとしてのコンテナーの制御性、柔軟性、利便性を提供しています。コンテナーにより、モデルのホスティング環境の再現性と一貫性が得られます。モデルは Python で作成された Web サービスに表示されるため、高度なロジック、カスタムのログ記録、状態管理、その他のコードを Web サービスの実行パイプラインに追加できます。このロジックをパッケージ化してコンテナーが構築されます。コンテナーは Azure Container Registry に登録し、任意の標準 Docker ツールチェーンを使用してデプロイできます。Azure Container Service クラスターへのモデルの大規模なデプロイにも対応するため、モデルのホストに最適化されたホスティング インフラストラクチャを開発しました。このインフラストラクチャでは、コンテナーの自動スケーリングを行ったり、要求を使用可能なコンテナーに効率的にルーティングしたりする処理を行います。

デプロイされたモデルやサービスは Application Insights で監視し、特定のモデルのメトリックなど、モデルの実行に関する詳細情報を決定ごとに把握できます。デプロイされたモデルのバージョンが記録されるため、モデルの作成に使用されたコード、構成、データをリンクから辿ることができます。アップグレードしたモデルのデプロイメント管理もサポートされており、ダウンタイムを発生させずに新しいバージョンを確実にデプロイできるほか、必要な場合は以前のバージョンにロールバックすることもできます。デプロイされたモデルを監視し、新しいデータを使用してトレーニングを行った後に更新するという再トレーニングのシナリオも可能で、新しいデータに基づいてモデルを継続的に改良できます。

Screenshot_1

このモデルの主なメリットとして、デプロイメント プロファイルを完全に制御できることが挙げられます。すべてのモデルを単一のクラスターでホストする場合にも、部署やお客様ごとにクラスターをデプロイする場合にも、単一のモデルによって日中は大量の呼び出しをサポートし、夜間はスケールダウンする場合にも対応できます。マイクロソフトの目標は、お客様がコンテナーのホスティング インフラストラクチャを制御できるようにして、お客様が求めていた制御性とカスタマイズ性を実現することです。お客様は VM の種類とデプロイメント プロファイルを自由に選択できるため、クラスターにデプロイする前の開発およびテストに使用する単一インスタンスとして Data Science Virtual Machine の使用を容易に開始することができます。

Model Management Service でデプロイされたモデルには、コードからサービスを簡単に使用できるようにするためのメカニズムとして Swagger も表示されます。Excel チームのパートナーは、この機能を使用して、Excel から直接モデルをきわめて容易に発見、使用できるようにしました。

Experimentation Service と Model Management Service の連携により、デプロイされたモデルを管理し、モデルの作成に使用されたトレーニング ジョブまでさかのぼって時系列を確認できます。デプロイされたモデルに対してテレメトリを有効化すると、すべての決定を表示して、モデルを作成した実験の決定を辿ることができます。これにより、モデルのライフサイクル全体を通じてデバッグや診断を行うことができます。

Model Management Image

Azure Machine Learning Workbench

開発を開始するにあたってまず取り組んだのは、このサービスをコマンド ラインから完全に操作できるようにすることでした。しかし、お客様からは環境のセットアップ、データ ラングリング、実行結果の比較の視覚化が難しいというご意見が寄せられていました。そこで、マイクロソフトはお客様の現在の開発プロセスを補助するアプリケーションとして Azure Machine Learning Workbench を開発しました。ぜひ皆様のご意見をお聞かせください。Azure Machine Learning Workbench は Windows と Mac で動作するクライアント アプリケーションです。簡単なセットアップとインストールによって、conda や Jupyter などを含む構成済みの Python 環境がインストールされるほか、Azure のすべてのバックエンド サービスと接続されます。このツールは開発ライフサイクルのコントロール パネルの役割を果たすもので、サービスの使用を開始する場合に非常に便利です。

また、アプリケーションには豊富なサンプルが組み込まれており、ワンクリックでさまざまなツールや手法を使用したトレーニングを実行できます。これらのサンプルは、[New Project] をクリックすると表示されます。以下の図は、前述の Experimentation Service の実験履歴の管理画面です。実行結果の履歴を辿って主要なメトリックの進化を一目で把握したり、個々の実行結果の詳細を確認したり、並べて表示してパフォーマンスを比較したりできます。

Workbench

matplotlib などを使用してコードに視覚化を組み込んだ場合は、実行結果の詳細情報の一部としてアーカイブおよび保存されます。以下のスクリーンショットでは、ドキュメントの分析結果に基づいて生成されたワード クラウドが表示されています。また、Git のコミット ID も表示されるため、この実験の時点から編集を開始したい場合には、そのコミットから簡単にチェックアウトできます。

Workbench 2

最後に、実行結果は並べて表示して、比較や評価を行うことができます。

Workbench 3

Azure Machine Learning Workbench では、Jupyter ノートブックもホストされており、ローカルやリモートのカーネルを対象として構成できます。そのため、ノート PC のノートブックで反復的に開発を行ったり、HDInsight で実行されている大規模な Spark クラスターに接続したりできます。

Workbench 4

AI を活用したデータ ラングリング

特に時間がかかる作業の 1 つがデータの準備です。データの取得、整形、準備に関する問題 (と所要時間) については以前から多数のご意見が寄せられており、その改善に取り組んでいます。マイクロソフトは、モデリングに使用するデータを取得するため時間と労力を削減し、データ サイエンティストがデータを準備、理解する速度を抜本的に迅速化して、短時間で「データ サイエンス」を開始できるようにしたいと考えています。今回、Azure Machine Learning Workbench の一部として、AI を活用した新しいデータ ラングリング テクノロジが導入されました。これは、データを準備する際の生産性向上を目的としたものです。マイクロソフトは、Microsoft Research の PROSE (Program Synthesis、英語)データ クリーニング (英語) に関する高度な研究を活用してさまざまな手法を組み合わせ、データ準備の所要時間を大幅に短縮するデータ ラングリング エクスペリエンスを作成しました。データ ソースを処理するためのシンプルなライブラリが複数含まれており、データ サイエンティストは環境を切り替える場合にも、ファイル パスや依存関係の変更に時間を取られることなく、コード作成に集中できます。これらのエクスペリエンスを組み合わせることにより、クラウド コンピューティング エンジン間で透過的にスケールアウトした場合にも、実行環境を選択するだけで、小規模な環境と大規模な環境の両方で同じツールを使用できます。

Workbench 5

このデータ ラングリング ツールには、サンプルに基づいてデータ変換を構築できる強力な機能が備わっています。これまでは数値や日付の書式設定や変換に時間がかかりましたが、サンプルを利用することでデータ変換を簡素化することができます。以下の例では、後でデータセットの結合や集計に使用できるように、datetime 文字列を「曜日 + 2 時間ごとの時間帯」に変更しています。表示された変換が希望する結果にならない場合は、カスタムの Python コードやライブラリを挿入して、データの絞り込みや変換に使用することもできます。

Workbench 6

構築したデータ変換は、変換結果を含む pandas DataFrame を返すことで、容易に Python コードに組み込むことができます。

Workbench 7

DataFrame を生成するためには、以下のコードを作成します。

  # Azure Machine Learning のデータ ラングリング パッケージを使用します。 
from azureml.dataprep import package
 # Azure Machine Learning のデータ コレクターを使用して各種メトリックのログを記録します。 
from azureml.logging import get_azureml_logger
logger = get_azureml_logger()
 # この呼び出しにより、参照パッケージが読み込まれ、DataFrame が返されます。<br># PySpark 環境で実行されている場合は、この呼び出しによって<br># Spark DataFrame が返され、それ以外の場合は Pandas DataFrame が返されます。 
df = package.run('bikes.dprep', dataflow_idx=0)
 # この行を削除して、DataFrame を使用するコードを追加します。 
df.head(10)

Visual Studio Code Tools for AI

お客様が任意の開発ツールを使用できることは重要です。マイクロソフトは、それらのエクスペリエンスが Azure の新しいサービスとシームレスに連携するようにしたいと考えています。そこで、エディターに統合できる Visual Studio Code Tools for AI (英語) の初回リリースを発表しました。この拡張機能では、Microsoft Cognitive Toolkit (CNTK、英語)Google TensorFlow (英語)Theano (英語)Keras (英語)Caffe2 (英語) などのディープ ラーニング フレームワークでモデルを構築するための豊富な機能が提供されるほか、Experimentation Service と統合してローカルやクラウドでジョブを実行し、Model Management Service と統合してデプロイすることができます。

Visual Studio Code Tools for AI

使用を開始するには

詳細をご希望の方は、Azure に新しいアカウントをデプロイする方法を説明したドキュメントをご確認ください。また、各種クイック スタート ガイドやサービスの機能を紹介する詳細なチュートリアルも豊富に取り揃えています。

お客様が関心のある課題に取り組んだり、以下のような今後の課題を解決するための手法を採用したりできるように、マイクロソフトのデータ サイエンティストは、サンプル データを含む詳細なシナリオの作業手順をまとめました。

これらのドキュメントは継続的に更新してまいります。ご意見やご提案がありましたら、ぜひお聞かせください。

今後の展望

本日より、上記のサービスやツールは Azure でパブリック プレビューとして提供されます。サービスの一般提供の開始は、今後数か月以内を予定しています。今後も引き続きお客様と協力し、お寄せいただいたフィードバックを参考にして、主要機能、更新、全世界に向けたロールアウトを決定してまいります。ぜひフィードバック サイト (英語)MSDN フォーラム (英語)、Twitter (ハッシュ タグ #AzureML) を通じてマイクロソフトのチームにご意見をお聞かせください。また、2017 年 10 月 4 日には、シニア PM の Ted Way による Web セミナー (英語) を開催しますので、ご興味をお持ちの方はぜひご参加ください。

今回の発表は、この画期的な取り組みの始まりに過ぎません。今後も皆様のご協力をお願いいたします。