Запуск Milvus с поддержкой GPU с помощью Helm Chart
На этой странице показано, как запустить экземпляр Milvus с поддержкой GPU с помощью Helm Chart.
Обзор
Helm использует формат упаковки, называемый диаграммами. Диаграмма - это набор файлов, описывающих связанный набор ресурсов Kubernetes. Milvus предоставляет набор диаграмм, чтобы помочь вам развернуть зависимости и компоненты Milvus. Milvus Helm Chart - это решение, которое обеспечивает развертывание 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 позволяет назначить Milvus одно или несколько GPU-устройств.
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-устройства, вы можете назначить Milvus несколько GPU-устройств.
Кластер 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В приведенной выше конфигурации доступно четыре центральных процессора, а каждый узел данных и узел запросов использует два 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 требуется дополнительная настройка.
- Согласно руководству Kuberenetes по миграции устаревших API, версия API policy/v1beta1 для PodDisruptionBudget больше не обслуживается начиная с версии 1.25. Вам предлагается перевести манифесты и API-клиенты на использование версии API policy/v1.
В качестве обходного пути для пользователей, которые все еще используют API-версию PodDisruptionBudget policy/v1beta1 на Kuberenetes v1.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, и каждый узел данных и узел запросов использует два 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 --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-адреса. Следующая команда заставляет 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, вам нужно перенаправить порт прокси-под на локальный порт.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Теперь вы можете получить доступ к Milvus Web UI по адресу http://localhost:27018.
Удаление Milvus
Выполните следующую команду, чтобы удалить Milvus.
$ helm uninstall my-release
Что дальше
Установив Milvus, вы можете:
Проверить Быстрый запуск, чтобы узнать, на что способен Milvus.
Изучить основные операции Milvus:
Развертывание кластера Milvu в облаках:
Изучите Milvus WebUI, интуитивно понятный веб-интерфейс для наблюдения и управления Milvus.
Изучите Milvus Backup, инструмент с открытым исходным кодом для резервного копирования данных Milvus.
Изучите Birdwatcher, инструмент с открытым исходным кодом для отладки Milvus и динамического обновления конфигурации.
Изучите Attu, инструмент с открытым исходным кодом GUI для интуитивного управления Milvus.