milvus-logo
LFAI
首页
  • 开始

使用 Docker Compose 运行支持 GPU 的 Milvus

本页说明如何使用 Docker Compose 启动支持 GPU 的 Milvus 实例。

前提条件

如果在拉动映像时遇到任何问题,请通过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.4.18/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 设备。

为 Milvus 分配单个 GPU 设备:

...
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- 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 设备可见或可用。

让 GPU 设备0 对 Milvus 可见:

$ CUDA_VISIBLE_DEVICES=0 ./milvus run standalone

让 GPU 设备01 对 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 文件中的initMemSizemaxMemSize 设置来定制内存池。

milvus.yaml 文件位于 Milvus 容器内的/milvus/configs/ 目录中。

要配置内存池,请按如下方法修改milvus.yaml 文件中的initMemSizemaxMemSize 设置。

  1. 使用以下命令将milvus.yaml 从 Milvus 容器复制到本地计算机。用实际的 Milvus 容器 ID 替换<milvus_container_id>

    docker cp <milvus_container_id>:/milvus/configs/milvus.yaml milvus.yaml
    
  2. 用你喜欢的文本编辑器打开复制的milvus.yaml 文件。例如,使用 vim:

    vim milvus.yaml
    
  3. 根据需要编辑initMemSizemaxMemSize 设置,并保存更改:

    ...
    gpu:
      initMemSize: 0
      maxMemSize: 0
    ...
    
    • initMemSize:内存池的初始大小。默认为 1024。
    • maxMemSize:内存池的最大容量。默认为 2048。
  4. 使用以下命令将修改后的milvus.yaml 文件复制回 Milvus 容器。用实际的 Milvus 容器 ID 替换<milvus_container_id>

    docker cp milvus.yaml <milvus_container_id>:/milvus/configs/milvus.yaml
    
  5. 重新启动 Milvus 容器以应用更改:

    docker stop <milvus_container_id>
    docker start <milvus_container_id>
    

下一步

在 Docker 中安装 Milvus 后,你可以

翻译自DeepL

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?