【AMD 赛道】seekdb-hipvs-nb-demo_v1.4.0-fix 镜像 lib=cuvs 建索引 GPU 利用率为 0,是否需额外启用步骤?

环境

  • 镜像:seekdb-hipvs-nb-demo_v1.4.0-fix(Radeon Cloud,Radeon PRO W7900 / gfx1100 / RDNA3 / VRAM 49136 MB)
  • ROCm 7.2.4,16 核 / 55 GB
  • seekdb v1.4.0,数据为 128 维随机向量

问题

按题面要求做「索引构建加速」对比:建表 → 灌入 N 条数据 → 执行 create vector index,对这条 DDL 计时,同时用 rocm-smi --showuse 每 0.3 秒采样 GPU 利用率。

lib=vsag 与 lib=cuvs 两组配置,除 lib 外参数完全一致:

create vector index i on t(c2) with (distance=l2, type=hnsw, lib=cuvs);

结果如下(N=50000,128 维):

[vsag n=50000] build 17.11s gpu_build_max 0 gpu_build_avg 0 samples 40
[cuvs n=50000] build 17.09s gpu_build_max 0 gpu_build_avg 0 samples 40

  • 耗时相差 0.02 秒(0.1%)
  • 建索引全程 40 次采样 GPU 利用率全为 0%
  • 显存占用建索引前后均为 26 MB,无变化

其他规模同样吻合:

N vsag build cuvs build 差异
2000 1.05 s 0.72 s 秒级噪声
10000 2.75 s 2.74 s 0.4%
50000 17.02 s 16.92 s 0.6%

检索侧也一样(N=50000 表,100 次 approximate 查询,热态):vsag 2248.6 qps / cuvs 2286.5 qps,GPU 利用率同为 0%。

已确认环境是就绪的

检查项 结果
CUVS_HOME /opt/hipvs :white_check_mark:
LD_LIBRARY_PATH /seekdb_workspace/bridge:/opt/hipvs/lib:/opt/rocm/lib :white_check_mark:
/proc/pid/maps 中的桥接库 已映射 libseekdb_cuvs_bridge.so、librapids_logger.so、librmm.so 等 20 条 :white_check_mark:
libcuvs 链接数 3(>0,GPU 后端已编入):white_check_mark:
show variables like ‘%vector%’ / ‘%cuvs%’ / ‘%hnsw%’ 仅 ob_hnsw_ef_search=64、ob_hnsw_extra_info_max_size=1024,无任何 GPU 相关开关

另外两个已确认的镜像问题(供官方参考)

  1. 建表内联 with(…) 在本镜像直接报 1064。官方 seekdb_demo.py L104-108 的写法:

create table t_vsag(c1 int primary key, c2 vector(128), vector index i(c2))
with (distance=l2, type=hnsw, lib=vsag, m=16, ef_construction=200, ef_search=64);

实测 ERROR 1064 (42000),near ‘(distance=l2, type=hnsw, …)’。试过 5 种变体(完整参数 / 只留 3 个 / 只留 2 个 / 只留 lib / algorithm=hnsw)全部 1064。

唯一可用写法是拆成两句:

create table t(c1 int primary key, c2 vector(128));
create vector index i on t(c2) with (distance=l2, type=hnsw, lib=vsag);

推测这也是 notebook 里 setup_data 卡住不返回的原因——建表 DDL 根本执行不通,后续 approximate 查询永远阻塞,而 wait_index_ready 的 timeout 只在 while 条件里判断,无法生效。

  1. 双 observer 并存会导致建索引线程自旋挂死:sk.start_observer() 换目录会再起一个 observer,与默认的 obs1 并存时,查询 15 分钟不返回,rocm-smi 显示 GPU 100% 但显存读写为 0。杀掉多余 observer 后用原目录重启即可恢复。

想请教

  1. lib=cuvs 是否还需要额外的启用步骤(环境变量、DDL 参数、type 换成 cagra 之类)?还是说本镜像的 cuVS 通道目前尚未真正接通?
  2. 若确实需要额外配置,期望的正确用法是什么?我愿意按官方给出的方式重新测一遍并反馈数据。

如果能给一个能复现 GPU 利用率上升的最小示例(哪怕 1000 条数据),我这边可以立刻验证并把数据回帖。