🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
Главная
  • Начать
  • Home
  • Docs
  • Начать

  • Установить Милвус

  • Запустите Milvus с графическим процессором

  • Рулевая диаграмма

Запуск Milvus с поддержкой GPU с помощью Helm Chart

На этой странице показано, как запустить экземпляр Milvus с поддержкой GPU с помощью Helm Chart.

Обзор

Helm использует формат упаковки, называемый диаграммами. Диаграмма - это набор файлов, описывающих связанный набор ресурсов Kubernetes. Milvus предоставляет набор диаграмм, чтобы помочь вам развернуть зависимости и компоненты Milvus. Milvus Helm Chart - это решение, которое обеспечивает развертывание 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 позволяет назначить Milvus одно или несколько GPU-устройств.

1. Назначение одного устройства GPU

Milvus с поддержкой GPU позволяет назначить одно или несколько 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-устройства, вы можете назначить Milvus несколько GPU-устройств.

  • Кластер 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 совместно. Чтобы назначить разные GPU для indexNode и queryNode, можно соответствующим образом изменить конфигурацию, задав в конфигурационном файле 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
    
    • Имя релиза должно содержать только буквы, цифры и тире. Точки в имени релиза не допускаются.
    • Командная строка по умолчанию устанавливает кластерную версию 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
    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. Чтобы назначить разные GPU для indexNode и queryNode, можно соответствующим образом изменить конфигурацию, задав 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 отображается 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. Замените имя стручка на свое собственное.

$ 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, вы можете:

Попробуйте Managed Milvus бесплатно

Zilliz Cloud работает без проблем, поддерживается Milvus и в 10 раз быстрее.

Начать
Обратная связь

Была ли эта страница полезной?