我使用的是支持 GPU 的 Milvus。但为什么在我看来搜索有时比纯 CPU Milvus 慢?有没有专门针对支持 GPU 的 Milvus 的具体设置?
您的数据集计数如何?
GPU 性能优于 CPU 通常发生在数据集数量较大的情况下。
这取决于查询数量(nq)。在搜索之前,Milvus 需要将数据集加载到其 GPU 中,这需要大量时间。当 nq 增加到某个值时,更快的搜索时间可以补偿加载时间,gpu 变得比 cpu 更快。
从docker中提取milvus gpu可执行文件
下载 Milvus GPU
wget https://ymu.dl.osdn.jp/datasets/75612/milvus-gpu-1.1.0.tar
or
wget https://ymu.dl.osdn.jp/datasets/75612/milvus-gpu-1.1.1.tar
tar -xzvf milvus-gpu-1.1.0.tar
or
tar -xzvf milvus-gpu-1.1.1.tar
安装并启动 Milvus GPU
apt-get update
apt-get install mysql-server
wget https://launchpadlibrarian.net/212189159/libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
wget http://launchpadlibrarian.net/212189147/libmysqlclient-dev_5.6.25-0ubuntu1_amd64.deb
dpkg -i libmysqlclient-dev_5.6.25-0ubuntu1_amd64.deb libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
apt-get install libopenblas-dev
chmod +x /var/lib/milvus/bin/milvus_server
./var/lib/milvus/bin/milvus_server -c ./var/lib/milvus/conf/server_config.yaml
pip install pymilvus==1.1.0
pip install grpcio==1.37.0
pip install grpcio-tools==1.37.0
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v1.1.0/examples/example.py
or
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v1.1.1/examples/example.py
python example.py
中文参考:矩池云上安装及使用Milvus教程
如在百万级数据集上CPU和GPU之间的搜索速度没有差异GPU有两个额外的步骤:
目标向量从CPU内存复制到GPU内存
结果从 GPU 内存复制到 CPU 内存
“在 CPU 内存和 GPU 内存之间传输数据会产生额外的时间成本。
使用 GPU 进行搜索的主要好处是,由于其强大的并行计算能力,能够有效处理大型 NQ 搜索。
对于较小的数据集和 NQ 搜索,CPU 索引和 GPU 索引之间没有太大区别。”