ライブラリを手動でインストールしようとしたときに、ライフサイクル設定の処理がタイムアウトした場合、インストールしたライブラリが Amazon SageMaker で保持されているか確認する方法を教えてください。

最終更新日: 2020 年 6 月 4 日

ライブラリを追加インストールしようとしたとき、ライフサイクル設定スクリプトの実行が 5 分を超えてしまい、Amazon SageMaker ノートブックインスタンスがタイムアウトします。この問題を解決する方法と、ノートブックインスタンスのセッション間に、手動でインストールしたライブラリが保持されたか確認する方法を教えてください。

簡単な説明

ライフサイクル設定スクリプトの実行が 5 分を超えた場合、この処理は失敗し、ノートブックインスタンスは作成も起動もされません。この問題を解決するには、次の 2 つの方法があります。

  • nohup: nohup コマンドでは、ライフサイクル設定スクリプトを、パッケージのインストールが完了するまでバックグラウンドで強制的に継続実行させます。この方法は、さほど技術的知識がないユーザーにとってのベストプラクティスであり、より手軽なソリューションとして適しています。
  • ノートブックインスタンスの Amazon Elastic Block Store (Amazon EBS) ボリュームにカスタムの永続的な Conda インストールを作成する: 既存のノートブックインスタンスのターミナルで、作成時のスクリプトを実行します。このスクリプトでは、Miniconda を使用して EBS ボリューム (/home/ec2-user/SageMaker/) に個別の Conda インストールを作成します。次に、ライフサイクル設定として起動時のスクリプトを実行し、カスタム環境を Jupyter のカーネルとして使用できるようにします。この方法は、技術的知識のあるユーザーに向いているもので、より根本的なソリューションとなります。

解決方法

次の方法のいずれかを使用して、ライフサイクル設定のタイムアウトを解決します。

nohup

nohup コマンドを使用して、5 分のタイムアウト期間を超えても、バックグラウンドで強制的にライフサイクル設定スクリプトの実行を継続させます。例:

#!/bin/bash
set -e
nohup pip install xgboost &

ライブラリのインストール後、スクリプトの実行は停止します。これが発生しても通知が送られてくることはありませんが、 ps コマンドを使用して、スクリプトが依然として実行中かどうか確認できます。

注: 例えば、大規模な Amazon Simple Storage Service (Amazon S3) オブジェクトをダウンロードするなどの他のシナリオにおいて、ライフサイクル設定スクリプトがタイムアウトする場合には、nohup コマンドを使用することもできます。

ノートブックインスタンスの EBS ボリュームにカスタムの永続的な Conda インストールを作成する

1.    既存のノートブックインスタンスのターミナルで、任意のエディタを使用して .sh ファイルを作成します。例:

vim custom-script.sh

2.    作成時のスクリプトの内容を .sh ファイルにコピーします。このスクリプトは、カスタム Conda インストールに新しい Conda 環境を作成します。このスクリプトは、新しい Conda 環境に NumPy と Boto3 もインストールします。

注意: Miniconda インストーラと ipykernel をダウンロードするには、ノートブックインスタンスにインターネット接続が必要です。

3.    スクリプトを実行可能としてマークし、実行します。例:

chmod +x custom-script.sh
./custom-script.sh

4.    インストールが完了したら、ノートブックインスタンスを停止します。

5.    起動時のスクリプトをダウンロードします。

6.    停止したノートブックインスタンスで、ライフサイクル設定として起動時のスクリプトを追加します。このスクリプトは、ノートブックインスタンスを起動するたびに、カスタム環境を Jupyter のカーネルとして使用できるようにします。

7.    ノートブックインスタンスを起動し、カスタム環境にカスタムライブラリをインストールします。たとえば、pyarrow をインストールするには、次のようにします。

import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow

Conda を更新する必要があることを示すエラーメッセージが表示された場合は、次のコマンドを実行します。次に、カスタムライブラリのインストールをもう一度試みます。

!conda install -p "/home/ec2-user/anaconda3" "conda>=4.8" --yes
!conda install -p "/home/ec2-user/SageMaker/custom-miniconda/miniconda" "conda>=4.8" --yes

ノートブックインスタンスを停止して起動しても、カスタム Conda 環境とライブラリは引き続き使用できます。再度インストールする必要はありません。