Freigeben über


GPU-fähige Compute

Hinweis

Einige GPU-fähige Instanztypen befinden sich in der Beta-Phase und sind als solche in der Dropdown-Liste gekennzeichnet, wenn Sie den Treiber und die Worker-Typen während der Compute-Erstellung auswählen.

Übersicht

Azure Databricks unterstützt mit Grafikprozessoren (GPUs) beschleunigte Berechnungen. Dieser Artikel beschreibt, wie Sie Compute mit GPU-fähigen Instanzen erstellen und beschreibt die GPU-Treiber und -Bibliotheken, die auf diesen Instanzen installiert werden.

Um mehr über Deep Learning auf GPU-fähigen Rechnern zu erfahren, lesen Sie Deep Learning.

Erstellen eines GPU-Computes

Das Erstellen eines GPU-Computes ähnelt dem Erstellen eines Compute. Berücksichtigen Sie dabei Folgendes:

  • Die Databricks Runtime-Versionmuss eine GPU-fähige Version sein, z. B. Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1).
  • Der Workertyp und der Treibertyp müssen GPU-Instanztypen sein.

Unterstützte Instanztypen

Azure Databricks unterstützt die folgenden Instanzypen:

Unter Preise für Azure Databricks finden Sie eine aktuelle Liste der unterstützten GPU-Instanztypen und deren Verfügbarkeitsregionen. Ihre Azure Databricks-Bereitstellung muss sich in einer unterstützten Region befinden, um GPU-fähige Berechnungen zu starten.

GPU-Zeitplanung

Die GPU-Zeitplanung verteilt Spark-Aufgaben effizient über eine große Anzahl von GPUs.

Databricks Runtime unterstützt die GPU-bezogene Planung von Apache Spark 3.0. Azure Databricks konfiguriert es auf GPU-Rechenleistung vor.

Hinweis

Die GPU-Planung ist bei Einzelknotenrechnern nicht aktiviert.

Die benutzerdefinierte GPU-Zeitplanung ist nur für Databricks Runtime 7.1 und höher verfügbar. Bei früheren Versionen der Databricks-Runtime konfiguriert Databricks das GPU-Compute automatisch so, dass es höchstens eine ausgeführte Aufgabe pro Knoten gibt. Auf diese Weise kann die Aufgabe alle GPUs auf dem Knoten verwenden, ohne dass Konflikte mit anderen Aufgaben entstehen.

GPU-Zeitplanung für KI und ML

spark.task.resource.gpu.amount ist die einzige Spark-Konfiguration im Zusammenhang mit GPU-bezogener Planung, die Sie gegebenenfalls konfigurieren müssen. Die Standardkonfiguration verwendet eine GPU pro Aufgabe, was eine gute Baseline für Workloads mit verteiltem Rückschluss und verteiltes Training ist, wenn Sie alle GPU-Knoten verwenden.

Zum Verringern des Kommunikationsaufwand während des verteilten Trainings empfiehlt Databricks, spark.task.resource.gpu.amount auf die Anzahl von GPUs pro Workerknoten in der Spark-Compute-Konfiguration festzulegen. Dadurch wird für jeden Spark-Worker nur eine Spark-Aufgabe erstellt, und alle GPUs in diesem Workerknoten werden derselben Aufgabe zugewiesen.

Für eine höhere Parallelisierung bei verteilten Deep Learning-Rückschlüssen können Sie spark.task.resource.gpu.amount auf Bruchwerte wie 1/2, 1/3, 1/4, ... festlegen. 1/N. Dadurch werden mehr Spark-Aufgaben erstellt, als GPUs vorhanden sind, sodass mehr gleichzeitige Aufgaben Rückschlussanforderungen parallel verarbeiten können. Wenn Sie z. B. spark.task.resource.gpu.amount auf 0.5, 0.33 oder 0.25 festlegen, werden die verfügbaren GPUs auf die doppelte, dreifache oder vierfache Anzahl von Aufgaben aufgeteilt.

GPU-Indizes

Bei PySpark-Aufgaben ordnet Azure Databricks zugewiesene GPUs automatisch den nullbasierten Indizes neu zu. Für die Standardkonfiguration, die eine GPU pro Aufgabe verwendet, können Sie die Standard-GPU verwenden, ohne zu überprüfen, welche GPU der Aufgabe zugewiesen ist. Wenn Sie mehrere GPUs pro Aufgabe festlegen, z. B. 4, sind die Indizes der zugewiesenen GPUs immer 0, 1, 2 und 3. Wenn Sie die physischen Indizes der zugewiesenen GPUs benötigen, können Sie sie aus der Umgebungsvariablen CUDA_VISIBLE_DEVICES abrufen.

Wenn Sie Scala verwenden, können Sie die Indizes der GPUs, die der Aufgabe zugewiesen sind, von TaskContext.resources().get("gpu") abrufen.

NVIDIA-GPU-Treiber, CUDA und cuDNN

Azure Databricks installiert den NVIDIA-Treiber und die Bibliotheken, die für die Verwendung von GPUs in Spark-Treiber- und -Workerinstanzen erforderlich sind:

  • CUDA Toolkit, installiert unter /usr/local/cuda.
  • cuDNN: NVIDIA CUDA Deep Neural Network Library.
  • NCCL: NVIDIA Collective Communications Library.

Die enthaltene Version des NVIDIA-Treibers ist 535.54.03, die CUDA 11.0 unterstützt. Für die NV A10 v5-Instanztypserien ist 535.154.05die Version des enthaltenen NVIDIA-Treibers.

Informationen zu den Versionen der enthaltenen Bibliotheken finden Sie in den Versionshinweisen für die spezifische Databricks Runtime-Version, die Sie verwenden.

Hinweis

Diese Software enthält Quellcode, der von der NVIDIA Corporation bereitgestellt wird. Insbesondere zur Unterstützung von GPUs schließt Azure Databricks Code aus CUDA-Beispielen ein.

Software-Lizenzbedingungen von NVIDIA

Wenn Sie eine GPU-fähige „Databricks Runtime-Version“ in Azure Databricks auswählen, stimmen Sie implizit den Geschäftsbedingungen zu, die im NVIDIA-Lizenzvertrag hinsichtlich der CUDA-, cuDNN- und Tesla-Bibliotheken beschrieben sind, sowie den Bedingungen im NVIDIA-Endbenutzer-Lizenzvertrag (mit NCCL-Ergänzung) für die NCCL-Bibliothek.

Databricks-Containerdienste in GPU-Compute

Wichtig

Dieses Feature befindet sich in der Public Preview.

Sie können Databricks-Containerdienste in Compute mit GPUs verwenden, um portable Deep Learning-Umgebungen mit angepassten Bibliotheken zu erstellen. Anweisungen finden Sie unter Anpassen von Containern mit dem Databricks-Containerdienst.

Um benutzerdefinierte Images für GPU-Compute zu erstellen, müssen Sie eine Standardlaufzeitversion anstelle der Databricks Runtime ML für GPU auswählen. Wenn Sie Eigenen Docker-Container verwenden auswählen, können Sie GPU-Compute mit einer Standardlaufzeitversion auswählen. Die benutzerdefinierten Images für GPU basieren auf den offiziellen CUDA-Containern, die sich von der Databricks Runtime ML für GPU unterscheiden.

Wenn Sie benutzerdefinierte Images für GPU-Compute erstellen, können Sie die NVIDIA-Treiberversion nicht ändern, weil sie mit der Treiberversion auf dem Hostcomputer übereinstimmen muss.

Der Docker Hub von databricksruntime enthält Beispielbasisimages mit GPU-Funktion. Die Dockerfiles, die zum Generieren dieser Images verwendet werden, befinden sich in dem GitHub-Repository mit Beispielcontainern, das auch Details dazu enthält, was die Beispielbilder bereitstellen und wie sie angepasst werden können.