이 페이지에서는 GKE 수평형 포드 자동 확장 처리(HPA)를 사용하여 Hugging Face의 텍스트 생성 인터페이스(TGI) 제공 프레임워크와 함께 Gemma 대규모 언어 모델(LLM)을 배포하여 자동 확장 인프라를 설정하는 방법을 보여줍니다.
자동 확장을 위한 측정항목 선택에 대한 자세한 내용은 GKE에서 GPU로 LLM 워크로드를 자동 확장하기 위한 권장사항을 참고하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우
gcloud components update
명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
- Hugging Face TGI로 GKE에서 GPU를 사용하여 Gemma 개방형 모델 제공의 워크플로를 숙지합니다.
서버 측정항목을 사용한 자동 확장
TGI 추론 서버에서 내보낸 워크로드별 성능 측정항목을 사용하여 포드의 직접 자동 확장을 수행할 수 있습니다. 이러한 측정항목에 대해 자세히 알아보려면 서버 측정항목을 참고하세요.
서버 측정항목으로 커스텀 측정항목 자동 확장을 설정하려면 다음 단계를 따르세요.
TGI 서버에서 Cloud Monitoring으로 측정항목 내보내기 Prometheus 수집기의 배포 및 구성을 간소화하는 Google Cloud Managed Service for Prometheus를 사용합니다. Google Cloud Managed Service for Prometheus는 GKE 클러스터에서 기본적으로 사용 설정되어 있습니다. 수동으로 사용 설정할 수도 있습니다.
다음 매니페스트 예에서는 Google Cloud Managed Service for Prometheus가 15초 간격으로 반복적으로 포드에서 측정항목을 스크래핑하도록 PodMonitoring 리소스 정의를 설정하는 방법을 보여줍니다.
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: gemma-pod-monitoring spec: selector: matchLabels: app: gemma-server endpoints: - port: 8000 interval: 15s
커스텀 측정항목 Stackdriver 어댑터를 설치합니다. 이 어댑터는 Monitoring으로 내보낸 맞춤 측정항목이 HPA 컨트롤러에 표시되도록 합니다. 자세한 내용은 Google Cloud Managed Service for Prometheus 문서의 수평형 포드 자동 확장을 참고하세요.
다음 예시 명령어는 어댑터를 설치하는 방법을 보여줍니다.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
커스텀 측정항목 기반 HPA 리소스를 설정합니다. 원하는 맞춤 측정항목을 기반으로 HPA 리소스를 배포합니다. 자세한 내용은 Google Cloud Managed Service for Prometheus 문서의 수평형 포드 자동 확장을 참고하세요.
매니페스트에서 HorizontalPodAutoscaler 리소스를 구성하는 방법을 보여주는 예시를 보려면 다음 탭 중 하나를 선택하세요.
큐 크기
이 예시에서는 큐에 있는 요청 수를 나타내는
tgi_queue_size
TGI 서버 측정항목을 사용합니다.HPA에 적합한 큐 크기 기준점을 확인하려면 GPU를 사용하여 LLM 추론 워크로드를 자동 확장하기 위한 권장사항을 참고하세요.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-server spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: prometheus.googleapis.com|tgi_queue_size|gauge target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
배치 크기
이 예에서는 현재 배치에 있는 요청 수를 나타내는
tgi_batch_size
TGI 서버 측정항목을 사용합니다.HPA에 적합한 배치 크기 기준점을 확인하려면 GPU를 사용하여 LLM 추론 워크로드를 자동 확장하기 위한 권장사항을 참고하세요.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-server spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: prometheus.googleapis.com|tgi_batch_current_size|gauge target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
GPU 측정항목을 사용하여 자동 확장
GPU에서 내보낸 사용량 및 성능 측정항목을 사용하여 포드의 직접 자동 확장을 수행할 수 있습니다. 이러한 측정항목에 대해 자세히 알아보려면 GPU 측정항목을 참고하세요.
GPU 측정항목으로 커스텀 측정항목 자동 확장을 설정하려면 다음 단계를 따르세요.
GPU 측정항목을 Cloud Monitoring으로 내보냅니다. GKE 클러스터에 시스템 측정항목이 사용 설정된 경우 60초마다
container/accelerator/duty_cycle
시스템 측정항목을 통해 GPU 사용률 측정항목이 Cloud Monitoring으로 자동 전송됩니다.- GKE 시스템 측정항목을 사용 설정하는 방법을 알아보려면 측정항목 수집 구성을 참고하세요.
- 관리형 컬렉션을 설정하려면 Google Cloud Managed Service for Prometheus 문서의 관리형 컬렉션 시작하기를 참조하세요.
- GKE에서 GPU 워크로드 성능을 모니터링하는 추가 기법은 GKE Standard 노드 풀에서 GPU 실행을 참고하세요.
다음 매니페스트 예에서는 NVIDIA DCGM 워크로드에서 측정항목을 수집하도록 PodMonitoring 리소스 정의를 설정하는 방법을 보여줍니다.
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: nvidia-dcgm-exporter-for-hpa namespace: gke-managed-system labels: app.kubernetes.io/name: nvidia-dcgm-exporter app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: selector: matchLabels: app.kubernetes.io/name: gke-managed-dcgm-exporter endpoints: - port: metrics interval: 15s metricRelabeling: - action: keep sourceLabels: [__name__] - action: replace sourceLabels: [__name__] targetLabel: __name__ regex: DCGM_FI_DEV_GPU_UTIL replacement: dcgm_fi_dev_gpu_util
코드에서 HPA에 사용할 DCGM 측정항목 이름을 소문자로 변경해야 합니다. 이는 HPA가 대문자 외부 측정항목 이름과 함께 작동하지 않는 알려진 문제가 있기 때문입니다. 관리 DCGM 내보내기 도구를 사용하지 않는 클러스터의 경우 HPA의
metadata.namespace
및spec.selector.matchLabels
이 DCGM 내보내기 도구의 구성과 동일하게 일치해야 합니다.이 정확한 정렬은 HPA의 맞춤 측정항목 검색 및 쿼리에 매우 중요합니다.커스텀 측정항목 Stackdriver 어댑터를 설치합니다. 이 어댑터는 Monitoring으로 내보낸 맞춤 측정항목이 HPA 컨트롤러에 표시되도록 합니다. 자세한 내용은 Google Cloud Managed Service for Prometheus 문서의 수평형 포드 자동 확장을 참고하세요.
다음 예시 명령어는 이 설치를 실행하는 방법을 보여줍니다.
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
커스텀 측정항목 기반 HPA 리소스를 설정합니다. 원하는 맞춤 측정항목을 기반으로 HPA 리소스를 배포합니다. 자세한 내용은 Google Cloud Managed Service for Prometheus 문서의 수평형 포드 자동 확장을 참고하세요.
- HPA가 자동 확장을 트리거할 평균 값 타겟을 식별합니다. 이 방법은 실험적으로 수행할 수 있습니다. 예를 들어 서버 부하를 늘리고 GPU 사용률이 가장 높은 지점을 관찰하세요. 변동을 줄이기 위해 목표 값에 대해 0.1 작업 없음 범위가 기본값으로 설정되는 HPA 톨러레이션(toleration)에 유의해야 합니다.
- 테스트에 locust-load-inference 도구를 사용하는 것이 좋습니다. Cloud Monitoring 커스텀 대시보드를 만들어 측정항목 동작을 시각화할 수도 있습니다.
매니페스트에서 HorizontalPodAutoscaler 리소스를 구성하는 방법을 보여주는 예시를 보려면 다음 탭 중 하나를 선택하세요.
가동 주기(GKE 시스템)
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: External external: metric: name: kubernetes.io|container|accelerator|duty_cycle selector: matchLabels: resource.labels.container_name: inference-server resource.labels.namespace_name: default target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
가동 주기(DCGM)
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: External external: metric: name: prometheus.googleapis.com|dcgm_fi_dev_gpu_util|unknown selector: matchLabels: metric.labels.exported_container: inference-server metric.labels.exported_namespace: default target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
다음 단계
- Cloud Monitoring의 측정항목을 기반으로 포드 자동 확장을 최적화하는 방법을 알아보세요.
- 오픈소스 Kubernetes 문서에서 수평형 포드 자동 확장을 자세히 알아보세요.