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 버전은 나머지를 수신합니다. llm-v2 버전의 트래픽 가중치를 점진적으로 늘려 LoRA 어댑터 업데이트 출시를 완료합니다.

다음 단계