使って学ぶAWS

AWSで色々やってみるブログ

Sagemaker notebook instanceでユーザ環境を作る

いつ使う

SageMakerでnotebook instanceのkernelを選択したときに、python3.6、ちょっと古いなぁ、python3.8とか使いたいなぁと思った人向け。

Notebookでterminalを開く

下記コマンドを利用して、conda createする。
例えばpython3.8で作る場合はこんな感じ。
これはEBSボリュームにPython環境を作っており、EC2の再起動で消えないようにするためである。

conda create --prefix /home/ec2-user/SageMaker/kernels/<USER_ENV> python=3.8 ipykernel
source activate /home/ec2-user/SageMaker/kernels/<USER_ENV>
python -m ipykernel install --user --name <USER_ENV> --display-name <USER_ENV>
conda deactivate

このコマンドを叩いたあとに、JupyterのKernelに自身の環境が追加されたことを確認する。

永続化

Sagemakerのインスタンスの再起動で環境の登録が消えてしまうので、起動時に追加されるようにライフサイクル設定を実行する。
一度インスタンスを停止して、Sagemakerのマネコンから、「ライフサイクル設定」を選択。
スクリプトとして下記を入力する。

#!/bin/bash

sudo -u ec2-user -i <<'EOF'

if [ -d "/home/ec2-user/SageMaker/kernels" ]; then
  for env in /home/ec2-user/SageMaker/kernels/*; do
    source activate $env
    python -m ipykernel install --user --name $(basename "$env") --display-name "$(basename "$env")"
    conda deactivate
done
fi

EOF

ノートブックインスタンスの「設定の更新」から、作成したライフサイクル設定を選択すればOK。
次回起動時に登録されているかを確認しておわり。

conda環境の整え方

jupyterの画面で! conda installとかやるのはめんどくさいので、基本的にはTerminalを起動して上記で紹介したコマンド

source activate /home/ec2-user/SageMaker/kernels/<USER_ENV>
conda install ****

という感じでやるとラク