amazon-web-services - 在使用自定义 docker 映像初始化 pytorch 估计器以在 AWS Sagemaker 上进行训练时,将什么定义为入口点?
问题描述
所以我创建了一个用于训练的 docker 镜像。在 dockerfile 中,我定义了一个入口点,以便在docker run
执行时,它将开始运行我的 python 代码。据我了解,要在 aws sagemaker 上使用它,我需要在 sagemaker 的 jupyter notebook 中创建一个 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
...
稍后我想指定超参数和数据通道。但现在我根本不明白该把什么作为入口点。在文档中,它说入口点是必需的,它应该是入口点的本地/全局路径......
解决方案
如果您真的想使用完全独立的自己构建 docker 映像,您应该创建一个 Amazon Sagemaker 算法(这是 Sagemaker 菜单中的选项之一)。在这里,您必须指定指向您在亚马逊 ECR 上的 docker 映像的链接以及输入参数和数据通道等。选择此选项时,您不应使用PyTorch 估计器,而应使用Algoritm 估计器。这样您确实不必指定入口点,因为它在训练时简单地运行 docker,并且可以在您的 docker 文件中定义默认入口点。
当您拥有自己的模型代码时,可以使用 Pytorch 估算器,但您希望在现成的 Sagemaker PyTorch docker 映像中运行此代码。这就是为什么您必须例如指定 PyTorch 框架版本的原因。在这种情况下,默认情况下入口点文件应放置在存储 jupyter 笔记本的位置旁边(只需通过单击上传按钮上传文件)。PyTorch 估计器从框架估计器继承所有选项,其中可以找到放置入口点和模型的选项,例如source_dir。
推荐阅读
- sql - 调整日期的时区,使小时准确(不只是在末尾添加偏移量)
- aws-lambda - AWS Lambda 和 API 网关
- xcode - Git 无法从 Mac OS X 上的终端启动 Xcode
- javascript - 在 React 中为 onFocus 事件传递参数
- python - 如何像在numpy数组中一样通过固定步骤来切片张量流中的某些特定值?
- excel - VBA代码添加数据透视表字段,但无法调整位置?
- c# - 射击c#游戏中的弹丸延迟
- python-3.x - 字典的产品不能重复odoo
- drupal - Drupal 7 - 实施 AMP 涉及什么?
- reactjs - 如何将道具从孩子的孩子传递给父母