【问题标题】:Why do I get out of memory exception during training model on google cloud ml?为什么在 google cloud ml 上训练模型时出现内存不足异常?
【发布时间】:2018-02-26 08:26:17
【问题描述】:

我跟着下一个tutorial 训练物体检测TensorFlow 1.3 模型。我想在 Google 云上使用我的小数据集(1 类,约 100 个示例)重新训练 faster_rcnn_resnet101_coco 或 faster_rcnn_inception_resnet_v2_atrous_coco 模型。我已经更改了一些类和 PATH_TO_BE_CONFIGURED,正如关于相对 config files. 的教程中所建议的那样

数据集:12 张图片,4032 × 3024,每张图片有 10-20 个标记的边界框。

为什么会出现内存不足异常?

副本 master 0 内存不足并以非零状态 247 退出。

请注意我尝试了不同的配置:

  1. 规模层 BASIC_GPU
  2. default config yaml
  3. 自定义 yaml 以使用具有更多内存的实例

    trainingInput:
      runtimeVersion: "1.0"
      scaleTier: CUSTOM
      masterType: complex_model_l
      workerCount: 7
      workerType: complex_model_s
      parameterServerCount: 3
      parameterServerType: standard
    

【问题讨论】:

  • 可能是类的数量太多或者你输入的图片太大了。
  • 我只有一节课。可能图片太大了? (4032 × 3024)

标签: tensorflow google-cloud-platform tensorflow-gpu


【解决方案1】:

如果您正在处理大型数据集,我强烈建议您在配置文件 (config.yaml) 中使用“large_model”,并且您应该通过将 runtimeVersion 指定为“1.4”来选择最新的稳定版本的 tensorflow .您选择了“1.0”,这导致 ML 引擎选择 TensorFlow 版本 1.0。有关这方面的更多信息,请参阅Runtime Version,其中说:

“您可以指定支持的 Cloud ML Engine 运行时版本以用于 你的培训工作。运行时版本指示安装在分配的训练实例上的 TensorFlow 和其他 Python 包的版本。除非您有令人信服的理由,否则您应该让训练服务使用其默认版本,该版本始终是最新的稳定版本。”

因此,我建议使用以下配置:

trainingInput:
 runtimeVersion: "1.4"
 scaleTier: CUSTOM
 masterType: large_model
 workerCount: 7
 workerType: complex_model_l
 parameterServerCount: 3
 parameterServerType: standard

在上面的配置中,

masterType: large_model

允许您选择具有大量内存的机器,特别适用于模型太大(具有许多隐藏层或具有大量节点的层)时的参数服务器。希望能帮助到你。

【讨论】:

    【解决方案2】:

    您能描述一下您的数据集吗?根据我的经验,当用户遇到 OOM 问题时,通常是因为他们数据集中的图像是高分辨率的。将图像预缩放到较小的尺寸有助于解决内存问题。

    【讨论】:

    • 12 张图片,4032 × 3024,每张图片有 10-20 个带标签的边界框。
    • 这些是大图!这绝对是OOM的原因。有什么理由可以将它们调整为更小的值吗?
    • 为什么你认为它们很大?一张图片的大小约为 1.4 MB。我训练巴赫尺寸 1。
    • 我已经切换到AWS M类型实例(m4.10xlarge)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2020-05-28
    • 2017-11-08
    • 1970-01-01
    • 2022-06-23
    • 2018-03-24
    相关资源
    最近更新 更多