我该如何解决将自定义容器带到 Amazon SageMaker 进行训练或推理时出现的问题?

2 分钟阅读
0

我想解决将自定义容器带到 Amazon SageMaker 进行训练或推理时出现的问题。

简短说明

您可使用以下任意一种方法在 SageMaker 中自定义容器映像:

扩展预构建的 SageMaker 容器:如果您需要通过添加其他功能来自定义环境或框架,请使用此方法。由于已预定义了深度学习库,因此如果使用此方法,您无需从头开始构建容器映像。

**自带容器:**如果您已拥有用于处理数据、模型训练或实时推理的映像,并且其附加功能和安全要求目前不受预构建的 SageMaker 映像的支持,则使用此方法。

**从头开始构建容器映像:**如果您有自定义算法但没有自定义容器映像,那么最好使用此方法。

无论使用哪种方法,您遇到的错误基本上都可能与错误地构建容器映像有关。因此,请确保容器配置正确。

解决方案

扩展预构建的 SageMaker 容器

  • 确保在 Dockerfile 中设置了环境变量 SAGEMAKER_SUBMIT_DIRECTORYSAGEMAKER_PROGRAM
  • 确保在 Dockerfile 中安装了所需的其他库。您可通过运行以下命令来完成此操作:
# SageMaker PyTorch image
FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt

# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint 
ENV SAGEMAKER_PROGRAM cifar10.py
  • 成功构建映像后,请在本地模式下运行容器。确保映像按预期运行。

有关更多信息,请参阅扩展预构建容器

自带容器

请务必安装相应的 SageMaker 工具包库以进行训练或推理。这些工具包定义了代码和其他资源的位置,以及包含容器启动时必须运行的代码的入口点。当创建 SageMaker 训练作业或推理端点时,SageMaker 会创建以下目录:

/opt/ml
    ├── input
    │
    ├── model
    │
    ├── code
    │
    ├── output
    │
    └── failure

当运行训练作业时,/opt/ml/input 目录包含有关用于访问存储在 Amazon Simple Storage Service (Amazon S3) 中的数据的数据通道的信息。训练脚本 (train.py) 及其依赖项存储在 opt/ml/code 中。完成训练作业后,请确保脚本将最终模型写入 /opt/ml/model 目录。

在 SageMaker 上托管经过训练的模型以进行推理时,该模型存储在 /opt/ml/model 中,推理代码 (inference.py) 则存储在 /opt/ml/code 中。

更多信息,请参阅调整自己的 Docker 容器以与 SageMaker 配合使用

从头开始构建容器

  • 要确保容器作为可执行文件运行,请在 Dockerfile 中使用 ENTRYPOINT 指令的可执行形式:
ENTRYPOINT ["python", "cifar10.py"]
  • 对于训练作业,如果训练成功,训练脚本必须以 0 退出状态退出;如果训练失败,则必须以非零退出代码退出。
  • 确保将最终模型写入 /opt/ml/model,并确保所有依赖项和构件都存储在 /opt/ml/output 中。如果训练作业失败,脚本必须将失败信息写入 /opt/ml/output/failure
  • 创建推理端点时,请确保以 FILENAME.tar.gz 格式保存模型。容器必须在 /invocations 上实施 HTTP POST 请求以进行推理,并在 /ping 上实施 HTTP GET 请求以进行端点运行状况检查。

有关更多信息,请参阅使用您自己的算法和模型创建容器


相关信息

Use the Amazon SageMaker local mode to train on your notebook instance

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