You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LibTorch CPU推理重复调用forward导致OOM问题求助

LibTorch CPU推理内存泄漏问题

我将PyTorch训练后的模型导出为TorchScript,在LibTorch中实现CPU推理,但重复调用推理方法时出现内存泄漏,最终导致程序OOM崩溃。

核心代码

重复调用的推理方法(简化版)

void Backend::perform(std::vector<float *> in_buffer,
                      std::vector<float *> out_buffer) {
  c10::InferenceMode guard;

  at::Tensor tensor_out;
  at::Tensor tensor_in = torch::zeros({ 1, 16, 2 }); 
  std::vector<torch::jit::IValue> inputs = { tensor_in };

  // 调用模型的"decode"方法,内存泄漏发生在此处
  tensor_out = m_model.get_method("decode")(inputs).toTensor(); 
  
  auto out_ptr = tensor_out.contiguous().data_ptr<float>();

  for (int i(0); i < out_buffer.size(); i++) {
    memcpy(out_buffer[i], out_ptr + i * n_vec, n_vec * sizeof(float));
  }
}

模型加载代码

m_model = torch::jit::load(path);
m_model.eval();

问题细节

  • 每次调用perform方法,Torch图内存持续增长且未释放,最终触发OOM崩溃
  • 注释掉模型forward调用后,内存使用趋于稳定
  • 已通过c10::InferenceMode guard关闭自动求导,排除了反向传播内存堆积的常见诱因
  • 在PyTorch中模拟循环调用forward的场景,未出现内存问题,推测问题源于LibTorch而非模型本身

系统环境

  • 操作系统:Windows 10/11
  • PyTorch版本:1.11.0
  • LibTorch版本:1.11.0

内容的提问来源于stack exchange,提问作者Nicholas Shaheed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:15:35