こんにちは。今日はAzure Machine Learningと格闘していたので、つまったところや新しく知ったことをまとめておきたいと思います。
今回は、Notebookでカスタムの環境(カーネル)を使う方法についてです。
Contents
背景
なぜこんなことをしようと思ったかというと、コンピュートインスタンス作成時に規定で指定されている環境”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のカーネルはコンピュートインスタンス内でのみ有効
まず、このカーネルは、コンピュートインスタンス内でのみ有効のようです。なのでコンピュートインスタンスを作り直したりすると、せっかく作ったカスタムの環境は消滅してしまします・・
ワークスペース共通で使いまわせるものではないんですね・・
でも、都度再作成するのも大変だ・・・どうにかして楽できないかな・・・
と思ったら、ありました。現在プレビューのようですが、コンピュートインスタンス上でカスタムスクリプトを実行することができるようです。
このスクリプトはプロビジョニング時に実行されるようです。
今後はこれで自動化するとよさそうです。
コメントを残す