我正在尝试将预训练模型转换为 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