GPU 지원 컴퓨팅
참고 항목
일부 GPU 사용 인스턴스 형식은 베타 버전이며 컴퓨팅을 만드는 동안 드라이버 및 작업자 유형을 선택할 때 드롭다운 목록에 표시됩니다.
개요
Azure Databricks는 GPU(그래픽 처리 장치)로 가속된 컴퓨팅을 지원합니다. 이 문서에서는 GPU 사용 인스턴스를 사용하여 컴퓨팅을 만드는 방법을 설명하고 해당 인스턴스에 설치된 GPU 드라이버 및 라이브러리에 대해 설명합니다.
GPU 지원 컴퓨팅에 대한 딥 러닝에 대한 자세한 내용은 딥 러닝을 참조하세요.
GPU 컴퓨팅 만들기
GPU 컴퓨팅을 만드는 것은 모든 컴퓨팅을 만드는 것과 비슷합니다. 이때 다음 사항에 유의해야 합니다.
- Databricks 런타임 버전은 GPU 지원 버전(예: 런타임 13.3 LTS ML(GPU, Scala 2.12.15, Spark 3.4.1)이어야 합니다.
- 작업자 유형 및 드라이버 형식은 GPU 인스턴스 형식이어야 합니다.
지원되는 인스턴스 유형
Azure Databricks는 다음 인스턴스 유형을 지원합니다.
- NC 인스턴스 유형 계열: Standard_NC12, Standard_NC24
- NC v3 인스턴스 유형 시리즈: Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3
- NC T4 v3 인스턴스 유형 계열: Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3
- NC A100 v4 인스턴스 유형 시리즈: Standard_NC24ads_A100_v4, Standard_NC48ads_A100_v4, Standard_NC96ads_A100_v4
- NCads H100 v5 인스턴스 유형 시리즈: Standard_NC40ads_H100_v5, Standard_NC80adis_H100_v5
- ND A100 v4 인스턴스 유형 시리즈: Standard_ND96asr_v4
- NV A10 v5 인스턴스 형식 시리즈: Standard_NV36ads_A10_v5, Standard_NV36adms_A10_v5, Standard_NV72ads_A10_v5
지원되는 GPU 인스턴스 유형 및 가용성 지역의 최신 목록은 Azure Databricks 가격을 참조하세요. GPU 사용 컴퓨팅을 시작하려면 Azure Databricks 배포가 지원되는 지역에 있어야 합니다.
GPU 예약
GPU 예약은 많은 수의 GPU에 Spark 작업을 효율적으로 분산합니다.
Databricks Runtime은 Apache Spark 3.0부터 GPU 인식 예약을 지원합니다. Azure Databricks는 GPU 컴퓨팅에서 미리 구성합니다.
참고 항목
단일 노드 컴퓨팅에서는 GPU 예약을 사용할 수 없습니다.
사용자 정의 GPU 예약은 Databricks Runtime 7.1 이상에서만 사용할 수 있습니다. 이전 버전의 Databricks 런타임의 경우 Databricks는 노드당 최대 하나의 실행 중인 작업이 있도록 GPU 컴퓨팅을 자동으로 구성합니다. 이렇게 하면 태스크가 다른 작업과 충돌하지 않고 노드의 모든 GPU를 사용할 수 있습니다.
AI 및 ML에 대한 GPU 예약
spark.task.resource.gpu.amount
는 구성해야 할 수 있는 GPU 인식 예약과 관련된 유일한 Spark 구성입니다.
기본 구성은 모든 GPU 노드를 사용하는 경우 분산 유추 워크로드 및 분산 학습에 적합한 기준인 작업당 하나의 GPU를 사용합니다.
분산 학습 중에 통신 오버헤드를 줄이기 위해 Databricks는 컴퓨팅 Spark 구성에서 작업자 노드당 GPU 수로 설정하는 spark.task.resource.gpu.amount
것이 좋습니다. 이렇게 하면 각 Spark 작업자에 대해 하나의 Spark 작업만 만들어지고 해당 작업자 노드의 모든 GPU를 동일한 작업에 할당합니다.
분산 딥 러닝 유추에 대한 병렬 처리를 늘리려면 1/2, spark.task.resource.gpu.amount
1/3, 1/4, ... 1/N. 이렇게 하면 GPU보다 더 많은 Spark 태스크가 생성되므로 더 많은 동시 태스크가 유추 요청을 병렬로 처리할 수 있습니다. 예를 들어 사용 가능한 GPU를 0.5
0.33
두 배, 세 배 또는 0.25
4배의 작업 수로 분할 spark.task.resource.gpu.amount
합니다.
GPU 인덱스
PySpark 작업의 경우 Azure Databricks는 할당된 GPU를 0부터 시작하는 인덱스에 자동으로 다시 매핑합니다. 작업당 하나의 GPU를 사용하는 기본 구성의 경우 작업에 할당된 GPU를 확인하지 않고 기본 GPU를 사용할 수 있습니다.
작업당 여러 GPU(예: 4)를 설정하는 경우 할당된 GPU의 인덱스는 항상 0, 1, 2 및 3입니다. 할당된 GPU의 실제 인덱스가 필요한 경우에는 CUDA_VISIBLE_DEVICES
환경 변수에서 인덱스를 가져올 수 있습니다.
Scala를 사용하는 경우 TaskContext.resources().get("gpu")
에서 태스크에 할당된 GPU의 인덱스를 가져올 수 있습니다.
NVIDIA GPU 드라이버, CUDA 및 cuDNN
Azure Databricks는 GPU를 사용하는 데 필요한 NVIDIA 드라이버 및 라이브러리를 Spark 드라이버 및 작업자 인스턴스에 설치합니다.
- CUDA 도구 키트:
/usr/local/cuda
에 설치됨. - cuDNN: NVIDIA CUDA 심층 신경망 라이브러리.
- NCCL: NVIDIA Collective Communications 라이브러리.
포함된 NVIDIA 드라이버 버전은 CUDA 11.0을 지원하는 535.54.03입니다. NV A10 v5 인스턴스 유형 시리즈의 경우 포함된 535.154.05
NVIDIA 드라이버의 버전은 .
포함된 라이브러리의 버전은 사용 중인 Databricks Runtime 버전의 릴리스 정보를 참조하세요.
참고 항목
이 소프트웨어에는 NVIDIA Corporation에서 제공한 소스 코드가 포함되어 있습니다. Azure Databricks에는 GPU를 지원하기 위해 CUDA 샘플의 코드가 포함되어 있습니다.
NVIDIA EULA(최종 사용자 사용권 계약)
Azure Databricks에서 GPU 지원 "Databricks 런타임 버전"을 선택하는 경우 CUDA, cuDNN 및 Tesla 라이브러리 와 관련하여 NVIDIA EULA에 설명된 사용 약관 및 NCCL 라이브러리에 대한 NVIDIA 최종 사용자 라이선스 계약(NCCL 보충 사용) 에 암시적으로 동의합니다.
GPU 컴퓨팅의 Databricks Container Services
Important
이 기능은 공개 미리 보기 상태입니다.
GPU를 사용하여 컴퓨팅에서 Databricks Container Services를 사용하여 사용자 지정된 라이브러리를 사용하여 이식 가능한 딥 러닝 환경을 만들 수 있습니다. 지침은 Databricks Container Service를 사용하여 컨테이너 사용자 지정을 참조하세요.
GPU 컴퓨팅에 대한 사용자 지정 이미지를 만들려면 GPU용 Databricks 런타임 ML 대신 표준 런타임 버전을 선택해야 합니다. 사용자 고유의 Docker 컨테이너 사용을 선택하면 표준 런타임 버전으로 GPU 컴퓨팅을 선택할 수 있습니다. GPU에 대한 사용자 지정 이미지는 GPU용 Databricks 런타임 ML과 다른 공식 CUDA 컨테이너를 기반으로 합니다.
GPU 컴퓨팅에 대한 사용자 지정 이미지를 만들 때 NVIDIA 드라이버 버전은 호스트 컴퓨터의 드라이버 버전과 일치해야 하므로 변경할 수 없습니다.
Docker Hub에는 databricksruntime
GPU 기능이 있는 예제 기본 이미지가 포함되어 있습니다. 이러한 이미지를 생성하는 데 사용된 Dockerfile은 예제 컨테이너 GitHub 리포지토리에 있으며, 여기에는 예제 이미지에서 제공하는 사항과 사용자 지정하는 방법도 안내되어 있습니다.