使用 gcloud 计算单元而不是本地时,Tensorflow 检查点未正确保存

Tensorflow checkpoints are not correctly saved when using gcloud compute unit instead of local

当我使用 google 云桶作为数据源和目标进行本地训练时:

gcloud ml-engine local train --module-name trainer.task_v2s --package-path trainer/

我得到了正常的结果,并且检查点在 20 秒内得到了正确保存,因为我的数据集是 400 个示例,我使用 20 作为批大小:400/20 = 20 步 = 1 个纪元。这些文件保存在存储桶中我的模型目录中

此外,我的本地 GPU 已正常使用:

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1018      G   /usr/lib/xorg/Xorg                           212MiB |
|    0      1889      G   compiz                                        69MiB |
|    0      5484      C   ...rtualenvs/my_project/bin/python  2577MiB         |
+-----------------------------------------------------------------------------+

当我现在尝试使用 gcloud 计算单元时:

gcloud ml-engine jobs submit training my_job_name \
--module-name trainer.task_v2s --package-path trainer/ \
--staging-bucket gs://my-bucket --region europe-west1 \
--scale-tier BASIC_GPU --runtime-version 1.8 --python-version 3.5

保存一个检查点需要大约相同的时间,但它是以 1 步增量保存的,尽管数据源没有改变。损失也减少得更慢,就像只训练一个例子一样。这是文件的样子:

GPU 也完全没有参与:

+-----------------------------------------------------------------------------+  
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |      
+-----------------------------------------------------------------------------+  

我正在使用没有配置 clusterspec 的自定义估算器,因为我假设您只需要它用于分布式露营,我的 run_config 看起来像这样:

Using config: {'_master': '', '_num_ps_replicas': 0, '_session_config': None, '_task_id': 0, '_model_dir': 'gs://my_bucket/model_dir', '_save_checkpoints_steps': None, '_tf_random_seed': None, '_task_type': 'master', '_keep_checkpoint_max': 5, '_evaluation_master': '', '_device_fn': None, '_save_checkpoints_secs': 600, '_save_summary_steps': 100, '_cluster_spec': , '_log_step_count_steps': 100, '_is_chief': True, '_global_id_in_cluster': 0, '_num_worker_replicas': 1, '_service': None, '_keep_checkpoint_every_n_hours': 10000, '_train_distribute': None}

从日志中我还可以看到 TF_CONFIG 环境变量:

{'environment': 'cloud', 'cluster': {'master': ['127.0.0.1:2222']}, 'job': {'python_version': '3.5', 'run_on_raw_vm': True, 'package_uris': ['gs://my-bucket/my-project10/27cb2041a4ae5a14c18d6e7f8622d9c20789e3294079ad58ab5211d8e09a2669/MyProject-0.9.tar.gz'], 'runtime_version': '1.8', 'python_module': 'trainer.task_v2s', 'scale_tier': 'BASIC_GPU', 'region': 'europe-west1'}, 'task': {'cloud': 'qc6f9ce45ab3ea3e9-ml', 'type': 'master', 'index': 0}}

我的猜测是我需要配置一些我没有但我不知道是什么的东西。一开始我也确实收到了一些警告,但我认为它们与此无关:

google-cloud-vision 0.29.0 has requirement requests<3.0dev,>=2.18.4, but you'll have requests 2.13.0 which is incompatible.

我刚刚发现我的错误:我需要在我的 setup.py 中放置 tensorflow-gpu 而不是 tensorflow。更好的是,正如 rhaertel80 所说,一起省略 tensorflow。