跳至內容

安裝其他程式庫時,如何對 Amazon SageMaker AI 筆記本執行個體例逾時問題進行疑難排解?

2 分的閱讀內容
0

當我嘗試在 Amazon SageMaker AI 筆筆記本執行個體中安裝其他程式庫時,出現逾時錯誤。

解決方法

生命週期組態指令碼執行超過 5 分鐘時,指令碼將失敗,且 SageMaker AI 不會建立或啟動筆記本執行個體。

請使用下列其中一種方法來解決該問題。

執行 nohup 命令

臨時解決方案是執行 nohup 命令,強制生命週期組態指令碼繼續在背景執行,直到您安裝套件為止。

請在命令開頭加上 nohup,並在命令結尾加上 & 符號,然後執行以下命令:

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

安裝程式庫後,指令碼將停止執行。當發生這種情況時,SageMaker AI 不會通知您,但您可以執行 ps 命令來檢查指令碼的狀態。

**注意:**您也可以針對其他指令碼逾時情況執行 nohup 命令,例如下載大型 Amazon Simple Storage Service (Amazon S3) 物件時。

在筆記本執行個體的磁碟區上建立自訂持續性 Conda 安裝

  1. 在現有筆記本執行個體的終端中,在您偏好的編輯器中執行以下命令來建立 .sh 檔案:

    vim custom-script.sh
  2. 將 on-create 指令碼的內容新增到 .sh 檔案中。若要複製指令碼,請參閱 GitHub 網站上的 amazon-sagemaker-notebook-instance-lifecycle-config-samples。該指令碼會在自訂 Conda 安裝中建立新的 Conda 環境。該指令碼還會在新的 Conda 環境中安裝 NumPy 和 Boto3。
    **注意:**筆記本執行個體必須具有網路連線才能下載 Miniconda 安裝程式和 ipykernel。

  3. 執行以下命令,將指令碼標記為可執行,並執行該指令碼:

    chmod +x custom-script.sh
    ./custom-script.sh
  4. 安裝完成後,停止筆記本執行個體。

  5. 將啟動時執行的指令碼新增至 .sh 檔案。若要複製指令碼,請參閱 GitHub 網站上的 amazon-sagemaker-notebook-instance-lifecycle-config-samples

  6. 在已停止的筆記本執行個體上,將啟動時執行的指令碼新增為生命週期組態。每次啟動筆記本執行個體時,指令碼都會將自訂環境做為 Jupyter 中的核心提供。

  7. 啟動筆記本執行個體,然後在自訂環境中安裝自訂程式庫。
    例如,若要安裝 pyarrow,請執行下列命令:

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

如果您停止再啟動筆記本執行個體,那麼您的自訂 Conda 環境和程式庫仍然可用。您不需要再次安裝。

如果您收到一則錯誤訊息,提示您必須更新 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 安裝完成後,安裝程式庫。

建立 Neptune 筆記本並設定其政策和連線

當您在 Amazon Neptune 中建立筆記本時,Neptune 會使用指向 S3 物件的預設生命週期組態,例如 aws s3 cp s3://aws-neptune-notebook/graph_notebook.tar.gz /tmp/graph_notebook.tar.gz。Neptune AWS Identity and Access Management (IAM) 角色必須具有權限政策,授權 arn:aws:s3:::aws-neptune-notebookarn:aws:s3:::aws-neptune-notebook/ 資源執行s3:GetObjects3:ListBucket 動作。

Neptune IAM 角色也必須具有信任政策,授權 SageMaker AI 執行 AssumeRole 動作。例如,您在與筆記本相關的資料庫叢集上啟動了 IAM 資料庫驗證。IAM 角色必須具有權限政策,授權關聯資料庫叢集執行 neptune-db: 動作。

如果您使用虛擬私有雲端 (VPC) 將 Neptune 筆記本連線到網際網路,則必須將 NAT 閘道連線到 VPC。此外,您必須設定安全群組以允許網際網路存取 Amazon S3 和 Python Package Index (PyPI)。如需 PyPI 的詳細資訊,請參閱 Python Package Index 網站。

**注意:**若要對生命週期組態指令碼的問題進行疑難排解,請使用 Amazon CloudWatch Logs。您可以在以下位置找到日誌:

  • 日誌群組:/aws/sagemaker/NotebookInstances
  • 日誌串流:example_notebook_instance_name/LifecycleConfigOnStart

相關資訊

什麼是 Amazon SageMaker AI?

偵錯生命週期組態

AWS 官方已更新 8 個月前