将我的自定义容器带到 Amazon SageMaker Studio 时如何解决问题?

1 分钟阅读
0

我想解决构建自定义 Amazon SageMaker Studio 时遇到的问题。

解决方法

SageMaker 图像是一个文件,用于识别在 SageMaker Studio 中运行 Jupyter notebook 所需的内核、语言包和其他依赖关系。这些图像用于创建一个可以运行 Jupyter notebook 的环境。如果 SageMaker 提供的内置图像不支持您的用例,您可以在 SageMaker Studio 中使用自定义图像。

在 SageMaker Studio 中使用客户图片时,可能会遇到错误。这些错误可能主要是由您在容器镜像构建过程中设置的错误配置造成的。因此,请确保自定义图像与 SageMaker Studio 兼容。

为此,请在构建 Dockerfile 时检查以下内容:

  • 您已准确地设置了 DefaultUIDDefaultGID 值。SageMaker Studio 仅支持 DefaultUIDDefaultGID 的特定组合。对于非特权用户,请确保将 DefaultUID 和 DefaultGID 分别设置为 1000100。确保将根用户的值都设置为 0
  • 未使用 'opt/.sagemakerinternal' 和 'opt/ml' 目录。这些目录是保留的。
  • 创建配置文件 app-image-config-input.json 时,请确保此文件中 KernelSpecName(名称)值与关联图像的 Name(名称)值相匹配。

安装 Python 包并将作用域设置为非特权用户的 Dockerfile 示例:

FROM public.ecr.aws/amazonlinux/amazonlinux:2

ARG NB_USER="sagemaker-user"
ARG NB_UID="1000"
ARG NB_GID="100"

RUN \
    yum install --assumeyes python3 shadow-utils && \
    useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \
    yum clean all && \
    python3 -m pip install ipykernel && \
    python3 -m ipykernel install

USER ${NB_UID}

发生以下任一情况时,您可以查看 Amazon CloudWatch Logs 中的错误消息:

  • 映像版本创建失败。
  • 在 SageMaker Studio 中启动图像时出现错误。

您可以在日志组 /aws/sagemaker/studio 和日志流 $domainID/$userProfileName/KernelGateway/$appName 中查找这些消息。

**注意:**本文假设 AWS Identity and Access Management (IAM) 用户或角色附加了 AmazonSageMakerFullAccess 策略。


相关信息

自定义 SageMaker 图像规格

AWS 官方
AWS 官方已更新 2 年前