启用GPU索引时,GPU内存池的作用是什么? #46905
-
环境
概述
疑问
|
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 21 replies
-
|
initMemSize是milvus启动时就预先划了一块显存,其他进程不能使用这块显存,只能milvus使用。 很简单,打个比方,你这张显卡有48个车位(48GB),milvus公司先占用了2个作为自己的固定车位,如果milvus公司2个车位(2GB)不够用,它就会申请获得更多的车位,但最多它只能获得4个车位(4GB)。其他的车位随便其他公司或者社会车辆使用。 “While there is no set limit for GPU_BRUTE_FORCE, it is recommended not to exceed 4,096 to avoid potential performance issues.” ------------ 这里说的 "limit"是指topk,就是search时指定要返回的结果集个数。不是指的maxMemSize |
Beta Was this translation helpful? Give feedback.
-
|
maxMemSize 用于build索引和搜索的临时占用,建议segment不要太大,控制在1GB左右,然后至少保留16GB内存用于索引构建,剩余的显存会用来加载数据本身 |
Beta Was this translation helpful? Give feedback.
-
|
@fox0001 当前gpu索引的load和search过程都走了内存池,load需要把源数据加载到gpu显存上,和官方文档上的说明会有些出入,所以需要估算一下源数据量大小,maxMemSize要比这个值更大。 |
Beta Was this translation helpful? Give feedback.
standalone模式有点特别,search前的load不走内存池,search后的build和load都走内存池(更新后会触发这个),你可以理解为当前实现有点问题,目前来说调大了可以规避这个问题。后面会调整gpu的显存管理策略,也会有相应的更新文档。