当我尝试在 Amazon SageMaker AI Notebook 实例中安装其他库时,我收到了超时错误。
解决方法
当生命周期配置脚本的运行时间超过 5 分钟时,该脚本将失败,且 SageMaker AI 不会创建或启动 Notebook 实例。
使用以下方法之一来解决问题。
运行 nohup 命令
作为临时解决方案,请运行 nohup 命令以强制生命周期配置脚本继续在后台运行,直到软件包安装完成。
运行以下命令,并在开头添加 nohup,在结尾添加和符号 (&):
#!/bin/bash
set -e
nohup pip install xgboost &
库安装完成后,脚本将停止运行。发生此情况时,SageMaker AI 不会通知您,但您可以运行 ps 命令来检查脚本的状态。
**注意:**对于其他脚本超时场景(例如下载较大的 Amazon Simple Storage Service (Amazon S3) 对象),您也可以运行 nohup 命令。
在 Notebook 实例的卷上创建自定义的持久性 Conda 安装
-
在现有 Notebook 实例的终端中,使用首选编辑器运行以下命令以创建 .sh 文件:
vim custom-script.sh
-
将 on-create 脚本的内容添加到 .sh 文件中。要复制该脚本,请参阅 GitHub 网站上的 amazon-sagemaker-notebook-instance-lifecycle-config-samples。该脚本会在自定义 Conda 安装中创建一个新的 Conda 环境。该脚本还会在新的 Conda 环境中安装 NumPy 和 Boto3。
**注意:**Notebook 实例必须连接互联网才能下载 Miniconda 安装程序和 ipykernel。
-
运行以下命令将脚本标记为可执行文件并运行该脚本:
chmod +x custom-script.sh
./custom-script.sh
-
安装完成后,停止 Notebook 实例。
-
将 on-start 脚本添加到 .sh 文件中。要复制该脚本,请参阅 GitHub 网站上的 amazon-sagemaker-notebook-instance-lifecycle-config-samples。
-
在已停止的 Notebook 实例上,将 on-start 脚本添加为生命周期配置。每次启动 Notebook 实例时,该脚本都会将自定义环境作为内核在 Jupyter 中使用。
-
启动 Notebook 实例,然后在自定义环境中安装您的自定义库。
例如,要安装 pyarrow,请运行以下命令:
import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow
如果您停止 Notebook 实例然后启动,则您的自定义 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 Notebook 并配置其策略和连接
在 Amazon Neptune 中创建 Notebook 时,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-notebook 和 arn:aws:s3:::aws-neptune-notebook/ 资源授予 s3:GetObject 和 s3:ListBucket 操作权限。
Neptune IAM 角色还必须拥有信任策略,以向 SageMaker AI 授予 AssumeRole 操作权限。例如,您在与 Notebook 关联的数据库集群上激活了 IAM 数据库身份验证。此时,IAM 角色必须拥有一项权限策略,以便为关联的数据库集群授予 neptune-db: 操作权限。
如果您使用虚拟私有云 (VPC) 将 Neptune Notebook 连接到互联网,则必须向该 VPC 附加一个 NAT 网关。此外,您必须配置安全组以允许通过互联网访问 Amazon S3 和 Python Package Index (PyPI)。有关 PyPI 的详细信息,请参阅 Python Package Index 网站。
**注意:**要对生命周期配置脚本问题进行故障排除,请使用 Amazon CloudWatch Logs。您可以在以下位置找到日志:
- 日志组:/aws/sagemaker/NotebookInstances
- 日志流:example_notebook_instance_name/LifecycleConfigOnStart
相关信息
什么是 Amazon SageMaker AI?
调试生命周期配置