Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся советы по глубокому обучению в Azure Databricks и сведения о встроенных средствах и библиотеках, предназначенных для оптимизации рабочих нагрузок глубокого обучения, таких как:
- Дельта для загрузки данных
- Optuna для параллелизации обучения
- Pandas UDF для вывода
Azure Databricks предоставляет предварительно созданную инфраструктуру глубокого обучения с databricks Runtime для Машинное обучение, которая включает в себя наиболее распространенные библиотеки глубокого обучения, такие как TensorFlow, PyTorch и Keras. Также содержит встроенную, предварительно настроенную поддержку GPU, включая драйверы и вспомогательные библиотеки.
Databricks Runtime ML также включает все возможности рабочей области Azure Databricks, такие как создание кластеров и управление ими, управление библиотеками и средой, управление кодом с папками Databricks Git, поддержка автоматизации, включая Lakeflow Jobs и API, а также интегрированный MLflow для отслеживания разработки и развертывания и обслуживания моделей.
Управление ресурсами и средой
Azure Databricks помогает настраивать среду глубокого обучения и поддерживать согласование между пользователями.
Настройка среды разработки
С помощью Databricks Runtime можно настроить среду разработки на уровнях блокнота, кластера и задания.
- Используйте библиотеки Python с областью действия записной книжки или библиотеки R с областью действия записной книжки , чтобы использовать определенный набор или версию библиотек, не затрагивая других пользователей кластера.
- Установите библиотеки на уровне кластера, чтобы стандартизировать версии для команды или проекта.
- Настройте задание Azure Databricks , чтобы убедиться, что повторяющаяся задача выполняется в согласованной, неизменной среде.
Использование политик кластера
Вы можете создать политики кластера, которые помогут специалистам по анализу данных выбрать нужный вариант, например, использовать кластер с одним узлом для разработки и использования кластера с автомасштабированием для больших заданий.
Рассмотрим gpu A100 для рабочих нагрузок глубокого обучения
Графические процессоры A100 являются эффективным выбором для многих задач глубокого обучения, таких как обучение и настройка больших языковых моделей, обработка естественного языка, обнаружение объектов и классификация и подсистемы рекомендаций.
- Databricks поддерживает графические процессоры A100 во всех облаках. Полный список поддерживаемых типов GPU см. в разделе Поддерживаемые типы экземпляров.
- A100 GPU обычно имеют ограниченную доступность. Обратитесь к поставщику облачных служб для выделения ресурсов или заранее рассмотрите возможность резервирования емкости.
Планирование GPU
Чтобы максимально использовать GPU для распределенного обучения и вывода, оптимизируйте их планирование. См. Планирование с учетом GPU.
Лучшие практики для загрузки данных
Облачное хранилище данных, обычно, не оптимизировано для ввода/вывода, что может быть сложной задачей для моделей глубокого обучения, требующих больших наборов данных. Databricks Runtime ML включает Delta Lake для оптимизации пропускной способности данных для приложений глубокого обучения.
Databricks рекомендует использовать таблицы Delta Lake для хранения данных. Delta Lake упрощает ETL и позволяет эффективно обращаться к данным. Особенно для изображений Delta Lake помогает оптимизировать прием как для обучения, так и для вывода. В справочном решении для приложений с образами приведен пример оптимизации ETL для образов с использованием Delta Lake.
Для очень больших наборов данных, которые не соответствуют памяти, используйте подходы потоковой передачи:
- PyTorch IterableDataset для пользовательской логики потоковой передачи.
- Наборы данных Hugging Face с потоковой передачей для наборов данных, размещенных на хабе или в томах.
- Ray Data для распределенной пакетной обработки данных.
Рекомендации по обучению моделей глубокого обучения
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, чтобы упростить переход от одного узла к распределенному обучению.
Распространитель факелов
TorchDistributor — это модуль с открытым исходным кодом в PySpark, который упрощает распределенное обучение с помощью PyTorch в кластерах Spark, который позволяет запускать задания обучения PyTorch в качестве заданий Spark. См. распределенное обучение с помощью TorchDistributor.
Optuna
Optuna обеспечивает адаптивную настройку гиперпараметров для машинного обучения.
Лучшие практики для введения выводов
В этом разделе содержатся общие советы по использованию моделей для вывода с Azure Databricks.
- Чтобы минимизировать затраты, рассмотрите как ЦП, так и оптимизированные для инференса GPU, такие как NC T4_v3-серии. Четкой рекомендации не существует, так как наилучший выбор зависит от размера модели, объемов данных и других переменных.
- Используйте MLflow, чтобы упростить развертывание и обслуживания моделей. MLflow может регистрировать в журнале любую модель глубокого обучения, в том числе пользовательские алгоритмы предварительной обработки и постобработки. Модели в Unity Catalog или модели, зарегистрированные в Workspace Model Registry, можно развернуть для пакетного, потокового или интерактивного вывода.
Интернет-обслуживание
Лучшим вариантом для обслуживания с низкой задержкой является онлайн-сервис через REST API. Databricks предоставляет службу моделей для онлайн-вывода. Служба моделей предоставляет единый интерфейс для развертывания, управления и запроса моделей ИИ и поддерживает обслуживание следующих компонентов:
- Настраиваемые модели. Это модели Python, упакованные в формате MLflow. Примеры включают scikit-learn, XGBoost, PyTorch и модели трансформеров от Hugging Face.
- Современные открытые модели, предоставляемые API интерфейсами Foundation Model. Эти модели представляют собой подобранные архитектуры базовых моделей с оптимизированным выводом данных. Например, базовые модели, такие как Meta-Llama-3.3-70B-Instruct, GTE-Large и Gemma-3-12B, доступны для мгновенного использования с оплатой за каждый токен. Для рабочих нагрузок, требующих гарантий производительности и настраиваемых вариантов модели, их можно развернуть с подготовленной пропускной способностью.
- Внешние модели. Это модели, размещенные за пределами Databricks. Например, генеративные модели ИИ, такие как GPT-4 от OpenAI, Claude от Anthropic, и другие. Конечные точки, обслуживающие эти модели, могут централизованно управляться, и клиенты могут устанавливать ограничения скорости и элементы управления доступом для них.
Кроме того, MLflow предоставляет API для развертывания в различных управляемых сервисах для онлайн-вычислений, а также API для создания контейнеров Docker для кастомных решений сервиса.
Другие распространенные управляемые службы для онлайн-инференции включают:
Пакетная и поточная интерференция
Оценка в пакетном и потоковом режимах поддерживает высокую пропускную способность и низкую стоимость при задержках всего до нескольких минут. Дополнительные сведения см. в статье Развертывание моделей для пакетного вывода и прогнозирования.
- Если вы ожидаете получить доступ к данным для прогнозирования более одного раза, рассмотрите возможность предварительно создать задачу для выполнения ETL данных в таблицу Delta Lake перед выполнением задачи прогнозирования. Таким образом, стоимость приема и подготовки данных распределяется по нескольким операциям чтения данных. Разделение предварительной обработки от вывода также позволяет выбрать другое оборудование для каждого задания для оптимизации затрат и производительности. Например, можно использовать ЦП для ETL и GPU для вывода.
- Используйте функции Spark Pandas UDF для масштабирования пакетной и потоковой инференции в кластере.
- При логировании модели из Azure Databricks, MLflow автоматически предоставляет код для вывода для применения модели в качестве функции pandas UDF.
- Вы также можете оптимизировать конвейер вывода дальше, особенно для больших моделей глубокого обучения. См. справочное решение для ETL изображений в качестве примера.