Menjalankan Milvus dengan Dukungan GPU Menggunakan Helm Chart

Halaman ini menjelaskan cara memulai instance Milvus dengan dukungan GPU menggunakan Helm Chart.

Gambaran Umum

Helm menggunakan format pengemasan yang disebut chart. Chart adalah kumpulan berkas yang mendeskripsikan sekumpulan sumber daya Kubernetes yang saling terkait. Milvus menyediakan serangkaian chart untuk membantu Anda menerapkan dependensi dan komponen Milvus. Milvus Helm Chart adalah solusi yang mem-bootstrap penerapan Milvus pada klaster Kubernetes (K8s) menggunakan pengelola paket Helm.

Prasyarat

Jika Anda mengalami masalah saat menarik gambar, hubungi kami di community@zilliz.com dengan detail mengenai masalah tersebut, dan kami akan memberikan dukungan yang diperlukan.

Instal Helm Chart untuk Milvus

Helm adalah pengelola paket K8s yang dapat membantu Anda menerapkan Milvus dengan cepat.

  1. Tambahkan repositori Helm Milvus.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

Repositori Helm Chart Milvus di https://milvus-io.github.io/milvus-helm/ telah diarsipkan, dan Anda dapat memperoleh pembaruan lebih lanjut dari https://zilliztech.github.io/milvus-helm/ sebagai berikut:

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

Repositori yang diarsipkan masih tersedia untuk chart hingga versi 4.0.31. Untuk rilis yang lebih baru, gunakan repositori baru sebagai gantinya.

  1. Perbarui chart secara lokal.
$ helm repo update

Jalankan Milvus

Setelah Anda menginstal chart Helm, Anda dapat menjalankan Milvus di Kubernetes. Pada bagian ini, kami akan memandu Anda melalui langkah-langkah untuk menjalankan Milvus dengan dukungan GPU.

Anda harus menjalankan Milvus dengan Helm dengan menentukan nama rilis, chart, dan parameter yang ingin Anda ubah. Dalam panduan ini, kami menggunakan my-release sebagai nama rilis. Untuk menggunakan nama rilis yang berbeda, ganti my-release pada perintah berikut dengan nama yang Anda gunakan.

Milvus memungkinkan Anda untuk menetapkan satu atau lebih perangkat GPU ke Milvus.

1. Menetapkan satu perangkat GPU

Milvus dengan dukungan GPU memungkinkan Anda untuk menetapkan satu atau lebih perangkat GPU.

  • Cluster Milvus

    cat <<EOF > custom-values.yaml
    dataNode:
      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 mandiri

    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 pulsarv3.enabled=false -f custom-values.yaml
    

2. Menetapkan beberapa perangkat GPU

Selain satu perangkat GPU, Anda juga dapat menetapkan beberapa perangkat GPU ke Milvus.

  • Cluster Milvus

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

    Dalam konfigurasi di atas, terdapat empat CPU yang tersedia, dan setiap dataNode serta queryNode menggunakan dua GPU. Untuk menetapkan GPU yang berbeda ke dataNode dan queryNode, Anda dapat memodifikasi konfigurasi sesuai kebutuhan dengan mengatur ` extraEnv ` dalam berkas konfigurasi sebagai berikut:

    cat <<EOF > custom-values.yaml
    dataNode:
      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
    
    • Nama rilis hanya boleh berisi huruf, angka, dan tanda hubung. Titik tidak diperbolehkan dalam nama rilis.
    • Baris perintah default menginstal versi kluster Milvus saat menginstal Milvus dengan Helm. Pengaturan tambahan diperlukan saat menginstal Milvus secara mandiri.
    • Menurut panduan migrasi API yang sudah tidak didukung lagi dari Kubernetes, versi API policy/v1beta1 dari PodDisruptionBudget tidak lagi didukung mulai dari v1.25. Anda disarankan untuk memigrasikan manifest dan klien API agar menggunakan versi API policy/v1 sebagai gantinya.
      Sebagai solusi sementara bagi pengguna yang masih menggunakan versi API policy/v1beta1 dari PodDisruptionBudget pada Kubernetes v1.25 dan versi selanjutnya, Anda dapat menjalankan perintah berikut untuk menginstal 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
    • Lihat Milvus Helm Chart dan Helm untuk informasi lebih lanjut.
  • Milvus standalone

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

    Dalam konfigurasi di atas, terdapat empat CPU yang tersedia, dan setiap dataNode serta queryNode menggunakan dua GPU. Untuk menetapkan GPU yang berbeda ke dataNode dan queryNode, Anda dapat memodifikasi konfigurasi sesuai kebutuhan dengan mengatur `extraEnv` dalam berkas konfigurasi sebagai berikut:

    cat <<EOF > custom-values.yaml
    dataNode:
      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 pulsarv3.enabled=false -f custom-values.yaml
    

2. Periksa status Milvus

Jalankan perintah berikut untuk memeriksa status Milvus:

$ kubectl get pods

Setelah Milvus dimulai, kolom " READY " akan menampilkan " 1/1 " untuk semua pod.

  • Cluster Milvus

    NAME                                             READY  STATUS   RESTARTS  AGE
    my-release-etcd-0                                  1/1     Running     0             3m24s
    my-release-etcd-1                                  1/1     Running     0             3m24s
    my-release-etcd-2                                  1/1     Running     0             3m24s
    my-release-milvus-datanode-698dbf7d77-rjkkq        1/1     Running     0             3m24s
    my-release-milvus-mixcoord-856d666559-rpj8z        1/1     Running     0             3m24s
    my-release-milvus-proxy-7f7cf47689-pzltw           1/1     Running     0             3m24s
    my-release-milvus-querynode-7fb6d5b5f8-92phj       1/1     Running     0             3m24s
    my-release-milvus-streamingnode-5867bfbcbf-cg9xx   1/1     Running     0             3m24s
    my-release-minio-0                                 1/1     Running     0             3m24s
    my-release-minio-1                                 1/1     Running     0             3m24s
    my-release-minio-2                                 1/1     Running     0             3m24s
    my-release-minio-3                                 1/1     Running     0             3m24s
    my-release-pulsarv3-bookie-0                       1/1     Running     0             3m24s
    my-release-pulsarv3-bookie-1                       1/1     Running     0             3m24s
    my-release-pulsarv3-bookie-2                       1/1     Running     0             3m24s
    my-release-pulsarv3-bookie-init-p8hcq              0/1     Completed   0             3m24s
    my-release-pulsarv3-broker-0                       1/1     Running     0             3m24s
    my-release-pulsarv3-broker-1                       1/1     Running     0             3m24s
    my-release-pulsarv3-proxy-0                        1/1     Running     0             3m24s
    my-release-pulsarv3-proxy-1                        1/1     Running     0             3m24s
    my-release-pulsarv3-pulsar-init-8kjsj              0/1     Completed   0             3m24s
    my-release-pulsarv3-recovery-0                     1/1     Running     0             3m24s
    my-release-pulsarv3-zookeeper-0                    1/1     Running     0             3m24s
    my-release-pulsarv3-zookeeper-1                    1/1     Running     0             3m24s
    my-release-pulsarv3-zookeeper-2                    1/1     Running     0             3m24s
    
  • Milvus mandiri

    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. Alihkan port lokal ke Milvus

Periksa port lokal mana yang sedang didengarkan oleh server Milvus. Ganti nama pod dengan nama pod Anda sendiri.

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

Kemudian, jalankan perintah berikut untuk meneruskan port lokal ke port yang digunakan Milvus.

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

Secara opsional, Anda dapat menggunakan :19530 alih-alih 27017:19530 pada perintah di atas agar kubectl mengalokasikan port lokal untuk Anda sehingga Anda tidak perlu mengelola konflik port.

Secara default, pengalihan port kubectl hanya mendengarkan di localhost. Gunakan bendera address jika Anda ingin Milvus mendengarkan di alamat IP yang dipilih atau semua alamat IP. Perintah berikut membuat pengalihan port mendengarkan di semua alamat IP pada mesin host.

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

Sekarang, Anda dapat terhubung ke Milvus menggunakan port yang diteruskan.

Mengakses Milvus WebUI

Milvus dilengkapi dengan alat GUI bawaan bernama Milvus WebUI yang dapat Anda akses melalui browser. Milvus WebUI meningkatkan kemampuan pemantauan sistem dengan antarmuka yang sederhana dan intuitif. Anda dapat menggunakan Milvus WebUI untuk memantau statistik dan metrik komponen serta dependensi Milvus, memeriksa detail database dan koleksi, serta menampilkan konfigurasi Milvus secara terperinci. Untuk detail mengenai Milvus WebUI, lihat Milvus WebUI

Untuk mengaktifkan akses ke Milvus WebUI, Anda perlu melakukan port forwarding pod proxy ke port lokal.

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

Sekarang, Anda dapat mengakses Milvus Web UI di http://localhost:27018.

Hapus Instalasi Milvus

Jalankan perintah berikut untuk menghapus instalasi Milvus.

$ helm uninstall my-release

Storage V3 dinonaktifkan secara default. Aktifkan fitur ini sebelum menggunakan fitur-fitur yang bergantung padanya. Untuk persyaratan dan pertimbangan kompatibilitas, lihat Storage V3.

Langkah selanjutnya

Setelah menginstal Milvus, Anda dapat:

Diterjemahkan olehDeepL

Office Hours

Jam Kantor Milvus

Dapatkan bantuan untuk penerapan produksi dari Zilliz, para ahli di Milvus.

Pesan sesi 1:1 gratis

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?