AMD GPU 加速向量检索:seekdb × hipVS 学习笔记
发布于
学习资料:OceanBase《2026 从 0 到 1 数据库实践教程》第二讲《AMD 赛题方向解析》
主讲人:母自豪(AMD ROCm 软件与解决方案架构师)
记录日期:2026 年 9 月 6 日
以下性能数据来自课程演示,尚未自行复现实验。
1. hipVS 与 seekdb 的关系
hipVS 将 cuVS 的向量检索能力移植到 AMD GPU 上,并保留兼容的接口。 cuVS 原本面向 NVIDIA GPU;hipVS 通过 HIP / ROCm 适配 AMD GPU,使上层软件可以复用已有的接入方式。
seekdb 可以通过这套接口使用 GPU 加速向量检索。课程中的调用链可以简记为:
seekdb SQL → 向量抽象层 → C 桥接层 → hipVS → ROCm → AMD GPU

课程按索引选择后端:lib=vsag 使用 CPU,lib=cuvs 使用 GPU。AMD 路径仍沿用 cuVS 接口名称,底层实际由 hipVS 执行。
我的理解是,seekdb 负责数据库接口与查询组织,hipVS 负责底层 GPU 检索计算,兼容接口降低了两者的对接成本。讲者说明,录制时相关接入仍在开发,后续会提供实现 PR 与更详细的材料。
2. CPU 与 GPU 的效率对比
课程使用 AMD Radeon PRO W7900(48 GB 显存)、ROCm 7.2.4,以及同源的一万条向量数据,对比 CPU 与 GPU 检索路径。
| 查询方式 | 课程结果 |
|---|---|
| 单条查询 | CPU 8.17 ms,GPU 12.57 ms,CPU 更快 |
| 每批 100 个查询 | GPU 加速比 0.71 倍,仍慢于 CPU |
| 每批 500 个查询 | GPU 加速比 2.73 倍 |
| 每批 1,000 个查询 | GPU 加速比 3.30 倍 |
| 每批 2,000 个查询 | GPU 加速比 7.39 倍 |
| 每批 4,000 个查询 | GPU 加速比 11.98 倍,约 12 倍 |
加速比为 CPU 耗时 ÷ GPU 耗时,数值越大表示 GPU 相对越快。

单查时,GPU 的固定调用开销会抵消计算优势;批量提交更多查询后,开销被分摊,GPU 的并行处理能力才更明显。 因此,这组实验中 CPU 更适合少量、低延迟查询,GPU 在大批量查询中体现出吞吐优势。这里降低的是每个查询的摊销成本,不代表整批总耗时随批次增加而一直下降。
课程还展示了 Recall@10:GPU 为 0.866,CPU 为 0.640。这个指标表示真实前十个近邻中被找回的比例,用来观察检索质量。
需要保留一个实验条件:CPU 使用 VSAG 逐个查询,GPU 使用 batch_knn 批量接口。因此,约 12 倍是这套算法、调用方式和硬件共同作用的演示结果,不能直接推广到所有查询场景。
3. AMD 算力资源领取与使用
课程涉及两个主要入口:AMD AI 开发者计划用于注册、完善资料和兑换算力;**Radeon Cloud(开发者云)**用于启动 GPU 实例、运行 Notebook 和远程开发。
领取算力
- 打开课程专属注册链接,注册或登录 AMD AI 开发者计划。保留链接中的课程来源后缀。
- 完善个人资料。讲者提示,如果账户只有 1 积分,需要先完成资料填写。
- 在“算力兑换”中将积分兑换为算力时间,再从首页进入 AMD 开发者云。
课件介绍了 150+ 小时免费算力,具体领取条件与额度以账户页面为准。

启动实例与运行 Notebook
- 在 Radeon Cloud 的模板页面找到 seekdb + hipVS 对应的 Notebook 模板。
- 点击 Launch 启动实例。平台已预先编译 seekdb 与 hipVS,并准备好实验镜像。
- 启动后通过实例页面或 Profile 中的 Jupyter 链接进入实验环境。
- 打开课程示例 Notebook,依次选中代码单元,按 Shift + Enter 运行并查看输出。
演示中的 Notebook 路径为:
seekdb_hipvs_notebook/seekdb_hipvs_batch_demo_executed.ipynb
其中包含环境检查、数据准备、单条查询、批量查询和召回率对比,可以按顺序复现课程结果。

SSH 连接与资源释放
如果需要从本地工具远程开发,先在账户 Profile 保存 SSH 公钥,再 Launch 实例,然后使用自己实例页面提供的 SSH 连接信息。如果实例启动时没有配置公钥,课程演示的处理方法是保存公钥后重建实例;提前配置好则无需重建。
平台还提供 TokenFactory 模型调用资源,可用于接入模型服务,与运行 GPU 实例的算力时间用途不同。
关闭浏览器不会停止实例。 使用结束后,先保存需要保留的实验记录,再通过 Destroy 释放实例,避免继续消耗算力时间。
