تشغيل Milvus مع دعم وحدة معالجة الرسومات (GPU) باستخدام مخطط Helm

توضح هذه الصفحة كيفية تشغيل مثيل Milvus مع دعم GPU باستخدام Helm Chart.

نظرة عامة

يستخدم Helm تنسيق حزم يُسمى "charts". و"الرسم البياني" هو مجموعة من الملفات التي تصف مجموعة مترابطة من موارد Kubernetes. يوفر Milvus مجموعة من الرسوم البيانية لمساعدتك في نشر تبعيات ومكونات Milvus. يعد مخطط Helm الخاص بـ Milvus حلاً يقوم بتهيئة نشر Milvus على مجموعة Kubernetes (K8s) باستخدام مدير الحزم Helm.

المتطلبات

إذا واجهت أي مشكلات في سحب الصورة، فاتصل بنا على community@zilliz.com مع تفاصيل حول المشكلة، وسنقدم لك الدعم اللازم.

تثبيت Helm Chart لـ Milvus

Helm هو مدير حزم K8s الذي يمكنه مساعدتك في نشر Milvus بسرعة.

  1. أضف مستودع Milvus Helm.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

تم أرشفة مستودع Milvus Helm Charts الموجود على https://milvus-io.github.io/milvus-helm/ ويمكنك الحصول على المزيد من التحديثات من 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

لا يزال المستودع المؤرشف متاحًا للرسوم البيانية حتى الإصدار 4.0.31. بالنسبة للإصدارات الأحدث، استخدم المستودع الجديد بدلاً من ذلك.

  1. تحديث المخططات محليًا.
$ helm repo update

بدء تشغيل Milvus

بمجرد تثبيت مخطط Helm، يمكنك تشغيل Milvus على Kubernetes. في هذا القسم، سنرشدك عبر الخطوات اللازمة لتشغيل Milvus مع دعم GPU.

يجب عليك تشغيل Milvus باستخدام Helm من خلال تحديد اسم الإصدار، والرسم البياني، والمعلمات التي تتوقع تغييرها. في هذا الدليل، نستخدم my-release كاسم للإصدار. لاستخدام اسم إصدار مختلف، استبدل my-release في الأوامر التالية بالاسم الذي تستخدمه.

يتيح لك Milvus تخصيص جهاز GPU واحد أو أكثر لـ Milvus.

1. تخصيص جهاز GPU واحد

يتيح لك Milvus المزود بدعم GPU تخصيص جهاز GPU واحد أو أكثر.

  • مجموعة 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 المستقل

    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. تخصيص أجهزة GPU متعددة

بالإضافة إلى جهاز GPU واحد، يمكنك أيضًا تخصيص أجهزة GPU متعددة لـ Milvus.

  • مجموعة 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
    

    في التكوين أعلاه، تتوفر أربع وحدات معالجة مركزية (CPU)، ويستخدم كل من dataNode وqueryNode وحدتي GPU. لتخصيص وحدات GPU مختلفة لـ dataNode وqueryNode، يمكنك تعديل التكوين وفقًا لذلك عن طريق تعيين extraEnv في ملف التكوين على النحو التالي:

    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
    
    • يجب أن يحتوي اسم الإصدار على أحرف وأرقام وشرطات فقط. لا يُسمح باستخدام النقاط في اسم الإصدار.
    • يقوم سطر الأوامر الافتراضي بتثبيت إصدار الكتلة من Milvus أثناء تثبيت Milvus باستخدام Helm. يلزم إجراء إعدادات إضافية عند تثبيت Milvus بشكل مستقل.
    • وفقًا لدليل ترحيل واجهة برمجة التطبيقات (API) التي تم إهمالها في Kubernetes، لم يعد إصدار واجهة برمجة التطبيقات policy/v1beta1 لـ PodDisruptionBudget متاحًا اعتبارًا من الإصدار v1.25. يُنصح بترحيل قوائم البيانات وعملاء واجهة برمجة التطبيقات لاستخدام إصدار واجهة برمجة التطبيقات policy/v1 بدلاً من ذلك.
      كحل بديل للمستخدمين الذين ما زالوا يستخدمون إصدار واجهة برمجة التطبيقات (API) policy/v1beta1 لـ PodDisruptionBudget على Kubernetes الإصدار 1.25 والإصدارات الأحدث، يمكنك بدلاً من ذلك تشغيل الأمر التالي لتثبيت 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 Chart و Helm لمزيد من المعلومات.
  • 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
    

    في التكوين أعلاه، تتوفر أربع وحدات معالجة مركزية (CPU)، ويستخدم كل من dataNode و queryNode وحدتي معالجة رسومات (GPU). لتخصيص وحدات معالجة رسومات مختلفة لـ dataNode و queryNode، يمكنك تعديل التكوين وفقًا لذلك عن طريق تعيين extraEnv في ملف التكوين على النحو التالي:

    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. التحقق من حالة Milvus

قم بتشغيل الأمر التالي للتحقق من حالة Milvus:

$ kubectl get pods

بعد بدء تشغيل Milvus، يعرض عمود « READY » (الحالة) « 1/1 » (قيد التشغيل) لجميع البودات.

  • مجموعة 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 المستقل

    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. استبدل اسم البود باسم البود الخاص بك.

$ 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. استخدم العلامة address إذا كنت تريد أن يستمع Milvus على عناوين IP المحددة أو جميعها. يجعل الأمر التالي توجيه المنافذ يستمع على جميع عناوين 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

يأتي Milvus مزودًا بأداة واجهة مستخدم رسومية مدمجة تسمى Milvus WebUI يمكنك الوصول إليها من خلال متصفحك. تعزز واجهة المستخدم الرسومية لـ Milvus إمكانية مراقبة النظام بفضل واجهة بسيطة وسهلة الاستخدام. يمكنك استخدام واجهة المستخدم الرسومية لـ Milvus لمراقبة الإحصائيات والمقاييس الخاصة بمكونات Milvus وتبعياته، والتحقق من تفاصيل قاعدة البيانات والمجموعات، وعرض قائمة بتكوينات Milvus التفصيلية. للحصول على تفاصيل حول واجهة المستخدم على الويب لـ Milvus، راجع Milvus WebUI

لتمكين الوصول إلى واجهة المستخدم على الويب لـ Milvus، تحتاج إلى إعادة توجيه منفذ pod الوكيل إلى منفذ محلي.

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

الآن، يمكنك الوصول إلى واجهة المستخدم على الويب لـ Milvus على العنوان http://localhost:27018.

إلغاء تثبيت Milvus

قم بتشغيل الأمر التالي لإلغاء تثبيت Milvus.

$ helm uninstall my-release

يتم تعطيل Storage V3 افتراضيًا. قم بتمكينه قبل استخدام الميزات التي تعتمد عليه. للاطلاع على المتطلبات واعتبارات التوافق، راجع Storage V3.

الخطوة التالية

بعد تثبيت Milvus، يمكنك:

ترجمة بواسطةDeepL

Office Hours

ساعات عمل مكتب ميلفوس

احصل على المساعدة في نشر الإنتاج من Zilliz، الخبراء في ميلفوس.

احجز جلسة مجانية 1:1

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟