创建具有可配置入口点的自定义 AWS Sagemaker 估算器



我正在为一个开箱即用的框架编写一个自定义Estimator,用于不支持开箱即用的框架。我有自己的 docker 镜像用于训练,训练代码捆绑到镜像中,这迫使我在每次代码更改时重建镜像。

我想做的是创建一个使用此图像的估算器,并接受文件作为入口点,就像内置框架估计器所做的那样(例如 Tensorflow(。

通过阅读Sagemaker python SDK的源代码,我找到了sagemaker.estimator.Framework类,它接受entry_point参数,内置框架估计器继承自该类。但是,文档并没有真正显示如何在我自己的代码中从该类继承。

是否可以编写一个继承自Framework的自定义估算器类,或者是否有另一种方法可以创建接收entry-point参数的自定义估计器?

不要使用估算器,而是使用 TensorFlow 估算器,然后将自定义图像作为输入传递给image_uri。这样你就拥有两全其美的优势。如果你的source_dir中有 require.txt 文件,则会在训练之前安装该文件。

这是一个自定义映像 docker 文件

FROM python:3.9-buster
RUN apt-get -y update && apt-get install -y --no-install-recommends 
     wget 
     python3-pip 
     python3-setuptools 
     nginx 
     ca-certificates 
     vim 
&& rm -rf /var/lib/apt/lists/*
#RUN ln -s /usr/bin/python3 /usr/bin/python
RUN ln -s /usr/bin/pip3 /usr/bin/pip
ENV PYTHONUNBUFFERED=TRUE
ENV PYTHONDONTWRITEBYTECODE=TRUE
ENV PATH="/opt/program:${PATH}"
RUN pip install sagemaker-training

以下是您如何调用自定义映像

tf_estimator = TensorFlow(entry_point='mnist_keras_tf.py',
                        source_dir='.',
                        role=role,
                        instance_count=1, 
                        instance_type='ml.p3.2xlarge',
                        image_uri='<arn of custom image>',
                        script_mode=True,
                        hyperparameters={
                            'epochs': 2,
                            'batch-size': 256,
                            'learning-rate': 0.01}

SageMaker Python SDK 中现有的框架估算器可能是一个很好的起点,例如 https://github.com/aws/sagemaker-python-sdk/blob/master/src/sagemaker/pytorch/estimator.py

但是,由于您已经将训练代码捆绑到映像中,因此在运行训练代码的 Dockerfile 中设置入口点可能会更容易。有关 Amazon SageMaker 如何运行训练映像的更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo-dockerfile.html

相关内容

  • 没有找到相关文章

最新更新