faiss-gpu的问题

在faiss中使用出现以下问题的:

原先的faiss检索方式:

dim=768
gpu_id=0
index = faiss.IndexFlatL2(dim)
res = faiss.StandardGpuResources()
self.index = faiss.index_cpu_to_gpu(res, gpu_id, index)

出现上述问题是IndexFlatL2是暴力检索,数据量比较大时,GPU内存占用比较大,

解决方法:

dim=768
m=8
nlist=100
d=8
gpu_id=0
quantizer = faiss.IndexFlatL2(dim)
index = faiss.IndexIVFPQ(quantizer,dim, nlist,m,d)       
res = faiss.StandardGpuResources()
indexs = faiss.index_cpu_to_gpu(res, gpu_id, index)
indexs.train(x)
indexs.add(x)

IndexIVFPQ能够减少内存占用大小,但是准确度相比于IndexFlatL2准确度会有所下降。

猜你喜欢

转载自blog.csdn.net/rucieryi369/article/details/124796683