【SageMaker Studio】コンソール画面からのライフサイクル設定で自動シャットダウン

AWS SageMaker

SageMakerの料金は高いイメージがありますね。

料金コストを抑える策として、インスタンスタイプを無駄に上げないというのも1つですが、無駄なリソースを放置しないというのも1つです。

そういえば、ふと見たらノートブックのコンピュートリソースが起動していたことがあったよ

アイドル状態が続いたら自動で停止してくれたら安心なのにね

目次

ライフサイクル設定でStudioのコンピュータリソースを自動停止

SageMakerライフサイクル設定を用いて、アイドル状態のStudioノートブックのコンピュータリソースを自動でシャットダウンする方法がAWS公式サイトで紹介されています。

Amazon Web Services
自動シャットダウン拡張機能を利用した Amazon SageMaker Studio のコスト削減方法 | Amazon Web Services Amazon SageMaker Studio は、すべての機械学習開発ステップを実行できる、統合された We […]

現在はAWSコンソール画面上で設定ができるようになりました。
以降、コンソール画面からの設定方法をご紹介します。

設定方法

ここでは、既存のSageMakerドメインにライフサイクル設定を適用します。

STEP
ライフサイクル設定を作成

サイドメニューから「Lifecycle configurations」をクリックします。

sm-lifecycle-2

「Create configuration」ボタンをクリックします。

sm-lifecycle-3

「Jupyter Server app」を選択して「Next」ボタンをクリックします。

sm-lifecycle-4

NameとScriptsを入力し「Submit」ボタンをクリックします。

sm-lifecycle-5

スクリプトはAWS提供のサンプルスクリプトを利用します。

GitHub
sagemaker-studio-lifecycle-config-examples/scripts/install-autoshutdown-server-extension/on-jupyter-... Contribute to aws-samples/sagemaker-studio-lifecycle-config-examples development by creating an account on GitHub.

サンプルスクリプトではタイムアウトまで120分になっています。つまりアイドル状態が120分経過したらシャットダウンします。

ここでは30分のアイドルで停止するように変更しました。

スクリプトの改行コードはラインフィード(LF)に。キャリッジリターン(CR)だとStudioドメイン起動時にエラーになる場合があるので注意しましょう。

sm-lifecycle-6

ライフサイクル設定を作成できました。

STEP
ライフサイクル設定を既存ドメインに適用

適用するドメインを選択します。

sm-lifecycle-7

「Environment」タブを開きます。

sm-lifecycle-8

「Lifecycle configurations for personal Studio apps」の「Attach」ボタンをクリックします。

sm-lifecycle-9

作成したライフサイクル設定にチェックを入れて「Attach to domain」ボタンをクリックします。

sm-lifecycle-10

アタッチ後、ライフサイクルにチェックを入れて「Set as default」ボタンをクリック

sm-lifecycle-11
sm-lifecycle-13

「Run by default」がYesになりました。

sm-lifecycle-14

さて、既存ドメインに適用するためにはもう1つ対応が必要です。

defaultアプリを再作成しましょう。

既にdefaultアプリが存在する場合、再作成しないとライフサイクル設定が適用されませんでした

既存のドメインをクリックします。

既存のユーザプロファイルをクリックします。

sm-lifecycle-16

defaultアプリを削除します。

sm-lifecycle-17
sm-lifecycle-18
sm-lifecycle-19

defaultアプリを削除できました。以上で設定完了です。

動作確認

Studioを再度起動して、自動シャットダウンを適用できているか確認します。

初回起動は数分待ちます。

sm-lifecycle-21

Studioを起動できたら「File」>「Terminal」でターミナルを開き、有効化できていることを確認します。

sm-lifecycle-22

Teminalで以下のコマンドを実行します。

$ conda activate studio
$ jupyter serverextension list

「sagemaker_studio_autoshutdown」が enabled になっていればOKです

sm-lifecycle-23

ではノートブックを開き、コンピュートリソースを起動しましょう。

sm-lifecycle-24
sm-lifecycle-25.png

起動しました。
今回は30分のアイドル状態で停止するように設定したので、30分放置します。

30分経過後、自動で停止しました。

sm-lifecycle-26

CloudWatchのログからも30分で停止したことがわかります。

sm-lifecycle-27

【補足1】ライフサイクル設定後にタイムアウト時間を変更する方法

ライフサイクル設定後に、自動シャットダウンまでのタイムアウト時間を変更する際はStudioでターミナルを起動して変更します。

ターミナルで以下のコマンドを実行します。

$ conda activate studio
$ vi /home/sagemaker-user/.auto-shutdown/set-time-interval.sh

「TIMEOUT=XX」を変更します。

sm-lifecycle-28

変更後、「Esc」+「:wq」+「Enter」で保存し、viエディタを閉じます。

【補足2】Databricksとの違い

Databricksでは、クラスタ起動設定でアイドル状態のコンピュートリソース自動停止時間を設定できるようになっています。

SageMaker Studioでもインスタンスタイプを選択する際に自動停止時間も設定できるようになると、より柔軟性が増すように思いました。

sm-lifecycle-29

引用:https://learn.microsoft.com/ja-jp/azure/databricks/clusters/configure

まとめ

SageMaker Studioのアイドル状態にあるコンピュートリソースについて、以下をご紹介しました。

  • 自動シャットダウンのライフサイクル設定手順
  • 自動シャットダウンの動作確認方法
  • ライフサイクル設定後にタイムアウト時間を変更する方法

現在はコンソール画面からわずかな対応で設定可能です。
想定外の課金が発生しつづけないように対応することをおすすめします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

個人ブログ「Tech Up Labo」を運営する、おーすけ と申します。

IT業界に携わるエンジニアとして、クラウドサービスを用いたデータ分析関連、Webサービス関連の開発において、私自身が学んだことや実際に経験したこと、あるいはその他の情報に基づき情報発信しております。

これらの情報が私自身の備忘録となる一方で、時には他の方が抱える問題に対する解決の一助になることを願っております。

■保有資格
AWS Certified Solutions Architect Associate
JDLA Deep Learning For GENERAL 2020#2
JDLA Deep Learning For ENGINEER 2022#2
PMP、Python3 エンジニア認定基礎、他

目次