🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
主頁
  • 開始使用
  • Home
  • Docs
  • 開始使用

  • 安裝 Milvus

  • 使用 GPU 執行 Milvus

  • 舵手圖

使用 Helm Chart 運行支援 GPU 的 Milvus

本頁說明如何使用 Helm Chart 啟動支援 GPU 的 Milvus 實例。

概述

Helm 使用稱為圖表的封裝格式。圖表是描述一組相關 Kubernetes 資源的檔案集合。Milvus 提供一組圖表來幫助您部署 Milvus 的相依性和元件。Milvus Helm Chart是使用 Helm 套件管理員在 Kubernetes (K8s) 集群上啟動 Milvus 部署的解決方案。

先決條件

如果您在拉取映像時遇到任何問題,請透過community@zilliz.com與我們聯絡,並提供問題的詳細資訊,我們將為您提供必要的支援。

為 Milvus 安裝 Helm Chart

Helm 是一個 K8s 套件管理器,可以幫助您快速部署 Milvus。

  1. 新增 Milvus Helm 套件庫。
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

位於https://milvus-io.github.io/milvus-helm/ 的 Milvus Helm Charts repo 已經歸檔,您可以從https://zilliztech.github.io/milvus-helm/ 取得進一步的更新,如下所示:

helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus

存檔的 repo 仍可使用於 4.0.31 之前的圖表。對於之後的版本,請使用新的 repo。

  1. 在本地更新圖表。
$ helm repo update

啟動 Milvus

安裝 Helm 圖表後,您就可以在 Kubernetes 上啟動 Milvus。在本節中,我們會引導您完成啟動支援 GPU 的 Milvus 的步驟。

您應該使用 Helm 來啟動 Milvus,方法是指定版本名稱、圖表,以及您期望變更的參數。在本指南中,我們使用my-release 作為版本名稱。若要使用不同的發行版名稱,請將下列指令中的my-release 改為您正在使用的名稱。

Milvus 允許您指派一個或多個 GPU 裝置到 Milvus。

1.指定單一 GPU 裝置

支援 GPU 的 Milvus 允許您指定一個或多個 GPU 裝置。

  • Milvus 集群

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    EOF
    
    $ helm install my-release milvus/milvus -f custom-values.yaml
    
  • Milvus 獨立

    cat <<EOF > custom-values.yaml
    standalone:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
    EOF
    
    $ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsar.enabled=false -f custom-values.yaml
    

2.指派多個 GPU 裝置

除了單一 GPU 裝置,您也可以指派多個 GPU 裝置給 Milvus。

  • Milvus 集群

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    EOF
    

    在上面的配置中,索引節點 (indexNode) 和查詢節點 (queryNode) 共用兩個 GPU。要為 indexNode 和 queryNode 分配不同的 GPU,您可以在配置文件中相應地修改配置,方法如下:設定extraEnv

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "1"
    EOF
    
    $ helm install my-release milvus/milvus -f custom-values.yaml
    
    • 版本名稱只能包含字母、數字和破折號。版本名稱中不允許使用點。
    • 使用 Helm 安裝 Milvus 時,預設命令列會安裝群集版本的 Milvus。獨立安裝 Milvus 時需要進一步設定。
    • 根據Kuberenetes 的廢棄 API 移轉指南,PodDisruptionBudget 的policy/v1beta1API 版本自 v1.25 起不再提供服務。建議您遷移艙單和 API 用戶端,改用policy/v1API 版本。
      對於仍在 Kuberenetes v1.25 及更新版本上使用policy/v1beta1API 版本 PodDisruptionBudget 的使用者,作為一個解決方案,您可以執行下列指令來安裝 Milvus:
      helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
    • 更多資訊請參閱Milvus Helm ChartHelm
  • Milvus 單機版

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "2"
        limits:
          nvidia.com/gpu: "2"
    EOF
    

    在上述配置中,indexNode 和 queryNode 共用兩個 GPU。若要為 indexNode 和 queryNode 分配不同的 GPU,您可以在設定檔中設定 extraEnv 來相應修改配置,如下所示:

    cat <<EOF > custom-values.yaml
    indexNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "0"
    queryNode:
      resources:
        requests:
          nvidia.com/gpu: "1"
        limits:
          nvidia.com/gpu: "1"
      extraEnv:
        - name: CUDA_VISIBLE_DEVICES
          value: "1"
    EOF
    
    $ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsar.enabled=false -f custom-values.yaml
    

2.檢查 Milvus 狀態

執行以下指令檢查 Milvus 狀態:

$ kubectl get pods

Milvus 啟動後,READY 列會顯示所有 Pod 的1/1

  • Milvus 集群

    NAME                                             READY  STATUS   RESTARTS  AGE
    my-release-etcd-0                                1/1    Running   0        3m23s
    my-release-etcd-1                                1/1    Running   0        3m23s
    my-release-etcd-2                                1/1    Running   0        3m23s
    my-release-milvus-datacoord-6fd4bd885c-gkzwx     1/1    Running   0        3m23s
    my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
    my-release-milvus-indexcoord-5bfcf6bdd8-nmh5l    1/1    Running   0        3m23s
    my-release-milvus-indexnode-5c5f7b5bd9-l8hjg     1/1    Running   0        3m24s
    my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
    my-release-milvus-querycoord-579cd79455-xht5n    1/1    Running   0        3m24s
    my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
    my-release-milvus-rootcoord-7fb9488465-dmbbj     1/1    Running   0        3m23s
    my-release-minio-0                               1/1    Running   0        3m23s
    my-release-minio-1                               1/1    Running   0        3m23s
    my-release-minio-2                               1/1    Running   0        3m23s
    my-release-minio-3                               1/1    Running   0        3m23s
    my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        3m24s
    my-release-pulsar-bookkeeper-0                   1/1    Running   0        3m23s
    my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
    my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        3m23s
    my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        3m23s
    my-release-pulsar-zookeeper-0                    1/1    Running   0        3m23s
    my-release-pulsar-zookeeper-metadata-98zbr       0/1   Completed  0        3m24s
    
  • Milvus 獨立

    NAME                                               READY   STATUS      RESTARTS   AGE
    my-release-etcd-0                                  1/1     Running     0          30s
    my-release-milvus-standalone-54c4f88cb9-f84pf      1/1     Running     0          30s
    my-release-minio-5564fbbddc-mz7f5                  1/1     Running     0          30s
    

3.將本機連接埠轉送至 Milvus

確認 Milvus 伺服器正在聆聽的本機連接埠。用您自己的 pod 名稱取代 pod 名稱。

$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

然後,執行下列指令,將本機連接埠轉送至 Milvus 服務的連接埠。

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

您可以選擇在上述指令中使用:19530 而不是27017:19530 ,讓kubectl 替您分配一個本機連接埠,這樣您就不必管理連接埠衝突。

預設情況下,kubectl 的連接埠轉發只會監聽localhost 。如果您希望 Milvus 監聽選定或所有的 IP 位址,請使用address 。以下指令會讓 port-forward 聆聽主機上所有的 IP 位址。

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530

現在,您可以使用轉送的連接埠連線到 Milvus。

存取 Milvus WebUI

Milvus 隨附一個內建的 GUI 工具,稱為 Milvus WebUI,您可以透過瀏覽器存取。Milvus Web UI 以簡單直觀的介面增強系統的可觀察性。您可以使用 Milvus Web UI 觀察 Milvus 元件和相依性的統計和指標、檢查資料庫和收集的詳細資訊,以及列出 Milvus 的詳細配置。有關 Milvus Web UI 的詳細資訊,請參閱Milvus WebUI

要啟用對 Milvus Web UI 的存取,您需要將代理 pod 的連接埠轉發到本機連接埠。

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

現在,您可以在http://localhost:27018 存取 Milvus Web UI。

卸載 Milvus

執行以下指令卸載 Milvus。

$ helm uninstall my-release

下一步

安裝 Milvus 後,您可以

免費嘗試托管的 Milvus

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

開始使用
反饋

這個頁面有幫助嗎?