チュートリアル: AzureMLでの大規模トレーニング

原文: Tutorial: Training at Scale on AzureML
Published 04/06/2021 By Phil Tooley

Azure Machine Learningを使用して、大規模なAIモデルを迅速にトレーニングする

注: クラウドは移り変わりの速い環境です。このチュートリアルは2021年3月時点のものですが、サービスの最新のアップデートについては、Azure Machine Learning Documentation をご確認ください。

AIと機械学習は、科学、産業、ビジネスに変革をもたらし、その応用範囲は常に拡大しています。進歩のスピードはとどまるところを知らず、モデルはますます複雑になり、データセットはますます大きくなるため、1台のGPU、あるいは複数のGPUを搭載した1台のマシンでは十分ではありません。大規模なGPUクラスターでの分散型トレーニングは、より一般的な要件になりつつあります。多くの企業にとって、このようなクラスターを所有することは最適なソリューションではありません。このチュートリアルでは、Azure Machine Learningを使用して、独自のGPUクラスターで分散モデルを迅速にトレーニングする方法を紹介します。

クラウド・コンピューティングは、特にVMや仮想ネットワークなどのインフラを直接管理する場合、複雑になることは周知の事実です。しかし、適切なマネージドサービスを使用することで、基盤となるインフラストラクチャの管理は、クラウドプラットフォームによって処理されます。Azure Machine Learningサービスでは、ユーザーは、実行されるトレーニング(または推論)のすべての側面を管理し、基礎となるインフラストラクチャを自動的に管理することができます。

このチュートリアルを終える頃には、AzureMLワークスペースを作成し、データセット、ソフトウェア環境、コンピュートリソースを設定する方法を理解していることでしょう。また、AzureML Python SDKを使ってトレーニングジョブを作成し、送信する方法も学びます。

ここでは、複数のノード上の多数のGPUにうまくスケールする大規模モデルの例として、Mask R-CNNを使用します。Mask R-CNNは、画像のセグメンテーションとオブジェクト検出モデルで、与えられた画像内のすべてのオブジェクトを識別し、検出された各オブジェクトに対してピクセルレベルのマスクを作成するように設計されています。今回使用した実装は、Github の NVIDIA Deep Learning Examples リポジトリから入手できます。今回使用する学習データセットは、Mask R-CNNのMLPerfベンチマークに使用されているCOCO2017(Common Objects in Context)データセットです。以下は、よく訓練されたMask R-CNNの実装から得られる出力の例です。

Image Credit: Facebook AI Research (https://github.com/facebookresearch/detectron2/)
Image Credit: Facebook AI Research (https://github.com/facebookresearch/detectron2/)

前提条件

このチュートリアルに従うには、以下が必要です。

  • AzureML用のND40rs v2インスタンス・クオータを持つAzureサブスクリプション
  • LinuxのBashシェルに精通していること
  • プログラミング言語Pythonの基本的な知識

データセットとインフラの準備

トレーニングを行う前に、まず使用するさまざまなAzureリソースを作成、設定する必要があります。まず、ストレージアカウントを作成し、トレーニングデータセットをアップロードします。次に、AzureMLワークスペースを作成し、トレーニング用のデータセットにアクセスできるように設定します。

これらの最初のステップは、Azure CLIツールとBashシェルを使って行います。Azure CLIは、Windows、Linux、Mac OSにインストールできるほか、Azureクラウドのシェルからも利用できます。Bashシェルは、LinuxとMac OSで利用できるほか、WindowsではWSL(Windows Subsystem for Linux)経由で利用できます。また、Bashシェルを必要とするすべての手順は、Linuxディストリビューション(Ubuntu 18.04など)を実行しているAzure VMインスタンスを使用して行うこともできます。

注:このチュートリアルでは、既存のAzureMLワークスペースやその他のインフラストラクチャがプロビジョニングされていないことを前提に、必要なすべての作成手順を説明しています。ただし、すでにAzureMLワークスペースや適切なストレージアカウントを作成している場合は、新たに作成するのではなく、それらを使用することをお勧めします。

トレーニングデータセットの準備

AzureMLは、さまざまなAzureストレージからのデータアクセスをサポートしています。しかし、この例で使用するCOCO2017データセットのような大きなファイルベースのデータセットには、Azure blobストレージが最も適切なストレージバックエンドです。

Azure blobをストレージバックエンドとして使用するには、まず、ストレージアカウントblobコンテナを作成する必要があります。もちろん、既存のストレージアカウントを利用することもできますが、最高のパフォーマンスを得るためには、トレーニングデータセット専用のストレージアカウントを新たに作成することをお勧めします。これにより、帯域幅やトランザクションの上限を他のワークロードと共有することがなくなり、トレーニングのパフォーマンスが低下したり、計算コストが増加したりするのを防ぐことができます。また、ストレージアカウントは、AzureMLのワークスペースと同じリージョンに置くことが重要です。これにより、最大のパフォーマンスが保証され、リージョン間のデータ転送にかかるコストも回避できます。

ストレージアカウントとコンテナは、AzureポータルまたはAzure CLIで作成できます。このチュートリアルでは、Azure CLIを使ったデモを行います。

$ location="WestEurope"
$ rg_name="MLRG"
$ az group create --name ${rg_name} --location ${location}
$ storage_name=mlstorage-$RANDOM
$ az storage account create --name ${storage_name} --resource-group ${rg_name} --location ${location} --sku Standard_LRS
$ container_name=coco2017

このチュートリアルのすべての例では、名前やその他の設定オプションを保持するシェル変数を作成します。これらの変数は、後続の例で、以前に作成したリソースを参照するために使用されます。リソースの名前やその他のオプションは、お客様のニーズに合わせて適宜変更してください。

ストレージアカウントとコンテナを作成したら、コンテナへのAzureMLのアクセスを許可するために使用できる共有アクセストークン(SAS)も取得する必要があります。以下のAzure CLIコマンドは、適切なパーミッションを持つ一時的な(1ヶ月の寿命)SASトークンを作成し、このチュートリアルで今後使用するためにシェル変数${sas}に保存します。

$ expiry=$(date -u -d "1 month" '+%Y-%m-%dT%H:%MZ')
$ sas=$(az storage account generate-sas --account-name $storage_name --expiry $expiry \
  --services b --resource-types co --permission acdlpruw -o tsv)

データセットのアップロードは、Azureポータル、Storage Explorer、azcopyコマンドラインツールなど、さまざまな方法で行うことができます。azcopyは、ローカルファイル、Azureストレージ、その他様々なクラウドベンダーのストレージ技術に対応しており、クラウドストレージアカウントへのアップロード、クラウドストレージアカウントからのダウンロード、クラウドストレージアカウント間の転送を管理することができるため、最も柔軟な方法です。

このチュートリアルでMask RCNNを使用する場合、以下のコマンドでCOCO 2017データセットをダウンロードして準備します。

$ mkdir cocotmp; cd cocotmp
$ wget http://images.cocodataset.org/zips/train2017.zip
$ unzip train2017.zip
$ wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip
$ unzip annotations_trainval2017.zip

インターネットからデータセットをダウンロードする場合は、ストレージアカウントと同じリージョンにあるAzure仮想マシンを使用してデータを準備することをお勧めします。これにより、ローカルのインターネット接続でデータをダウンロードしてから再アップロードする必要がなくなります。

データセットの準備ができたら、Azureストレージにアップロードする必要があります。準備したデータセットを選択したAzureストレージコンテナにアップロードするには、データセットのベースディレクトリにいることを確認して、次のazcopyコマンドを使用します。

$ azcopy copy -r . https://${storage_name}.blob.core.windows.net/${container_name}/?${sas}

このコマンドは、現在の作業ディレクトリとすべてのサブディレクトリの内容を、以前に作成したAzureストレージコンテナに再帰的にコピーします。

AzureML ワークスペースの作成

次のステップは、AzureML ワークスペースを作成することです。これは、機械学習の設定、データ、実験、出力のすべてが保存される論理的なコンテナまたはアカウントです。AzureMLワークスペースは、Azureポータル、Azure CLI、AzureML Python SDKのいずれかで作成できます。

ワークスペースは、KeyVault、ストレージアカウント、コンテナレジストリなど、他のさまざまなAzureリソースに依存します。デフォルトでは、新しいリソースが作成されますが、オプションで既存のリソースを使用し、ワークスペースにアクセス権を付与することもできます。このチュートリアルでは、特定のリソースを提供しないので、新しいキーボルト、ストレージ・アカウント、コンテナ・レジストリが、ワークスペースとともに自動的に作成されます。

Azure CLIから新しいワークスペースを作成するには、次のコマンドを使用します。

$ azml_workspace="MLWorkspace"
$ az ml workspace create --resource-group ${rg_name} \
  --workspace_name ${azml_workspace} \
  --location ${location}

上記には、依存するリソースもすべて作成する必要があるため、通常は数分かかります。

ワークスペースとそれに依存するリソースが作成されたら、データセットとトレーニング環境の設定を開始します。

トレーニングデータセットの登録

AzureMLトレーニング環境内でスクリプトが利用できるようにトレーニングデータセットを利用できるようにするには、データセットとストレージバックエンドをAzureMLに登録する必要があります。これを行うために、AzureML SDKは、ストレージバックエンドの構成とデータセットの構成をそれぞれ定義するDatastoreオブジェクトとDatasetオブジェクトを提供します。

Datastore オブジェクトは、特定のストレージバックエンドへの接続を定義し、必要な認証情報を安全にキャッシュします。このケースでは、Azure Blobストレージバックエンドに接続し、SAS(Shared Access Signature)を使用して認証を行います。これは、Machine Learning Studio、Azure CLI、またはAzureML SDKで行うことができます。

Azure CLIでAzure BlobストレージにアタッチするDatastoreを定義するには、以下のコマンドを使用します。

$ datastore_name="coco2017_blob"
$ az ml datastore attach-blob \
  --resource-group ${rg_name} \
  --workspace-name ${azml_workspace} \
  --name ${datastore_name} \
  --account-name ${storage_name} \
  --container-name ${container_name} \
  --sas-token ${sas}

注:これは、前のステップでワークスペース名、ストレージアカウント名、コンテナ名、共有アクセス署名のシェル変数を設定したことを前提としています

次に、このデータストアを使用してデータセットを定義します。具体的には、FileDataSet オブジェクトを作成します。このオブジェクトは、AzureML ワークスペースでトレーニングや推論の実行を行う際にマウントまたはダウンロードできるストレージからのファイルのリストを定義します。データセット内のすべてのファイルのリストを明示的に指定することも、ワイルドカード('*')を使ってパターンを指定することもできます。この場合、コンテナにはデータセットのファイルだけが入っていて、他には何も入っていないので、「/**」というパターンを使って、コンテナ内のすべてのファイルやフォルダに再帰的にマッチさせることができます。繰り返しになりますが、これはMachine Learning Studio、Azure CLI、またはAzureML SDKで行うことができます。

Azure CLIでCOCO 2017トレーニングセット用のFileDataSetを定義するには、まず、次の内容を含むDataSet仕様ファイルを作成します。

{
  "datasetType": "File",
  "parameters": {
    "path": {
        "datastoreName": "coco2017_blob",
        "relativePath": "/**"
    }
  },
  "registration": {
    "description": "COCO 2017 training and validation images",
    "name": "coco2017_trainval"
  },
  "schemaVersion": 1
}

異なるデータセットや命名規則を使用している場合は、dataStoreNameとnameに適切な値を代入し、作業ディレクトリにdataset_spec.jsonなどの名前でファイルを保存します。

これで、次のコマンドを使用して、ワークスペースのDatasetオブジェクトをspecファイルに登録することができます。

$ dataset_name="coco2017_trainval"
$ az ml dataset register --workspace-name ${azml_workspace} \
  --resource-group ${rg_name} \
  --file dataset_spec.json

このDatasetオブジェクトは、用意してアップロードしたデータセットファイルにアクセスするために、AzureMLのあらゆるジョブで使用できるようになりました。

投入スクリプト

このチュートリアルの残りの部分では、個々のトレーニング実行のための計算環境とジョブの設定について説明します。この設定は、ソフトウェア環境、コンピュートノードの数、コンピュートノードの種類、フレームワークやモデルの設定など、特定の実行に特有のものとなります。

AzureML_Best_PracticeのGithubリポジトリに、ジョブ投入スクリプトの例とそれに付随する設定ファイルを用意しました。これらを入手するには、このリポジトリをダウンロードまたはクローンしてください。Mask R-CNNトレーニングベンチマークスクリプトの例は、maskrcnnサブディレクトリにあります。

$ git clone https://github.com/numericalalgorithmsgroup/AzureML_Best_Practice.git
$ cd maskrcnn

提供されるスクリプトを実行する前に、sharedconfig.pyを編集して、前のセクションで設定したワークスペースとデータセットに関する必要な情報を提供する必要があります。この設定ファイルは、投稿スクリプトが正しいワークスペースに接続し、正しいデータセットでジョブを投稿するために使用されます。

ここでは、さまざまな使用例を示すために、送信スクリプトとトレーニングスクリプトの例を2つ示します。最初のスクリプト blobmount_submit_maskrcnn.py は、ネットワーク上にマウントされたデータセットで学習を行い、2番目のスクリプト localdownload_submit_maskrcnn.py は、学習前にデータセットを各計算ノードに明示的にダウンロードします。これらのスクリプトは、Mask R-CNNをベンチマーク用に動作させるためのものです。デフォルトでは、GPUあたり8枚の画像をバッチサイズとして、1000回の反復学習を行います。学習率やウォームアップ、ディケイのスケジュールなど、その他のハイパーパラメータの最適な選択は、バッチサイズやGPUの数によって異なるため、適宜選択する必要があります。

これらのトレーニングスクリプトを実行するには、まず、このチュートリアルの冒頭で説明されているように、AzureML SDKがインストールされていることを確認し、トレーニングを行うノード数を指定してスクリプトを呼び出します。また、トレーニングの反復回数を設定するなど、他のオプションを選択することもできます(--helpを使用すると、すべてのオプションが表示されます)。例えば、4つのノードで2000回の反復計算を行う場合、以下のようになります。

$ ./blobmount_submit_maskrcnn 4 --iter 2000

このスクリプトは、AzureML環境で4つのクラスター・ノードを構成し、そこに2000回の反復トレーニング・ジョブを投入します。クラスタは、ジョブ終了後に不要なコストが発生しないように、60秒後にアイドル状態のノードを自動的にシャットダウンするように設定されています。

ジョブ投入スクリプトの理解

このチュートリアルの最後のセクションでは、ジョブ投入スクリプトを使って、コンピュートクラスターの作成、トレーニング環境の設定、トレーニングジョブの投入を行う手順を紹介します。提供されているスクリプトは、これらのステップを以下のように自動化します。

コンピューティング環境の定義

nvironmentオブジェクトは、どのPythonパッケージをインストールするか、どのDockerコンテナを使用するかなど、コンピュート環境の望ましい状態に関する設定情報を収集します。Environmentオブジェクトは、ワークスペースによって保存され、バージョン管理されるため、任意のトレーニングや推論ジョブを再現するために必要なすべての情報を再利用し、アーカイブすることができます。

AzureML Python SDKでカスタム環境を定義するには、Environmentオブジェクトを作成し、必要に応じて設定し、ワークスペースに登録する必要があります。例えば、ローカルのDockerfile(名前は./MyDockerfile)で定義されたDockerイメージに基づいて環境を作成するには、次のようにします。

from azureml.core import Workspace, Environment

workspace = Workspace.get("AzureMLDemo")

environment = Environment("CustomDockerEnvironment")

environment.docker.enabled = True # Tell AzureML we want to use Docker
environment.docker.base_dockerfile = "./MyDockerfile" # Path to local Dockerfile
environment.python.user_managed_dependencies = True  # AzureML shouldn't try to install things

environment = environment.register(workspace) # Validate and register the environment

このEnvironmentオブジェクトをRunの設定に渡すと、AzureMLは提供されたDockerコンテナでそのRunを実行します。

この方法でDockerfileを渡すと、AzureMLは接続されたAzure Container RegistryインスタンスでDockerイメージを構築しますが、これは通常、専用ホストでコンテナを構築するよりもはるかに遅いです。また、AzureMLは、パブリックおよびプライベートコンテナレジストリの両方で、事前に構築されたDockerイメージの使用をサポートしています。カスタムコンテナの使用に関するAzureMLドキュメントでは、別のAzureコンテナレジストリまたはパブリックレジストリでホストされているカスタムDockerイメージを使用する方法を示しています。

カスタムDockerイメージ

AzureMLでカスタムDockerイメージを使用したい場合、AzureMLで必要なランタイムの依存関係を提供する必要があります。マイクロソフトは、AzureML用のサンプルDockerコンテナのリポジトリをGitHubで提供しています。このチュートリアルで使用するカスタムDockerイメージは、NVIDIA NGCコンテナイメージをベースに、以下を追加したものです。

# Build image on top of NVidia MXnet image
ARG FROM_IMAGE_NAME=nvcr.io/nvidia/pytorch:21.02-py3
FROM ${FROM_IMAGE_NAME}

# Pin Key Package Versions
ENV MOFED_VER 5.0-2.1.8.0
ENV AZML_SDK_VER 1.25.0

# Other required variables for MOFED drivers
ENV OS_VER ubuntu20.04
ENV PLATFORM x86_64

### Install Mellanox Drivers ###
RUN apt-get update && apt-get install -y libcap2 libfuse-dev && \
    wget --quiet http://content.mellanox.com/ofed/MLNX_OFED-${MOFED_VER}/MLNX_OFED_LINUX-${MOFED_VER}-${OS_VER}-${PLATFORM}.tgz && \
    tar -xvf MLNX_OFED_LINUX-${MOFED_VER}-${OS_VER}-${PLATFORM}.tgz && \
    MLNX_OFED_LINUX-${MOFED_VER}-${OS_VER}-${PLATFORM}/mlnxofedinstall --user-space-only --without-fw-update --all --without-neohost-backend --force


### Install Python Dependencies ###
RUN pip install azureml-defaults==${AZML_SDK_VER}

### Custom additions for specific training ###

# !!!! INSERT YOUR REQUIRED PACKAGE INSTALLATIONS HERE !!!!

これは、PyTorchを使ってAzureML上で分散型トレーニングを実行するために必要な、すべてのコアな依存関係を提供します。このチュートリアルで使用しているNVIDIA Mask R-CNNリファレンス実装は、使用しているベースNGCコンテナにプレインストールされています。必要に応じてワークロードや追加の依存関係を追加してください。完全なDockerfileは、他のすべてのチュートリアルコードとともに、このリポジトリで提供されています。

クラスタの定義

最後に、必要なコンピュートリソースを定義する必要があります。AzureMLは、シングルコンピュートインスタンスとクラスターの両方をサポートしていますが、このチュートリアルは分散型機械学習なので、コンピュートクラスターのみを検討します。コンピュートクラスターは永続的なオブジェクトで、最大ノード数までのオートスケールをサポートしており、クラスタがアイドル状態の時にはゼロノードになります。

AzureML SDKでコンピュートクラスターインスタンスを作成するには、まずコンピュートクラスターのプロビジョニング構成を定義する必要があります。その後、この構成でクラスタを作成します。

from azureml.core import Workspace
from azureml.core.compute import AmlCompute

workspace = Workspace.get("AzureMLDemo")

cluster_config = AmlCompute.provisioning_configuration(
  vm_size="Standard_ND40rs_v2",
  min_nodes=0,
  max_nodes=16,
  idle_seconds_before_scaledown=300,
  admin_username="clusteradmin",
  admin_user_ssh_key=sshpubkey, # Contents of a public key file
  remote_login_port_public_access="Enabled"
  )

cluster = AmlCompute.create(workspace, "MyCluster", cluster_config)

cluster.wait_for_completion()

これにより、最大16台のND40rs v2ノードにスケールアップできるクラスタが作成されます。クラスタはジョブの実行に必要に応じてオートスケールし、アイドル状態のノードは5分後にシャットダウンされます。クラスタ構成の最後の3つのオプションでは、管理者のユーザ名とsshキーを指定し、クラスタへのリモートsshアクセスを有効にします。これは、クラスタを手動で修正する必要のあるデバッグや高度な使用に役立ちます。

トレーニングの実行

データセット、コンピュート環境、コンピュートクラスターを定義したら、トレーニングジョブを送信することができます。AzureMLでは、トレーニングジョブをExperiment(実験)というグループにまとめ、それぞれに多くの実行を含めることができます。

Mask R-CNN のような既存のモデル実装では、通常、トレーニングスクリプトが用意されています。この場合、AzureMLにスクリプトとその他の設定ファイルをコンピュートノードにアップロードするように指示し、スクリプトを実行します。これは、AzureML SDKでScriptRunConfigオブジェクトを作成することによってのみ行うことができます。このコンフィグは、実行を開始するために実験に提出されます。

サブミッション・スクリプト・リポジトリのtrainディレクトリには、マスクR-CNNをトレーニングするためのいくつかのサンプルスクリプトが含まれています。これらは、NVIDIAのリポジトリにあるオリジナルのトレーニングスクリプトを、Azureとの互換性を持たせてアレンジしたものです。

さらに、複数のノードでの分散学習のためには、この分散構成に関する情報を提供する必要があります。そのために、MpiConfigurationオブジェクトをScriptRunConfigの引数として提供しています。

from azureml.core import Workspace, Experiment, ScriptRunConfig, Dataset
from azureml.core.runconfig import MpiConfiguration
from azureml.core.compute import AmlCompute

workspace = Workspace.get("AzureMLDemo") # Get existing workspace
environment = Environment.get(workspace, "CustomDockerEnvironment") # Get existing environment
cluster = AmlCompute(workspace, "MyCluster") # Get existing cluster
dataset = Dataset.get_by_name(workspace, "coco2017_trainval")

experiment = Experiment(workspace, "MyExperiment")

dist_config = MpiConfiguration(node_count=4, process_count_per_node=8)

jobconfig = ScriptRunConfig(
  source_directory="train",
  script="./train_net.py",
  arguments=["--dataset", dataset.as_mount()],
  compute_target=cluster,
  environment=environment,
  distributed_job_config=dist_config
  )

experiment.submit(jobconfig)

これにより、train1というディレクトリのコンテンツがアップロードされ、 train_net.pyというトレーニングスクリプトが、コンピュートクラスターの4つのノード上で、ノードあたり8プロセス(GPUあたり1プロセス)で実行されます。as_mount()メソッドを使用して、コンピュートクラスター上にデータセットをマウントするようにAzureMLに指示し、コンピュート上のマウントされた場所を返します。このメソッドは、コンピュート上のマウントされた場所を返します。このデータは、トレーニングスクリプトの引数として渡され、トレーニングデータを見つけることができます。

1サブミッション・スクリプトは maskrcnn ディレクトリから実行し、train ディレクトリを見つけてアップロードできるようにします。

結果データの保存

実行終了時に出力データを保存する方法はいくつかあります。最も簡単な方法は、トレーニングスクリプトの作業ディレクトリにあるoutputsという名前のフォルダに出力を置くことです。AzureMLは、outputsフォルダ内のすべてのファイルを自動的にキャプチャし、実行中のすべてのログデータとともに保存します。これらの保存されたファイルは、後でMachine Learning Studioの実行履歴ブレードからダウンロードすることができます。例えば、最終的な重みをキャプチャするには、重みをファイル./outputs/final_weights.pklに保存するコードをトレーニングスクリプトに追加します。実行が完了すると、ファイルfinal_weights.pklは、他のすべてのログや出力と一緒に、AzureML Studioを介して利用可能になります。詳細は、AzureMLドキュメントに記載されています。

また、結果ファイルを別の結果データセットにアップロードしたり、Azureストレージに直接アップロードする追加コードを含めることもできます。

次のステップ

ここまで来れば、分散型トレーニングの実施に成功したことになります。次は、新しいモデルを検証したいと思うでしょう。モデルのウェイトをダウンロードしてローカルで検証を行うこともできますし、AzureMLを使って検証を行うこともできます。

私たちは、新しいモデルをすぐにテストしたかったので、モデルをダウンロードし、提供されている推論デモスクリプトを使用して、独自の自転車レースの写真をセグメント化しました。

Image Credit: Gordon Hatton
Image Credit: Gordon Hatton (https://www.geograph.org.uk/photo/6142258)

モデルに満足したら、本番の推論のためにデプロイすることができます。AzureMLは、パイプラインやライフサイクル管理、バッチ、リアルタイム、エッジの各推論シナリオへのデプロイメントなど、モデルのデプロイメントを管理するための様々なMLOps機能を提供します。

まとめ

Azure Machine Learningサービスは、大規模なファイルベースのデータセットと分散トレーニングをサポートし、AzureクラウドへのMLワークフローの迅速な展開を可能にします。このチュートリアルでは、既存の機械学習ワークフロー(Mask R-CNN)のトレーニングを、大規模なファイルベースのデータセットとともにAzureMLに移植するために必要なすべてのステップの完全なデモンストレーションを提供します。トレーニング実行のためのデモ投稿スクリプトは、Githubリポジトリに含まれています。

クラウドHPC移行サービス

NAGはクラウドHPC移行サービスHPCコンサルティングを提供しており、組織がクラウドとHPCのために数値計算アプリケーションを最適化するのを支援します。HPCに関するベンダーにとらわれない公平なアドバイスとNAGがクラウドへの移行をどのように支援できるかについては、HPCとクラウドのコンサルティングとサービスをご覧ください。

関連情報
MENU
Privacy Policy  /  Trademarks