内容提要
Qdrant 自 v1.13 起支持 GPU 加速 HNSW 索引,可显著缩短向量集合重建索引时间。以 10 万条向量对比:GPU 建索引约 6.1 秒,CPU 约 66.3 秒,约快 10 倍;查询吞吐相近,但 CPU 因索引与查询争抢资源,延迟峰值更高。GPU 适合频繁重建索引或常换嵌入模型的场景,否则闲置 GPU 成本不划算。
延伸解读
GPU加速的适用场景与成本权衡
GPU加速HNSW索引并非在所有场景下都划算。文章指出,只有当集群需要频繁重建索引(例如集合持续增长需增量重建)或经常更换嵌入模型导致重建索引成为经常性成本时,GPU集群的高小时费率才能被其带来的速度提升所抵消。反之,如果索引重建很少发生,闲置的GPU集群只会增加成本,而无法提供任何加速收益。因此,是否采用GPU加速应基于实际的索引工作负载频率来评估。
索引构建期间查询延迟的差异
在索引构建过程中,GPU集群和CPU集群的查询吞吐量几乎相同(约21 qps),p50和p95延迟也相近。但CPU集群因索引与查询争抢CPU周期,导致尾部延迟显著更高:最大延迟约0.31秒,是GPU集群约0.07秒的4倍多,且p99延迟也更接近该尾部。这表明GPU将索引构建卸载后,查询服务受到的干扰更小,对于延迟敏感型应用,这一差异可能比索引速度本身更重要。
实验设置与结果的可比性
文章中的对比实验严格控制了变量:两个集群除GPU外规格完全相同(16 GB RAM、4 vCPU、64 GB磁盘),索引相同的10万条向量,且HNSW参数m和ef_construct一致。因此,观察到的约10倍索引速度提升(GPU约6.1秒,CPU约66.3秒)可归因于GPU加速。但需注意,该结论基于特定数据集和参数,实际收益可能随数据规模、维度和硬件配置变化,文章也预期优势会随数据量增长而扩大。
Q&A
Qdrant 从哪个版本开始支持 GPU 加速的 HNSW 索引?
Qdrant 自 v1.13 起在自托管实例上支持 GPU 加速的 HNSW 索引,Qdrant Cloud 后来将其作为托管选项提供。
GPU 加速 HNSW 索引相比 CPU 建索引能快多少?
在 10 万条向量的测试中,GPU 建索引约 6.1 秒,CPU 约 66.3 秒,GPU 大约快 10 倍。
GPU 加速 HNSW 索引为什么能显著加快建索引速度?
HNSW 建索引涉及大量小操作(主要是图中节点和边的放置),GPU 擅长大规模并行处理,能同时运行许多小任务,而 CPU 更适合顺序工作,因此 GPU 加速效果远好于 I/O 密集型任务。
使用 GPU 建索引时,查询延迟和吞吐量会受影响吗?
查询吞吐量相近(GPU 约 21 qps,CPU 约 21 qps),p50 和 p95 延迟也差不多。但 CPU 因索引与查询争抢资源,延迟峰值更高:CPU 最大延迟约 0.31 秒,是 GPU 约 0.07 秒的 4 倍多,p99 也更接近尾部。
什么场景下适合使用 GPU 加速的 HNSW 索引?
适合需要频繁重建索引的场景,例如集合持续增长需要增量重建,或者经常更换嵌入模型导致重建索引成为经常性成本。如果不需要频繁重建,闲置的 GPU 集群可能因更高的每小时费用而不划算。
GPU 集群比 CPU 集群贵,怎么判断是否值得?
不能只看每小时费率,要看实际索引工作量。如果 GPU 能大幅缩短索引时间,且经常有索引任务,较高的费率可以被抵消;但如果 GPU 大部分时间闲置,没有索引工作可加速,则可能不如 CPU 集群划算。