[英]How to package sub-folder for gcloud ml?
我正在嘗試將我的項目上傳到Google Cloud ml-engine進行培訓。 我遵循了“入門”指南,在相關位置用我自己的文件替換。
我設法使用
gcloud ml-engine local train --module-name="my-model.task" --package-path=my-model/ -- ./my_model/model_params_google.json
是的,我在模塊名稱中帶有破折號:(。我也做了一個符號鏈接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
文件夾未打包/未from .src.model import model_fn
代碼,因此在雲中,當我在task.py
from .src.model import model_fn
說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
,您會看到task.py
不包含在壓縮包中。
通過將setup.py
移至更高的目錄並重復執行,您將看到包括task.py
以及src中的所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.