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

如何释放Segment-Anything在JupyterLab中占用的未释放内存?

Segment-Anything运行后CUDA内存无法释放的解决方法

1. 显式释放模型资源与CUDA缓存

你的代码仅释放了masks变量,但加载到GPU的SAM模型本身仍占用大量内存。需要显式删除模型实例并清空CUDA缓存:

修改代码末尾部分为:

plt.show() 
# 释放所有相关变量
del masks, sam, mask_generator
# 强制垃圾回收
gc.collect()
# 清空CUDA缓存
import torch
torch.cuda.empty_cache()

2. 利用Jupyter魔法命令重置环境

在新的单元格中运行以下命令,强制清除所有变量并释放GPU内存:

%reset -f
import gc
import torch
gc.collect()
torch.cuda.empty_cache()

3. 减少模型内存占用

如果不需要最高精度,可以切换到更小的SAM模型:

  • 将sam_model_registry["default"]改为sam_model_registry["vit_b"]或sam_model_registry["vit_l"],对应的权重文件替换为sam_vit_b_01ec64.pth或sam_vit_l_0b3195.pth,内存占用会大幅降低。

另外,还可以调整SamAutomaticMaskGenerator的参数减少生成的掩码数量,比如:

mask_generator = SamAutomaticMaskGenerator(
    sam,
    points_per_side=32,  # 降低该值减少采样点
    pred_iou_thresh=0.8,  # 提高阈值过滤低置信度掩码
    stability_score_thresh=0.8
)

4. 重启Jupyter内核

如果上述方法都无效,直接重启JupyterLab的内核是最彻底的方式,能完全释放所有占用的GPU内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:22:14