GKE 추론 게이트웨이 출시 작업 실행


이 페이지에서는 GKE 추론 게이트웨이에 새 버전의 추론 인프라를 점진적으로 배포하는 증분 출시 작업을 실행하는 방법을 보여줍니다. 이 게이트웨이를 사용하면 추론 인프라를 안전하고 제어된 방식으로 업데이트할 수 있습니다. 최소한의 서비스 중단으로 노드, 기본 모델, LoRA 어댑터를 업데이트할 수 있습니다. 또한 이 페이지에서는 안정적인 배포를 위해 트래픽 분할 및 롤백에 관한 안내도 제공합니다.

이 페이지는 GKE 추론 게이트웨이의 출시 작업을 실행하려는 GKE ID 및 계정 관리자와 개발자를 대상으로 합니다.

다음 사용 사례가 지원됩니다.

노드 출시 업데이트

노드 업데이트 출시는 추론 워크로드를 새 노드 하드웨어 또는 가속기 구성으로 안전하게 이전합니다. 이 프로세스는 모델 서비스를 중단하지 않고 제어된 방식으로 진행됩니다. 노드 업데이트 출시를 사용하여 하드웨어 업그레이드, 드라이버 업데이트 또는 보안 문제 해결 중에 서비스 중단을 최소화하세요.

  1. InferencePool 만들기: 업데이트된 노드 또는 하드웨어 사양으로 구성된 InferencePool를 배포합니다.

  2. HTTPRoute를 사용하여 트래픽 분할: 기존 InferencePool 리소스와 새 InferencePool 리소스 간에 트래픽을 분산하도록 HTTPRoute를 구성합니다. backendRefsweight 필드를 사용하여 새 노드로 전달되는 트래픽 비율을 관리합니다.

  3. 일관된 InferenceModel 유지: 기존 InferenceModel 구성을 유지하여 두 노드 구성에서 동일한 모델 동작을 보장합니다.

  4. 원래 리소스 유지: 필요한 경우 롤백을 사용 설정할 수 있도록 출시 중에 원래 InferencePool 및 노드를 활성 상태로 유지합니다.

예를 들어 llm-new라는 새 InferencePool를 만들 수 있습니다. 기존 llm InferencePool와 동일한 모델 구성으로 이 풀을 구성합니다. 클러스터 내의 새 노드 세트에 풀을 배포합니다. HTTPRoute 객체를 사용하여 원래 llm와 새 llm-new InferencePool 간에 트래픽을 분할합니다. 이 기법을 사용하면 모델 노드를 점진적으로 업데이트할 수 있습니다.

다음 다이어그램은 GKE 추론 게이트웨이가 노드 업데이트 출시를 실행하는 방법을 보여줍니다.

노드 업데이트 출시 프로세스
그림: 노드 업데이트 출시 프로세스

노드 업데이트 출시를 실행하려면 다음 단계를 따르세요.

  1. 다음 샘플 매니페스트를 routes-to-llm.yaml로 저장합니다.

    apiVersion: gateway.networking.k8s.io/v1
    kind: `HTTPRoute`
    metadata:
      name: routes-to-llm
    spec:
      parentRefs:
        - name: my-inference-gateway
      rules:
        backendRefs:
        - name: llm
          kind: InferencePool
          weight: 90
        - name: llm-new
          kind: InferencePool
          weight: 10
    
  2. 샘플 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f routes-to-llm.yaml
    

원래 llm InferencePool는 대부분의 트래픽을 수신하고 llm-new InferencePool는 나머지 트래픽을 수신합니다. llm-new InferencePool의 트래픽 가중치를 점진적으로 늘려 노드 업데이트 출시를 완료합니다.

기본 모델 출시

기본 모델 업데이트는 기존 LoRA 어댑터와의 호환성을 유지하면서 새 기본 LLM에 단계적으로 출시됩니다. 기본 모델 업데이트 출시를 사용하여 개선된 모델 아키텍처로 업그레이드하거나 모델별 문제를 해결할 수 있습니다.

기본 모델 업데이트를 출시하려면 다음 단계를 따르세요.

  1. 새 인프라 배포: 선택한 새 기본 모델로 구성된 새 노드와 새 InferencePool를 만듭니다.
  2. 트래픽 분산 구성: HTTPRoute를 사용하여 기존 InferencePool (이전 기본 모델 사용)와 새 InferencePool (새 기본 모델 사용) 간에 트래픽을 분할합니다. backendRefs weight 필드는 각 풀에 할당된 트래픽 비율을 제어합니다.
  3. InferenceModel 무결성 유지: InferenceModel 구성을 변경하지 않습니다. 이렇게 하면 시스템이 두 기본 모델 버전 모두에 동일한 LoRA 어댑터를 일관되게 적용합니다.
  4. 롤백 기능 보존: 출시 중에 원래 노드와 InferencePool를 유지하여 필요한 경우 롤백을 쉽게 할 수 있습니다.

llm-pool-version-2라는 새 InferencePool를 만듭니다. 이 풀은 새 노드 세트에 기본 모델의 새 버전을 배포합니다. 제공된 예와 같이 HTTPRoute를 구성하면 원래 llm-poolllm-pool-version-2 간에 트래픽을 점진적으로 분할할 수 있습니다. 이렇게 하면 클러스터에서 기본 모델 업데이트를 제어할 수 있습니다.

기본 모델 업데이트 출시를 실행하려면 다음 단계를 따르세요.

  1. 다음 샘플 매니페스트를 routes-to-llm.yaml로 저장합니다.

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: routes-to-llm
    spec:
      parentRefs:
        - name: my-inference-gateway
      rules:
        backendRefs:
        - name: llm-pool
          kind: InferencePool
          weight: 90
        - name: llm-pool-version-2
          kind: InferencePool
          weight: 10
    
  2. 샘플 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f routes-to-llm.yaml
    

원래 llm-pool InferencePool는 대부분의 트래픽을 수신하고 llm-pool-version-2 InferencePool는 나머지를 수신합니다. llm-pool-version-2 InferencePool의 트래픽 가중치를 점진적으로 늘려 기본 모델 업데이트 출시를 완료합니다.

LoRA 어댑터 업데이트 출시

LoRA 어댑터 업데이트 출시를 통해 기본 기본 모델이나 인프라를 변경하지 않고도 미세 조정된 모델의 새 버전을 단계적으로 배포할 수 있습니다. LoRA 어댑터 업데이트 출시를 사용하여 LoRA 어댑터의 개선사항, 버그 수정사항 또는 새로운 기능을 테스트합니다.

LoRA 어댑터를 업데이트하려면 다음 단계를 따르세요.

  1. 어댑터 사용 가능: 모델 서버에서 새 LoRA 어댑터 버전을 사용할 수 있는지 확인합니다. 자세한 내용은 어댑터 출시를 참고하세요.

  2. InferenceModel 구성 수정: 기존 InferenceModel 구성에서 LoRA 어댑터의 여러 버전을 정의합니다. 각 버전에 고유한 modelName를 할당합니다 (예: llm-v1, llm-v2).

  3. 트래픽 분산: InferenceModel 사양의 weight 필드를 사용하여 다양한 LoRA 어댑터 버전 간의 트래픽 분산을 제어합니다.

  4. 일관된 poolRef 유지: 모든 LoRA 어댑터 버전이 동일한 InferencePool를 참조하는지 확인합니다. 이렇게 하면 노드 또는 InferencePool 재배포가 방지됩니다. 롤백을 사용 설정하려면 InferenceModel 구성에서 이전 LoRA 어댑터 버전을 유지합니다.

다음 예는 두 가지 LoRA 어댑터 버전인 llm-v1llm-v2를 보여줍니다. 두 버전 모두 동일한 기본 모델을 사용합니다. 동일한 InferenceModel 내에 llm-v1llm-v2를 정의합니다. 가중치를 할당하여 트래픽을 llm-v1에서 llm-v2로 점진적으로 전환합니다. 이 컨트롤을 사용하면 노드 또는 InferencePool 구성을 변경하지 않고도 제어된 출시가 가능합니다.

LoRA 어댑터 업데이트를 출시하려면 다음 명령어를 실행합니다.

  1. 다음 샘플 매니페스트를 inferencemodel-sample.yaml로 저장합니다.

    apiVersion: inference.networking.x-k8s.io/v1alpha2
    kind: InferenceModel
    metadata:
      name: inferencemodel-sample
    spec:
    versions:
    -   modelName: llm-v1
      criticality: Critical
      weight: 90
      poolRef:
        name: llm-pool
    -   modelName: llm-v2
      criticality: Critical
      weight: 10
      poolRef:
        name: llm-pool
    
  2. 샘플 매니페스트를 클러스터에 적용합니다.

    kubectl apply -f inferencemodel-sample.yaml
    

llm-v1 버전은 대부분의 트래픽을 수신하고 llm-v2 버전은 나머지 트래픽을 수신합니다. LoRA 어댑터 업데이트 출시를 완료하려면 llm-v2 버전의 트래픽 가중치를 점진적으로 늘립니다.

다음 단계