「Azure Machine Learningコンピューティング」(Azure Machine Learning Compute) とは?

Azure Machine Learningコンピューティング


「Azure Machine Learningサービス」の新機能「Azure Machine Learningコンピューティング」について、紹介します。

Azure Machine Learning

機械学習 (ML) モデルの開発/デプロイを支援するAzureサービス「Azure Machine Learning」には、2つのサービスがあります。

1つは、「Azure Machine Learning Studio」です。Azure Machine Learning Studioでは、Webブラウザーで動作するGUIベースの開発環境で、機械学習モデルの作成、トレーニング、Webサービスとしてのデプロイなどを行うことができます。

Azure Machine Learning Studioは、2014年7月にパブリックプレビューになり2015年2月にGA (一般提供)になりました。後述するもう1つのサービス「Azure Machine Learningサービス」が登場するまでは、「Azure Machine Learning Studio」は「Azure Machine Learning」と呼ばれていました。

Azure Machine Learning Studioには、登録なしで8時間試用できる「ゲスト ワークスペース」、登録することで無期限で利用できる「無料ワークスペース」、Azureサブスクリプション内で作成でいる有料の「標準ワークスペース」があります。興味のある方は、まずはゲスト ワークスペースを作成し、試用してみてください。

Azure Machine Learning Studio

もう1つのサービスは、「Azure Machine Learningサービス」です。Azure Machine Learningサービスは、機械学習モデルの構築、トレーニング、デプロイを支援する、Pythonを使うデータサイエンティスト向けのサービスです。

Azure Machine Learningサービスは、2017年9月のIgnite 2017で発表され、パブリックプレビューが始まりました。2018年9月のIgnite 2018では、パブリックプレビューの機能が大幅に刷新されました。そして、今月 (2018年12月)、Azure Machine Learningサービスが、GAになりました

Azure Machine Learningサービスの概要については、GAを発表した次のブログ ポストもご覧ください。

Azure Machine Learningコンピューティング

大きく発表はしていませんが、Azure Machine LearningサービスのGAとともに、機械学習モデルのトレーニングを実行するVMプールを提供する新機能「Azure Machine Learning コンピューティング」がGA機能として追加されました。前述のブログ ポストでは、次のように書かれています。

トレーニング

Azure Machine Learning service は、シームレスな分散コンピューティング機能を提供します。これにより、データ サイエンティストは、ローカル ラップトップやワークステーションからクラウドにトレーニングをスケールアウトできます。このコンピューティングはオンデマンドです。ユーザーは、コンピューティング時間に対して課金されるのみで、GPU や CPU クラスターを維持管理する必要はありません。

Azure Machine Learning Compute

Azure Machine Learningコンピューティングには、前身となるサービス「Azure Batch AI」がありました。2017年5月のBuild 2017で「Azure Batch AI Training」として発表され2017年10月に「Azure Batch AI」としてパブリック プレビューになりました

Azure Machine Learningコンピューティングの発表、GAに伴い、Azure Batch AIはGAになることなく、2019年3月にサービスが終了となる予定です。Azure Batch AIをお使いの方は、早急にAzure Machine Learningコンピューティングへの移行を検討してください。

Azure Machine Learningコンピューティングの利用方法

さて、ここからは、Azure Machine LearningサービスでのAzure Machine Learningコンピューティングの利用方法について、簡単に見てみましょう。

Azure Machine Learning サービスは、主に機械学習モデルのトレーニングとデプロイを支援します。Azure Machine Learningコンピューティングは、トレーニングを実行する「コンピューティング ターゲット」の1つです。

Azure Machine Learningサービスのワークフロー

トレーニングのコンピューティング ターゲットとしては、他にPython SDKを実行しているローカルマシン、Azure上のLinux VM、Azure Databricksなどの選択肢があります。

Azure Machine Learningコンピューティングは、現時点では唯一の「マネージド コンピューティング」(Azure Machine Learningサービスが作成、管理するコンピューティング ターゲット) であり、様々な新機能が最初に実装されるコンピューティング ターゲットです。他のコンピューティング ターゲットを使いたい強い理由がない場合は、Azure Machine Learningコンピューティングを使うことをお勧めします。

トレーニングのコンピューティング ターゲット

Azure Machine Learningコンピューティングは、Python SDKを使って作成します。トレーニングの実行ごとにAzure Machine Learningコンピューティングを作成することもできますし、事前に作成したAzure Machine Learningコンピューティングをトレーニングの際に参照して利用することもできます。

次のPythonコードでは、Azure Machine Learningコンピューティング (AmlCompute) を作成しています。最低限必要なオプションは、VMサイズ (vm_size)、最大ノード数 (max_nodes) です。

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
  cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
  print('Found existing cluster, use it.')
except ComputeTargetException:
  compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                         max_nodes=4)
  cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

VMサイズとしては、CPUに加えてGPU (Nシリーズ) もサポートされています。Azure Machine Learningコンピューティングが動作しているAzureリージョンで、使いたいGPUがサポートされていること、クォータの上限に達していないことを確認しましょう。

最小ノード数 (min_nodes) は既定で0なので、最小ノード数を指定しない場合、未使用時には0ノードまでスケールインし、料金が発生しないようになります。

VM優先度 (vm_priority)を、既定の「dedicated」から「lowpriority」(低優先度) に変更することで、低優先度VMを使うことができます。低優先度VMは、VMが使用できない、あるいは割り込まれる可能性がある代わりに、通常のVM (dedicated) に比べて大幅に安価な料金設定になっています。

他に、スケールインするまでの時間や、仮想ネットワーク関連のオプションがあります。

Azure Machine Learningコンピューティングを作成したら、トレーニングのためのPythonスクリプトを準備し、「Estimator」を作成し、トレーニング ジョブを送信します。

次の例では、Azure Machine Learningコンピューティング上の単一ノードでトレーニングを行っています。

from azureml.train.estimator import Estimator

script_params = {
  '--data-folder': ds.as_mount(),
  '--regularization': 0.8
}

est = Estimator(source_directory=script_folder,
                script_params=script_params,
                compute_target=compute_target,
                entry_script='train.py',
                conda_packages=['scikit-learn'])

PyTorch、TensorFlowでは、Azure Machine Learningコンピューティング上の複数ノードにわたる分散トレーニングもサポートされています。

次の例では、Horovodフレームワークを使ってPyTorchのMPIベースの分散トレーニングを実行しています。

from azureml.train.dnn import PyTorch

pt_est = PyTorch(source_directory='./my-pytorch-project',
                 script_params={},
                 compute_target=compute_target,
                 entry_script='train.py',
                 node_count=2,
                 process_count_per_node=1,
                 distributed_backend='mpi',
                 use_gpu=True)

Azure Machine Learningコンピューティングでは、ハイパー パラメーター チューニング、自動機械学習もサポートされており、トレーニングにかかる時間や手間を削減することができます。

Azure Machine Learningサービスのハイパー パラメーター チューニング

Azure Machine Learningサービスの始め方

ここからは、Azure Machine Learningサービスの始め方を簡単に紹介しましょう。

Azureサブスクリプションが必要です。Azureサブスクリプションをお持ちでない方は、無料アカウントの登録を行ってください。電話/SMSによる認証、クレジットカード登録が必要です。

Azure Machine Learningサービスを使うには、Pythonベースの開発環境が必要です。ローカルマシンに環境を構築することもできますし、VMイメージ「Data Science Virtual Machine」(DSVM)を使うこともできます。

お手軽な方法としては、Jupyterノートブックの実行環境を提供する無料サービス「Azure Notebooks」を使う方法があります。

次のクイック スタートに従うと、AzureポータルでAzure Machine Learningワークスペースを作成し、Azure Notebooksに、そのAzure Machine Learningワークスペース向けの構成済みのノートブックのサンプルをクローンすることができます。

次のノートブックは、クローン元のノートブックです。クイック スタートの手順に従うと、config.jsonファイルに、作成済みのAzure Machine Learningワークスペースの接続情報 (AzureサブスクリプションID、リソース グループ名、Azure Machine Learningワークスペース名) が自動入力されます。

同様のサンプルは、GitHubでも公開されています。

Azure Notebooksでクローンされたサンプルを開き、適宜実行してみることで、Azure Machine Learningコンピューティングなど、さまざまなAzure Machine Learningサービスの機能を簡単に試すことができます。

Azure Machine Learningコンピューティングを使う最も基本的なサンプルは、こちらです。scikit-learnを使ったトレーニングを、Azure Machine Learningコンピューティング上の単一ノードで実行しています。

Azure Machine Learningコンピューティングに関するサンプルは、こちらです。

「how-to-use-azureml」ディレクトリには、Azure Machine Learningコンピューティングを使った自動機械学習、深層学習 (ディープ ラーニング) のサンプルもあります。興味のある方は、確認してみてください。

One thought on “「Azure Machine Learningコンピューティング」(Azure Machine Learning Compute) とは?

Leave a reply to Azure Update (2019.01.10) | ブチザッキ Cancel reply