使用 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.6.23/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml

您需要對 YAML 檔案中獨立服務的環境變數進行以下修改:

  • 若要將特定 GPU 裝置指派給 Milvus,請在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-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

您也可以透過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 裝置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 ` 檔案中的 `initMemSize ` 和 `maxMemSize ` 設定來自訂記憶體池。

milvus.yaml 檔案位於 Milvus 容器內的/milvus/configs/ 目錄中。

若要設定記憶體池,請依下述方式修改milvus.yaml 檔案中的initMemSizemaxMemSize 設定。

  1. 請使用以下命令,將 Milvus 容器中的milvus.yaml 複製到您的本地機器。請將<milvus_container_id> 替換為您實際的 Milvus 容器 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_container_id> 替換為您實際的 Milvus 容器 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

Office Hours

Milvus 辦公時間

從 Milvus 的專家 Zilliz 取得生產部署的協助。

預約免費 1:1 課程

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?