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

使用SentenceTransformers后PyTorch模型峰值内存无法释放求助

SentenceTransformers推理后内存无法释放的问题

我正在使用SentenceTransformers库生成文本嵌入,调用预训练模型推理时内存出现峰值是预期情况,但获取到嵌入向量后,内存占用始终没有下降。

我用以下代码做内存分析:

from time import sleep

import torch
from sentence_transformers import SentenceTransformer

@profile
def encode_text(text):
    text_encoder = SentenceTransformer('paraphrase-albert-small-v2')
    embedding = text_encoder.encode(text)
    return embedding

encode_text(['This is a sentance'])
sleep(3)

通过memory-profiler工具执行命令:
mprof run --python python main.py
之后用mprof plot生成内存分布图。

观察到内存从函数调用开始到结束持续增长(蓝色方括号标注区间),但函数执行完毕后内存完全没有被释放。这让我困惑,因为拿到embedding向量后,代码里应该没有再占用大量内存的内容了。

我已经尝试过这些操作,但都没有效果:

  • 将推理代码包裹在torch.no_grad()中
  • 创建text_encoder后设置text_encoder.requires_grad_(False)和text_encoder.eval()
  • 推理完成后执行del text_encoder

请问这个现象的原因是什么?该如何释放内存?

我的运行环境:

  • Ubuntu 18.04.6 LTS
  • 库版本:
torch 1.13.0+cu117 
sentence_transformers 2.2.2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:22:48