GKE에서 새로운 멀티 인스턴스 NVIDIA GPU로 워크로드 처리 속도 향상
Pradeep Venkatachalam
Software Engineer, GCP
Maulin Patel
Group Product Manager, Google Kubernetes Engine
* 본 아티클의 원문은 2021년 4월 28일 Google Cloud 블로그(영문)에 게재되었습니다.
머신러닝, 시각화/렌더링, 고성능 컴퓨팅 등 까다로운 워크로드를 실행하기 위해 Google Kubernetes Engine(GKE)을 사용하여 NVIDIA GPU에 대한 지원을 활용하는 개발자와 데이터 과학자가 점점 많아지고 있습니다. GKE는 유연성, 자동 확장, 간편한 관리를 지원하며 GPU는 우수한 처리 능력을 제공합니다. 오늘 Google Cloud가 GKE의 멀티 인스턴스 GPU에 대한 지원(현재 미리보기 버전)을 선보임에 따라 사용자는 기존의 GPU 투자에서 더 많은 가치를 창출할 수 있게 되었습니다.
오픈소스 Kubernetes는 컨테이너의 워크로드에 GPU 중 일부만 필요로 하더라도 컨테이너마다 전체 GPU를 할당합니다. 이는 리소스 낭비와 비용 초과를 초래할 수 있으며 특히 최신 세대의 강력한 GPU를 사용하고 있는 경우에는 더 그렇습니다. 무엇보다 (수백만 개의 샘플을 대규모 배치로 처리하는 학습 워크로드와 달리) 소수의 샘플만 실시간으로 처리하는 추론 워크로드에서 우려가 더 큽니다. 따라서 추론 및 기타 경량의 GPU 워크로드에서 사용률을 개선하고 비용을 절감하려면 GPU 공유가 필수입니다.
GKE에 멀티 인스턴스 GPU가 출시되면서 이제 단일 NVIDIA A100 GPU를 최대 7개의 인스턴스 파티션으로 나눌 수 있으며 각 인스턴스에는 자체적인 고대역폭 메모리, 캐시, 컴퓨팅 코어가 있습니다. 각 인스턴스를 컨테이너 하나에 할당할 수 있으므로 NVIDIA A100 GPU당 최대 7개 컨테이너에 할당할 수 있습니다. 또한 멀티 인스턴스 GPU는 컨테이너 간에 하드웨어 격리를 제공하며 GPU에서 실행되는 모든 컨테이너에 대해 일관되고 예측 가능한 QoS를 제공합니다.
아울러 Google Cloud에서 가장 큰 GPU 기반 Compute Engine 인스턴스인 A2 VM이 인스턴스당 최대 16개의 A100 GPU를 지원합니다. 즉, 노드당 최대 112개의 예약 가능한 GPU 인스턴스가 지원되며 인스턴스마다 독립적인 단일 워크로드를 실행할 수 있습니다. GKE에서 제공되는 업계 최고 수준의 자동 확장 및 자동 프로비저닝 기능을 활용하면 멀티 인스턴스 GPU를 자동으로 확장 또는 축소하여 저렴한 비용으로 우수한 성능을 제공할 수 있습니다.
CUDA® 애플리케이션에서 멀티 인스턴스 GPU는 대체로 투명하게 표현됩니다. 각 GPU 인스턴스는 일반 GPU 리소스로 표시되며 프로그래밍 모델이 변경되지 않아 멀티 인스턴스 GPU를 쉽고 편리하게 사용할 수 있습니다.
고객 의견
멀티 인스턴스 GPU 노드의 얼리 어답터들은 이 기술을 토대로 까다로운 워크로드에 GKE를 더욱 효과적으로 사용할 수 있습니다. 보험 부문용 자산 통계 및 워크플로 도구 제공업체인 Betterview는 GKE와 NVIDIA GPU를 사용해 항공 이미지를 처리합니다.
"A100을 사용한 멀티 인스턴스 GPU 아키텍처 덕분에 Kubernetes/GKE의 GPU 작업이 한층 더 발전했습니다. Google Cloud와 NVIDIA는 GPU를 리소스에 연결하기 위해 거쳐야 할 구성 절차의 수를 줄여 머신러닝을 대규모로 배포할 때의 장벽을 낮췄습니다. A100을 사용한 NVIDIA의 GPU 추론 성능은 구성의 복잡성을 덜 뿐만 아니라 속도도 매우 빠릅니다. Google Cloud와의 협업을 통해 Betterview에 가장 적합한 방식으로 AI를 배포할 수 있는 여러 탁월한 옵션을 얻었습니다." - 제이슨 야노프스키, Betterview 엔지니어링 부문 부사장 겸 CTO
멀티 인스턴스 GPU 파티션 만들기
A100 GPU는 컴퓨팅 단위 7개와 메모리 단위 8개로 구성되며, 서로 다른 크기의 GPU 인스턴스로 파티션을 나눌 수 있어 워크로드 확장에 필요한 유연성과 선택권이 확보됩니다. 예를 들어 각각 메모리 20GB를 사용하는 인스턴스 2개, 10GB를 사용하는 인스턴스 3개 또는 5GB를 사용하는 인스턴스 7개로 2개의 멀티 인스턴스 GPU를 만들 수 있습니다.
GPU 파티션 인스턴스는 [compute]g.[memory]gb
구문을 사용합니다. 예를 들어 1g.5gb
의 GPU 파티션 크기는 하나의 컴퓨팅 단위(GPU 스트리밍 멀티프로세서의 1/7)와 하나의 메모리 단위(5GB)가 있는 GPU 인스턴스를 나타냅니다. A100 GPU의 파티션 크기는 GKE 클러스터 또는 노드 풀 API를 통해 지정할 수 있습니다.
멀티 인스턴스 GPU 노드에 컨테이너 배포
한 노드에서 멀티 인스턴스 GPU 인스턴스당 최대 1개의 컨테이너를 배포할 수 있습니다. 파티션 크기가 1g.5gb
이면 A100 GPU 1개를 사용하는 노드에 사용할 수 있는 멀티 인스턴스 GPU 파티션은 7개입니다. 따라서 이 노드에 GPU를 요청하는 컨테이너를 최대 7개까지 배포할 수 있습니다.
각 노드에는 사용할 수 있는 GPU 파티션 크기로 라벨이 지정됩니다. 라벨 지정을 통해 워크로드에서 노드 선택기 또는 노드 어피니티로 적절한 크기의 GPU 인스턴스를 요청할 수 있습니다.
시작하기
이제 GKE에서 멀티 인스턴스 GPU를 사용하면 적절한 크기의 리소스로 워크로드 처리 속도 향상 요구에 손쉽게 대응할 수 있습니다. 또한 GKE를 활용하여 인프라를 자동으로 확장해 워크로드 처리 가속화 요구를 효율적으로 지원하는 동시에 우수한 사용자 경험을 제공하고 운영 비용을 최소화할 수 있습니다. 지금 시작하기