“由对等方在经过改编的标准 ML-Engine 对象检测训练中重置连接

"Connection reset by peer on adapted standard ML-Engine object-detection training

我的目标是使用 Google ML 引擎基于对象检测 API 中的宠物训练示例测试自定义对象检测训练。

经过一些成功的训练周期(可能直到第一个检查点,因为尚未创建检查点)...

15:46:56.784 global step 2257: loss = 0.7767 (1.70 sec/step)

15:46:56.821 global step 2258: loss = 1.3547 (1.13 sec/step)

...我在几个对象检测训练作业试验中收到以下错误:

Error reported to Coordinator: , {"created":"@1502286418.246034567","description":"OS Error","errno":104,"file":"external/grpc/src/core/lib/iomgr/tcp_posix.c","file_line":229,"grpc_status":14,"os_error":"Connection reset by peer","syscall":"recvmsg"}

我在 worker-replica-0,3 和 4 上收到它。之后作业失败:

Command '['python', '-m', u'object_detection.train', u'--train_dir=gs://cartrainingbucket/train', u'--pipeline_config_path=gs://cartrainingbucket/data/faster_rcnn_resnet101.config', '--job-dir', u'gs://cartrainingbucket/train']' returned non-zero exit status -9

我正在使用 faster_rcnn_resnet101.config 的改编版,并进行了以下更改:

train_input_reader: {
  tf_record_input_reader {
    input_path: "gs://cartrainingbucket/data/vehicle_train.record"
  }
  label_map_path: "gs://cartrainingbucket/data/vehicle_label_map.pbtxt"
}

eval_config: {
  num_examples: 2000
}

eval_input_reader: {
  tf_record_input_reader {
    input_path: "gs://cartrainingbucket/data/vehicle_val.record"
  }
  label_map_path: "gs://cartrainingbucket/data/vehicle_label_map.pbtxt"
  shuffle: false
  num_readers: 1
}

我的桶是这样的:

cartrainingbucket (Regional US-CENTRAL1)
--data/
  --faster_rcnn_resnet101.config
  --vehicle_label_map.pbtxt
  --vehicle_train.record
  --vehicle_val.record
--train/ 
  --checkpoint
  --events.out.tfevents.1502259105.master-556a4f538e-0-tmt52
  --events.out.tfevents.1502264231.master-d3b4c71824-0-2733w
  --events.out.tfevents.1502267118.master-7f8d859ac5-0-r5h8s
  --events.out.tfevents.1502282824.master-acb4b4f78d-0-9d1mw
  --events.out.tfevents.1502285815.master-1ef3af1094-0-lh9dx
  --graph.pbtxt
  --model.ckpt-0.data-00000-of-00001
  --model.ckpt-0.index
  --model.ckpt-0.meta
  --packages/

I 运行 使用以下命令的作业(使用 windows cmd [^ 应该等于 ]:

gcloud ml-engine jobs submit training stefan_object_detection_09_08_2017i ^
--job-dir=gs://cartrainingbucket/train ^
--packages dist/object_detection-0.1.tar.gz,slim/dist/slim-0.1.tar.gz ^
--module-name object_detection.train ^
--region us-central1 ^
--config object_detection/samples/cloud/cloud.yml ^
-- ^
--train_dir=gs://cartrainingbucket/train ^
--pipeline_config_path=gs://cartrainingbucket/data/faster_rcnn_resnet101.config

cloud.yml 是默认值:

trainingInput:
  runtimeVersion: "1.0" # i also tried 1.2, in this case the failure appeared earlier in training
  scaleTier: CUSTOM
  masterType: standard_gpu
  workerCount: 5
  workerType: standard_gpu
  parameterServerCount: 3
  parameterServerType: standard

我正在使用当前最新的 Tensorflow 模型主分支版本(提交 36203f09dc257569be2fef3a9​​50ddb2ac25dddeb)。我本地安装的 TF 版本是 1.2,我使用的是 python 3.5.1.

我的训练和验证记录都在本地进行训练。

对我来说,作为新手,很难看出问题的根源。我很乐意提供任何建议。

更新: 由于内存不足,作业失败。请尝试使用更大的机器。

除了 rhaertel80 的回答,如果您能通过 cloudml-feedback@google.com.

与我们分享项目编号和工作 ID 也将很有帮助

一种可能性是 TF 进程正在使用大量资源(通常是内存)并被 OS 杀死。这将解释由对等方重置的连接。

所以要尝试的一件事是使用具有更多资源的 tier/machines。