Azure で世界レベルの PyTorch をサポート

執筆者: Minna Xiao (Program Manager II, Machine Learning Platform)

このポストは、2018 年 10 月 2 日に投稿された World-class PyTorch support on Azure の翻訳です。

 

このたびマイクロソフトは、Azure Machine Learning のパブリック プレビュー更新の一環として、Azure 最高クラスのエクスペリエンスである PyTorch のサポートを強化しました。また、多数の自社製 AI プラットフォーム サービスやツールを通じて、PyTorch のサポートのさらなる充実を図りました。この記事ではその詳細についてご説明します。

2016 年 10 月に PyTorch の初回版をリリースしてからこの 2 年間に、さまざまな学術機関、業界、AI コミュニティの間でディープ ラーニング フレームワークの大規模な採用が迅速に進められてきました。PyTorch は、Python が非常に高度に統合された命令型フレームワークとして、研究者の間で長年親しまれています。最新の PyTorch 1.0 リリース (英語) では実稼働レベルの使用に対応し、プロトタイプから実稼働に至る完全なエンドツーエンドのディープ ラーニング プラットフォームを作成するのに必要なスケーラビリティを備えています。

PyTorch を Azure で使用する 4 つの方法

Azure Machine Learning サービス

Azure Machine Learning (Azure ML) はデータ サイエンティスト向けのクラウド ベース サービスで、データの準備やトレーニングからモデルの管理、デプロイに至るまで、エンドツーエンドの機械学習ワークフローを実行できます。このサービスは高機能な Python SDK を備えており、Jupyter Notebook やコード エディターなどのあらゆる Python 開発環境から、PyTorch モデルのトレーニング、ハイパーパラメーターのチューニング、デプロイを簡単に行うことができます。Azure ML のディープ ラーニング トレーニング機能では、ローカル マシンにある PyTorch トレーニング モデルを Azure クラウドにシームレスにスケールアウトできます。

Python SDK は、次の簡単なコマンドでインストールできます。

 pip install azureml-sdk

Azure ML サービスを利用する場合は、Azure アカウントを作成し、Azure サブスクリプションにアクセスする必要があります。まず、Azure Machine Learning のワークスペースを作成します。ワークスペースとは、他の Azure リソースやトレーニングの実行を管理するリソースが集約された場所です。

 ws = Workspace.create(name='my-workspace',
                       subscription_id='<azure-subscription-id>',
                       resource_group='my-resource-group')

PyTorch を存分に活用するためには、1 基以上のトレーニング用 GPU、および複雑なモデルや大規模なデータセットで使用するマルチノード クラスターにアクセスできるようにする必要があります。Python SDK では、単一ノードでも分散型環境でも、Azure のコンピューティング能力を PyTorch のトレーニングに利用できます。以下に示すコードは、自動スケーリングと GPU の使用に対応した Azure Batch AI クラスターの作成例です。

 provisioning_config = BatchAiCompute.provisioning_configuration(vm_size="STANDARD_NC6",
                     autoscale_enabled=True,
                     cluster_min_nodes=0,
                     cluster_max_nodes=4)
compute_target = ComputeTarget.create(ws, provisioning_config)

これでトレーニング スクリプトを実行する準備が完了しました。次の例では、ユーザーが実行するプログラムを追跡し、4 ノードの分散型 PyTorch トレーニングを実行する Azure ML のテストを作成します。

 experiment = Experiment(ws, "my pytorch experiment")
 
pt_estimator = PyTorch(source_directory='./my-training-files',
                  compute_target=compute_target,
                  entry_script='train.py',
                  node_count=4,
                  process_count_per_node=1,
                  distributed_backend='mpi',
                  use_gpu=True)
 
experiment.submit(pt_estimator)

モデルのパフォーマンスをさらに最適化するために、Azure ML ではハイパーパラメーターのチューニングを行い、ハイパーパラメーターのさまざまな組み合わせを簡単に試すことができます。他にも、ジョブをトレーニングしたり、パフォーマンスの低い実行を早めに終了させたり、チューニング プロセスの多様な視覚化機能を利用したりすることができます。

 # parameter sampling
param_sampling = RandomParameterSampling(
      "learning_rate": loguniform(-10, -3),
      "momentum": uniform(0.9, 0.99)
)
 
# early termination policy
policy = BanditPolicy(slack_factor=0.15, evaluation_interval=1)
 
# hyperparameter tuning configuration
hd_run_config = HyperDriveRunConfig(estimator=my_estimator,
                           hyperparameter_sampling=param_sampling,
                           policy=policy,
                           primary_metric_name='accuracy',
                           primary_metric_goal=PrimaryMetricGoal.MINIMIZE,
                           max_total_runs=100,
                           max_concurrent_runs=10,
)
experiment.submit(hd_run_config)

最終的に、データ サイエンティストやエンジニアの皆様が Python SDK を使用してトレーニング済みの PyTorch モデルを Azure Container Instances や Azure Kubernetes Service にデプロイできます。

Azure Machine Learning スイートの完全な機能については、こちらの概要記事 (英語) をお読みください。また、PyTorch モデルの Azure ML でのトレーニング、および Azure ML へのデプロイの詳細については、包括的なチュートリアル (英語) でご確認ください。

データ サイエンス仮想マシン

Azure では、データ サイエンス実験専用にカスタマイズされた VM のデータ サイエンス仮想マシン (DSVM) も提供しています。DSVM には、PyTorch を始めとする一般的なデータ サイエンス用およびディープ ラーニング用の包括的なツールセットがあらかじめ構成され、インストールされています。DSVM は、PyTorch でモデルを構築する場合に最適な開発エクスペリエンスであるため、スムーズに開発を行えます。PyTorch のすべての機能を活用するには、必要な GPU ドライバーと GPU 対応バージョンの PyTorch が事前にインストールされている GPU ベースの DSVM が便利です。この DSVM には、安定版として最新の PyTorch 0.4.1 リリースがインストールされており、プレビュー版 PyTorch 1.0 にアップグレードすることもできます。

Azure Notebooks

Azure Notebooks は、無料のクラウド ホスト型 Jupyter Notebook ソリューションであり、ブラウザーからインタラクティブにコーディングできます。Azure Notebooks コンテナーには PyTorch がインストールされているため、フレームワークをインストールしたり自身のノートブック サーバーをローカルで実行したりする必要なく、すぐに実験を始めることができます。さらに、Azure Notebooks には公式の最新版 PyTorch チュートリアルのライブラリ (英語) があります。PyTorch の学習や使用方法はとても簡単で、Azure アカウントを作成したりチュートリアル ノートブックを自身のライブラリにクローニングしたりする場合と変わりません。

Visual Studio Code Tools for AI

Visual Studio Code (VS Code) は、広く普及している軽量なソース コード エディターです。VS Code Tools for AI はクロス プラットフォームの拡張機能で、IDE を使用するデータ サイエンティストと開発者向けのディープ ラーニングや AI 実験の機能を備えています。Tools for AI は Azure Machine Learning サービスと緊密に統合されているため、PyTorch ジョブを Azure のコンピューティング機能に送信したり、実験の実行状況を追跡したり、トレーニング済みのモデルをデプロイするといったあらゆる操作を VS Code から行うことができます。

また、Tools for AI (英語) 拡張機能には、構文の強調表示や IntelliSense による自動コード補完、PyTorch API の組み込みのドキュメント検索など、豊富な機能が備わっています。

マイクロソフトの PyTorch への協力

最後になりますが、マイクロソフトは PyTorch の開発者コミュニティに参加し、PyTorch プラットフォームのイノベーションと機能強化に協力させていただいていることをとても嬉しく思います。直近では PyTorch のデータ読み込みとデータ処理の強化への協力を計画しています。具体的には、パフォーマンス向上や、Hidden Markov Model Toolkit (HTK) で定義されている形式の音声データセット、Azure Blob Storage のデータ読み込みのサポートなどを予定しています。また、PyTorch Windows と完全に同等のサポートを提供すること、および ONNX 標準に準拠し ONNX にすべて対応することも目指しています。さらに、Microsoft Research (MSR) と緊密に連携し、MSR の最新技術を PyTorch に組み込むことにも取り組んでいきます。

マイクロソフトは、このようなオープン ソースの AI テクノロジの発展を支持し、協力することに余念がありません。ちょうど 1 年前、マイクロソフトは Open Neural Network Exchange (ONNX、英語) に関する Facebook との連携を開始しました。これは、ONNX モデル表現の標準フォーマットを通じて、フレームワークの相互運用性とニューラル ネットワークによる共有の最適化を促進することを目的としています。マイクロソフトでは、Azure 用 PyTorch が AI 製品エコシステムを拡充し、研究機関や企業での開発を促進する一助となるよう、今後も取り組んでまいります。