0

我一直在尝试 Google Cloud ML 上的 TensorFlow 教程脚本。特别是我在https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10使用了 cifar10 CNN 教程脚本。

当我在 Google Cloud ML 中运行这个训练脚本时,每小时会出现大约 0.5% 的内存泄漏。

除了将脚本打包成所需的 GCP 格式(如https://cloud.google.com/ml-engine/docs/how-tos/packaging-trainer中所述)并设置数据之外,我没有对脚本进行任何更改包含 .bin 数据文件的存储桶的位置。

如果我在本地运行,即不在谷歌云中,并使用 TCMALLOC,通过设置 LD_PRELOAD="/usr/lib/libtcmalloc.so" ,内存泄漏得到解决。但是,我在 Google Cloud ML 中没有这个选项。

什么可能导致泄漏,我能做些什么来解决这个问题?为什么其他用户没有注意到同样的问题?虽然泄漏很小,但当我针对自己的数据运行几天时,它足以导致我的训练课程耗尽内存并失败。无论我使用多少 GPU,都会发生泄漏。

我使用的 gcloud 命令是:

gcloud ml-engine jobs submit training cifar10_job --job-dir gs://tfoutput/joboutput --package-path trainer --module-name=trainer.cifar10_multi_gpu_train --region europe-west1 --staging-bucket gs://tfoutput --scale-tier CUSTOM --config config.yml --runtime-version 1.0 -- --num_gpus=4

配置文件(config.yml)是:

trainingInput:
  scaleTier: CUSTOM
  masterType: complex_model_m_gpu

任何帮助表示赞赏,谢谢。

4

1 回答 1

0

我们建议使用此版本的代码:

github.com/tensorflow/models/pull/1538

这具有性能优势(通过运行更少的时间,您不太容易出现 OOM)。

当然,这可能不是永久修复,但根据我们的测试,TensorFlow 1.2 似乎解决了这个问题。TensorFlow 1.2 即将在 CloudML Engine 上可用。如果您仍然有问题,请告诉我们。

于 2017-06-23T23:27:51.017 回答