Obliczenia z obsługą procesora GPU

Uwaga

Niektóre typy wystąpień z obsługą procesora GPU znajdują się w wersji beta i są oznaczone jako takie na liście rozwijanej po wybraniu sterownika i typów procesów roboczych podczas tworzenia obliczeń.

Omówienie

Usługa Azure Databricks obsługuje przyspieszone obliczenia przy użyciu procesorów graficznych (GPU). W tym artykule opisano sposób tworzenia obliczeń przy użyciu wystąpień z obsługą procesora GPU oraz opisano sterowniki i biblioteki procesora GPU zainstalowane w tych wystąpieniach.

Aby dowiedzieć się więcej na temat uczenia głębokiego na obliczeniach z obsługą procesora GPU, zobacz Uczenie głębokie.

Tworzenie obliczeń procesora GPU

Tworzenie obliczeń procesora GPU jest podobne do tworzenia dowolnych obliczeń. Należy pamiętać o następujących kwestiach:

  • Wersja środowiska uruchomieniowego usługi Databricks musi być wersją z obsługą procesora GPU, taką jak Runtime 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1).
  • Typ procesu roboczego i typ sterownika muszą być typami wystąpień procesora GPU.

Obsługiwane typy wystąpień

Usługa Azure Databricks obsługuje następujące typy wystąpień:

  • Seria typów wystąpień nc: Standard_NC12, Standard_NC24
  • Seria typów wystąpień NC w wersji 3: Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3
  • Seria typów wystąpień NC T4 v3: Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3
  • Seria typów wystąpień NC A100 v4: Standard_NC24ads_A100_v4, Standard_NC48ads_A100_v4, Standard_NC96ads_A100_v4
  • Seria typów wystąpień ND A100 v4: Standard_ND96asr_v4
  • Seria wystąpień NV A10 v5: Standard_NV36ads_A10_v5, Standard_NV36adms_A10_v5, Standard_NV72ads_A10_v5
    • Standard_NV72ads_A10_v5 nie jest zgodna z wersją PyTorch 2.0 lub nowszą i zgłasza błąd CUDA podczas uruchamiania obciążeń z wieloma procesorami GPU. Ponieważ środowisko Databricks Runtime ML 14.0 lub nowsze wstępnie instaluje oprogramowanie PyTorch 2.0 lub nowsze, zalecamy użycie środowiska Databricks Runtime ML 13.x lub ręcznego uruchomienia pip install torch==1.13.1 w przypadku uruchamiania narzędzia PyTorch w przypadku obciążeń z wieloma procesorami GPU.

Zobacz Cennik usługi Azure Databricks, aby uzyskać aktualną listę obsługiwanych typów wystąpień procesora GPU i ich regionów dostępności. Wdrożenie usługi Azure Databricks musi znajdować się w obsługiwanym regionie w celu uruchomienia obliczeń z obsługą procesora GPU.

Planowanie harmonogramu GPU

Środowisko Databricks Runtime obsługuje planowanie obsługujące procesor GPU z platformy Apache Spark 3.0. Usługa Azure Databricks wstępnie konfiguruje ją na obliczeniach procesora GPU.

Planowanie procesora GPU nie jest włączone w obliczeniach z jednym węzłem.

spark.task.resource.gpu.amount jest jedyną konfiguracją platformy Spark związaną z planowaniem obsługującym procesor GPU, które może wymagać zmiany. Domyślna konfiguracja używa jednego procesora GPU na zadanie, co jest idealne w przypadku rozproszonych obciążeń wnioskowania i trenowania rozproszonego, jeśli używasz wszystkich węzłów procesora GPU. Aby przeprowadzić trenowanie rozproszone w podzestawie węzłów, co pomaga zmniejszyć obciążenie komunikacji podczas trenowania rozproszonego, usługa Databricks zaleca ustawienie spark.task.resource.gpu.amount liczby procesorów GPU na węzeł roboczy w konfiguracji obliczeniowej platformy Spark.

W przypadku zadań PySpark usługa Azure Databricks automatycznie ponownie mapuje przypisane procesory GPU do indeksów 0, 1, .... W ramach domyślnej konfiguracji, która używa jednego procesora GPU na zadanie, kod może po prostu używać domyślnego procesora GPU bez sprawdzania, który procesor GPU jest przypisany do zadania. Jeśli ustawisz wiele procesorów GPU na zadanie, na przykład 4, kod może założyć, że indeksy przypisanych procesorów GPU są zawsze 0, 1, 2 i 3. Jeśli potrzebujesz fizycznych indeksów przypisanych procesorów GPU, możesz je pobrać ze zmiennej środowiskowej CUDA_VISIBLE_DEVICES .

Jeśli używasz języka Scala, możesz pobrać indeksy procesorów GPU przypisanych do zadania z .TaskContext.resources().get("gpu")

W przypadku wersji środowiska Databricks Runtime poniżej 7.0, aby uniknąć konfliktów między wieloma zadaniami platformy Spark, które próbują użyć tego samego procesora GPU, usługa Azure Databricks automatycznie konfiguruje obliczenia procesora GPU, aby było co najwyżej jedno uruchomione zadanie na węzeł. Dzięki temu zadanie może używać wszystkich procesorów GPU w węźle bez wystąpienia konfliktów z innymi zadaniami.

Sterownik procesora GPU FIRMY NVIDIA, CUDA i cuDNN

Usługa Azure Databricks instaluje sterownik i biblioteki NVIDIA wymagane do używania procesorów GPU w wystąpieniach sterowników i procesów roboczych platformy Spark:

  • Zestaw narzędzi CUDA, zainstalowany w obszarze /usr/local/cuda.
  • cuDNN: biblioteka sieci neuronowych NVIDIA CUDA Deep Neural Network.
  • NCCL: Biblioteka komunikacji zbiorowej FIRMY NVIDIA.

Wersja dołączonego sterownika NVIDIA to 535.54.03, który obsługuje cuda 11.0. W przypadku serii typów wystąpień NV A10 v5 wersja zawiera wersja sterownika NVIDIA to 525.105.17.

Aby zapoznać się z dołączonymi wersjami bibliotek, zobacz informacje o wersji dla określonej używanej wersji środowiska Databricks Runtime.

Uwaga

To oprogramowanie zawiera kod źródłowy dostarczony przez firmę NVIDIA Corporation. W szczególności w celu obsługi procesorów GPU usługa Azure Databricks zawiera kod z przykładów CUDA.

Umowa licencyjna użytkownika oprogramowania NVIDIA (EULA)

Po wybraniu wersji środowiska uruchomieniowego usługi Databricks z obsługą procesora GPU w usłudze Azure Databricks niejawnie zgadzasz się na warunki i postanowienia opisane w umowie EULA firmy NVIDIA w odniesieniu do bibliotek CUDA, cuDNN i Tesli oraz umowy licencyjnej użytkownika końcowego firmy NVIDIA (z uzupełnieniem NCCL) dla biblioteki NCCL.

Usługi kontenerów usługi Databricks na obliczeniach procesora GPU

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Usługi Kontenerów Databricks można używać w obliczeniach z procesorami GPU, aby tworzyć przenośne środowiska uczenia głębokiego z dostosowanymi bibliotekami. Aby uzyskać instrukcje, zobacz Dostosowywanie kontenerów za pomocą usługi Kontenera usługi Databricks.

Aby utworzyć niestandardowe obrazy dla obliczeń procesora GPU, musisz wybrać standardową wersję środowiska uruchomieniowego zamiast środowiska Databricks Runtime ML dla procesora GPU. Po wybraniu opcji Użyj własnego kontenera platformy Docker możesz wybrać środowisko obliczeniowe procesora GPU ze standardową wersją środowiska uruchomieniowego. Obrazy niestandardowe dla procesora GPU są oparte na oficjalnych kontenerach CUDA, które różnią się od środowiska Databricks Runtime ML dla procesora GPU.

Podczas tworzenia obrazów niestandardowych dla obliczeń procesora GPU nie można zmienić wersji sterownika NVIDIA, ponieważ musi być zgodna z wersją sterownika na maszynie hosta.

Usługa databricksruntimeDocker Hub zawiera przykładowe obrazy podstawowe z możliwością procesora GPU. Pliki Dockerfile używane do generowania tych obrazów znajdują się w przykładowym repozytorium GitHub kontenerów, które zawiera również szczegółowe informacje o tym, co udostępnia przykładowe obrazy i jak je dostosować.