【发布时间】:2017-09-23 00:35:02
【问题描述】:
如何在 Google Cloud ML Engine 上使用 TCMalloc?或者除了 TCMalloc 之外,还有没有其他方法可以解决 ML Engine 上的内存泄漏问题?
完成图表似乎没有帮助。
在训练 73 个 epoch 后出现内存不足错误。这是训练日志的一部分:
11:26:33.707 作业失败。
11:26:20.949 TensorFlow 拆解完毕。
11:25:18.568 副本 master 0 内存不足并以非零状态 247 退出。要了解有关您的作业退出原因的更多信息,请查看日志
11:25:07.785 清理完毕。
11:25:07.785 模块完成;清理。
11:25:07.783 模块因未能调用子进程命令而引发异常 '['python', '-m', u'trainer.main', u'--data=gs://', u'--train_log_dir=gs:/ /tfoutput/joboutput', u'--model=trainer.crisp_model', u'--num_threads=32', u'--memory_usage=0.8', u'--max_out_norm=1', u'--train_batch_size= 64', u'--sample_size=112', u'--num_gpus=4', u'--allow_growth=True', u'--weight_loss_by_train_size=True', u'-x', 返回非零退出状态 -9。
11:23:08.853 PNG 警告:扩展块时超出大小限制
11:18:18.474 纪元 58.0:准确度 = 0.9109
11:17:14.851 2017-05-17 10:17:14.851024: epoch 58, loss = 0.12, lr = 0.085500 (228.9 examples/sec; 0.280 sec/batch)
11:15:39.532 PNG 警告:扩展块时超出大小限制
11:10:23.855 PoolAllocator:372618242个get请求后,put_count=372618151 evicted_count=475000 eviction_rate=0.00127476,不满足分配率=0.00127518
11:05:32.928 PNG 警告:扩展块时超出大小限制
10:59:26.006 纪元 57.0:准确度 = 0.8868
10:58:24.117 2017-05-17 09:58:24.117444: epoch 57, loss = 0.23, lr = 0.085750 (282.2 examples/sec; 0.227 sec/batch)
10:54:37.440 PNG 警告:扩展块时超出大小限制
10:53:30.323 PoolAllocator:366350973个get请求后,put_count=366350992 evicted_count=465000 eviction_rate=0.00126927和不满足分配率=0.0012694
10:51:51.417 PNG 警告:扩展块时超出大小限制
10:40:43.811 纪元 56.0:准确度 = 0.7897
10:39:41.308 2017-05-17 09:39:41.308624: epoch 56, loss = 0.06, lr = 0.086000 (273.8 examples/sec; 0.234 sec/batch)
10:38:14.522 PoolAllocator:360630699个get请求后,put_count=360630659 evicted_count=455000 eviction_rate=0.00126168和不满足分配率=0.00126197
10:36:10.480 PNG 警告:扩展块时超出大小限制
10:21:50.715 纪元 55.0:准确度 = 0.9175
10:20:51.801 PoolAllocator:354197216个get请求后,put_count=354197255 evicted_count=445000 eviction_rate=0.00125636,不满足分配率=0.00125644
10:20:49.815 2017-05-17 09:20:49.815251: epoch 55, loss = 0.25, lr = 0.086250 (285.6 examples/sec; 0.224 sec/batch)
10:02:56.637 54.0 纪元:准确度 = 0.9191
10:01:57.367 2017-05-17 09:01:57.367369: epoch 54, loss = 0.09, lr = 0.086500 (256.5 examples/sec; 0.249 sec/batch)
10:01:42.365 PoolAllocator:347107694个get请求后,put_count=347107646 evicted_count=435000 eviction_rate=0.00125321,不满足分配率=0.00125354
09:45:56.116 PNG 警告:扩展块时超出大小限制
09:44:12.698 53.0 时代:准确度 = 0.9039
09:43:09.888 2017-05-17 08:43:09.888202: epoch 53, loss = 0.10, lr = 0.086750 (307.0 examples/sec; 0.208 sec/batch)
09:41:48.672 PoolAllocator:339747205个get请求后,put_count=339747210 evicted_count=425000 eviction_rate=0.00125093,不满足分配率=0.00125111
09:36:14.085 PNG 警告:扩展块时超出大小限制
09:35:11.686 PNG 警告:扩展块时超出大小限制
09:34:45.011 PNG 警告:扩展块时超出大小限制
09:31:03.212 PNG 警告:扩展块时超出大小限制
09:28:40.116 PoolAllocator:335014430个get请求后,put_count=335014342 evicted_count=415000 eviction_rate=0.00123875,不满足分配率=0.00123921
09:27:38.374 PNG 警告:扩展块时超出大小限制
09:25:23.913 PNG 警告:扩展块时超出大小限制
09:25:16.065 纪元 52.0:准确度 = 0.9313
09:24:16.963 2017-05-17 08:24:16.962930: epoch 52, loss = 0.11, lr = 0.087000 (278.7 examples/sec; 0.230 sec/batch)
09:17:48.417 PNG 警告:扩展块时超出大小限制
09:13:34.740 PoolAllocator:329380055个get请求后,put_count=329379978 evicted_count=405000 eviction_rate=0.00122958和不满足分配率=0.00123001
09:06:09.948 更新纪元 51.0:准确度 = 0.9357
09:06:09.948 纪元 51.0:准确度 = 0.9357
09:05:09.575 2017-05-17 08:05:09.575641: epoch 51, loss = 0.11, lr = 0.087250 (248.4 examples/sec; 0.258 sec/batch)
08:59:17.735 PNG 警告:扩展块时超出大小限制
08:55:58.605 PoolAllocator:322904781个get请求后,put_count=322904714 evicted_count=395000 eviction_rate=0.00122327和不满足分配率=0.00122368
08:48:46.322 PNG 警告:扩展块时超出大小限制
08:47:27.936 纪元 50.0:准确度 = 0.9197
08:46:29.370 2017-05-17 07:46:29.370135: epoch 50, loss = 0.20, lr = 0.087500 (253.2 examples/sec; 0.253 sec/batch)
我已经尝试在本地机器上使用 TCMalloc 进行训练,但仍然存在内存泄漏,但少于不使用它。
【问题讨论】:
-
你能提供更多关于你的问题的细节吗?特别是,您观察到哪些症状使您相信自己有内存泄漏?
-
@rhaertel80 我刚刚添加了训练内存利用率图和训练日志。我在 73 个 epoch 后出现内存不足错误。我使用 complex_model_m_gpu 进行机器配置。训练数据:257018张尺寸为128x128的png图片。谢谢。
-
感谢您的更新。下面我直接回答了关于TCMalloc的问题,但是显然我们需要找到内存泄漏。如果您在使用
finalize时程序没有退出,那么您的内存泄漏可能在其他地方。您是否在 master 上做其他事情,例如执行评估?任何指向代码的指针都会有所帮助。
标签: tcmalloc google-cloud-ml-engine