使用自定义docker镜像初始化pytorch估计器以在AWS Sagemaker上进行培训时,定义为入口点的什么?

问题描述 投票:1回答:1

所以我创建了一个用于训练的docker镜像。在dockerfile中,我定义了一个入口点,这样当执行docker run时,它将开始运行我的python代码。以我的理解,要在aws sagemaker上使用此功能,我需要在sagemaker的jupyter笔记本中创建pytorch估计器。我尝试过这样的事情:

import sagemaker
from sagemaker.pytorch import PyTorch

sagemaker_session = sagemaker.Session()

role = sagemaker.get_execution_role()

estimator = PyTorch(entry_point='train.py',
                    role=role,
                    framework_version='1.3.1',
                    image_name='xxx.ecr.eu-west-1.amazonaws.com/xxx:latest',
                    train_instance_count=1,
                    train_instance_type='ml.p3.xlarge',
                    hyperparameters={})

estimator.fit({})

[在文档中,我发现可以使用aws ecr上的docker镜像指定链接作为镜像名称。当我尝试执行此操作时,它总是在抱怨

[Errno 2] No such file or directory: 'train.py'

它立即抱怨,所以我肯定做错了什么。我希望我的docker映像首先应该运行,然后才能发现入口点不存在。

但是除此之外,为什么我需要指定一个入口点,例如,是否不清楚我的培训的入口仅仅是docker run

为了更好地理解。我的Docker映像中的入口点python文件如下所示:

if __name__=='__main__':
    parser = argparse.ArgumentParser()

    # Hyperparameters sent by the client are passed as command-line arguments to the script.
    parser.add_argument('--epochs', type=int, default=5)
    parser.add_argument('--batch_size', type=int, default=16)
    parser.add_argument('--learning_rate', type=float, default=0.0001)

    # Data and output directories
    parser.add_argument('--output_data_dir', type=str, default=os.environ['OUTPUT_DATA_DIR'])
    parser.add_argument('--train_data_path', type=str, default=os.environ['CHANNEL_TRAIN'])
    parser.add_argument('--valid_data_path', type=str, default=os.environ['CHANNEL_VALID'])

    # Start training
    ...

稍后,我想指定超参数和数据通道。但是现在我还是根本不明白该把什么作为切入点。在文档中说入口点是必需的,它应该是入口点的本地/全局路径...

amazon-web-services docker pytorch amazon-sagemaker entry-point
1个回答
0
投票

如果您真的想单独使用一个完整的单独构建docker映像,则应创建一个Amazon Sagemaker算法(这是Sagemaker菜单中的选项之一)。在这里,您必须指定到亚马逊ECR上的docker映像的链接,以及输入参数和数据通道等。选择此选项时,应not

© www.soinside.com 2019 - 2024. All rights reserved.