乐趣区

关于人工智能:接入-NVIDIA-A100吞吐量提高-10-倍Milvus-GPU-版本使用指南

Milvus 2.3 正式反对 NVIDIA A100!

作为为数不多的反对 GPU 的向量数据库产品,Milvus 2.3 在吞吐量和低提早方面都带来了显著的变动,尤其是与此前的 CPU 版本相比,不仅吞吐量进步了 10 倍,还能将提早管制在极低的水准。

不过,正如我后面提到的,鲜有向量数据库反对 GPU,这其中除了有技术门槛较高的因素外,还波及诸多不确定性的问题。那么,Milvus 为什么要做一件充斥挑战的事件?

回忆 Milvus 决定反对 GPU 的场景,很多细节仍旧历历在目。过后,随着 LLM 的衰亡,用户对于向量数据库的性能提出了更高的要求,尤其是在一些对性能、提早有着极高要求的场景,只通过 CPU 索引来撑持的难度越来越高,而 GPU 有着十分弱小的并行处理能力。

因而,咱们决定在 Milvus 2.3 版本中反对 GPU。侥幸的是,来自 NVIDIA 的小伙伴给予了咱们诸多反对,他们被动给咱们提供了 Rapid Raft GPU 索引接入 Milvus 的反对代码。在 NVIDIA 和 Milvus 团队的共同努力下,Milvus GPU 版本如约而至。

接下来,咱们就来看看如何应用 Milvus GPU 版本。

01.CUDA 驱动装置

首先,在咱们的宿主机环境中,须要查看零碎中是否曾经正确的辨认 NVIDIA 显卡,在命令行中输出:

lspci

在输入的设施中,看到 NVIDIA 字段,则阐明该零碎中曾经装置了 NVIDIA 显卡。

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 8061
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
00:1e.0 3D controller: NVIDIA Corporation TU104GL [Tesla T4] (rev a1)
00:1f.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe SSD Controller

以上是我的环境中的输入,能够看到其中辨认到一张 NVIDIA T4 显卡。

接下来,能够去 NVIDIA 官方网站,增加 repo installer。

https://developer.nvidia.com/cuda-downloads

以 ubuntu 20.04 为例:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update

这里须要留神,如果宿主机没有 cuda 的须要,能够不装置 cuda;如果是 server 版本的操作系统,能够装置 headless 版本驱动;如果是 desktop 版本的零碎,能够装置一般版本。

  • server
sudo apt install nvidia-headless-535
sudo apt install nvidia-utils-535
  • desktop
sudo apt install nvidia-driver-535
sudo apt install nvidia-utils-535

装置实现之后,须要重启一下零碎,使得驱动失效。重启实现,能够输出:

nvidia-smi

如果能够看到具体的显卡状态,即示意驱动装置 OK。

Milvus GPU 版本镜像应用 cuda 11.8 打包,如果是 NVIDIA Tesla 系列业余显卡,须要的最小驱动版本 >=450.80.02;如果是游戏显卡,须要驱动版本 >=520.61.05。

Milvus GPU 镜像反对 Compute Capability 为 6.1、7.0、7.5、8.0 的 NVIDIA 显卡,查看显卡型号对应的 Compute Capability,请参阅 https://developer.nvidia.com/cuda-gpus。NVIDIA Container Toolkit 装置则参考 https://docs.nvidia.com/datacenter/cloud-native/container-too…

02.Milvus GPU 可配环境变量

Milvus GPU 版本目前仅反对单个 Milvus 过程单个显卡,Milvus GPU 版本默认应用 device 0 显卡。如果须要应用多卡,能够通过启动多个 Milvus 过程或者容器,而后配合 CUDA_VISIBLE_DEVICES 环境变量来实现多卡部署。

容器环境下,能够通过 -e 来设置该环境变量:

sudo docker run --rm -e NVIDIA_VISIBLE_DEVICES=3 milvusdb/milvus:v2.3.0-gpu-beta

在 docker-compose 环境中,能够通过 device_ids 字段来设置,参考 https://docs.docker.com/compose/gpu-support/

留神,为单个 Milvus 过程或者单个容器配置了多张卡可见,Milvus 也只能应用其中的一张卡。

KNOWHERE_STREAMS_PER_GPU 环境变量能够用来设置 cuda stream 的并发数。适当的调大此参数,有可能取得更好的性能,然而,也会带来更多的显存开销。

KNOWHERE_GPU_MEM_POOL_SIZE 环境变量能够用来设置显存池大小。如果不设置改环境变量,Milvus 会主动调配以后 GPU 的一半内存作为显存池,如果在服务的过程中,呈现显存池容量有余,那么 Milvus 会主动尝试再次减少显存池大小,默认下限是整个显存大小。

export KNOWHERE_GPU_MEM_POOL_SIZE=2048;4096

以上设置显存池初始大小为 2048 MB,最大显存池大小为 4096 MB。

如果在一张卡上部署 2 个 Milvus 过程,那么,此环境变量肯定须要正当的调配,否则 Milvus 会呈现显存竞争解体的状况。

03.Milvus GPU 编译

本地编译 Milvus GPU 版本须要依赖英伟达提供的 cuda-toolkit,在装置 cuda-toolkit 请先实现 NVIDIA 驱动的装置:

sudo apt install --no-install-recommends cuda-toolkit 

本地编译 Milvus GPU 之前,咱们须要先装置局部依赖软件以及工具:

sudo apt install python3-pip libopenblas-dev libtbb-dev pkg-config

装置 conan:

pip3 install conan==1.59.0 --user
expoprt PATH=$PATH:~/.local/bin

装置较新版本的 cmake>=3.23,参考 https://apt.kitware.com。golang 的装置能够参考 https://go.dev/doc/install。

make milvus-gpu

启动 milvus standalone 模式:

cd bin
sudo ./milvus run standalone

在配置好 nvidia-docker 或者 docker 替代品的状况下,能够很不便地应用 Milvus 提供的 docker-compose.yml 文件来实现容器化部署。

用户能够从 milvus repo 中获取 docker-compose.yml 文件,地址 https://github.com/milvus-io/milvus/blob/master/deployments/docker/gpu/standalone/docker-compose.yml

 docker-compose up -d

至此,便可实现 standalone 模式的 Milvus 部署。

如果用户宿主机有多张显卡,能够通过批改 docker-compose.yml 中的 device_ids 字段来批改映射到 Milvus 的显卡。

以上就是对于 Milvus GPU 版本应用阐明的全部内容,大家有任何疑难都能够与咱们交换。下一篇文章,咱们将详解 Knowhere 2.0,欢送浏览!

🌟「寻找 AIGC 时代的 CVP 实际之星」专题流动行将启动!

Zilliz 将联合国内头部大模型厂商一起甄选利用场景,由单方提供向量数据库与大模型顶级技术专家为用户赋能,一起打磨利用,晋升落地成果,赋能业务自身。

如果你的利用也适宜 CVP 框架,且正为利用落地和实际效果发愁,可间接申请参加流动,取得最业余的帮忙和领导!分割邮箱为 business@zilliz.com。

本文由 mdnice 多平台公布

退出移动版