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 のワークスペースをハブとして、実行結果を記録していくというのは便利そうですね。
出張先のホテルで筋トレしても、結果は記録したいですもんね。