我能够成功地按照您提到的教程进行操作,并在此过程中进行了一些修改。
我会提到所有的步骤,尽管你提到了一半。
首先为作业创建一个云存储桶:
gsutil mb -l europe-north1 gs://keras-cloud-tutorial
要回答您应该在哪里编写这些命令的问题,取决于您想要存储将从 GitHub 下载的文件的位置。在您发布的教程中,作者使用自己的计算机运行命令,这就是他使用gcloud init
. 但是,如果您在那里下载所需的文件,您也可以从 Cloud Shell 提交作业。我们需要从存储库中获取的唯一文件是trainer
文件夹和setup.py
文件。因此,如果我们将它们放在一个名为的文件夹中,keras-cloud-tutorial
我们将具有以下文件结构:
keras-cloud-tutorial/
├── setup.py
└── trainer
├── __init__.py
├── cloudml-gpu.yaml
└── cnn_with_keras.py
现在,错误的一个可能原因ImportError: No module named eager
是您可能更改了文件runtimeVersion
内部cloudml-gpu.yaml
。正如我们在这里所读到的,eager
它是在 Tensorflow 1.5 中引入的。如果您指定了早期版本,则预计会遇到此错误。所以 的结构cloudml-gpu.yaml
应该是这样的:
trainingInput:
scaleTier: CUSTOM
# standard_gpu provides 1 GPU. Change to complex_model_m_gpu for 4 GPUs
masterType: standard_gpu
runtimeVersion: "1.5"
注意:“standard_gpu”是旧机器类型。
此外,该setup.py
文件应如下所示:
from setuptools import setup, find_packages
setup(name='trainer',
version='0.1',
packages=find_packages(),
description='Example on how to run keras on gcloud ml-engine',
author='Username',
author_email='user@gmail.com',
install_requires=[
'keras==2.1.5',
'h5py'
],
zip_safe=False)
注意:如您所见,我已经指定了我想要2.1.5
的keras
. 这是因为如果我不这样做,则会使用最新版本,它与2.0
.
如果一切都设置好了,您可以通过在文件夹中运行以下命令来提交作业keras-cloud-tutorial
:
gcloud ai-platform jobs submit training test_job --module-name=trainer.cnn_with_keras --package-path=./trainer --job-dir=gs://keras-cloud-tutorial --region=europe-west1 --config=trainer/cloudml-gpu.yaml
注意:我使用了命令gcloud ai-platform
而不是gcloud ml-engine
命令,尽管两者都可以。但在未来的某个时候,gcloud ml-engine
将被弃用。
注意:在选择提交作业的区域时要小心。某些区域不支持 GPU,如果选择会抛出错误。例如,如果在我的命令中我将region
参数设置为europe-north1
而不是europe-west1
,我将收到以下错误:
错误:(gcloud.ai-platform.jobs.submit.training)RESOURCE_EXHAUSTED:项目配额失败。对 1 个 K80 加速器的请求超过了 0 K80、0 P100、0 P4、0 T4、0 TPU_V2、0 TPU_V3、0 V100 的允许最大值。要详细了解 Cloud ML Engine 配额,请参阅https://cloud.google.com/ml-engine/quotas。-“@type”:type.googleapis.com/google.rpc.QuotaFailure 违规:-描述:对 1 个 K80 加速器的请求超过了允许的最大值 0 K80、0 P100、0 P4、0 T4、0 TPU_V2、0 TPU_V3 , 0 V100。主题:
您可以在此处和此处阅读有关每个区域的功能的更多信息。
编辑:
训练作业完成后,您指定的存储桶中应该有 3 个文件夹logs/
:model/
和packages/
。模型保存在model/
文件夹中的一个.h5
文件中。请记住,如果您为目标设置了特定文件夹,则应在末尾包含“/”。例如,您应该设置gs://my-bucket/output/
而不是gs://mybucket/output
. 如果你做后者,你最终会得到文件夹output
,outputlogs
和outputmodel
. 里面output
应该有packages
。作业页面链接应指向output
文件夹,因此请务必检查存储桶的其余部分!
此外,在 AI-Platform 作业页面中,您应该能够看到有关CPU
和利用率的信息:
GPU
Network
另外,我想澄清一些事情,因为我看到您发布了一些相关问题作为答案:
您的本地环境,无论是您的个人 Mac 还是 Cloud Shell,都与实际的培训工作无关。您不需要在本地安装任何特定的包或框架。您只需要安装 Google Cloud SDK(当然已经安装在 Cloud Shell 中)即可运行相应的gcloud
命令gsutil
。您可以在此处阅读更多关于 AI 平台上的训练作业如何工作的详细信息。
我希望你会发现我的回答很有帮助。