Машинное обучение (МО) изменило способы анализа и интерпретации данных компаниями. Тем не менее, внедрение моделей ML остается проблемой. По мере роста наборов данных и развития сред непрерывная интеграция/непрерывное развертывание (CI/CD) становится незаменимой. В этой статье мы рассмотрим созданную мной демонстрацию, демонстрирующую, как реализовать CI/CD для рабочего процесса машинного обучения с помощью Snowflake.

👩‍💻 Кому следует прочитать эту статью?

Эта статья предназначена для энтузиастов обработки данных, специалистов по машинному обучению и технических руководителей бизнеса, стремящихся оптимизировать операции машинного обучения в Snowflake.

🌟 Узнайте, как:

  • Овладейте искусством непрерывной интеграции и непрерывного развертывания машинного обучения в Snowflake.
  • Узнайте о роли Snowpark и Snowpark ML в оптимизации процессов машинного обучения.
  • Автоматизируйте рабочий процесс машинного обучения с помощью задач и потоков Snowflake.

Обзор:

  1. Используемые технологии
  2. Выделять
  3. Схема системы
  4. Пошаговое руководство
  5. Заключение

Код Github: Нажмите здесь

1. Используемые технологии

Снежинка

Snowflake — это облачная платформа данных, которая предлагает хранилища данных, озера данных, инженерию данных, науку о данных и многое другое. Беспрепятственная интеграция данных, встроенная поддержка разнообразных данных и эластичные вычисления делают его отличным выбором для нашего конвейера ML CI/CD.

В Snowflake есть два важнейших инструмента машинного обучения — Snowpark и Snowpark ML.

Сноупарк

Snowpark — это библиотека, предоставляющая API для запроса и обработки данных внутри Snowflake. Он работает по принципам ленивого выполнения, как Spark. Вы можете использовать локальные IDE, такие как Jupyter или VSCode, для написания и отладки программ Snowpark.

Для рабочих нагрузок Data Science вы можете выполнять предварительную обработку и разработку функций с помощью API Snowpark. Самое приятное то, что, хотя код пишется на вашем локальном компьютере, все его выполнение происходит в виртуальных хранилищах Snowflake с использованием вычислений с понижением уровня. Никаких дополнительных вычислительных ресурсов, настройки или обслуживания не требуется.

Упростите «вычислительные вычисления»:

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

Сноупарк МЛ

Snowpark ML предлагает набор API-интерфейсов, адаптированных для всего жизненного цикла машинного обучения. В рамках Snowflake он обеспечивает плавную предварительную обработку данных, обучение модели и развертывание. Его сила заключается в его способности выполнять задачи прямо внутри Snowflake с использованием вычислений с выталкиванием вниз (представьте, что вы пишете строку кода, которая отправляется в Snowflake и выполняется распределенным образом на многокластерном вычислительном механизме), обеспечивая оптимальную производительность и масштабируемость. и управление. Для поклонников Python Snowflake-ml объединяет знакомые библиотеки, такие как scikit-learn и xgboost, что делает рабочие процессы машинного обучения более интуитивно понятными.

Хранимые процедуры (SPROC) для разработки функций

Хранимые процедуры в Snowflake — это благо для разработки функций. Теперь вы можете писать код Pandas DataFrame/Snowpark DataFrame непосредственно внутри хранимой процедуры, которая выполняется непосредственно в Snowflake. Чтобы запланировать выполнение этих хранимых процедур, вы используете задачи.

Пользовательские функции (UDF) для вывода

Python UDF — это определяемая пользователем функция Snowflake, которая позволяет пользователю писать код Python и вызывать его внутри Snowflake, как если бы это была обычная функция SQL.

Пользовательские функции Python могут содержать новый код и вызовы существующих пакетов, что обеспечивает гибкость и возможность повторного использования кода. Это означает, что пользователи могут использовать Snowpark-ML для обучения модели машинного обучения и развертывания модели в Snowflake с помощью UDF.

Партнерство Snowflake с Anaconda позволяет пользователям использовать сторонние пакеты в UDF-файлах Python, а Anaconda обрабатывает все автоматически, например выполняет управление зависимостями пакетов.

Задания снежинки

Задачи Snowflake — это автоматизированные запланированные единицы работы в Snowflake. Они имеют решающее значение для организации сложных рабочих процессов, особенно в машинном обучении, где часто необходимо упорядочить такие задачи, как прием данных, преобразование, обучение и проверка. Задачи можно настроить на запуск через определенные промежутки времени или на запуск по определенным событиям, гарантируя, что ваши конвейеры машинного обучения останутся гибкими и отзывчивыми.

Снежиночные ручьи

Snowflake Streams позволяет отслеживать изменения данных в таблицах с течением времени. В контексте ОД это имеет решающее значение. По мере поступления новых данных в Snowflake потоки могут отслеживать эти изменения, обеспечивая бесперебойную пакетную обработку этих новых данных. Это гарантирует, что вывод модели происходит на основе самых последних данных, приращенных к последней временной метке вывода.

Действия на Гитхабе

GitHub Actions, платформа CI/CD, интегрированная в GitHub, автоматизирует рабочие процессы, запускаемые событиями репозитория. В проектах машинного обучения на GitHub действия облегчают автоматизированные задачи, такие как обучение и развертывание модели. В этой демонстрации GitHub Actions взаимодействует со Snowflake для развертывания конвейера Feature Engineering, задач вывода модели и потоков данных для непрерывной обработки данных и вывода.

2. Основной момент: использование Snowflake-ML в нашем рабочем процессе.

Для проектирования функций незаменимы функции предварительной обработки Snowpark ML. Благодаря движку SQL Snowflake они превосходно справляются с распределенным многоузловым выполнением, избавляя от беспокойства по поводу ограничений памяти или чрезмерных вычислительных затрат. Обучение моделей было интегрировано непосредственно в Snowflake с использованием алгоритмов из таких уважаемых библиотек с открытым исходным кодом, как Scikit-Learn и XGBoost. Весь процесс упрощен, эффективен и безопасен, что делает Snowflake-ML непревзойденным решением для предприятий, стремящихся объединить управление данными с машинным обучением.

3. Схема системы

4. Пошаговое руководство по ML CI/CD в Snowflake

Шаг 1. Настройка среды снежинки

Что: Инициировать стабильное соединение с хранилищем данных Snowflake и установить доступ к важным базам данных и схемам.
Почему:Надежная среда обеспечивает плавное взаимодействие между различными компонентами и обеспечивает прочная основа для всех последующих операций.

Шаг 2. Загрузка данных в Snowflake

Что:Заполните среду Snowflake, импортировав данные из назначенной папки.
Почему:Качество модели зависит от ее данных. Загрузка соответствующих наборов данных в Snowflake гарантирует безопасную и масштабируемую обработку данных.

Шаг 3. Подготовка данных для обучения модели с использованием Snowflake-ML

Что? Используйте вычислительные возможности Snowpark для предварительной обработки данных и подготовки их к процессам машинного обучения. Snowpark гарантирует, что мы перенесем все вычисления и используем масштабируемую распределенную вычислительную инфраструктуру Snowflake.
Почему: Snowpark дает нам возможность проводить очистку данных и разработку функций в Snowflake, используя переносные вычисления. Ваш код выполняется в распределенной среде Snowflake, что обеспечивает максимальную эффективность и масштабируемость.

Шаг 4. Обучение и развертывание модели машинного обучения с использованием Snowflake-ML

Что? После того, как данные подготовлены, приступайте к обучению модели машинного обучения с последующим ее развертыванием в соответствии с требованиями. Мы используем библиотеку Snowflake-ML для обучения модели непосредственно на таблицах в Snowflake. Затем мы создаем UDF для будущего вывода модели.
Почему: Обучение моделей ML с помощью Snowflake-ML исключительно удобно и масштабируемо. С помощью библиотеки мы обучаем модели на данных, находящихся в таблицах Snowflake, даже не перемещая данные, обеспечивая безопасность и позволяя проводить обучение на обширных наборах данных. После обучения модели мы развертываем ее, создавая UDF.

Шаг 5. Создание хранимой процедуры в Snowflake

Что: Создайте в Snowflake хранимую процедуру, предназначенную для обработки входящих данных.
Почему: Хранимые процедуры превосходно справляются с пакетной обработкой, эффективно обрабатывая периодические операции с данными. По мере поступления новых потоков данных процедура обеспечивает систематическую обработку, гарантируя готовность данных для последующего прогнозного анализа.

Шаг 6. Организация рабочего процесса машинного обучения

Что: Интегрируйте задачи и потоки Snowflake для автоматизации всей последовательности машинного обучения.
Почему:Автоматизация обеспечивает реагирование на входящие данные в режиме реального времени. Хотя и задачи, и потоки способствуют автоматизации, задачи управляют запланированными операциями, гарантируя, что такие задачи, как прием данных и вывод моделей, выполняются через заранее определенные интервалы. Напротив, потоки отслеживают изменения данных, гарантируя, что новые дополнительные данные будут использоваться для вывода по мере их поступления. Такая синергия обеспечивает гибкость и поддерживает процесс машинного обучения в состоянии постоянного обновления.

5. Вывод

Объединение CI/CD с машинным обучением с помощью Snowflake предлагает оптимизированный подход к обучению, развертыванию и обновлению моделей машинного обучения. Наша демонстрация демонстрирует методичное, но эффективное объединение этих доменов, обеспечивающее максимальную производительность при минимальном ручном контроле. Поскольку предприятия все больше полагаются на аналитику, основанную на данных, такие устойчивые автоматизированные решения становятся квинтэссенцией.

Хотите погрузиться глубже? Посетите демо-репозиторий на GitHub, чтобы получить полное представление о коде и процессах!

Ссылка на Github:

https://github.com/Snowflake-Labs/snowpark-python-demos/tree/main/CI:CD%20for%20Machine%20Learning%20using%20GitHub%20Actions#cicd-for-machine-learning-within-snowflake