在 sagemaker 定制(培训)容器中叫什么?
What is called within a sagemaker custom (training) container?
某处 spring 贤者 docker 图像的行为发生了变化,我现在找不到构建它的方法。
目录结构
/src/some/package
/project1
/some_entrypoint.py
/some_notebook.ipynb
/project2
/another_entrypoint.py
/another_notebook.ipynb
setup.py
Docker 文件
请注意,我想转换tensorflow版本,所以我将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(None、'.' 或 '..')、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 训练容器未安装的任何模块?您还可以分享您的错误堆栈跟踪吗?
某处 spring 贤者 docker 图像的行为发生了变化,我现在找不到构建它的方法。
目录结构
/src/some/package
/project1
/some_entrypoint.py
/some_notebook.ipynb
/project2
/another_entrypoint.py
/another_notebook.ipynb
setup.py
Docker 文件
请注意,我想转换tensorflow版本,所以我将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(None、'.' 或 '..')、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 训练容器未安装的任何模块?您还可以分享您的错误堆栈跟踪吗?