milvus-logo
LFAI
홈페이지
  • 시작하기

헬름 차트를 사용하여 GPU 지원으로 밀버스 실행하기

이 페이지는 헬름 차트를 사용하여 GPU를 지원하는 Milvus 인스턴스를 시작하는 방법을 설명한다.

개요

헬름은 차트라는 패키징 형식을 사용한다. 차트는 관련 쿠버네티스 리소스 집합을 설명하는 파일 모음이다. 밀버스는 밀버스 의존성과 컴포넌트를 배포하는 데 도움이 되는 차트 세트를 제공한다. Milvus 헬름 차트는 헬름 패키지 관리자를 사용하여 쿠버네티스(K8s) 클러스터에서 Milvus 배포를 부트스트랩하는 솔루션입니다.

전제 조건

이미지를 가져오는 데 문제가 발생하면 community@zilliz.com 으로 문의해 주시면 필요한 지원을 제공해 드리겠습니다.

Milvus용 헬름 차트 설치

헬름은 Milvus를 빠르게 배포할 수 있도록 도와주는 K8s 패키지 관리자입니다.

  1. 밀버스 헬름 리포지토리를 추가합니다.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/

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

밀버스 시작

헬름 차트를 설치했으면, 쿠버네티스에서 밀버스를 시작할 수 있다. 이 섹션에서는 GPU 지원으로 Milvus를 시작하는 단계를 안내한다.

릴리스 이름, 차트 및 변경할 파라미터를 지정하여 헬름으로 Milvus를 시작해야 한다. 이 가이드에서는 릴리스 이름으로 my-release 을 사용한다. 다른 릴리스 이름을 사용하려면 다음 명령에서 my-release 를 사용 중인 릴리스 이름으로 바꾼다.

Milvus를 사용하면 하나 이상의 GPU 장치를 Milvus에 할당할 수 있습니다.

1. 단일 GPU 장치 할당

GPU를 지원하는 Milvus에서는 하나 이상의 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 장치 외에도 여러 개의 GPU 장치를 Milvus에 할당할 수 있습니다.

  • 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를 할당하려면 구성 파일에서 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를 독립형으로 설치할 때는 추가 설정이 필요하다.
    • 쿠버네티스의 더 이상 사용되지 않는 API 마이그레이션 가이드에 따르면, v1 . 25부터 정책/v1beta1 버전의 파드디스럽션버짓 API 버전은 더 이상 제공되지 않는다. 대신 정책/v1 API 버전을 사용하도록 매니페스트와 API 클라이언트를 마이그레이션하는 것이 좋다.
      쿠버네티스 v1 . 25 이상에서 여전히 파드디스럽션버짓의 정책/v1beta1 API 버전을 사용하는 사용자를 위한 해결 방법으로, 대신 다음 명령을 실행하여 밀버스를 설치할 수 있다:
      . 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 독립형

    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
    

    위의 구성에서 인덱스노드와 쿼리노드는 두 개의 GPU를 공유합니다. 인덱스 노드와 쿼리 노드에 다른 GPU를 할당하려면 다음과 같이 설정 파일에서 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

선택적으로, 위의 명령에서 27017:19530 대신 :19530 을 사용하여 kubectl 이 로컬 포트를 할당하도록 하여 포트 충돌을 관리할 필요가 없도록 할 수 있다.

기본적으로 kubectl의 포트 포워딩은 localhost 에서만 수신 대기한다. 밀버스가 선택한 또는 모든 IP 주소에서 수신 대기하도록 하려면 address 플래그를 사용한다. 다음 명령은 호스트 머신의 모든 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를 제거합니다.

$ helm uninstall my-release

다음 단계

Milvus를 설치했으면 다음을 수행할 수 있습니다:

번역DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?