Amazon SageMaker 如何运行您的训练映像 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SageMaker 如何运行您的训练映像

要配置 Docker 容器以作为可执行文件运行,请使用 Dockerfile 中的 ENTRYPOINT 指令。请注意以下几点:

  • 对于模型训练,Amazon SageMaker 会按如下方式运行容器:

    docker run image train

    SageMaker 会覆盖任何默认CMD通过指定train映像名称后的参数。train 参数也覆盖您使用 Dockerfile 中的 CMD 提供的参数。

     

  • 在你的 Dockerfile 中,使用exec的形式ENTRYPOINT说明:

    ENTRYPOINT ["executable", "param1", "param2", ...]

    例如:

    ENTRYPOINT ["python", "k-means-algorithm.py"]

    exec 形式的 ENTRYPOINT 指令直接启动可执行文件,而不是 /bin/sh 的子级。这使其能够接收如下信号SIGTERMSIGKILL来自 SageMaker API。请注意以下几点:

     

    • 这些区域有:CreateTrainingJobAPI 有一个停止条件,它指示 SageMaker 在特定的时间后停止模型训练。

       

    • 这些区域有:StopTrainingJobAPI 发出等效于docker stop,使用 2 分钟超时命令,以便正常停止指定容器:

      docker stop -t120

      该命令尝试通过发送 SIGTERM 信号来停止正在运行的容器。超时 2 分钟后,API 会发送SIGKILL然后强行停止集装箱。如果容器处理SIGTERM不会在收到它后的 120 秒内退出SIGKILL发送到。

    注意

    如果您希望在 SageMaker 停止训练之后访问中间模型构件,则添加代码以处理在SIGTERM处理程序。

  • 如果您计划使用 GPU 设备进行模型训练,请确保您的容器与 nvidia-docker 兼容。容器只包含 CUDA 工具包;不要将 NVIDIA 驱动程序与映像捆绑。有关 nvidia-docker 的更多信息,请参阅 NVIDIA/nvidia-docker

  • 您不能使用tini将初始化程序作为 SageMaker 容器中的入口点,因为它会被trainserve参数。

  • /opt/ml并且 SageMaker 训练会保留和所有子目录。构建算法的 Docker 镜像时,请确保不要将算法所需的任何数据放置在其下面,因为数据在训练期间可能不再可见。