微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用tensorflow时如何处理OOM内存不足问题?

如何解决使用tensorflow时如何处理OOM内存不足问题?

我正在尝试将预训练模型转换为 onnx 格式。为此,我正在使用 tf2onnx.convert。我运行的命令:

$ python3 -m tf2onnx.convert --saved-model models --output tf_model_op9.onnx

在执行命令时,出现 OOM 问题,进程被终止如下:

2021-06-10 20:45:45.363569:我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] 创建了 TensorFlow 设备 (/job:localhost/replica:0/task:0/device:GPU: 0 具有 984 MB 内存)-> 物理 GPU(设备:0,名称:Xavier,pci 总线 ID:0000:00:00.0,计算能力:7.2)

2021-06-10 20:45:46,335 - INFO - 计算常量折叠的 2 个值

被杀

在检查 /var/log/kern.log 时,我得到:

Jun 10 21:01:36 dreamvu-desktop kernel: [559821.101983] 内存不足:杀死进程 27888 (python3) 得分 501 或牺牲孩子

6 月 10 日 21:01:36 dreamvu-desktop 内核:[559821.102503] 杀死进程 27888 (python3) total-vm:18059264kB,anon-RSS:3788464kB,file-RSS:1267052kB >

Jun 10 21:01:36 dreamvu-desktop 内核:[559822.232634] oom_reaper:收获进程 27888 (python3),现在 anon-RSS:0kB,file-RSS:127808kB,shmem-RSS:0k

我发现的大多数解决方案是限制 batch_size(已经为 1)、gpu resources using sessions(已经尝试过)或 change number of threads on cpuchange memory limit(not supported even in tf v2.5)。我想我需要限制正在使用的 RAM。

我该怎么做?

操作系统:ubuntu 18.04 || 内存:7.6 GiB

图形:NVIDIA Tegra Xavier (nvgpu)/集成

处理器:ARMv8 处理器版本 0 (v8l) × 6

解决方法

您是否考虑过使用交换文件来提供您需要的额外内存? (假设您有磁盘可以这样做)

作为根用户,或者使用 sudo,您需要:

  1. dd if=/dev/zero of=/some/path/swapfile bs=1M count=8192
  2. mkswap /some/path/swapfile
  3. 交换 /some/path/swapfile

使用 free 命令确认您有额外的内存可用作交换区

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。