Вычислительные ресурсы с поддержкой GPU

Примечание.

Некоторые типы экземпляров с поддержкой GPU находятся в бета-версии и помечены как такие в раскрывающемся списке при выборе драйверов и рабочих типов во время создания вычислений.

Обзор

Azure Databricks поддерживает ускорение вычислений с помощью единиц обработки графики (GPU). В этой статье описывается создание вычислительных ресурсов с экземплярами с поддержкой GPU и описание драйверов и библиотек GPU, установленных на этих экземплярах.

Дополнительные сведения о глубоком обучении вычислительных ресурсов с поддержкой GPU см. в статье "Глубокое обучение".

Создание вычислений GPU

Создание вычислений GPU аналогично созданию любых вычислений. Учитывайте следующее:

  • Версия среды выполнения Databricks должна быть версией с поддержкой GPU, например среды выполнения 13.3 LTS ML (GPU, Scala 2.12.15, Spark 3.4.1)).
  • Тип рабочего процесса и тип драйвера должны быть типами экземпляров GPU.

Поддерживаемые типы экземпляров

Azure Databricks поддерживает следующие типы экземпляров:

  • Серия типов экземпляров NC — Standard_NC12, Standard_NC24.
  • Серия типов экземпляров NC версии 3: Standard_NC6s_v3, Standard_NC12s_v3, Standard_NC24s_v3
  • Серия типов экземпляров NC T4 версии 3 — Standard_NC4as_T4_v3, Standard_NC8as_T4_v3, Standard_NC16as_T4_v3, Standard_NC64as_T4_v3.
  • Серия типов экземпляров NC A100 версии 4: Standard_NC24ads_A100_v4, Standard_NC48ads_A100_v4, Standard_NC96ads_A100_v4
  • Серия типов экземпляров ND A100 версии 4: Standard_ND96asr_v4
  • Серия типов экземпляров NV A10 v5: Standard_NV36ads_A10_v5, Standard_NV36adms_A10_v5, Standard_NV72ads_A10_v5
    • Standard_NV72ads_A10_v5 несовместим с PyTorch 2.0+ и вызывает ошибку CUDA при выполнении нескольких рабочих нагрузок GPU. Так как Databricks Runtime ML 14.0 и выше предварительно устанавливается PyTorch 2.0+, мы рекомендуем использовать Databricks Runtime ML 13.x или вручную, pip install torch==1.13.1 если вы используете PyTorch на рабочих нагрузках с несколькими GPU.

Актуальный список поддерживаемых типов экземпляров GPU и доступных регионов см. в разделе Цены на Azure Databricks. Развертывание Azure Databricks должно находиться в поддерживаемом регионе для запуска вычислений с поддержкой GPU.

Планирование GPU

Databricks Runtime поддерживает планирование с поддержкой GPU из Apache Spark 3.0. Azure Databricks предварительно настраивает его на вычислительных ресурсах GPU.

Планирование GPU не включено в вычислительных ресурсах с одним узлом.

spark.task.resource.gpu.amount — это единственная конфигурация Spark, связанная с планированием с учетом GPU, которую вам может потребоваться изменить. Конфигурация по умолчанию использует один GPU для каждой задачи, что идеально подходит для распределенных рабочих нагрузок логического вывода и распределенного обучения, если вы используете все узлы GPU. Чтобы выполнить распределенное обучение по подмножествам узлов, что помогает сократить затраты на обмен данными во время распределенного обучения, Databricks рекомендует задать spark.task.resource.gpu.amount количество GPU на рабочий узел в конфигурации Вычислительной Spark.

Для задач 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").

Для выпусков Databricks Runtime ниже 7.0, чтобы избежать конфликтов между несколькими задачами Spark, пытающимися использовать один и тот же GPU, Azure Databricks автоматически настраивает вычислительные ресурсы GPU таким образом, чтобы на узел выполнялась не более одной задачи. Таким образом, задача может использовать все GPU на узле без конфликтов с другими задачами.

Драйвер NVIDIA GPU, CUDA и cuDNN

Azure Databricks устанавливает библиотеки и драйвер NVIDIA, требуемые для использования GPU в экземплярах драйвера и рабочей роли Spark.

  • CUDA Toolkit— установка в /usr/local/cuda.
  • cuDNN — NVIDIA CUDA Deep Neural Network Library.
  • NCCL — NVIDIA Collective Communications Library.

Версия драйвера NVIDIA включается 535.54.03, которая поддерживает CUDA 11.0. Для серии типов экземпляров NV A10 версии 5 включена 525.105.17версия драйвера NVIDIA.

Версии включенных библиотек см. в заметках о выпуск для конкретной версии Databricks Runtime, которую вы используете.

Примечание.

Это программное обеспечение содержит исходный код, предоставляемый корпорацией NVIDIA. В частности, для поддержки GPU Azure Databricks включает код из CUDA Samples.

Лицензионное соглашение с пользователем NVIDIA

При выборе версии среды выполнения Databricks с поддержкой GPU в Azure Databricks вы неявно согласны с условиями, описанными в NVIDIA EULA в отношении библиотек CUDA, cuDNN и Tesla, а также лицензионного соглашения NVIDIA (с дополнением NCCL) для библиотеки NCCL.

Службы контейнеров Databricks на вычислительных ресурсах GPU

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Службы контейнеров Databricks можно использовать для вычислений с графическими процессорами для создания переносимых сред глубокого обучения с настраиваемыми библиотеками. Инструкции см. в разделе "Настройка контейнеров с помощью службы контейнеров Databricks".

Чтобы создать пользовательские образы для вычислений GPU, необходимо выбрать стандартную версию среды выполнения вместо Databricks Runtime ML для GPU. Выбрав "Использовать собственный контейнер Docker", вы можете выбрать вычислительные ресурсы GPU со стандартной версией среды выполнения. Пользовательские образы для GPU основаны на официальных контейнерах CUDA, отличных от Databricks Runtime ML для GPU.

При создании пользовательских образов для вычислений GPU нельзя изменить версию драйвера NVIDIA, так как она должна соответствовать версии драйвера на хост-компьютере.

В databricksruntimeDocker Hub содержатся примеры базовых образов с поддержкой GPU. Файлы Dockerfile, используемые для создания этих образов, находятся в репозитории примеров контейнеров GitHub, где также есть подробная информация о том, что предоставляют примеры образов и как их настроить.