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

2024-05-19 18:41:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

在执行该命令时,我收到OOM问题,进程被终止,如下所示:

2021-06-10 20:45:45.363569: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 984 MB memory) -> physical GPU (device: 0, name: Xavier, pci bus id: 0000:00:00.0, compute capability: 7.2)

2021-06-10 20:45:46,335 - INFO - Computed 2 values for constant folding

Killed

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

Jun 10 21:01:36 dreamvu-desktop kernel: [559821.101983] Out of memory: Kill process 27888 (python3) score 501 or sacrifice child

Jun 10 21:01:36 dreamvu-desktop kernel: [559821.102503] Killed process 27888 (python3) total-vm:18059264kB, anon-rss:3788464kB, file-rss:126752kB, shmem-rss:0kB

Jun 10 21:01:36 dreamvu-desktop kernel: [559822.232634] oom_reaper: reaped process 27888 (python3), now anon-rss:0kB, file-rss:127808kB, shmem-rss:0kB

我找到的大多数解决方案是限制批处理大小(已经是1)、^a1}(已经尝试过)或^a2}或^a3}。我想我需要限制内存的使用

我该怎么做

OS : ubuntu 18.04 || Memory : 7.6 GiB

Graphics : NVIDIA Tegra Xavier (nvgpu)/integrated

Processor : ARMv8 Processor rev 0 (v8l) × 6


Tags: 命令convertmodelgpudeviceprocesskerneljun
1条回答
网友
1楼 · 发布于 2024-05-19 18:41:43

您是否考虑过使用交换文件来提供所需的额外内存?(假设您有磁盘来执行此操作)

作为root用户或sudo用户,您需要:

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

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

相关问题 更多 >