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
)

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

解决方法

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

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

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