sagemaker定制(培训)容器中称为什么?

时间:2020-08-17 20:02:39

标签: tensorflow amazon-sagemaker

今年春天的某个地方,sagemaker docker映像的行为发生了变化,我找不到现在构造它的方式。

目录结构

/src/some/package
/project1
    /some_entrypoint.py
    /some_notebook.ipynb
/project2
    /another_entrypoint.py
    /another_notebook.ipynb
setup.py

Docker文件

请注意,我想转换张量流版本,因此我将FROM更改为最新版本。这是 重大变化。

# Core
FROM 763104351884.dkr.ecr.eu-west-1.amazonaws.com/tensorflow-training:2.3.0-cpu-py37-ubuntu18.04

COPY . /opt/ml/code/all/
RUN pip install /opt/ml/code/all/

WORKDIR "/opt/ml/code"

Python代码

此代码应开始入口点,例如,在这里,我们有some_notebook.ipynb的代码。我尝试了工作目录+ source_dir(无,“。”或“ ..”),entry_point(有或没有/),依赖项(“ src”)...的所有可能组合...

  • 如果存在安装程序,它将尝试将我的项目作为模块调用(python -m some_entrypoint)
  • 如果没有,通常找不到我的入口点。我不明白是因为TensorFlow应该将其添加到容器中,对吗?
estimator = TensorFlow(
   entry_point='some_entrypoint.py', 
   image_name='ECR.dkr.ecr.eu-west-1.amazonaws.com/overall-project/sagemaker-training:latest',
   source_dir='.',
#    dependencies=['../src/'],
   script_mode=True,

   train_instance_type='ml.m5.4xlarge',
   train_instance_count=1,
   train_max_run=60*60,  # seconds * minutes
   train_max_wait=60*60,  # seconds * minutes. Must be >= train_max_run
   hyperparameters=hyperparameters,
   metric_definitions=metrics,
   role=role,
   framework_version='2.0.0',
   py_version='py3',
  )
estimator.fit({
    'training': f"s3://some-data/"}
#   , wait=False
)

理想情况下,我想了解其中的逻辑:给定什么设置又叫什么?

1 个答案:

答案 0 :(得分:0)

运行训练容器时,将执行您的entry_point脚本。

由于笔记本文件和entry_point脚本位于同一目录下,因此您的source_dir应该只是“。”。

您的entry_point脚本是否会导入默认情况下tensorflow培训容器未安装的任何模块?还可以分享错误的堆栈跟踪信息吗?