前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Milvus 在 AVX-512 与 AVX2 的性能对比

Milvus 在 AVX-512 与 AVX2 的性能对比

作者头像
Zilliz RDS
发布2020-11-19 16:43:33
2.8K0
发布2020-11-19 16:43:33
举报

简介

指令是计算机程序给计算机处理器的命令。在最低级别上,每条指令是一个 0 和 1 的序列,描述了计算机要执行的物理操作。在计算机的汇编器语言中,每条语言语句一般对应一条处理器指令。CPU 依靠指令来计算和控制系统,指令执行能力是衡量 CPU 性能的重要指标。指令集也与 CPU 效率有密切关系。

Advanced Vector Extensions(AVX)是 x86 架构微处理器中的指令集,由英特尔在 2008 年 3 月提出,并在 2011 年发布的 Sandy Bridge 系列处理器中首次支持。AVX 指令集提供了新的特性、指令和编码方案。AVX2 指令集将大多数整数命令操作扩展到 256 位,并引入了熔合乘法累积(FMA)运算。AVX-512 则使用新的 EVEX 前缀编码将 AVX 指令进一步扩展到 512 位。

Milvus 是一款开源的向量相似度搜索引擎,支持使用多种 AI 模型将非结构化数据向量化,并为向量数据提供搜索服务,可广泛应用于图像处理、机器视觉、自然语言处理、语音识别以及推荐系统。 从 0.7.0 版本开始,Milvus 新增了对 AVX-512 指令集的支持。Milvus 理论上可支持所有包含 AVX-512 指令集的 CPU。本文将介绍和分析 Milvus 不同索引类型在 AVX-512 和 AVX2 两种指令上的性能表现。

性能对比

配置

  • CPU: Intel(R) Platinum 8163 CPU @ 2.50GHz24 核 48 线程
  • Number of CPU: 2
  • Graphics card, GeForce RTX 2080Ti 11GB 4卡
  • Mem: 768GB
  • Disk: 2TB SSD

Milvus 参数

  • cahce.cahe_size: 25, CPU 内存大小,用于缓存数据以加快查询速度。
  • nlist: 4096
  • nprobe: 128

Note: nlist 是使用客户端创建索引设置的参数,nprobe 则是进行搜索设置的参数。IVFLAT 和 SQ8 索引都是通过聚类算法把大量的向量划分成很多‘桶’,nlist 指的就是聚类时划分桶的总数。通过索引查询时,第一步先找到和目标向量最接近的若干个桶,第二步在这若干个桶里通过比较向量距离查找出最相似的 k 条向量。nprobe 指的就是第一步若干个桶的数量。

数据集

本次我们所使用的是 SIFT10M 数据集,其包含了 1000 万条 128 维的向量,常被用于分析相应的近似最近邻搜索方法的性能。本次我们通过对比两种指令集在 nq = [1, 10, 100, 500, 1000] 时的 top-1 检索时间,对两种指令集进行性能比对。

向量索引

向量索引是通过一定的数学模型建立在向量上的一种省时、省空间的数据结构。通过向量索引,我们可以高效地查询多个与目标向量相似的向量。由于精确检索通常非常耗时,因此Milvus的向量索引类型大多采用 ANNS(近似最近邻搜索)。

本次我们共测试了三种索引:IVF_FLAT,IVF_SQ8 和 HNSW。下面我们对其结果逐一进行分析。

IVF_FLAT

IVF(Inverted File)是一种基于量化的索引类型。IVF_FLAT 是最基本的 IVF 索引,每个单元中存储的编码数据与原始数据一致。

IVF_SQ8

IVF_SQ8 根据 IVF 对放入单元的每个向量进行标量量化。标量量化将原始向量的每个维度从一个 4 字节的浮点数转换为一个 1 字节的无符号整数,所以 IVF_SQ8 索引文件比 IVF_FLAT 索引文件占用的空间小得多。

HNSW

HNSW(Hierarchical Small World Graph)是一种基于图的索引算法。从最上层开始搜索,在这一层找到最接近目标的节点,然后进入下一层开始再次搜索。经过多次迭代,可以快速接近目标位置。

小结

通过分析上面三种索引在两种指令集上的性能表现,我们可以发现不同索引使用 AVX-512 指令集时的检索速度均稍快于其在 AVX2 上的速度。这是因为相比于 AVX2 支持 256 位的计算,AVX-512 支持 512 位,在这个层面上 AVX-512 应该比 AVX2 快一倍。但是,Milvus 在搜索时除去计算还有其它的耗时,所以 AVX-512 的整体检索时间并没有高于 AVX2 一倍。

索引对比

通过观察可得,HNSW 的检索速度明显快于另外两种索引,而在两种指令集上 IVF_SQ8 的检索速度均稍快于 IVF_FLAT。这一现象可能是因为 SQ8 的所需内存带宽只有 IVF_FLAT 的1/4。IVF_FLAT 每个向量维度要加载 4 个字节,而 SQ8 只加载 1 个字节。计算所需的时间很可能是受到内存带宽的约束。因此 SQ8 不仅占用较少的空间,而且检索速度更快。

结语

本文测试并分析了 Milvus 不同索引在 AVX-512 和 AVX2 两种指令集上的性能表现。Milvus 在使用各类索引时均表现出了极优的性能,并且在 AVX-512 指令集上得到了进一步的提升。

目前,Milvus 可以对接各种深度学习平台,并运用于众多 AI 领域。在最新的 0.11.0 版本中,Milvus 新增了标量字段过滤和在查询时指定距离计算方式两种功能。未来 Milvus 会持续增加更多功能,助力用户高效完成非结构化数据检索。关于 Milvus 的更多应用场景请参考:https://milvus.io/cn/scenarios

欢迎加入 Milvus 社区

github.com/milvus-io/milvus | 源码

milvus.io | 官网

milvusio.slack.com | Slack 社区

zhihu.com/org/zilliz-11/columns | 知乎

zilliz.blog.csdn.net | CSDN 博客

space.bilibili.com/478166626 | Bilibili

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 性能对比
  • 结语
  • 欢迎加入 Milvus 社区
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档