GPU-aktiverade kluster

Anteckning

Vissa GPU-aktiverade instanstyper finns i Beta och markeras som sådana i listrutan när du väljer drivrutins- och arbetstyper när klustret skapas.

Översikt

Azure Databricks stöder kluster som accelererats med grafikprocessorer (GPU: er). Den här artikeln beskriver hur du skapar kluster med GPU-aktiverade instanser och beskriver de GPU-drivrutiner och bibliotek som är installerade på dessa instanser.

Mer information om djupinlärning i GPU-aktiverade kluster finns i Djupinlärning.

Skapa ett GPU-kluster

Att skapa ett GPU-kluster liknar att skapa ett Spark-kluster (se Kluster). Tänk på följande:

  • Databricks Runtime-versionen måste vara en GPU-aktiverad version, till exempel Runtime 9.1 LTS ML (GPU, Scala 2.12, Spark 3.1.2).
  • Arbetstyp och drivrutinstyp måste vara GPU-instanstyper.
  • För arbetsflöden med en enda dator utan Spark kan du ange antalet arbetare till noll.

Azure Databricks stöder följande instanstyper:

  • NC-instanstypserie: Standard_NC12, Standard_NC24
  • NC v2-instanstypserie: Standard_NC6s_v2, Standard_NC12s_v2, Standard_NC24s_v2, Standard_NC24rs_v2
  • NC T4 v3-instansserie: Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3

Se Priser för Azure Databricks för en uppdaterad lista över GPU-instanstyper som stöds och deras tillgänglighetsregioner. Din Azure Databricks-distribution måste finnas i en region som stöds för att starta GPU-aktiverade kluster.

GPU-schemaläggning

Databricks Runtime 7.0 ML och senare stöder GPU-medveten schemaläggning från Apache Spark 3.0. Azure Databricks förkonfigurerar det i GPU-kluster.

GPU-schemaläggning är inte aktiverat i kluster med en nod.

spark.task.resource.gpu.amount är den enda Spark-konfigurationen som är relaterad till GPU-medveten schemaläggning som du kan behöva ändra. Standardkonfigurationen använder en GPU per aktivitet, vilket är idealiskt för distribuerade slutsatsdragningsarbetsbelastningar och distribuerad träning, om du använder alla GPU-noder. För att utföra distribuerad träning på en delmängd av noder, vilket bidrar till att minska kommunikationskostnaderna under distribuerad träning, rekommenderar Databricks att du anger spark.task.resource.gpu.amount antalet GPU:er per arbetsnod i spark-klustrets konfiguration.

För PySpark-uppgifter mappas Azure Databricks automatiskt om tilldelade GPU:er till indexen 0, 1, .... Under standardkonfigurationen som använder en GPU per aktivitet kan koden helt enkelt använda standard-GPU:n utan att kontrollera vilken GPU som är tilldelad till aktiviteten. Om du ställer in flera GPU:er per aktivitet, till exempel 4, kan koden anta att indexen för de tilldelade GPU:erna alltid är 0, 1, 2 och 3. Om du behöver de fysiska indexen för de tilldelade GPU:erna kan du hämta dem från CUDA_VISIBLE_DEVICES miljövariabeln.

Om du använder Scala kan du hämta indexen för GPU:er som tilldelats uppgiften från TaskContext.resources().get("gpu").

För Databricks Runtime-versioner under 7.0 konfigurerar Azure Databricks automatiskt GPU-kluster så att det finns högst en aktivitet som körs per nod för att undvika konflikter mellan flera Spark-uppgifter som försöker använda samma GPU. På så sätt kan aktiviteten använda alla GPU:er på noden utan att stöta på konflikter med andra aktiviteter.

NVIDIA GPU-drivrutin, CUDA och cuDNN

Azure Databricks installerar NVIDIA-drivrutinen och biblioteken som krävs för att använda GPU:er på Spark-drivrutins- och arbetsinstanser:

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

Den version av NVIDIA-drivrutinen som ingår är 470.57.02, som stöder CUDA 11.0.

Information om vilka versioner av biblioteken som ingår finns i viktig information för den specifika Databricks Runtime-version som du använder.

Anteckning

Den här programvaran innehåller källkod som tillhandahålls av NVIDIA Corporation. För att stödja GPU:er innehåller Azure Databricks kod från CUDA-exempel.

NVIDIA-licensavtal för slutanvändare (EULA)

När du väljer en GPU-aktiverad "Databricks Runtime-version" i Azure Databricks godkänner du implicit de villkor som beskrivs i NVIDIA EULA med avseende på biblioteken CUDA, cuDNN och Tesla samt NVIDIA-licensavtalet för slutanvändare (med NCCL-tillägg) för NCCL-biblioteket.

Databricks Container Services på GPU-kluster

Viktigt

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Du kan använda Databricks Container Services i kluster med GPU:er för att skapa portabla djupinlärningsmiljöer med anpassade bibliotek. Instruktioner finns i Anpassa containrar med Databricks Container Services.

Om du vill skapa anpassade avbildningar för GPU-kluster måste du välja en standardkörningsversion i stället för Databricks Runtime-ML för GPU. När du väljer Använd din egen Docker-container kan du välja GPU-kluster med en standardkörningsversion. De anpassade avbildningarna för GPU-kluster baseras på de officiella CUDA-containrarna, som skiljer sig från Databricks Runtime ML för GPU.

När du skapar anpassade avbildningar för GPU-kluster kan du inte ändra NVIDIA-drivrutinsversionen eftersom den måste matcha drivrutinsversionen på värddatorn.

Docker Hubdatabricksruntime innehåller exempel på basavbildningar med GPU-funktion. De Dockerfiles som används för att generera avbildningarna finns i exempelcontainrarna GitHub lagringsplatsen, som också innehåller information om vad exempelbilderna tillhandahåller och hur du anpassar dem.