按关键词阅读:
文章插图
简介指令是计算机程序给计算机处理器的命令 。 在最低级别上 , 每条指令是一个 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
- cahce.cahe_size: 25, CPU 内存大小 , 用于缓存数据以加快查询速度 。
- nlist: 4096
- nprobe: 128
数据集
本次我们所使用的是 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 不仅占用较少的空间 , 而且检索速度更快 。
稿源:(未知)
【傻大方】网址:http://www.shadafang.com/c/111J2EV2020.html
标题:Milvus 在 AVX-512 与 AVX2 的性能对比