Azure ML

Azure Machine Learningに入門する

投稿日:

Azure Machine Learning (Azure ML) に入門してみる。

Azure MLとは

ざっくり、機械学習モデルの構築、学習、実験などの管理を行うためのSaaS型フレームワーク。
単にモデルの構築を行う環境であるだけでなく、継続的な精度向上や運用支援が考慮されている。

では、フレームワークの大構造はどういったものか。
まず、Azure MLは巨大なCompute(Cluster)を用意し、ユーザは時間課金でリソースを使用する。

実際に動作するコードのパートはいくつかの抽象化レイヤの上で構成される。
まず、Compute(Cluster)の上に、Dockerコンテナが配置される。
コンテナイメージはAzureが用意するものもあれば、自力で作成することもできる。
(ただし、自力で作成する場合はAzure ML SDKの要求する仕様を満たす必要がある。)

Dockerコンテナの上で、Condaを基盤としたPython実行環境が構成される。
この実行環境はAzureがキュレートしたものの他に自力で作成することもできる。

Azure MLが用意するフレームワークの上で、いくつかの抽象化レイヤを
決まりに従って動作させる必要があって、ドキュメント不備が目立つAzure MLにおいて、
大したことをしていないにもかかわらず、やたら難易度が高い作業になっている(気がする)。

Computeの上でEnvironmentを用意してbase_imageを設定し、
Run Scriptを実行する単位がExperimentでありJobである、という何か。

以下を上から流していって内容を確認していく。
Azure Machine Learning base images

Azureがキュレートする環境を使う

Azure MLコードの実体は、Conda上で動作するPythonで書かれたユーザコードである。
ユーザコードを実行するための依存関係をまず用意する必要がある。

やりたいことに応じて一通りAzureがセットを用意(キュレート)してくれている。
ひとまず、Azureが用意してくれる環境の一覧を取得してみる。
以下のコードはAzure ML上に作成したワークスペースの上でNotebookを作成し実行した。

出力結果は以下の通り。AzureML-から始まるのはAzureがキュレートする環境の意味。

このうち、AzureML-pytorch-1.9-ubuntu18.04-py37-cpu-inference というenvの
base_dockerfileを調べてみる。

ちなみに、base_imageとbase_dockerfileは排他になっていて、
こういうところがテキトーな作りだな、と感じる部分。

出力結果は以下の通り。急にDockerfileの中身が出てきた。

自力で環境を作る

自力で環境を作ることができる。前述の通りAzureMLはConda のフレームワークなので、
Condaの依存関係を定義することで環境を定義する。
この依存関係は yml 形式で記述することができる。
例えば、conda-dependencies.yml というファイルを作成する。

以下のようにして、このconda-dependencies.ymlから環境を構築する。

環境を動作させるベースイメージを設定する

Azureがキュレートする環境、または独自に作成した環境を動作させるDockerイメージを設定する。

Experimentの送信

早速、Azure ML Computeの上で、用意した環境を使ってみる。
環境はあくまで環境であって、環境の上で学習用コードなどを実行するのが目的。
今回は環境の動作が目的なので、HelloWorldを出力する学習用コード (train.py) を走らせてみる。
環境の上でコードを動かす単位を Experiment と言うらしい。
また、環境の上で動くコードの実行単位を Run と言うらしい。へぇ。

Experimentの送信って、まさにMicrosoft用語の真骨頂というか、
これだけ見ても何も分からないな。

初回実行時にDockerコンテナの作成が走る。今回は約1分程度を要した。
Azure MLのUI上から、新たなJobが開始されたことを確認できる。
StatusがCompletedとなり、Jobが完了したことがわかる。
Jobのログから、Hello Worldが出力されたことがわかる。

おわりに

とりあえず、Azure ML に入門してみた。
最も簡単なパスでHelloWorldコードを実行することができた。

-Azure ML
-,

Copyright© ikuty.com , 2022 AllRights Reserved Powered by AFFINGER4.