我正在使用google cloud ml来训练模型以使用Tensorflow的对象检测API来检测我的自定义对象。通过关注this tensorflow's guide和阅读this google cloud ml's docs,我配置了我的培训输入并保存在cloud.yml
中,如下所示:
trainingInput:
runtimeVersion: "1.2"
scaleTier: CUSTOM
masterType: standard_gpu
workerCount: 5
workerType: standard_gpu
parameterServerCount: 3
parameterServerType: standard
我使用此命令提交作业:
gcloud ml-engine jobs submit training `whoami`_object_detection_`date +%s` \
--runtime-version 1.2 \
--job-dir=gs://MY_BUCKET_NAME/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://MY_BUCKET_NAME/train \
--pipeline_config_path=gs://MY_BUCKET_NAME/data/ssd_mobilenet_v1_pets.config
准备10分钟,然后运行20分钟后,作业记录了一些陌生人的信息Error reported to Coordinator
,然后记录了内存错误The replica master 0 ran out-of-memory and exited with a non-zero status of 247
。
我检查了这份工作的资源,发现了主人的记忆利用率,所有5名工人都很高(大约90-95%)。但他们的CPU利用率是正常的(60-65%)。
我猜,我为教练配置的内存不足。但问题是我如何估计改变训练输入参数?我的意思是我知道如何将masterType
更改为更高级别,或将workerCount
更改为更高的数字,或减少batch_size
中的ssd_mobilenet_v1_pets.config
?在这种情况下图像大小是否相关?
我现在很困惑。谷歌云让我变得如此之快,所以启发式似乎无法承受。