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 中,使用 ENTRYPOINT 指令的 exec 形式:

    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 分钟超时后,发送 SIGKILL 并强制停止容器。如果容器正常处理了 SIGTERM 并在收到该信号后的 120 秒内退出,则不会发送 SIGKILL。

    注意

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

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

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

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