Azure Machine LearningのNotebookで選択できるカスタムの環境(カーネル)を作成する

こんにちは。今日はAzure Machine Learningと格闘していたので、つまったところや新しく知ったことをまとめておきたいと思います。

今回は、Notebookでカスタムの環境(カーネル)を使う方法についてです。

背景

なぜこんなことをしようと思ったかというと、コンピュートインスタンス作成時に規定で指定されている環境”Python 3.8 – AzureML”では、必要なパッケージがなかったり、バージョンが古かったりで手元の環境とのギャップが大きかったから考えるようになりました。

また、最初は「環境」というAzure Machine Learningの機能が使えるのかなと思いましたが、これはどうやら「実験」を実行する場合に利用できる環境のようで、Notebookでの実行に際しては選択することができませんでした。。OMG・・・

環境(カーネル)作成方法

結論、以下の公式ドキュメントで解説されていました。

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-access-terminal#add-new-kernels

まずコンピュートインスタンスのターミナルに接続します。

私はエディターにJupyter Labを使用しているので、Jupyter LabのUIですが、新規Notebookの作成時にターミナルを選択可能です。

ここで、以下のコマンドを実行していけばOKです。

//環境の作成
conda create --name ★環境名★

//新規環境への切り替え
conda activate ★環境名★

//カーネルの作成
conda install pip
conda install ipykernel
python -m ipykernel install --user --name ★環境名★ --display-name "★表示名"

これで、カーネルを再起動すると、ちゃんと選択できるようになりました!(手順をミスって同じ名前の環境が二つ存在していますが無視してください)

カスタム環境(カーネル)にローカル環境の構成を移植する

さて、この段階ではまだ空の環境です。ローカルの開発環境と同等の環境にするには、ローカル環境の構成を再現してやる必要があります。

これは、Anacondaの機能を使って実現できそうです。(ためしてはないのでうまくいかなかったらすみません)

想定としては、以下の方法でローカル環境から構成のYAMLファイルを出力して、Azure Machine Learningにアップロード、コンピュートインスタンスのターミナルからこれを使って環境を再構成すればいけるんじゃないかなぁとおもっとります。

または、以下のドキュメントで紹介されているように、必要なパッケージを個別に追加していく方法もありそうです。

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-access-terminal#install-packages

めでたし・・・なのか?

これでカスタムのカーネルが使えるようになったわけですが、これで万事OKになったのでしょうか・・・?さらなる躓きがまっていました。

Notebookのカーネルはコンピュートインスタンス内でのみ有効

まず、このカーネルは、コンピュートインスタンス内でのみ有効のようです。なのでコンピュートインスタンスを作り直したりすると、せっかく作ったカスタムの環境は消滅してしまします・・

ワークスペース共通で使いまわせるものではないんですね・・

でも、都度再作成するのも大変だ・・・どうにかして楽できないかな・・・

と思ったら、ありました。現在プレビューのようですが、コンピュートインスタンス上でカスタムスクリプトを実行することができるようです。

このスクリプトはプロビジョニング時に実行されるようです。

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-create-manage-compute-instance#setup-script

今後はこれで自動化するとよさそうです。

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。