0

我正在尝试将预训练模型转换为 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 - 信息 - 计算 2 个常量折叠值

被杀

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

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

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

6 月 10 日 21:01:36 dreamvu-desktop 内核:[559822.232634] oom_reaper:收割进程 27888 (python3),现在 anon-rss:0kB, file-rss:127808kB, shmem-rss:0kB

我找到的大多数解决方案是限制 batch_size(已经 1)、使用会话的 gpu 资源(已经尝试过)或更改 cpu 上的线程数更改内存限制(即使在 tf v2.5 中也不支持)。我想我需要限制正在使用的 RAM。

我怎么做?

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

显卡:NVIDIA Tegra Xavier (nvgpu)/集成

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

4

1 回答 1

0

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

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

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

使用 free 命令确认您有多余的内存可用作交换

于 2021-06-10T20:18:55.827 回答