gpt4 book ai didi

python - Tensorflow 对象检测 API 被杀死 - OOM。如何减少随机播放缓冲区的大小?

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:17 24 4
gpt4 key购买 nike

系统信息

  • 操作系统平台和发行版:CentOS 7.5.1804
  • TensorFlow 安装方式:pip install tensorflow-gpu
  • TensorFlow版本:tensorflow-gpu 1.8.0
  • CUDA/cuDNN版本:9.0/7.1.2
  • GPU 型号和内存:GeForce GTX 1080 Ti,11264MB
  • 重现的确切命令:

    python train.py --logtostderr --train_dir=./models/train --pipeline_config_path=mask_rcnn_inception_v2_coco.config

描述问题

我正在尝试在我自己的数据集上训练 Mask-RCNN 模型(从在 COCO 上训练的模型进行微调),但是一旦洗牌缓冲区被填满,这个过程就会被终止。

在此之前,nvidia-smi 显示内存使用量约为 10669MB/11175MB,但 GPU 利用率仅为 1%。

我尝试调整以下 train_config 设置:

batch_size: 1    
batch_queue_capacity: 10
num_batch_queue_threads: 4
prefetch_queue_capacity: 5

对于 train_input_reader:

num_readers: 1
queue_capacity: 10
min_after_dequeue: 5

我相信我的问题类似于 TensorFlow Object Detection API - Out of Memory但我使用的是 GPU 而不是 CPU。

我正在训练的图像比较大(2048*2048),但是我想避免缩小尺寸,因为要检测的物体非常小。我的训练集包含 400 张图像(在 .tfrecord 文件中)。

有没有办法减少洗牌缓冲区的大小,看看这是否会减少内存需求?

回溯

INFO:tensorflow:Restoring parameters from ./models/train/model.ckpt-0
INFO:tensorflow:Restoring parameters from ./models/train/model.ckpt-0
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Starting Session.
INFO:tensorflow:Starting Session.
INFO:tensorflow:Saving checkpoint to path ./models/train/model.ckpt
INFO:tensorflow:Saving checkpoint to path ./models/train/model.ckpt
INFO:tensorflow:Starting Queues.
INFO:tensorflow:Starting Queues.
INFO:tensorflow:global_step/sec: 0
INFO:tensorflow:global_step/sec: 0
2018-06-19 12:21:33.487840: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 97 of 2048
2018-06-19 12:21:43.547326: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 231 of 2048
2018-06-19 12:21:53.470634: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:94] Filling up shuffle buffer (this may take a while): 381 of 2048
2018-06-19 12:21:57.030494: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:129] Shuffle buffer filled.
Killed

最佳答案

您可以尝试以下步骤:

1.设置batch_size=1(或自己尝试)

2.更改 “默认值”:可选 uint32 shuffle_buffer_size = 11 [default = 256](或尝试您自己的) 代码在这里

models/research/object_detection/protos/input_reader.proto

Line 40 in ce03903

optional uint32 shuffle_buffer_size = 11 [default = 2048];

原始集合是:

optional uint32 shuffle_buffer_size = 11 [default = 2048]

默认值为 2048,对于 batch_size=1 来说太大了,应该相应地修改,我认为它会消耗大量 RAM。

3.重新编译Protobuf库

来自tensorflow/models/research/

protoc object_detection/protos/*.proto --python_out=.

关于python - Tensorflow 对象检测 API 被杀死 - OOM。如何减少随机播放缓冲区的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50929266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com