Azure Machine Learning service の良さを伝えるために、まず自分で使ってみて、周りの色々なサービスとの連携を理解してみます。
いずれは Azure DevOps と組み合わせてどう使うのか、Visual Studio を使うと便利になるのか、など調べてみたいと思いますが、まずはローカル環境での Jupyter Notebook から始めてみたいと思います。
準備
次の流れで準備を進めましょう。
- ローカルの開発環境を準備
- Azure Machine Learning service のワークスペースを準備
- ワークスペース構成ファイルを用意して、上記2環境を連携
1. ローカルの開発環境を準備
Conda (Python仮想環境) のセットアップ
Conda を使うと 複数の Python 環境を簡単に作成、管理出来るので便利です。今回は「myenv」という仮想環境上にローカル開発環境(Python 3.6.5)を準備します。
Anaconda Prompt から以下を実行します。
(base) conda create -n myenv python=3.6.5
(base) conda activate myenv
(myenv) conda install notebook ipykernel
(myenv) ipython kernel install --user
Azure Machine Learning SDK のセットアップ
Jupyter Notebook 機能を備えた Machine Learning SDK をインストールします。
(myenv) pip install --upgrade azureml-sdk[notebooks]
(myenv) conda install -y cython matplotlib pandas
自動化された機械学習コンポーネントをインストールします。
(myenv) pip install --upgrade azureml-sdk[automl]
インストールしたのはこれ
What is the Azure Machine Learning SDK for Python?
What is the Azure Machine Learning Data Prep SDK for Python?
これでローカルPC上で Jupyter Notebook の環境を使った機械学習が出来るようになります。
(myenv) jupyter notebook
2. Azure Machine Learning service のワークスペースを準備
Jupyter Notebook から Azure Machine Learning service のワークスペースを作成してみます。
※Azure Portal から作成することも出来ます。GUI でのワークスペース作成方法はこちら
参考:Azure Machine Learning service ワークスペースを作成する
Jupyter Notebook を起動して [New] から [Python 3] をクリックします。
新規 Notebook のセルの中に以下のコマンドでワークスペースを作成します。
from azureml.core import Workspace
ws = Workspace.create(name='<workspace-name>',
subscription_id='<subscription-id>',
resource_group='<resource-group>',
create_resource_group=True,
location='<location>'
)
Azure Machine Learning service を使う際の認証方法について警告が出ています。Service Principal を使った認証方式をお薦めされていますが、今回は無視して、Azure Portal で結果を確認してみます。4 つのサービスが作成されます。
※ワークスペースの確認の仕方が分からない場合はこちら
参考:Azure Machine Learning service ワークスペースを作成し、管理する
3. ワークスペース構成ファイルを用意して、上記2環境を連携
上記、1 の手順で準備したローカル環境単独で機械学習を実行することも出来ますが、ワークスペース構成ファイルを作成して読み込むことで、ローカル環境で実行したトレーニング記録を Azure Machine Learning service のワークスペースに連携することが出来るようになります。以下のコマンドを使って Juputer Notebook から作成してみます。
from azureml.core import Workspace
subscription_id = '<subscription-id>'
resource_group = '<resource-group>'
workspace_name = '<workspace-name>'
try:
ws = Workspace(subscription_id = subscription_id, resource_group = resource_group, workspace_name = workspace_name)
ws.write_config()
print('Library configuration succeeded')
except:
print('Workspace not found')
.azureml フォルダの下にconfig.json という名前の構成ファイルが自動で作成されます。
新しい Jupyter Notebook File を作成して実際に連携が出来ているかどうか確認してみます。
import azureml.core
from azureml.core import Workspace, Experiment, Run
from azureml.core import ScriptRunConfig
ws = Workspace.from_config()
exp = Experiment(workspace=ws, name="explore-runs")
notebook_run = exp.start_logging()
notebook_run.log(name="message", value="Hello from run!")
notebook_run.get_details()
※ここを参考にしました。
参考:Python でのトレーニングの実行の開始、監視、およびキャンセル
実行状況が Azure Machine Learning Services ポータル上に記録されているか確認してみます。
「explore-runs」の名前で Experiment が作成されました。クリックして状況を確認してみます。
Jupyter Notebook でトレーニングを完了します。
Azure Machine Learning Services の ワークスペースでも状況を確認してみます。
確かに実行結果が記録されていることを確認しました。
トレーニングの実行場所が何処であれ、Azure Machine Learning service のワークスペースをハブとして、実行結果を記録していくというのは便利そうですね。
出張先のホテルで筋トレしても、結果は記録したいですもんね。