GPU 사용 클러스터

참고

일부 GPU 사용 인스턴스 유형은 베타로 되어 있으며 클러스터를 만드는 동안 드라이버 및 작업자 유형을 선택하면 드롭다운 목록에 표시됩니다.

개요

Azure Databricks GPU(그래픽 처리 장치)로 가속된 클러스터를 지원합니다. 이 문서에서는 GPU 사용 인스턴스를 사용하여 클러스터를 만드는 방법을 설명하고 해당 인스턴스에 설치된 GPU 드라이버 및 라이브러리에 대해 설명합니다.

GPU 사용 클러스터에 대한 딥 러닝에 대한 자세한 내용은 딥 러닝을 참조하세요.

GPU 클러스터 만들기

GPU 클러스터를 만드는 것은 Spark 클러스터를 만드는 것과 비슷합니다(클러스터참조). 다음을 염두에 두어야 합니다.

  • Databricks Runtime 버전은 GPU 사용 버전(예: 런타임 9.1 LTS ML(GPU, Scala 2.12, Spark 3.1.2) )이어야합니다.
  • 작업자 유형드라이버 유형은 GPU 인스턴스 유형이어야 합니다.
  • Spark가 없는 단일 머신 워크플로의 경우 작업자 수를 0으로 설정할 수 있습니다.

Azure Databricks 다음 인스턴스 유형을 지원합니다.

  • NC 인스턴스 유형 시리즈:Standard_NC12, Standard_NC24
  • NC v2 인스턴스 유형 시리즈:Standard_NC6s_v2, Standard_NC12s_v2, Standard_NC24s_v2, Standard_NC24rs_v2
  • NC T4 v3 인스턴스 유형 시리즈:Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3

지원되는 GPU 인스턴스 유형 및 해당 가용성 지역의 최신 목록은 Azure Databricks 가격 책정을 참조하세요. GPU 지원 클러스터를 시작하려면 Azure Databricks 배포가 지원되는 지역에 있어야 합니다.

GPU 일정

Databricks Runtime 7.0 ML 이상은 Apache Spark 3.0에서 GPU 인식 예약을 지원합니다. Azure Databricks GPU 클러스터에서 미리 구성합니다.

GPU 일정은 단일 노드 클러스터에서 사용할 수 없습니다.

spark.task.resource.gpu.amount 는 변경해야 할 수 있는 GPU 인식 일정과 관련된 유일한 Spark 구성입니다. 기본 구성은 모든 GPU 노드를 사용하는 경우 분산 유추 워크로드 및 분산 학습에 적합한 작업당 하나의 GPU를 사용합니다. 분산 학습 중 통신 오버헤드를 줄이는 데 도움이 되는 노드 하위 집합에서 분산 학습을 수행하려면 Databricks는 spark.task.resource.gpu.amount 클러스터 spark.task.resource.gpu.amount에서 작업자 노드당 GPU 수로 를 설정하는 것이 좋습니다.

PySpark 작업의 경우 Azure Databricks 할당된 GPU를 인덱스 0, 1, ....에 자동으로 다시 맵핑합니다. 작업당 하나의 GPU를 사용하는 기본 구성에서 코드는 작업에 할당된 GPU를 확인하지 않고 기본 GPU를 간단히 사용할 수 있습니다. 작업당 여러 GPU를 설정하는 경우(예: 4) 코드는 할당된 GPU의 인덱스가 항상 0, 1, 2 및 3이라고 가정할 수 있습니다. 할당된 GPU의 실제 인덱스가 필요한 경우 환경 변수에서 얻을 수 CUDA_VISIBLE_DEVICES 있습니다.

Scala를 사용하는 경우 에서 작업에 할당된 GPU의 인덱스를 얻을 수 TaskContext.resources().get("gpu") 있습니다.

7.0 미만의 Databricks Runtime 릴리스의 경우 동일한 GPU를 사용하려고 하는 여러 Spark 작업 간의 충돌을 방지하기 위해 Azure Databricks 노드당 실행 중인 작업이 하나만 있도록 GPU 클러스터를 자동으로 구성합니다. 이렇게 하면 태스크가 다른 작업과 충돌하지 않고 노드의 모든 GPU를 사용할 수 있습니다.

NVIDIA GPU 드라이버, CUDA 및 cuDNN

Azure Databricks Spark 드라이버 및 작업자 인스턴스에서 GPU를 사용하는 데 필요한 NVIDIA 드라이버 및 라이브러리를 설치합니다.

  • CUDA Toolkit아래에 설치됩니다.
  • cuDNN:NVIDIA CUDA Deep Neural Network Library.
  • NCCL:NVIDIA Collective Communications Library.

포함된 NVIDIA 드라이버 버전은 CUDA 11.0을 지원하는 450.80.02입니다.

포함된 라이브러리 버전은 사용 중인 특정 Databricks Runtime 버전에 대한 릴리스 정보 를 참조하세요.

참고

이 소프트웨어에는 NVIDIA Corporation에서 제공한 소스 코드가 포함되어 있습니다. 특히 GPU를 지원하기 위해 Azure Databricks CUDA 샘플의 코드를 포함합니다.

NVIDIA EULA(최종 사용자 사용권 계약)

Azure Databricks GPU 지원 "Databricks Runtime 버전"을 선택하면 CUDA, cuDNN 및 Tesla 라이브러리 및 NCCL 라이브러리에 대한 NVIDIA 최종 사용자 사용권 계약(NCCL 추가 사용)과 관련하여 NVIDIAEULA에 설명된 사용 약관에 암시적으로 동의하게 됩니다.

GPU 클러스터의 Databricks Container Services

중요

이 기능은 공개 미리 보기 상태입니다.

GPU가 있는 클러스터에서 Databricks Container Services를 사용하여 사용자 지정된 라이브러리가 있는 이식 가능한 딥 러닝 환경을 만들 수 있습니다. 지침은 Databricks Container Services를 통해 컨테이너 사용자 지정을 참조하세요.

GPU 클러스터에 대한 사용자 지정 이미지를 만들려면 GPU용 Databricks Runtime ML 대신 표준 런타임 버전을 선택해야 합니다. 사용자 고유의 Docker 컨테이너 사용을선택하면 표준 런타임 버전이 있는 GPU 클러스터를 선택할 수 있습니다. GPU 클러스터에 대한 사용자 지정 이미지는 GPU용 Databricks Runtime ML 다른 공식 CUDA 컨테이너를기반으로 합니다.

GPU 클러스터에 대한 사용자 지정 이미지를 만들 때 NVIDIA 드라이버 버전은 호스트 컴퓨터의 드라이버 버전(450.80.02)에 일치해야 하므로 변경할 수 없습니다.

databricksruntimedatabricksruntime GPU 기능이 있는 예제 기본 이미지를 포함합니다. 이러한 이미지를 생성하는 데 사용되는 Dockerfile은 예제 이미지에서 제공하는 내용과 사용자 지정 방법에 대한 세부 정보도 있는 리포지토리GitHub 예제 컨테이너에 있습니다.