背景
SageMakerのNotebookインスタンスを起動する度に、pip installコマンドを実行する事が面倒に感じてきましたので、起動時に自動でpip installコマンドを実行するようにしてみたいと思いました。
行った事(概要)
Notebookインスタンスに、インスタンス開始時にpip installコマンドを実行するライフサイクル設定を行いました。
行った事(詳細)
1. 事前確認
Notebookインスタンスにライフサイクル設定を行う前の挙動を確認します。
Notebookインスタンスを起動して、ライブラリーのインポートを試してみたら、ライブラリーがインストールされていない旨を怒られました。
import janome
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 1
----> 1 import janome
ModuleNotFoundError: No module named 'janome'
2. 設定
では、ライフサイクル設定を行ってみます。
まずは、SageMakerのマネジメントコンソールにて、ライフサイクル設定を新規作成します。
名前を入力します。
その後、「ノートブックの開始」タブをクリックします。
Notebookインスタンスを起動する時に実行するスクリプトを記載します。
pip installで所定のライブラリーをインストールするスクリプトは、こちらにあります。
こちらのスクリプトの、
PACKAGE=scipy
pip install --upgrade "$PACKAGE"
の部分だけを編集します。
今回はjanomeライブラリーをインストールしようと思いますので、
PACKAGE=janome
pip install "$PACKAGE"
へ編集しました。
ここでポイントなのですが、使用している端末がwindows端末の場合、スクリプトを普通にコピペすると、改行コードがCRLFになってしまい、そのまま後続の作業を行うと、エラーになります。
よって、改行コードはLFの形でスクリプトを記載する必要があります。
今回はスクリプトの量が少ないので、コピペせずに、スクリプト画面に手打ちで入力しました。
(スクリプト画面にそのまま手打ちすると、改行コードはLFになるみたいです。)
これで、ライフサイクル設定の作成が完了しました。
続いて、作成したライフサイクル設定をNotebookインスタンスに適用します。
ライフサイクル設定を適用したいNotebookインスタンスを選択して、編集を行います。
「追加設定」を展開すると、ライフサイクル設定を設定出来る箇所が表示されますので、先程作成したライフサイクル設定を設定します。
更新を行うと、Notebookインスタンスにライフサイクル設定が設定されている事を確認出来ます。
3. 設定後確認
Notebookインスタンスを起動して、ライフサイクル設定で記載したスクリプトが行われているかを確認します。
改めてNotebookインスタンスを起動して、janomeライブラリーのインポートを行ってみると、
import janome
print(janome.__version__)
0.5.0
キチンとインポート出来ました。
Notebookインスタンスの起動時に、ライフサイクル設定のスクリプトによって、janomeライブラリーがインストールされました。
今回は以上になります。
まとめ
実際に設定を行ってみると、改行コードのトラップにかなりはまってしまいました。そして、windows端末で改行コードをLFの形でコピペする事がうまく出来ず、結局は手打ちする事に(笑)
スクリプトのサンプルは他にもありましたので、ライブラリーのインストール以外にも色々と行えそうです。
参考