Python 加载spacy模型后无法释放gpu内存

Python 加载spacy模型后无法释放gpu内存,python,spacy,cupy,Python,Spacy,Cupy,为什么SpaCy在我删除模型后仍保留GPU内存?起初我以为我面临的问题和以前一样,但后来我意识到即使是丘比也不会将内存标记为空闲 import spacy import cupy as cp import time import gc def pool_stats(mempool): print('used:',mempool.used_bytes(),'bytes') print('total:',mempool.total_bytes(),'bytes\n') pool

为什么SpaCy在我删除模型后仍保留GPU内存?起初我以为我面临的问题和以前一样,但后来我意识到即使是丘比也不会将内存标记为空闲

import spacy
import cupy as cp
import time
import gc


def pool_stats(mempool):
    print('used:',mempool.used_bytes(),'bytes')
    print('total:',mempool.total_bytes(),'bytes\n')

pool = cp.cuda.MemoryPool(cp.cuda.memory.malloc_managed) # get unified pool
cp.cuda.set_allocator(pool.malloc) # set unified pool as default allocator

spacy.prefer_gpu()
nlp = spacy.load('/tmp/nlp')
pool_stats(pool)

# used: 2716626944 bytes
# total: 2719709696 bytes

del nlp
time.sleep(3)
gc.collect()
pool_stats(pool)

# used: 2700994560 bytes
# total: 2719709696 bytes

我认为这和我的问题是一样的。我们已经修复了CuPy v8.0.0中的漏洞,所以您可以尝试更新CuPy吗?@Kmahashi SpaCy与CuPy v8.0.0不兼容,因为弃用
scatter\u add
会引起一些错误。@Kmahashi还注意到CuPy将内存标记为仍在使用而不是空闲。啊,对不起,我错了。我尝试使用
en_core\u web\u sm
而不是
/tmp/nlp
重现cupy-cuda92 v7.8.0的错误,但失败(最后一个状态是
已使用:0字节
)。你能尝试添加
importgc;打印(gc.collect())
del nlp
之后以隔离问题?@kmaehashi它没有帮助。