如何为 gcloud ml 打包子文件夹?
How to package sub-folder for gcloud ml?
我正在尝试将 我的 项目上传到 google 云 ml-engine 进行训练。我已按照 "getting started" 指南,在相关位置替换为我自己的文件。
我设法使用
在本地进行训练
gcloud ml-engine local train --module-name="my-model.task" --package-path=my-model/ -- ./my_model/model_params_google.json
是的,我在模块名称中有破折号:(。我还制作了一个符号 link my_module -> my-module
以便我可以使用带下划线的名称而不是破折号。无论如何,我不要认为这是问题所在,因为上面的命令在本地运行良好。
我的文件夹结构不符合推荐的结构,因为我在考虑 ml-engine 之前就有了项目。它看起来像这样:
my-model/
├── __init__.py
├── setup.py
├── task.py
├── model_params_google.json
├── src
│ ├── __init__.py
│ ├── data_handler.py
│ ├── elastic_helpers.py
│ ├── model.py
问题是 src
文件夹没有 packaged/uploaded 代码,所以在云端,当我在 task.py
中说 from .src.model import model_fn
时,它失败了。
我打包的命令是(在文件夹my-model/../
):
gcloud ml-engine jobs submit training my_model_$(date +"%Y%m%d_%H%M%S") \
--staging-bucket gs://model-data \
--job-dir $OUTPUT_PATH \
--module-name="my_model.task" \
--package-path=my_model/ \
--region=$REGION \
--config config.yaml --runtime-version 1.8 \
-- \
tf_crnn/model_params_google.json --verbosity DEBUG
它打包 my-model.0.0.0.tar.gz
而没有 my-model/src
的内容。我不知道为什么。我正在使用示例 setup.py
:
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['tensorflow>=1.8']
setup(
name='my_model',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
description='my first model'
)
那么,问题来了,为什么gcloud
不打包src
文件夹呢?
您需要将setup.py放在my-model
上面的目录中。
您可以通过调用来检查您的结果:
python setup.py sdist
然后解压缩 dist
目录中的 tarball。按照原样,您会看到 task.py
未包含在 tarball 中。
通过将 setup.py
向上移动一个目录并重复,您会看到 task.py
已包含在内,就像 src 中的所有内容一样。
我正在尝试将 我的 项目上传到 google 云 ml-engine 进行训练。我已按照 "getting started" 指南,在相关位置替换为我自己的文件。
我设法使用
在本地进行训练gcloud ml-engine local train --module-name="my-model.task" --package-path=my-model/ -- ./my_model/model_params_google.json
是的,我在模块名称中有破折号:(。我还制作了一个符号 link my_module -> my-module
以便我可以使用带下划线的名称而不是破折号。无论如何,我不要认为这是问题所在,因为上面的命令在本地运行良好。
我的文件夹结构不符合推荐的结构,因为我在考虑 ml-engine 之前就有了项目。它看起来像这样:
my-model/
├── __init__.py
├── setup.py
├── task.py
├── model_params_google.json
├── src
│ ├── __init__.py
│ ├── data_handler.py
│ ├── elastic_helpers.py
│ ├── model.py
问题是 src
文件夹没有 packaged/uploaded 代码,所以在云端,当我在 task.py
中说 from .src.model import model_fn
时,它失败了。
我打包的命令是(在文件夹my-model/../
):
gcloud ml-engine jobs submit training my_model_$(date +"%Y%m%d_%H%M%S") \
--staging-bucket gs://model-data \
--job-dir $OUTPUT_PATH \
--module-name="my_model.task" \
--package-path=my_model/ \
--region=$REGION \
--config config.yaml --runtime-version 1.8 \
-- \
tf_crnn/model_params_google.json --verbosity DEBUG
它打包 my-model.0.0.0.tar.gz
而没有 my-model/src
的内容。我不知道为什么。我正在使用示例 setup.py
:
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['tensorflow>=1.8']
setup(
name='my_model',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
include_package_data=True,
description='my first model'
)
那么,问题来了,为什么gcloud
不打包src
文件夹呢?
您需要将setup.py放在my-model
上面的目录中。
您可以通过调用来检查您的结果:
python setup.py sdist
然后解压缩 dist
目录中的 tarball。按照原样,您会看到 task.py
未包含在 tarball 中。
通过将 setup.py
向上移动一个目录并重复,您会看到 task.py
已包含在内,就像 src 中的所有内容一样。