如何在Google Cloud ML Engine上使用TCMalloc?或者除了TCMalloc之外,还有其他方法可以解决ML Engine上的内存泄漏问题吗?
最终图表似乎没有帮助。
训练73个时期后,我出现了内存错误。以下是培训日志的一部分:
11:26:33.707 工作失败了。
11:26:20.949 完成拆除TensorFlow。
11:25:18.568 副本主机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',你' - sample_size = 112',你' - num_gpus = 4',你' - allow_growth = True',你' - 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:纪元58,损失= 0.12,lr = 0.085500(228.9例/秒; 0.280秒/批)
11:15:39.532 PNG警告:扩展块时超出大小限制
11:10:23.855 PoolAllocator:在372618242获取请求后,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:纪元57,损失= 0.23,lr = 0.085750(282.2例/秒; 0.227秒/批)
10:54:37.440 PNG警告:扩展块时超出大小限制
10:53:30.323 PoolAllocator:在366350973获取请求后,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:纪元56,损失= 0.06,lr = 0.086000(273.8例/秒; 0.234秒/批)
10:38:14.522 PoolAllocator:在360630699获取请求后,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获取请求后,put_count = 354197255 evicted_count = 445000 eviction_rate = 0.00125636且不满意的分配率= 0.00125644
10:20:49.815 2017-05-17 09:20:49.815251:纪元55,损失= 0.25,lr = 0.086250(285.6例/秒; 0.224秒/批)
10:02:56.637 时代54.0:准确度= 0.9191
10:01:57.367 2017-05-17 09:01:57.367369:纪元54,损失= 0.09,lr = 0.086500(256.5例/秒; 0.249秒/批)
10:01:42.365 PoolAllocator:在347107694获取请求后,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:纪元53,损失= 0.10,lr = 0.086750(307.0例/秒; 0.208秒/批)
09:41:48.672 PoolAllocator:在339747205获取请求后,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获取请求后,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:纪元52,损失= 0.11,lr = 0.087000(278.7例/秒; 0.230秒/批)
09:17:48.417 PNG警告:扩展块时超出大小限制
09:13:34.740 PoolAllocator:在329380055获取请求后,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:纪元51,损失= 0.11,lr = 0.087250(248.4例/秒; 0.258秒/批)
08:59:17.735 PNG警告:扩展块时超出大小限制
08:55:58.605 PoolAllocator:在322904781获取请求后,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:纪元50,损失= 0.20,lr = 0.087500(253.2例/秒; 0.253秒/批)
我已尝试使用TCMalloc在我的本地计算机上进行培训,但仍有内存泄漏但不使用它。
答案 0 :(得分:0)
TensorFlow默认使用jemalloc,这也是CloudML Engine上使用的内容:
jemalloc是强调的通用malloc(3)实现 碎片避免和可扩展的并发支持。
因此碎片不太可能是导致记忆问题的根本原因。