今回はAmazon SageMaker Studio Labというサービスを使ってみようと思います。
CPU環境とGPU環境の両方が無料で使えてしまうサービスで、GoogleのColaboratoryと似たサービスのようです。
登録してから使えるようになるまで最大5営業日かかる場合があるようです (私は2営業日かかりました)。セミナーや勉強会などで利用する場合は余裕をもって登録しておくことをおすすめいたします。
※ 22/11/23 d2l環境の削除方法を追記
※ 22/11/25 GPU runtimeは24時間のうち最大8時間(4時間x2)のセッションに制限されているようです。
GPU runtime is limited to 4 hours per session and a total of 8 hours in a 24-hour period.
※ 23/4/11 GPU runtimeについて詳しく調べた記事へのリンクを追記
※ 23/9/13 CPUもGPUも利用時間がさらに制限されたようです。
利用が増えたからでしょうか?12時間ずつ利用可能だったCPUは4時間ずつ最大8時間/dayになり、GPUは4時間ずつ最大8時間/day利用可能だったのが、最大4時間/dayに変更になったようです。
CPU and GPU runtime limits have changed.
You can use CPU for up to 4 hours at a time with a limit of 8 hours in a 24-hour period.
You can use GPU for up to 4 hours at a time with a limit of 4 hours in a 24-hour period.
- Amazon SageMaker Studio Labとは?
- Amazon SageMaker Studio Labの登録方法
- https://aws.amazon.com/jp/sagemaker/studio-lab/ にアクセス
- 「Request free account」リンクを押下し、SageMaker Studio Labのアカウントをリクエストする。
- フォームに必要情報を入力。E-Mailだけ必須のようです。
- 登録したメールアドレスに認証用のメールが届くので、Verify your email ボタンを押下
- 「Verify your email」ボタン押下後に下記メッセージが表示される。
- アカウントリクエストを承ったとメールが届きます。アカウント作成が可能になるまで数日待ちます。(私は2営業日待ちました)
- 5営業日以内にAccount request approvedというタイトルのメールが届きます。
- アカウントを作成します。
- アカウント作業で入力したメールアドレスの確認
- 確認メールが届くので、verify your emailボタンを押下する
- Amazon Sagemaker Studio Labを使ってみる
- まとめ
Amazon SageMaker Studio Labとは?
サービスの特徴をまとめると下記になります。
・15GBのストレージが使える
・12時間のCPUセッションか4時間のGPUセッションが使える
・各セッションが終わったら、途中作業は自動的にストレージに保存される
・セッションは何回でも始めることができる
・メールアドレスだけの登録で利用可能 (ただしGPUの利用は電話番号の登録が必要)
・Pip、Conda、Mambaのいずれかのパッケージマネージャーの利用が可能
Amazon SageMaker Studio Lab は、無料の機械学習 (ML) 開発環境であり、コンピューティング、ストレージ (最大 15 GB)、セキュリティをすべて無料で提供し、誰でも ML を学んで実験できます。
SageMaker Studio Lab はプロジェクトに CPU または GPU セッションのどちらかを提供します。複雑なアルゴリズムの場合は 12 時間の CPU セッションで、畳み込みニューラルネットワーク (CNN) や循環ニューラルネットワーク (RNN) のような深層学習 (DL) のアーキテクチャーの場合は 4 時間の GPU セッションでノートブックを実行することを選択できます。コンピューティングの回数に制限はありません。1 つのセッションが終わった後、新しいセッションを始められます。
引用: https://aws.amazon.com/jp/sagemaker/studio-lab/SageMaker Studio Lab requires customers associate their mobile phone number with their account as additional form of identification in order to get GPU resources.
引用: https://studiolab.sagemaker.aws/faq
Amazon SageMaker Studio Labの登録方法
ステップバイステップでまとめましたので、上から順に進めれば使い始めることが出来るかと思います。
https://aws.amazon.com/jp/sagemaker/studio-lab/ にアクセス
「Request free account」リンクを押下し、SageMaker Studio Labのアカウントをリクエストする。
フォームに必要情報を入力。E-Mailだけ必須のようです。
登録したメールアドレスに認証用のメールが届くので、Verify your email ボタンを押下
「Verify your email」ボタン押下後に下記メッセージが表示される。
アカウントリクエストが承認されるまでお待ちくださいという内容です。
アカウントリクエストを承ったとメールが届きます。アカウント作成が可能になるまで数日待ちます。(私は2営業日待ちました)
5営業日以内にAccount request approvedというタイトルのメールが届きます。
「Create Account」ボタンを押下し、アカウント作成に進みます。
アカウントを作成します。
必須項目を入力して、「Create account」ボタンを押下
アカウント作業で入力したメールアドレスの確認
確認メールが届くので、verify your emailボタンを押下する
これで登録は完了しました。あとはログインして使うだけです。
Amazon Sagemaker Studio Labを使ってみる
登録が完了したら、sagemaker studio labが使えるようになったはずです。
さっそく動作確認してみましょう
amazon SageMaker Studio Labにアクセスしログインする
https://studiolab.sagemaker.aws/login にアクセスしログインします。
メールアドレスとパスワードは自分で設定したものを使います。
Compute Typeを選択し、 Start Runtimeボタンを押下
CPU環境かGPU環境かを選んで、Start Runtimeを押下します。
CPUを選んだ場合
Open Projectを押すとJupyterlabの画面に遷移します。
GPUを選んだ場合、電話番号の入力が必要
+81から始まる国旗アイコンに変更し、ご自分の電話番号(090xxxxxxや080xxxxxxxx)を入力します。最初の0は含んでもいいようです。(国際電話とかだと外したりしますよね)
ショートメッセージに6桁の暗証番号のようなものが届きますので入力します。
「Open Project」ボタンを押下するとJupyterlabが使えます。次のセクションでGPU環境なのかnvidia-smiコマンドで確かめてみます。
さっそくGPUが使えるかの確認
!nvidia-smi
Thu Nov 17 11:37:47 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 | | N/A 34C P0 26W / 70W | 0MiB / 15109MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
疑っていたわけではないですが、ちゃんとGPUが使えるようです。
Tesla T4が使えて、CUDAのバージョンは11.4までサポートされているようです。(※ ただし、Tesla T4はデータセンターGPUで前方互換があるのでaptが利用可能であれば11.5以降もインストールは可能かと思います。)
nvidia-smiコマンドが実行できない場合はCPU環境になっているかも知れないのでご確認ください。
↓ SageMaker Studio LabのGPU環境については下記でもう少し詳しく確認してみました。
Getting Started.ipynbを確認
sagemaker-studiolab-notebooksフォルダが最初から存在するので、中身をみてみると、Getting Started.ipynbがあるので中身を見てみました。
ディープラーニングの勉強ができるDive into Deep Learning (D2L)という項目が気になりました。
Dive Into Deep Learning (D2L)とはjupyter notebookでコードを実行しながらディープラーニングの勉強ができる教材のようです。世界60カ国の400大学でも利用されているようです。
D2L represents our attempt to make deep learning approachable, teaching you the concepts, the context, and the code. The entire book is drafted in Jupyter notebooks, seamlessly integrating exposition figures, math, and interactive examples with self-contained code.
引用: Getting Started.ipynbAdopted at 400 universities from 60 countries
引用: https://d2l.ai/index.html
Dive into Deep Learning (D2L)をsagemaker studio labで使えるようにする
Getting Started.ipynbからDive into Deep Learningの環境を簡単にデプロイできるようなのでやってみました。
- Clone D2L Notebooksボタンをクリック
- そのままCloneをクリック
GUIでgit pullしてくれるようです。便利ですね。
- Okをクリック
D2LのプロジェクトのCloneが完了したら、勉強用のconda環境を自動的に構築してくれるようです。
- Okを押すとd2l用のconda環境作成が始まります。
(studiolab) studio-lab-user@default:~$ cd sagemaker-studiolab-notebooks/d2l-pytorch-sagemaker-studio-lab && conda env create -f environment.yml
Collecting package metadata (repodata.json): done Solving environment: done ・・・省略・・・ Successfully installed Send2Trash-1.8.0 anyio-3.6.2 argon2-cffi-21.3.0 argon2-cffi-bindings-21.2.0 asttokens-2.1.0 attrs-22.1.0 backcall-0.2.0 beautifulsoup4-4.11.1 bleach-5.0.1 certifi-2022.9.24 cffi-1.15.1 charset-normalizer-2.1.1 contourpy-1.0.6 cycler-0.11.0 d2l-0.17.0 debugpy-1.6.3 decorator-5.1.1 defusedxml-0.7.1 entrypoints-0.4 executing-1.2.0 fastjsonschema-2.16.2 fonttools-4.38.0 idna-3.4 importlib-metadata-5.0.0 ipykernel-6.17.1 ipython-8.6.0 ipython-genutils-0.2.0 ipywidgets-8.0.2 jedi-0.18.1 jinja2-3.1.2 jsonschema-4.17.0 jupyter-1.0.0 jupyter-client-7.4.6 jupyter-console-6.4.4 jupyter-core-5.0.0 jupyter-server-1.23.2 jupyterlab-pygments-0.2.2 jupyterlab-widgets-3.0.3 kiwisolver-1.4.4 markupsafe-2.1.1 matplotlib-3.6.2 matplotlib-inline-0.1.6 mistune-2.0.4 nbclassic-0.4.8 nbclient-0.7.0 nbconvert-7.2.5 nbformat-5.7.0 nest-asyncio-1.5.6 notebook-6.5.2 notebook-shim-0.2.2 numpy-1.23.4 packaging-21.3 pandas-1.5.1 pandocfilters-1.5.0 parso-0.8.3 pexpect-4.8.0 pickleshare-0.7.5 pillow-9.3.0 platformdirs-2.5.4 prometheus-client-0.15.0 prompt-toolkit-3.0.32 psutil-5.9.4 ptyprocess-0.7.0 pure-eval-0.2.2 pycparser-2.21 pygments-2.13.0 pyparsing-3.0.9 pyrsistent-0.19.2 python-dateutil-2.8.2 pytz-2022.6 pyzmq-24.0.1 qtconsole-5.4.0 qtpy-2.3.0 requests-2.28.1 six-1.16.0 sniffio-1.3.0 soupsieve-2.3.2.post1 stack-data-0.6.1 terminado-0.17.0 tinycss2-1.2.1 torch-1.8.1 torchvision-0.9.1 tornado-6.2 traitlets-5.5.0 typing-extensions-4.4.0 urllib3-1.26.12 wcwidth-0.2.5 webencodings-0.5.1 websocket-client-1.4.2 widgetsnbextension-4.0.3 zipp-3.10.0
- 追加されたカーネルの確認
d2l環境を消して元の状態に戻したい場合
・How do I reset Amazon Sagemaker Studio Lab & wipe all data を参考にしました
studiolab) studio-lab-user@default:~/.conda$ conda remove --name d2l --all
Remove all packages in environment /home/studio-lab-user/.conda/envs/d2l: ## Package Plan ## environment location: /home/studio-lab-user/.conda/envs/d2l The following packages will be REMOVED: _libgcc_mutex-0.1-conda_forge _openmp_mutex-4.5-2_gnu bzip2-1.0.8-h7f98852_4 ca-certificates-2022.9.24-ha878542_0 ld_impl_linux-64-2.39-hc81fddc_0 libffi-3.4.2-h7f98852_5 libgcc-ng-12.2.0-h65d4601_19 libgomp-12.2.0-h65d4601_19 libnsl-2.0.0-h7f98852_0 libsqlite-3.39.4-h753d276_0 libuuid-2.32.1-h7f98852_1000 libzlib-1.2.13-h166bdaf_4 ncurses-6.3-h27087fc_1 openssl-3.0.7-h166bdaf_0 pip-22.3.1-pyhd8ed1ab_0 python-3.9.13-h2660328_0_cpython readline-8.1.2-h0f457ee_0 setuptools-65.5.1-pyhd8ed1ab_0 sqlite-3.39.4-h4ff8645_0 tk-8.6.12-h27826a3_0 tzdata-2022f-h191b570_0 wheel-0.38.4-pyhd8ed1ab_0 xz-5.2.6-h166bdaf_0 Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done
d2lのconda環境を削除しました。
あとはgit cloneしたd2lの資材を消去すれば初期状態に戻るはずです。
rm -rf /home/studio-lab-user/sagemaker-studiolab-notebooks/d2l-pytorch-sagemaker-studio-lab/
まとめ
いかがでしょうか?GPUが使える時間が4時間ずつと決まっているのでColabより分かりやすいのかなと思います。
良サービスの予感がします!