较大模型的转换第一步还没执行完就被killed

1、问题描述

  在对我的onnx模型进行转换的时候,由于是多输入,所以执行了文档说的./bin/pegasus import onnx这一步,在模型比较小的时候这一步是成功的,当我的模型较大的时候,发现转换模型的进程被kill了,原因是系统内存不够,我把系统内存从16G加到32G后还是一跑转换模型程序内存就很快100%然后系统自动kill进程,我觉得我就算加到64G内存也会很快满掉。
  我想知道是程序不支持这么大的模型的转换还是转换程序发生内存泄漏了?

2、操作过程

  • sdk为6.4.4.3版本
  • 操作系统为Ubuntu 20.04.2 LTS
  • 其他环境是照着requirements.txt装的
  • 网络模型为onnx格式,是通过pytorch的torch.onnx.export自动转换出来的,模型比较大,模型加权重一共有48.3MB,版本和输入输出如下:

     
    其中对inputs的编号达到了两千多:
    Screenshot from 2021-06-04 13-08-07
  • 输入指令为:
./bin/pegasus import onnx --model ./my_superglue.onnx --inputs "kpts0 kpts1 scores0 scores1 desc0 desc1" --input-size-list "2,1024#2,1024#1,1024#1,1024#256,1024#256,1024" --outputs "matches0 matches1 matching_scores0 matching_scores1" --output-model ./my_superglue.json --output-data ./my_superglue.data

@AddSalt8227

这里由于一个限制使用内存大小的帖子,你参考使用下?

这个办法不能解决我的问题,我参考帖子设置了20G的内存限制,达到限制后进程还是killed,要是取消kill机制,进程会进入休眠直到有新的内存才继续工作,还是无法完成模型转换。
我已经对模型进行了优化,现在只有1500层,onnx文件大小还是48.3M,SDK要是没有办法转换的话我只能考虑拆成许多小模型分别转换了 :persevere:SDK最多能支持多大的模型转换呢?

@AddSalt8227 我会咨询一下上游再在这里回复你