我成功地按照你提到的教程进行了一些修改。
我会提到所有的步骤,尽管你已经完成了一半。
首先为作业创建一个云存储桶:
gsutil mb -l europe-north1 gs://keras-cloud-tutorial
要回答您应该在哪里编写这些命令的问题,取决于您想要存储将从 GitHub 下载的文件的位置。在您发布的教程中,作者使用自己的计算机运行命令,这就是他使用gcloud init 初始化 gcloud 命令的原因。但是,如果您在那里下载所需的文件,您也可以从 Cloud Shell 提交作业。
我们需要来自repository 的唯一文件是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 错误的一个可能原因是您可能更改了 cloudml-gpu.yaml 文件中的 runtimeVersion。正如我们所读到的here,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”是legacy machine type。
另外,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)
注意: 如您所见,我已指定我想要keras 的版本2.1.5。这是因为如果我不这样做,将使用与早于2.0 的 Tensorflow 版本存在兼容性问题的最新版本。
如果一切都设置好了,您可以通过在文件夹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。
主题:
您可以阅读更多关于here 和here 的每个区域的功能。
编辑:
完成训练作业后,您指定的存储桶中应该有 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 平台上的训练作业如何工作的详细信息 here。
希望我的回答对你有帮助。