تشغيل Milvus مع دعم وحدة معالجة الرسومات (GPU) باستخدام مخطط Helm
توضح هذه الصفحة كيفية تشغيل مثيل Milvus مع دعم GPU باستخدام Helm Chart.
نظرة عامة
يستخدم Helm تنسيق حزم يُسمى "charts". و"الرسم البياني" هو مجموعة من الملفات التي تصف مجموعة مترابطة من موارد Kubernetes. يوفر Milvus مجموعة من الرسوم البيانية لمساعدتك في نشر تبعيات ومكونات Milvus. يعد مخطط Helm الخاص بـ Milvus حلاً يقوم بتهيئة نشر Milvus على مجموعة Kubernetes (K8s) باستخدام مدير الحزم Helm.
المتطلبات
قم بتثبيت StorageClass. يمكنك التحقق من StorageClass المثبتة على النحو التالي.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseتحقق من متطلبات الأجهزة والبرامج قبل التثبيت.
إذا واجهت أي مشكلات في سحب الصورة، فاتصل بنا على community@zilliz.com مع تفاصيل حول المشكلة، وسنقدم لك الدعم اللازم.
تثبيت Helm Chart لـ Milvus
Helm هو مدير حزم K8s الذي يمكنه مساعدتك في نشر Milvus بسرعة.
- أضف مستودع 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. بالنسبة للإصدارات الأحدث، استخدم المستودع الجديد بدلاً من ذلك.
- تحديث المخططات محليًا.
$ 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.yamlMilvus المستقل
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 3m24sMilvus المستقل
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، يمكنك:
الاطلاع على «البدء السريع» لمعرفة ما يمكن لـ Milvus القيام به.
تعلم العمليات الأساسية لـ Milvus:
نشر مجموعة Milvus الخاصة بك على السحابة:
استكشف Milvus WebUI، وهي واجهة ويب سهلة الاستخدام لمراقبة وإدارة Milvus.
اكتشف Milvus Backup، وهي أداة مفتوحة المصدر لنسخ بيانات Milvus احتياطيًا.
اكتشف Birdwatcher، وهي أداة مفتوحة المصدر لتصحيح أخطاء Milvus وتحديثات التكوين الديناميكية.
اكتشف Attu، وهي أداة واجهة مستخدم رسومية مفتوحة المصدر لإدارة Milvus بطريقة بديهية.