편집

다음을 통해 공유


Azure Kubernetes 서비스를 사용하여 GPU 기반 워크로드를 관리하세요.

AKS(Azure Kubernetes Service)

이 문서에서는 AKS(Azure Kubernetes Service) 클러스터에서 GPU 노드를 사용하는 워크로드를 효율적으로 실행하는 방법을 설명합니다. 올바른 SKU를 선택하고, GPU 노드를 사용하여 기계 학습 모델을 학습하고, GPU 노드를 사용하여 AKS에서 유추를 실행하는 방법을 알아봅니다.

시나리오

GPU 워크로드는 실행하는 데 비용이 많이 들 수 있습니다. 불필요한 비용을 방지하려면 AKS 클러스터에 GPU 기반 노드를 배포하는 시기를 파악합니다.

GPU는 그래픽, AI 및 기계 학습 및 특수 작업을 위해 특별히 제작되어 컴퓨팅 집약적 워크로드에 적합합니다. CPU는 복잡한 논리 및 분기를 효과적으로 관리합니다. GPU는 처리량에 최적화되어 있습니다. 간단한 산술 및 벡터 작업을 효율적으로 처리할 수 있습니다.

AKS 워크로드에 GPU를 사용하는 시기를 결정하려면 GPU 최적화 및 컴퓨팅 강도를 이해해야 하지만 다른 요소도 고려해야 합니다. AKS 워크로드의 GPU 사용량에 대한 더 나은 인사이트를 얻으려면 AKS 클러스터의 GPU 노드를 활용하는 다음 워크로드 예제를 고려하세요.

데이터 과학 및 분석

GPU를 사용하여 데이터 과학 워크플로에서 데이터 전처리, 기능 엔지니어링 및 모델 학습을 가속화할 수 있습니다. GPU를 효율적으로 사용하기 위해 RAPIDS 및 Dask GPU와 같은 프레임워크는 pandas 및 scikit-learn과 같은 인기 있는 데이터 처리 라이브러리를 확장합니다.

OSS(오픈 소스 소프트웨어) 가속 SQL 쿼리 엔진 및 BlazingSQL 및 HeavyDB같은 열 형식 데이터베이스는 GPU를 사용하여 대규모 데이터 세트에 대한 쿼리 및 분석을 신속하게 수행합니다.

기계 학습 및 딥 러닝

TensorFlow 및 PyTorch와 같은 인기 있는 기계 학습 및 딥 러닝 프레임워크는 학습 및 유추 작업을 가속화할 수 있으므로 GPU의 이점을 누릴 수 있습니다.

딥 러닝 모델에는 복잡한 신경망이 있습니다. GPU에 대한 병렬 처리는 모델의 계산 속도를 향상합니다. GPU는 딥 러닝의 핵심 작업인 매우 효율적인 행렬 곱하기 및 컨볼루션을 제공합니다.

GPU를 사용하여 이미지 분류, 개체 감지, 자연어 처리 및 음성 인식과 같은 작업을 가속화할 수도 있습니다.

컴퓨터 비전 및 이미지 처리

Computer Vision 작업은 시각적 데이터를 해석하여 의미 있는 정보를 추출합니다. 이러한 작업은 AI 기반 애플리케이션, 자율 주행 차량, 의료 이미징, 감시 시스템 및 증강 현실에서 점점 더 일반화되고 있습니다. GPU는 병렬 처리를 사용하므로 개체 감지, 이미지 분류 및 기능 추출과 같은 작업에 대한 대규모 이미지 데이터 및 복잡한 계산을 효율적으로 처리할 수 있습니다.

비디오 처리 및 스트리밍

비즈니스에서 동영상이 점점 더 많이 보급되고 있으므로 조직은 CPU가 아닌 GPU 기반 하드웨어가 필요합니다. 코드 변환, 인코딩 및 스트리밍을 포함한 비디오 처리 워크로드는 특히 고화질 콘텐츠 또는 4K 콘텐츠가 있는 경우 계산 집약적입니다. GPU는 스포츠 이벤트 또는 회사 비디오 스트리밍과 같은 다양한 애플리케이션에서 고성능의 짧은 대기 시간 비디오 환경을 제공하는 효율적인 플랫폼을 제공합니다.

GPU 사용 에이전트 노드는 그래픽 집약적 작업을 GPU로 오프로드하기 때문에 가상 데스크톱 환경에서 풍부한 고객 환경을 제공합니다. GPU 가속 비디오 인코딩 및 디코딩 기능은 실시간 비디오 스트리밍, 비디오 코드 변환 및 비디오 분석을 개선하는 데 도움이 됩니다.

개체 감지, 개체 추적, 이미지 또는 비디오 처리와 같은 컴퓨터 비전 작업을 가속화하려면 OpenCV, OpenCL, NVIDIA CUDA 및 NVIDIA cuDNN같은 프레임워크를 사용할 수 있습니다.

게임 플랫폼 및 클라우드 게임 서비스는 GPU를 사용하여 고품질 그래픽과 원활한 게임 플레이 환경을 제공합니다.

고성능 컴퓨팅:

HPC(고성능 컴퓨팅) 애플리케이션에는 복잡한 시뮬레이션, 숫자 분석 및 과학적 계산이 필요한 경우가 많습니다. 이러한 작업을 신속하게 실행하려면 GPU를 사용하여 여러 코어에서 워크로드를 병렬화할 수 있습니다. 대규모 병렬 처리 능력이 필요한 HPC 애플리케이션의 예로는 과학 시뮬레이션, 일기 예보, 계산 유체 역학 및 분자 모델링이 있습니다. GPU는 병렬 계산에 적합하며 HPC 워크로드를 크게 가속화합니다. 과학 및 연구 기반 노력은 GPU의 이점을 누릴 수 있습니다.

HPC 애플리케이션을 가속화하기 위해 NVIDIA CUDA, OpenCL 및 OpenACC같은 프레임워크는 GPU 지원 API 및 라이브러리를 제공합니다.

유전체 분석 및 생물 정보학

게놈 분석 및 생물 정보학 애플리케이션과 같은 건강 및 생명 과학 워크로드는 점점 더 일반화되고 있습니다. 이러한 워크로드는 DNA 서열 및 단백질 구조와 같은 유전 데이터를 처리하는 것을 포함하며, 시퀀스 정렬, 변형 호출 및 게놈 데이터 마이닝에 대한 복잡한 알고리즘이 필요합니다. GPU는 게놈 분석 워크플로를 신속하게 수행하여 연구원이 데이터를 처리하고 인사이트를 더 빠르게 파악할 수 있도록 합니다.

AKS 클러스터에서 GPU 노드를 배포하기 전에 비용 영향을 고려합니다. 컴퓨터 비전, 비디오 처리, HPC 및 게놈 분석 작업과 같은 컴퓨팅 집약적 작업에 대한 GPU 최적화를 이해합니다. GPU 리소스와 AKS 클러스터의 CPU 리소스를 비교할 때 이러한 요소를 고려합니다.

생성 AI 모델

OpenAI GPT, Meta Llama, Falcon 또는 Mistral과 같은 LLM(대규모 언어 모델)은 GPU 병렬 처리 기능을 활용할 수 있습니다. 이러한 모델에서 GPU를 사용하여 성능을 향상시킵니다.

GPU는 복잡한 계산과 많은 양의 데이터를 포함하는 학습 및 유추 작업을 가속화할 수 있습니다. GPU에는 지정된 모델의 큰 계산 작업을 동시에 실행되는 더 작은 하위 작업으로 나누는 병렬 처리 기능이 있습니다. 이 프로세스는 빠른 결과를 제공하고 성능을 향상시킵니다.

언어 모델에는 여러 계층과 매개 변수가 있는 복잡한 신경망이 있어 계산 수요가 증가할 수 있습니다. GPU는 매트릭스 곱하기 및 컨볼루션과 같은 언어 처리에서 주요 작업을 가속화하여 학습 및 유추 시간을 단축합니다.

GPU는 대화형 인터페이스 및 텍스트 생성이 있는 LLM 기반 애플리케이션을 처리하기에 충분한 메모리 용량, 대역폭 및 처리 능력을 제공합니다. 예를 들어 GPU의 향상된 기능은 챗봇 및 AI 도우미와 상호 작용하는 사용자에게 빠른 응답 시간을 제공합니다.

일부 워크로드가 GPU 사용 에이전트 노드의 이점을 활용하는 것은 아니며 경우에 따라 CPU로 충분합니다. 예를 들어 주로 입력 및 출력 바인딩되거나 많은 계산이 필요하지 않은 워크로드는 GPU를 사용하여 개선되지 않을 수 있습니다.

고객 사례

많은 Microsoft 고객은 GPU 워크로드를 활용하여 고객을 위해 혁신합니다. 다음 예를 살펴 보십시오.

GPU 워크로드 배포 모범 사례

AKS는 GPU 지원 Linux 및 Windows 노드 풀 및 워크로드를 배포하는 다양한 옵션을 제공합니다. GPU 워크로드의 원활한 작동을 보장하려면 다음 모범 사례를 따르세요.

Linux 워크로드 배포

  • 지원되는 GPU 지원 VM(가상 머신)을 사용하여 노드 풀을 만들고 수동으로 NVIDIA 디바이스 플러그 인을 설치하여 GPU 지원 Linux 노드 풀을 배포합니다. 이 메서드는 GPU를 추가하도록 기존 노드 풀을 업데이트하는 것을 지원하지 않습니다.

  • Azure에서 지원되는 GPU 지원 VM을 봅니다 . AKS 노드 풀에 대해 최소 Standard_NC6s_v3 크기를 사용하는 것이 좋습니다. AKS는 AMD GPU를 기반으로 NVv4 시리즈를 지원하지 않습니다.

  • Azure Linux GPU 사용 노드 풀을 사용하는 경우의 제한 사항을 이해합니다. 자동 보안 패치는 적용되지 않으며 클러스터의 기본 동작은 관리되지 않습니다.

  • GPU 사용 노드 풀에서 워크로드를 예약할 때 Kubernetes 노드 선택기, 노드 선호도, taint 및 toleration을 사용합니다.

Windows 워크로드 배포

  • GPU 사용 VM지원되는 노드 풀을 만들어 GPU 사용 Windows 노드 풀을 배포합니다. AKS 는 드라이버 와 필요한 NVIDIA 구성 요소를 자동으로 설치합니다. 이 메서드는 GPU를 추가하도록 기존 노드 풀을 업데이트하는 것을 지원하지 않습니다.

    지원되는 GPU 지원 VM을 선택하면 AKS는 적절한 NVIDIA CUDA 또는 GRID 드라이버를 자동으로 설치합니다. 일부 워크로드는 배포에 영향을 줄 수 있는 특정 드라이버에 따라 달라집니다. NC 시리즈 및 ND 시리즈 VM 크기의 경우 AKS는 CUDA 드라이버를 설치합니다. NV 시리즈 VM 크기의 경우 AKS는 GRID 드라이버를 설치합니다.

  • Azure에서 지원되는 GPU 지원 VM을 봅니다 . AKS 노드 풀에 대해 최소 Standard_NC6s_v3 크기를 사용하는 것이 좋습니다. AKS는 AMD GPU를 기반으로 NVv4 시리즈를 지원하지 않습니다.

  • Windows 노드 풀을 사용하는 경우의 제한 사항을 이해합니다. Kubernetes 버전 1.28 이하는 Windows GPU를 지원하지 않습니다.

  • GPU 사용 노드 풀에서 워크로드를 예약할 때 Kubernetes 노드 선택기, 노드 선호도, taint 및 toleration을 사용합니다.

참고 항목

Windows GPU는 미리 보기 기능입니다. 기능 플래그WindowsGPUPreview 등록해야 합니다.

NVIDIA GPU 연산자

NVIDIA GPU 연산자는 Kubernetes 클러스터 내에서 GPU 리소스를 효율적으로 배포하고 관리하는 데 사용할 수 있는 도구입니다. 운영자를 사용하여 소프트웨어 구성 요소의 설치, 구성 및 유지 관리를 자동화할 수 있습니다. 이 방법을 사용하면 AI 및 기계 학습 워크로드와 같은 까다로운 워크로드에 NVIDIA GPU를 최적으로 사용할 수 있습니다.

NVIDIA GPU 운영자는 Kubernetes용 NVIDIA 디바이스 플러그 인 및 NVIDIA 컨테이너 런타임과 같이 GPU를 배포하는 데 필요한 모든 NVIDIA 소프트웨어 구성 요소를 자동으로 관리합니다. 운영자는 자동으로 드라이버를 설치합니다. 자세한 내용은 NVIDIA 개요를 참조하세요.

고급 GPU 워크로드에 대한 제어 및 유연성을 높이려면 AKS에서 GPU 사용 노드와 함께 NVIDIA GPU 연산자를 사용할 수 있습니다. NVIDIA GPU 연산자는 Windows GPU를 지원하지 않습니다.

다음 모범 사례를 고려합니다.

  • NVIDIA GPU 연산자를 사용하여 드라이버 버전 선택 및 시간 조각화와 같은 고급 GPU 구성을 수행합니다.

  • GPU 연산자를 사용하기 전에 자동 드라이버 설치를 건너뜁니다.

  • 클러스터 자동 크기 조정기에서 GPU 연산자를 사용하는 경우 최소 개수를 1로 설정합니다.

참고 항목

MICROSOFT는 GPU 연산자를 사용할 때 노드 이미지 배포의 일부로 NVIDIA 드라이버의 유지 관리 및 호환성을 지원하거나 관리하지 않습니다.

LLM에 대한 GPU 워크로드 배포

Kubernetes AI 도구 체인 연산자(KAITO)는 Kubernetes 클러스터에서 Falcon 및 Llama2같은 오픈 소스 LLM을 실행하는 방법을 간소화하는 Kubernetes 연산자입니다. AKS 클러스터에 KAITO를 AKS용 관리형 추가 기능으로 배포할 수 있습니다. KAITO는 Karpenter를 사용하여 선택한 모델의 작업 영역 사용자 지정 리소스 정의의 사양에 따라 GPU 노드를 자동으로 프로비전하고 배포합니다. KAITO는 유추 서버를 LLM의 엔드포인트로 만들고 인프라 설정 및 유지 관리 대신 기계 학습 작업을 수행할 수 있도록 전체 온보딩 시간을 줄입니다.

기계 학습 작업을 개선하기 위해 KAITO는 다음과 같은 기능을 제공합니다.

  • 컨테이너 이미지 관리: 컨테이너 이미지를 사용하여 LLM을 관리합니다. KAITO는 지원되는 모델 라이브러리를 사용하여 유추 호출을 수행할 수 있도록 HTTP 서버를 제공합니다.

  • GPU 하드웨어 구성: KAITO는 모델 요구 사항에 따라 자동으로 적용되는 미리 설정된 구성을 제공합니다. GPU 하드웨어에 맞게 배포 매개 변수를 수동으로 조정할 필요가 없습니다.

  • 자동 GPU 노드 프로비전: KAITO는 모델 요구 사항에 따라 GPU 노드를 자동으로 프로비전하고 분산 추론을 구성하기 위해 저렴한 GPU VM 크기를 권장합니다.

  • Microsoft 아티팩트 레지스트리 통합: LLM 라이선스가 허용하는 경우 KAITO는 공용 아티팩트 레지스트리에서 모델 이미지를 호스트할 수 있습니다. 이 메서드는 지원되는 모델에 대한 액세스 및 배포를 간소화합니다. KAITO 리포지토리에서 지원하지 않는 MIT 또는 Apache2 라이선스가 있는 오픈 소스 모델의 경우 새 모델 온보딩에 대한 요청을 제출할 수 있습니다.

KAITO에 대한 자세한 내용은 다음 리소스를 참조하세요.

워크로드 및 클러스터 크기 조정

AI 및 기계 학습 시나리오의 경우 학습 워크로드와 미리 학습된 모델을 사용한 추론을 구분해야 합니다. 기계 학습 모델을 빌드하고 학습하려면 딥 러닝 및 AI 계산 병렬 처리를 위해 설계된 GPU 컴퓨팅을 사용하는 것이 좋습니다. 학습을 위해서는 데이터 병렬 처리로 높은 정확도를 달성하기 위해 GPU 간에 대량의 데이터를 점진적으로 스케일링하고 분산해야 하는 경우가 많습니다.

모델 분할은 모델 학습의 단계를 나누는 데 사용할 수 있는 일반적인 고급 기술입니다. GPU를 고유 작업에 할당하고 사용을 최대화할 수 있습니다. GPU는 Azure의 NV 시리즈 또는 ND 시리즈 VM과 같은 HPC 워크로드를 확장하고 확장할 수 있습니다. 이 기능은 리소스 사용량이 많고 비용이 많이 드는 기계 학습 학습 프로세스에 대한 사용자 개입을 줄이는 데 도움이 됩니다.

또는 미리 학습된 오픈 소스 AI 및 기계 학습 모델을 추론에만 사용할 수 있습니다. LLM을 처음부터 빌드하고 학습하는 것보다 더 빠르고 비용 효율적인 옵션으로 라마, 팔콘 또는 미스트랄과 같은 인기 모델을 시작하세요. 자세한 내용은 AKS의 언어 모델을 참조 하세요.

미리 학습된 모델을 유추에 사용하는 경우 처리하는 데이터의 양에 따라 동적 및 변동 리소스 사용량이 발생할 수 있습니다. 선택한 모델을 통해 라이브 데이터를 실행하는 경우 모델 크기 및 요구 사항에 따라 트래픽 급증이 발생하는 경우가 있습니다. 추론 프로세스 전체에서 허용 가능하고 낮은 대기 시간을 유지해야 합니다. 고성능 및 짧은 대기 시간에 GPU를 효과적으로 사용하려면 KAITO에서 지원하는 모델을 사용하여 분산 유추를 수행할 수 있습니다. 이 방법은 각각 하나 또는 두 개의 GPU가 있는 더 낮은 GPU 수 SKU를 포함하도록 컴퓨팅 옵션을 확장하고, Azure 지역에 걸쳐 고가용성을 제공하고, 유지 관리 비용을 절감합니다.

GPU 워크로드 비용 관리

GPU는 비용을 증가시킬 수 있습니다. 워크로드를 적절히 모니터링하여 GPU 비용을 유발하는 원인을 파악하고 최적화 기회를 식별합니다. 비용 가시성을 높이기 위해 AKS 비용 분석 추가 기능을 사용할 수 있습니다.

다음 시나리오는 비용 가시성의 이점을 누릴 수 있습니다.

GPU 사용 VM 크기 비용

GPU 실행 비용을 최적화하려면 적절한 GPU 사용 VM 크기를 선택합니다. 일일 비용은 선택한 VM 크기에 따라 달라질 수 있습니다. A100 GPU는 비용이 많이 듭니다. 워크로드에 특정 요구 사항이 없는 한 이를 피해야 합니다. AKS 비용 분석은 각 VM의 일일 비용을 표시하고 GPU 지원 VM에서 실행되는 각 워크로드의 관련 비용을 분석합니다. 이 데이터를 사용하여 적절한 VM 크기가 있는지 또는 보다 비용 효율적인 옵션이 필요한지 평가합니다.

유휴 비용

GPU 사용 노드 풀을 만든 후에는 GPU 워크로드를 실행하지 않더라도 Azure 리소스에 비용이 발생합니다. 유휴 비용은 워크로드에서 사용하지 않는 사용 가능한 리소스 용량의 비용을 나타냅니다. 사용되지 않는 노드가 여러 대 있는 경우 이 비용이 빠르게 추가됩니다. 높은 유휴 비용을 방지하려면 워크로드를 실행할 때만 노드 풀을 만들고 워크로드를 실행하지 않을 때 클러스터 중지 기능 과 같은 메서드를 사용합니다. AKS 비용 분석에는 각 노드에 대한 유휴 비용이 표시됩니다.

과잉 프로비전 및 사용 미달

오버프로비전은 Pod에 필요한 것보다 더 많은 리소스를 할당하는 경우입니다. 과잉 프로비전은 리소스 낭비 및 과소 사용으로 이어집니다. 초과 리소스는 사용하지 않더라도 노드에 대해 예약된 상태로 유지됩니다. 오버프로비전을 줄이려면 세로 Pod 자동 크기 조정기를 사용하여 이전 사용 패턴에 따라 정확한 요청 및 제한을 설정합니다.

워크로드가 GPU를 완전히 사용하지 않을 때 과소 사용이 발생할 수 있습니다. 고급 GPU 공유 및 분할 기술을 고려합니다. 여러 노드를 사용하는 대신 분할이 있는 단일 노드를 사용하여 GPU 사용량을 최대화할 수 있습니다. 이러한 기술은 각 워크로드에 적절한 양의 GPU 가속을 할당하는 데 도움이 되므로 사용량을 향상시키고 배포의 운영 비용을 낮출 수 있습니다.

AKS의 Linux GPU 워크로드 배포는 다중 인스턴스 GPU를 지원 합니다. 이 기능을 사용하여 NVIDIA A100 GPU를 최대 7개의 독립 인스턴스로 분할합니다. 각 인스턴스에는 고유한 메모리와 스트림 다중 프로세서가 있습니다.

NVIDIA는 시간 조각화 및 다중 프로세스 서비스 구현과 같은 다른 분할 기술을 지원합니다. 이러한 구성을 수동으로 적용하려면 NVIDIA GPU 연산자를 사용합니다.

고급 시나리오의 경우 노드에서 리소스 빈 압축을 개선할 수 있습니다. 스케줄러 구성을 설정하고 두 번째 스케줄러를 실행할 수 있습니다. 기본 AKS 스케줄러와 다른 워크로드 배치 전략을 사용하도록 보조 스케줄러를 구성하고 유지 관리합니다. 자세한 내용은 Kubernetes에서 여러 스케줄러 구성을 참조 하세요.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.

다음 단계