簡體   English   中英

如何打包gcloud ml的子文件夾?

[英]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-e​​ngine之前就擁有了該項目。 看起來像這樣:

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_fnfrom .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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM