Closed swagzhang closed 2 years ago
又出现了这个报错,说打开了过多的file, 我一脸懵逼!
首先清理你共享内存目录 /dev/shm
使用Dataloader 开启use_shared_memory 需要保证/dev/shm有8G以上的内存
如果遇到内存问题,建议把used_shared_memory 设置为False: https://github.com/PaddlePaddle/PaddleOCR/blob/2f4091e7163cf28f08b9e8ddc6772f6f89b72c60/configs/det/det_mv3_db.yml#L103
我按照你说的在loader下面加了use_shared_memory:Fasle 但是,我训练num_workers > 1还是在100来个epoch后莫名其妙的被killed,没有额外报错 我现在跑一下num_workers 为1的情况,我估计还是会因为内存溢出或者too many open files 然后挂掉。。。
官方什么时候能解决
我按照你说的在loader下面加了use_shared_memory:Fasle 但是,我训练num_workers > 1还是在100来个epoch后莫名其妙的被killed,没有额外报错 我现在跑一下num_workers 为1的情况,我估计还是会因为内存溢出或者too many open files 然后挂掉。。。
跑完了,不出所料,报了一个OSError: [Errno 24] Too many open files的错误,这个要怎么办,求助
我把num_workers设置成0,然后batch size调到128,慢慢就会memory溢出了。。。 `Global: use_gpu: True epoch_num: 5000 log_smooth_window: 20 print_batch_step: 10 save_model_dir: ./output/rec_en_number_lite save_epoch_step: 10
eval_batch_step: [0, 200]
cal_metric_during_train: True pretrained_model: ./output/rec_en_number_lite/latest checkpoints: save_inference_dir: use_visualdl: False infer_img:
character_dict_path: ./ppocr/utils/en_dict.txt character_type: EN max_text_length: 250 infer_mode: False use_space_char: True
Optimizer: name: Adam beta1: 0.9 beta2: 0.999 lr: name: Cosine learning_rate: 0.001 regularizer: name: 'L2' factor: 0.00001
Architecture: model_type: rec algorithm: CRNN Transform: Backbone: name: MobileNetV3 scale: 0.5 model_name: small small_stride: [1, 2, 2, 2] Neck: name: SequenceEncoder encoder_type: rnn hidden_size: 48 Head: name: CTCHead fc_decay: 0.00001
Loss: name: CTCLoss
PostProcess: name: CTCLabelDecode
Metric: name: RecMetric main_indicator: acc
Train: dataset: name: SimpleDataSet data_dir: ./train_data/ label_file_list: ["./train_data/train_list.txt"] transforms:
Eval: dataset: name: SimpleDataSet data_dir: ./train_data/ label_file_list: ["./train_data/eval_list.txt"] transforms:
我把num_workers设置成0,然后batch size调到128,慢慢就会memory溢出了。。。
/dev/shm 目录下还有多少空间
有8个G... 但我感觉跟shared mem没关系吧,是我内存不断被侵蚀。。。说明代码里被alloc的memory没有在一次epoch后释放掉,有地方泄漏了吧,然后慢慢越攒越多直至崩溃? 我16G的内存开始跑的时候差不多占用4,5G然后慢慢就满了。。
跑了70个epoch就增加了2g内存 又增加了2g内存,而shm没有任何增加 快满了。。 我这样短短续续训练了好几天,才估计只有3,4千个epoch。。。太累了,有没有办法不断掉的,让我顺利训练完。。。
最后就是内存跑没了。。。这我换成32G的也不够啊。。。迟早也会溢出如果内存不断泄漏的话
遇到同样的问题
请问有解决方案吗?
拉取最新dygraph分支代码试试呢
Release/2.1, 机器内存500多G,设置的共享内存250多G,同样训练文本检测模型ch_det_res18_db_v2.0.yml,每隔一段时间训练程序就会被killed,没有任何报错,官方可以在源码里的try...exception语句内打印出具体的报错信息吗?
同这个问题,内存一直被侵占,应该在哪里改才能边训练边释放内存呢?
遇到同样的问题,服务器上训练文本识别算法,运行会莫名的killed,没有找到原因。但使用docker发现可以,建议使用docker运行试试看。
Since you haven\'t replied for more than 3 months, we have closed this issue/pr. If the problem is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于您超过三个月未回复,我们将关闭这个issue/pr。 若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。
情况一: num_workers设置超过1 在这种情况下,训练到一定次数后,突然训练进程就会被kill, 就只有被killed提示,无多余报错 情况二:num_workers设置为1 这种情况下不会直接被kill, 而是随着训练的进行,内存会被不断占用直至溢出报错,在过往的issue中看到要在reader_main.py中关掉多线程,但是当前最新版本已经没有这个文件了 这种情况会有不同错误,一个是之前说要alloc mem然后失败,还有一种是说shared memory不够。。。 麻烦官方给予解决一下,感谢