Поделиться через


Рекомендации по глубокому обучению в Azure Databricks

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

Databricks Mosaic AI предоставляет предварительно созданную инфраструктуру глубокого обучения с databricks Runtime для Машинное обучение, которая включает в себя наиболее распространенные библиотеки глубокого обучения, такие как TensorFlow, PyTorch и Keras. Также содержит встроенную, предварительно настроенную поддержку GPU, включая драйверы и вспомогательные библиотеки.

Databricks Runtime ML также включает все возможности рабочей области Azure Databricks, такие как создание и управление кластерами, управление библиотеками и средой, управление кодом с папками Databricks Git, поддержка автоматизации, включая Задания и API Databricks, а также интегрированный MLflow для отслеживания разработки моделей и развертывания моделей и обслуживания.

Управление ресурсами и средой

Azure Databricks помогает настраивать среду глубокого обучения и поддерживать согласование между пользователями.

Настройка среды разработки

С помощью Databricks Runtime можно настроить среду разработки на уровне записной книжки, кластера и задания.

  • Используйте библиотеки Python с областью действия записной книжки или библиотеки R с областью действия записной книжки , чтобы использовать определенный набор или версию библиотек, не затрагивая других пользователей кластера.
  • Установите библиотеки на уровне кластера, чтобы стандартизировать версии для команды или проекта.
  • Настройте задание Azure Databricks , чтобы убедиться, что повторяющаяся задача выполняется в согласованной, неизменной среде.

Использование политик кластера

Вы можете создать политики кластера, которые помогут специалистам по анализу данных выбрать нужный вариант, например, использовать кластер с одним узлом для разработки и использования кластера с автомасштабированием для больших заданий.

Рассмотрим gpu A100 для рабочих нагрузок глубокого обучения

Графические процессоры A100 являются эффективным выбором для многих задач глубокого обучения, таких как обучение и настройка больших языковых моделей, обработка естественного языка, обнаружение объектов и классификация и подсистемы рекомендаций.

  • Databricks поддерживает графические процессоры A100 во всех облаках. Полный список поддерживаемых типов GPU см. в разделе Поддерживаемые типы экземпляров.
  • 100 GPU обычно имеют ограниченную доступность. Обратитесь к поставщику облачных служб для выделения ресурсов или заранее рассмотрите возможность резервирования емкости.

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

Чтобы максимально использовать GPU для распределенного обучения и вывода, оптимизируйте их планирование. См. Планирование с учетом GPU.

Лучшие практики для загрузки данных

Облачное хранилище данных, обычно, не оптимизировано для ввода/вывода, что может быть сложной задачей для моделей глубокого обучения, требующих больших наборов данных. Среда выполнения Databricks ML включает Delta Lake и Mosaic Streaming для оптимизации пропускной способности данных в приложениях глубокого обучения.

Databricks рекомендует использовать таблицы Delta Lake для хранения данных. Delta Lake упрощает ETL и позволяет эффективно обращаться к данным. Особенно для изображений Delta Lake помогает оптимизировать прием как для обучения, так и вывода. В справочном решении для приложений с образами приведен пример оптимизации ETL для образов с использованием Delta Lake.

Databricks рекомендует потоковую передачу мозаики для загрузки данных на PyTorch или Mosaic Composer, особенно если она включает распределенные рабочие нагрузки. Предоставляемые API StreamingDataset и StreamingDataLoader помогают упростить обучение больших наборов данных при максимальной правильности, производительности, гибкости и простоте использования в распределенной среде. Дополнительные сведения см. в разделе "Загрузка данных с помощью потоковой передачи мозаики".

Рекомендации по обучению моделей глубокого обучения

Databricks рекомендует использовать Databricks Runtime для Машинное обучение и отслеживания MLflow и автологирования для всех обучающих моделей.

Начало работы с кластером с одним узлом

Кластер GPU с одним узлом, как правило, является самым быстрым и экономичным для разработки моделей глубокого обучения. Один узел с 4 графическими процессорами (GPU), скорее всего, будет быстрее для глубокого обучения, в котором 4 рабочих узла имеют 1 графический процессор. Это обусловлено тем, что распределенное обучение влечет за собой нагрузку на сеть.

Кластер с одним узлом является хорошим вариантом при быстрой, интерактивной разработке и при обучении моделей с данными малых и средних размеров. Если набор данных достаточно большой, что уменьшает скорость обучения на одном компьютере, рассмотрите возможность перехода на несколько GPU и даже распределенное вычисление.

Использование метрики TensorBoard и кластера для мониторинга процесса обучения

TensorBoard предустановлен в Databricks Runtime ML. Его можно использовать в записной книжке или на отдельной вкладке. Дополнительные сведения см. в разделе TensorBoard.

Метрики кластера доступны во всех средах выполнения Databricks. Вы можете проверить использование сети, процессора и памяти для проверки узких мест. Дополнительные сведения см . в метриках кластера.

Оптимизация производительности для глубокого обучения

Вы можете и должны использовать методы оптимизации производительности глубокого обучения для Databricks.

Ранняя остановка

Ранний останов отслеживает значение показателя, вычисляемого на валидационном наборе, и останавливает обучение, когда показатель перестает улучшаться. Это лучше, чем угадывать большое количество эпох для завершения. Каждая библиотека глубокого обучения предоставляет собственный API для ранней остановки; например, см. раздел API обратного вызова EarlyStopping для TensorFlow/Keras и для PyTorch Lightning. Пример записной книжки см . в примере записной книжки TensorFlow Keras.

Настройка размера пакета

Настройка размера пакета помогает оптимизировать использование GPU. Если размер пакета слишком мал, вычисления не могут полностью использовать возможности GPU. Метрики кластера можно использовать для просмотра метрик GPU.

Измените размер пакета вместе со скоростью обучения. Хорошее эмпирическое правило: если увеличить размер пакета на n, увеличивается скорость обучения на sqrt (n). При ручной настройке попробуйте изменить размер пакета с коэффициентом в 2 или 0,5. Затем продолжайте настройку для оптимизации производительности вручную или путем тестирования различных гиперпараметров с помощью автоматизированного средства, например Optuna.

Перенос обучения

С помощью передачи обучения вы начинаете с ранее обученной модели и изменяете ее в соответствии с требованиями вашего приложения. Передача обучения может значительно сократить время, необходимое для обучения и настройки новой модели. Дополнительные сведения и пример см. в разделе Конструирование признаков для передачи обучения.

Переход на распределенное обучение

Databricks Runtime ML включает TorchDistributor, DeepSpeed и Ray, чтобы упростить переход от одного узла к распределенному обучению.

ФакелDistributor

TorchDistributor — это модуль с открытым исходным кодом в PySpark, который упрощает распределенное обучение с помощью PyTorch в кластерах Spark, который позволяет запускать задания обучения PyTorch в качестве заданий Spark. См . распределенное обучение с помощью TorchDistributor.

Optuna

Optuna обеспечивает адаптивную настройку гиперпараметров для машинного обучения.

Рекомендации по выводу

В этом разделе содержатся общие советы по использованию моделей для вывода с Azure Databricks.

  • Чтобы снизить затраты, рассмотрим как ЦП, так и оптимизированные для вывода GPU, такие как NC T4_v3-серии. Четкой рекомендации не существует, так как наилучший выбор зависит от размера модели, объемов данных и других переменных.

  • Используйте MLflow, чтобы упростить развертывание и обслуживания моделей. MLflow может регистрировать в журнале любую модель глубокого обучения, в том числе пользовательские алгоритмы предварительной обработки и постобработки. модели в каталоге Unity или модели, зарегистрированные в реестре моделей рабочей области , можно развернуть для пакетного, потокового или интерактивного вывода.

Интернет-обслуживание

Лучшим вариантом для обслуживания с низкой задержкой является Интернет-обслуживание за REST API. Databricks предоставляет службу моделей для онлайн-вывода. Служба моделей предоставляет единый интерфейс для развертывания, управления и запроса моделей ИИ и поддерживает обслуживание следующих компонентов:

  • Настраиваемые модели. Это модели Python, упакованные в формате MLflow. Примеры включают scikit-learn, XGBoost, PyTorch и модели преобразователя распознавания лиц.
  • Современные открытые модели, доступные API-интерфейсами модели Foundation. Эти модели являются курируемыми архитектурами базовых моделей, поддерживающими оптимизированное вывод. Например, базовые модели, такие как Llama-2-70B-chat, BGE-Large и Mistral-7B, доступны для немедленного использования с ценами на токен . Для рабочих нагрузок, требующих гарантий производительности и настраиваемых вариантов модели, их можно развернуть с подготовленной пропускной способностью.
  • Внешние модели. Это модели, размещенные за пределами Databricks. Например, созданные модели ИИ, такие как, GPT-4 OpenAI, Anthropic в Клоде и других. Конечные точки, обслуживающие эти модели, могут централизованно управляться, и клиенты могут устанавливать ограничения скорости и элементы управления доступом для них.

Кроме того, MLflow предоставляет API для развертывания в различных управляемых службах для вывода через Интернет, а также API для создания контейнеров Docker для пользовательских решений обслуживания.

Другие распространенные управляемые службы для вывода в режиме подключения к сети содержат:

Вывод пакетной и потоковой передачи

Оценка пакетной и потоковой передачи поддерживает высокую пропускную способность, экономичную оценку с задержкой как минимум до минут. Дополнительные сведения см. в статье Развертывание моделей для пакетного вывода и прогнозирования.

  • Если вы ожидаете получить доступ к данным для прогнозирования более одного раза, рассмотрите возможность предварительно создать задачу для выполнения ETL данных в таблицу Delta Lake перед выполнением задачи прогнозирования. Таким образом, стоимость приема и подготовки данных распределяется по нескольким операциям чтения данных. Разделение предварительной обработки от вывода также позволяет выбрать другое оборудование для каждого задания для оптимизации затрат и производительности. Например, для вывода можно использовать ЦП для ETL и GPU.
  • Используйте функции Spark Pandas UDF для масштабирования вывода пакетной и потоковой передачи в кластере.