使用 Docker Compose 运行支持 GPU 的 Milvus
本页面演示了如何使用 Docker Compose 启动一个支持 GPU 的 Milvus 实例。
先决条件
- 安装 Docker。
- 安装前请检查硬件和软件要求。
如果拉取镜像时遇到任何问题,请将问题详情发送至community@zilliz.com联系我们,我们将为您提供必要的支持。
安装 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/v2.6.19/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 设备分配给 Milvus:
...
standalone:
...
deploy:
resources:
reservations:
devices:
- driver: nvidia
capabilities: ["gpu"]
device_ids: ["0"]
...
将多个 GPU 设备分配给 Milvus:
...
standalone:
...
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-standalone、milvus-minio 和milvus-etcd的容器已启动。
- milvus-etcd容器未向主机暴露任何端口,并将数据映射到当前文件夹中的volumes/etcd。
- milvus-minio容器在本地监听9090和9091端口,使用默认身份验证凭据,并将数据映射到当前文件夹中的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
您还可以访问http://127.0.0.1:9091/webui/ 上的 Milvus WebUI,以了解有关您的 Milvus 实例的更多信息。有关详细信息,请参阅Milvus WebUI。
如果您在 docker-compose.yml 中为 Milvus 分配了多个 GPU 设备,可以指定哪个 GPU 设备对 Milvus 可见或可供使用。
使 GPU 设备0 对 Milvus 可见:
$ CUDA_VISIBLE_DEVICES=0 ./milvus run standalone
使 GPU 设备0 和1 对 Milvus 可见:
$ CUDA_VISIBLE_DEVICES=0,1 ./milvus run standalone
您可以按以下方式停止并删除此容器。
# Stop Milvus
$ sudo docker compose down
# Delete service data
$ sudo rm -rf volumes
配置内存池
Milvus 启动并运行后,您可以通过修改milvus.yaml 文件中的initMemSize 和maxMemSize 设置来自定义内存池。
milvus.yaml 文件位于 Milvus 容器内的/milvus/configs/ 目录中。
要配置内存池,请按以下方式修改milvus.yaml 文件中的initMemSize 和maxMemSize 设置。
-
使用以下命令将 Milvus 容器中的
milvus.yaml文件复制到本地机器。请将<milvus_container_id>替换为您的实际 Milvus 容器 ID。docker cp <milvus_container_id>:/milvus/configs/milvus.yaml milvus.yaml -
使用您喜欢的文本编辑器打开复制的
milvus.yaml文件。例如,使用 vim:vim milvus.yaml -
根据需要编辑
initMemSize和maxMemSize设置,并保存更改:...
gpu:
initMemSize: 0
maxMemSize: 0
...initMemSize: 内存池的初始大小。默认值为 1024。maxMemSize: 内存池的最大大小。默认值为 2048。
-
使用以下命令将修改后的
milvus.yaml文件复制回 Milvus 容器。请将<milvus_container_id>替换为您实际的 Milvus 容器 ID。docker cp milvus.yaml <milvus_container_id>:/milvus/configs/milvus.yaml -
重启 Milvus 容器以应用更改:
docker stop <milvus_container_id>
docker start <milvus_container_id>
下一步
在 Docker 中安装 Milvus 后,您可以:
-
查看《快速入门》了解 Milvus 的功能。
-
查看Milvus WebUI以进一步了解该 Milvus 实例。
-
学习 Milvus 的基本操作:
-
在云端部署您的 Milvus 集群:
-
探索Milvus WebUI——一个用于 Milvus 可观测性和管理的直观 Web 界面。
-
探索Milvus Backup——一款用于 Milvus 数据备份的开源工具。
-
了解Birdwatcher——一款用于调试 Milvus 并动态更新配置的开源工具。
-
探索Attu——一款用于直观管理 Milvus 的开源图形用户界面工具。