我想对 Amazon SageMaker AI 中生命周期配置 (LCC) 脚本的问题进行故障排除。
解决方法
LCC 脚本超时
当您的 LCC 脚本运行时间超过 5 分钟配额时,该脚本将超时。
要减少脚本运行时,请执行以下操作:
- 减少所需步骤的数量。例如,限制您在其中安装大型软件包的 conda 环境。
- 在并行进程中运行任务。
- 在脚本中运行 nohup 命令以忽略挂断信号,这样脚本就可以在 5 分钟内完成。
要运行 nohup 命令,请在特定的代码行上初始化该命令,然后以和符号结尾代码行。
脚本示例:
===
#!/bin/bash
set -e
# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)
# PARAMETERS
ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb
source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &
source /home/ec2-user/anaconda3/bin/deactivate
====
您无法删除现有的 LLC
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
当您尝试删除已附加到 SageMaker Studio 域的 LCC 脚本时,可能会收到以下错误消息:
"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."
要解决此问题,必须先分离 LCC 脚本,然后将其删除。
或者,您可以将域配置中的 LifecycleConfigArns 参数设置为空列表。
要重新配置您的域,请完成以下步骤:
-
运行以下 describe-domain 命令,以查看 LifecycleConfigArns 参数中的关联 LCC 脚本列表:
aws sagemaker describe-domain —domain-id d-xxxxxxxxx
-
运行以下 update-domain 命令将参数设置为空列表:
aws sagemaker update-domain --domain-id d-xxxxxxxxx \
--default-user-settings '{
"JupyterServerAppSettings": {
"DefaultResourceSpec": {
"InstanceType": "system"
},
"LifecycleConfigArns": []
}
}'
当您再次运行 update-domain 命令时,该域不再引用 LCC 脚本。然后,您可以将新的 LCC 脚本附加到该域。
LCC 脚本无法安装软件包
如果 LCC 无法在 SageMaker Studio 域或 Notebook 实例中安装软件包,则 LCC 脚本可能无法访问该域或实例。要解决此问题,您必须将关联的 SageMaker Studio 域或 Notebook 实例连接到 Amazon 虚拟私有云 (VPC)。VPC 还必须允许互联网访问。
您可以在 PublicInternetOnly 模式下将 VPC 与互联网上的默认通信关联起来。或者,您可以在仅限 VPC 模式下设置与互联网的通信。
如果您使用仅限 VPC 模式,请使用允许以下流量的入站和出站规则设置安全组:
- 在域和 Amazon Elastic File System (Amazon EFS) 卷之间的端口 2049 上通过 TCP 的 NFS 流量。
- 安全组内的 TCP 流量。
**注意:**连接 Jupyter 服务器应用程序和内核网关应用程序需要安全组中的 TCP 流量。必须允许访问至少在 8192—65535 范围内的端口。
要允许访问互联网,必须使用可以访问互联网的 NAT 网关。
该实例找不到 LCC 脚本内容
当应用程序实例找不到 LCC 脚本中的内容时,您可能会收到以下错误消息:
"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"
出现此错误可能是因为 Windows 格式化符号与 Unix 格式符号不兼容。窗口字符使用 CRLF 行尾 (\r\n),Unix 使用 LF 行尾 (\n)。
Amazon SageMaker AI Notebook 实例在 Amazon Linux 2 (AL2) 操作系统 (OS) 上运行。您在 Windows 操作系统上下载并直接附加到 LLC 的 LCC bash 脚本对 Linux 操作系统无效。
要解决此问题,请完成以下步骤:
- 在 Notepad++ 中打开 bash 脚本。
- 选择 View(查看),然后选择 Show symbol(显示符号)。
- 选择 Show all symbols(显示所有符号)以查看 Windows (\r\n) 行尾。
- 将 CRLF 更改为 LF (\n) 以使脚本在 Unix 中有效。
- 将脚本附加到 LCC。
相关信息
调试生命周期配置
将 VPC 中的 Studio Notebook 连接到外部资源