Как автоматизировать машинное обучение на кластерах больших данных SQL Server 2019
В этой статье мы рассмотрим, как использовать автоматическое машинное обучение (AutoML) для создания новых моделей машинного обучения для ваших данных в кластерах больших данных SQL Server 2019.
Кластеры больших данных SQL Server 2019 позволяют использовать программное обеспечение по вашему выбору для подгонки моделей машинного обучения к большим данным и использовать эти модели для выполнения скоринга. Фактически, Apache SparkTM, популярная платформа больших данных с открытым исходным кодом, теперь встроена! Apache SparkTM включает в себя библиотеку машинного обучения MLlib, а сообщество разработчиков открытого исходного кода разработало множество дополнительных пакетов, которые интегрируются и расширяют Apache SparkTM и MLlib.
Автоматизированное машинное обучение
Выбор и настройка моделей машинного обучения вручную требует знакомства с различными типами моделей и может быть трудоемким и занимать много времени. В последнее время появилось программное обеспечение для автоматизации этого процесса, освобождающее как начинающих, так и опытных специалистов в области данных и инженеров ML от значительной части бремени, возникающего при выборе и настройке моделей вручную.
API-интерфейсы AutoML с открытым исходным кодом H2O
H2O предоставляет популярное программное обеспечение с открытым исходным кодом для науки о данных и машинного обучения больших данных, включая интеграцию Apache SparkTM. Он предоставляет два класса Python с открытым исходным кодом AutoML: h2o.automl.H2OAutoML и pysparkling.ml.H2OAutoML. Оба API используют одинаковые базовые реализации алгоритма, однако последний следует соглашениям библиотеки MLlib Apache Spark и позволяет создавать конвейеры машинного обучения, которые включают в себя преобразователи MLlib. Мы сосредоточимся на последнем API в этом посте.
H2OAutoML поддерживает классификацию и регрессию. Модели ML, построенные и настроенные H2OAutoML, включают в себя случайные леса, машины повышения градиента, глубокие нейронные сети, обобщенные линейные модели и составные ансамбли.
H2OAutoML может автоматически разбивать данные обучения на структуры обучения, проверки и таблицы лидеров. API h2o.automl.H2OAutoML также позволяет указывать эти структурывручную, что полезно, когда задача состоит в прогнозировании будущего с использованием модели, обученной на исторических данных.
Модели, созданные H2OAutoML, можно сохранить на диске, использовать для прогнозирования / оценки в кластере Apache SparkTM, использовать в локальном режиме в Apache SparkTM, работающем на одном узле, или использовать на виртуальной машине Java (JVM) с необходимыми библиотеками на CLASSPATH. Эти параметры позволяют выполнять пакетную оценку и оценку в реальном времени в кластере больших данных SQL Server 2019 в Apache SparkTM, в хранимой процедуре Transact-SQL или в виде приложения.
Запуск блокнотов PySpark3 в Azure Data Studio
Код, обсуждаемый в этом блоге, доступен в виде блокнота Jupyter, написанного для ядра PySpark3. Теперь вы можете запускать записные книжки Apache SparkTM в Azure Data Studio, подключенной к кластеру больших данных SQL Server 2019, как описано в этом практическом руководстве.
Прогноз мощности электростанции
Давайте рассмотрим наш пример ноутбука Jupyter, в котором показано, как заказчик, использующий электростанцию, может использовать преимущества H20 и AutoML в Apache SparkTM для прогнозирования производительности электростанции. Этот пример основан на сообщении в блоге H20.
Первые ячейки блокнота устанавливают параметры Apache SparkTM и устанавливают пакет H2O PySparkling, если он еще не установлен; этот пакет предоставляет класс pysparkling.ml.H2OAutoML.
Затем код записной книжки загружает файл CSV, содержащий данные, и копирует файл в HDFS, если его еще нет.
Запуск H2OContext.getOrCreate запускает движок H20.
Затем блокнот использует Apache SparkTM для чтения данных из HDFS и случайного разделения их на наборы обучения и прогнозирования/тестирования.
На следующем снимке экрана показано, как легко вызвать автоматическое машинное обучение:
Здесь вы определяете конвейер моделирования, подгоняете его к данным обучения и используете его для генерации прогнозов на тестовых данных. В нашем примере мы устанавливаем maxModels = 2, что приводит к двум древовидным моделям и двум (одинаковым) сложенным ансамблевым моделям. Этого достаточно для демонстрационных целей, но на практике вы должны позволить H2OAutoML изучить больше моделей для достижения наилучших возможных метрик прогнозирования. Если вы просто опустите аргумент maxModels, H2OAutoML будет исследовать модели с максимальным значением maxRuntimeSecs, которое по умолчанию составляет 3600 секунд (1 час).
Наш код следует стандартному шаблону использования библиотеки Apache SparkTM MLlib, поскольку класс pysparkling.ml.H2OAutoML наследуется от pyspark.ml.wrapper.JavaEstimator.
Обратите внимание, что мы включили Apache SparkTM SQLTransformer в наш конвейер, показывая, что стандартный преобразователь Spark MLlib можно использовать с оценщиком pysparkling.ml.H2OAutoML в конвейере Apache SparkTM MLlib. Во время обучения и подсчета этот трансформатор пропускает любые строки, у которых значение температуры по Цельсию меньше или равно 10.
Вы можете увидеть обобщение производительности нашей модели, взглянув на таблицу лидеров. Производительность обобщения, которую мы получаем для прогнозов на удерживаемых данных, должна быть аналогична производительности таблицы лидеров. Вы можете использовать класс RegressionEvaluator в Apache Spark для вычисления таких показателей, как средняя абсолютная ошибка (MAE). Как и ожидалось, MAE для прогнозов на удерживаемых данных аналогичен MAE таблицы лидеров, и обычно составляет от 2,3 до 2,5.
Масштабирование и мониторинг больших данных в кластерах больших данных SQL Server 2019
SQL Server 2019 позволяет не только автоматически выбирать и настраивать модели машинного обучения, но и легко масштабировать и отслеживать кластер больших данных.
Масштабирование до больших данных
Используя большие кластеры данных SQL Server 2019, можно использовать большие объемы вычислительных ресурсов и ресурсов памяти для быстрой и эффективной обработки данных в масштабе. Для масштабирования больших данных у вас есть возможность настроить следующие параметры:
- Количество и размер узлов в кластере
- Количество стоек Apache SparkTM
- Планировщик памяти YARN и ядра
- Память драйвера и исполнителя Apache SparkTM, количество ядер и количество исполнителей на модуль
- Тайм-аут Livy
Мониторинг и диагностика
Кластеры больших данных SQL Server 2019 включают мощные инструменты для мониторинга и диагностики. Образец записной книжки содержит инструкции для доступа к следующим графическим пользовательским интерфейсам для мониторинга, управления и устранения неполадок в Apache SparkTM:
YARN UI
- Показывает доступную и используемую память и виртуальные ядра в кластере Apache SparkTM
- Формирует списки запущенных и заполненных приложений Apache SparkTM
- Предоставляет ссылки на интерфейс Apache SparkTM для запуска приложений и Spark History для завершенных приложений.
- Позволяет завершать работу приложений
Apache SparkTM UI
- Предоставляет подробную информацию о запуске приложений Apache SparkTM
Apache SparkTM History
- Предоставляет подробную информацию о завершенных приложениях Apache SparkTM
- Включает новую доступную диагностику Microsoft для приложений Apache SparkTM
Н2О Flow UI
- Мониторит ход работ H2O и состояния движка
Заключение
В этой записи блога вы узнали, что SQL Server получил новую мощную возможность в предварительном просмотре 2019 года, и научились запускать рабочие нагрузки машинного обучения для больших данных с помощью встроенного Apache SparkTM с возможностью использования дополнительных пакетов вашего выбирая такие, как автоматизированное программное обеспечение машинного обучения H2O. Мы ознакомились с примером блокнота Apache SparkTM для автоматического машинного обучения, которое можно запустить в Azure Data Studio на кластере больших данных SQL Server 2019. И вы уже видели, как вы можете масштабировать ресурсы, такие как узлы, ядра и память, и контролировать приложения Apache SparkTM с помощью встроенных графических пользовательских интерфейсов.