跳到主要内容

使用 Docker Compose 运行支持 GPU 的 Milvus

本页面介绍如何使用 Docker Compose 启动支持 GPU 的 Milvus 实例。

先决条件

安装 Milvus

要使用 Docker Compose 安装支持 GPU 的 Milvus,请按照以下步骤操作。

1. 下载并配置 YAML 文件

下载 milvus-standalone-docker-compose-gpu.yml 文件,并手动保存为 docker-compose.yml,或使用以下命令。

$ wget https://github.com/milvus-io/milvus/releases/download/v{{var.milvus_release_version}}/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml

您需要对 YAML 文件中独立服务的环境变量进行一些更改,如下所示:

  • 要为 Milvus 指定特定的 GPU 设备,请找到 standalone 服务定义中的 deploy.resources.reservations.devices[0].devices_ids 字段,并将其值替换为所需 GPU 的 ID。您可以使用随 NVIDIA GPU 显示驱动程序一起提供的 nvidia-smi 工具来确定 GPU 设备的 ID。Milvus 支持多个 GPU 设备。

  • 设置用于 GPU 索引的内存池大小,其中 initialSize 表示内存池的初始大小,maximumSize 表示其最大大小。这两个值应该是以 MB 为单位的整数。Milvus 使用这些字段为每个进程分配显示内存。

为 Milvus 指定单个 GPU 设备:

...
standalone:
gpu:
initMemSize: 0
maxMemSize: 1024
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ["0"]
...

为 Milvus 指定多个 GPU 设备:

...
standalone:
gpu:
initMemSize: 0
maxMemSize: 1024
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ['0', '1']
...

2. 启动 Milvus

在包含 docker-compose.yml 文件的目录中,通过以下命令启动 Milvus:

$ sudo docker compose up -d

Creating milvus-etcd ... done
Creating milvus-minio ... done
Creating milvus-standalone ... done

如果无法运行上述命令,请检查您的系统是否安装了 Docker Compose V1。如果是这种情况,建议您迁移到 Docker Compose V2,具体原因请参考此页面

启动 Milvus 后,

  • 名为milvus-standalonemilvus-miniomilvus-etcd的容器已经启动。
    • milvus-etcd容器不向主机暴露任何端口,将其数据映射到当前文件夹中的volumes/etcd
    • milvus-minio容器在本地使用默认身份验证凭据提供端口90909091,将其数据映射到当前文件夹中的volumes/minio
    • milvus-standalone容器在本地使用默认设置提供端口19530,将其数据映射到当前文件夹中的volumes/milvus

您可以使用以下命令检查容器是否正在运行:

$ sudo docker compose ps

Name Command State Ports
--------------------------------------------------------------------------------------------------------------------
milvus-etcd etcd -advertise-client-url ... Up 2379/tcp, 2380/tcp
milvus-minio /usr/bin/docker-entrypoint ... Up (healthy) 9000/tcp
milvus-standalone /tini -- milvus run standalone Up 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp

如果您在docker-compose.yml中为Milvus分配了多个GPU设备,您可以指定哪个GPU设备对Milvus可见或可用。

使GPU设备0对Milvus可见:

$ CUDA_VISIBLE_DEVICES=0 ./milvus run standalone

使GPU设备01对Milvus可见:

$ CUDA_VISIBLE_DEVICES=0,1 ./milvus run standalone

您可以按以下方式停止和删除此容器。

# 停止 Milvus
$ sudo docker compose down

# 删除服务数据
$ sudo rm -rf volumes

下一步

在Docker中安装了Milvus后,您可以: