Milvus版本的使用的0.7.0
报错:在启动时返回 “Illegal instruction”?
1、Milvus版本硬件的支持
Milvus为海量向量搜索场景而设计。Milvus不但集成了业界成熟的向量搜索技术如Faiss和SPTAG,Milvus也实现了高效的NSG图索引。同时,Milvus团队针对Faiss IVF索引进行了深度优化,实现了CPU与多GPU的融合计算,大幅提高了向量搜索性能。Milvus可以在单机环境下完成SIFT1b十亿级向量搜索任务。
划重点: 在官方站点release中提及的不明显,这也基本上是国内开源的很多特点吧,就像ffmpeg将腾讯列入黑名单一样
安装的时候遇到指令集错误,安装版本为0.7.0,提示avx2指集不支持,通过官方版本说明发现mivus的指令集支持的历史是:
V0.3.0 | 支持ARM64架构 |
v0.51 | IVF_SQ8 和 IVFFLAT 索引类型支持纯 GPU 模式。 |
v0.6.0 | 可以支持cpu和gpu |
0.7.0 | AVX 512 指令集的支持, avx2指令集 |
0.9.0 | 支持 SSE4.2 指令集,支持GPU和CUDA |
v0.10.0 | GPU 版 Milvus 上优化了 k-selection 算法的实现 |
2、cpu的多媒体扩展指令的发展情况
年代 | intel | amd |
1996 | MMX(MMX奔腾) | 跟随 |
1999 | SSE | 跟随 |
2000 | SSE2 | 跟随 |
2003 | SSE3 | 跟随 |
2007 | SSE4 | 跟随 |
2007 | 抢先发SSE5 | |
2008 | avx | 跟随 |
2011 | avx2 | 跟随 |
2013 | AVX-512 | 跟随 |
具体的图如下:
解决的方法非常简单,使用新的版本即可,绝大多数的老cpu都支持SSE4,超过10年还在服役的服务器很少。
3、关于0.7.0版本,官网的说明:
为什么我的 Milvus 在启动时返回 “Illegal instruction”?
如果您的 CPU 不支持 avx2 指令集,则 Milvus 无法正常启动。您可以通过 cat /proc/cpuinfo
查看 CPU 支持的指令集。
4、参考
知乎mivus的博客: