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

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

Die GPU-Planung ist bei Einzelknotenrechnern nicht aktiviert.

spark.task.resource.gpu.amount ist die einzige Spark-Konfiguration im Zusammenhang mit GPU-bezogener Planung, die Sie möglicherweise ändern müssen. Die Standardkonfiguration verwendet eine GPU pro Aufgabe, was sich ideal für Workloads mit verteiltem Rückschließen und verteiltes Training eignet, wenn Sie alle GPU-Knoten verwenden. Für verteiltes Training auf einer Teilmenge von Knoten, wodurch sich der Kommunikationsaufwand während des verteilten Trainings verringert, empfiehlt Databricks, spark.task.resource.gpu.amount auf die Anzahl von GPUs pro Workerknoten in der Spark-Compute-Konfiguration festzulegen.

Bei PySpark-Aufgaben ordnet Azure Databricks zugewiesene GPUs automatisch den Indizes 0, 1, usw. neu zu. Unter der Standardkonfiguration, die eine GPU pro Aufgabe verwendet, kann Ihr Code einfach die Standard-GPU verwenden, ohne zu überprüfen, welche GPU der Aufgabe zugewiesen ist. Wenn Sie mehrere GPUs pro Aufgabe festlegen, z. B. 4, kann Ihr Code davon ausgehen, dass die Indizes der zugewiesenen GPUs immer 0, 1, 2 und 3 sind. 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.

Für niedrigere Databricks Runtime-Versionen als 7.0 konfiguriert Azure Databricks automatisch GPU-Compute, sodass pro Knoten nur eine ausgeführte Aufgabe ausgeführt wird, um Konflikte zwischen mehreren Spark-Tasks zu vermeiden, die versuchen, dieselbe GPU zu verwenden. Auf diese Weise kann die Aufgabe alle GPUs auf dem Knoten verwenden, ohne dass Konflikte mit anderen Aufgaben entstehen.

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.