今年初めてAmazon Sagemakerに入門しました。Jupyternotebookを使いたかったのと、Sagemakerに触ってみたかったことが動機です(Sagemaker Studioにも入門しました)。
さて、Sagemakerのノートブックインスタンスを使ったときに、毎回「pip install」を実行していました。1つだけで軽いのならそれでいいのですが、依存関係とかいろいろあるやつだと待たされます。この手間をなんとかしたいと模索した備忘録です。
(模索を通して仕様を理解しようというのがこの活動のモチベーションだったりしました。)
初心者がたどり着いたメモです。他の良いやり方があれば教えてください。
1.ポイント
・Sagemakerのノートブックは一部の領域を除き、インスタンス起動ごとに新しく作られる。
→インスタンスで初期化されないところもあることを発見
→モジュールをインストールしておき、そこのパスを通せばいいのでは?(環境変数設定)
→環境変数の設定を毎回起動時に行うことにしよう(自動設定)
2.たどりついたこと
起動スクリプトとして下記を登録し、pythonモジュールの検索パスとして認識させる。
#!/bin/bash
set -e
touch /home/ec2-user/anaconda3/envs/python3/lib/python3.10/site-packages/importpkg.pth
echo /home/ec2-user/SageMaker/{your_module} >> /home/ec2-user/anaconda3/envs/python3/lib/python3.10/site-packages/importpkg.pth
3.豆知識
・ノートブックの開始
インスタンス作成時に1回だけ起動されるもの
・ノートブックの作成
インスタンスの起動時に毎回起動されるもの
以上です。