MLOps на Snowflake Data Cloud

MLOps е непрекъснато развиваща се област и с нарастващия с всеки изминал ден избор от управлявани и родни в облака услуги за машинно обучение, може да бъде предизвикателство да се ориентирате в наличните опции. С наличието на множество управлявани и родни в облака услуги за машинно обучение е изключително важно да изберете правилната платформа за управление на тръбопроводи за машинно обучение и внедряване на обучени модели. Въпреки това, три важни точки на болка продължават да съществуват в пейзажа на MLOps:

  • Липса на лесен достъп до ценни данни на компанията,
  • необходимостта от бърза локална итерация на ML тръбопроводи
  • Липса на безпроблемен преход към облачната среда.

Тъй като Snowflake е мощен склад за данни и лекотата на използване на Snowpark, заедно те са силен кандидат за изграждане на сложни ML тръбопроводи. Ако все още не сте запознати със Snowpark, има много страхотни статии, представящи основните му концепции и как можете да го използвате за писане на код за наука за данни и машинно обучение (ML), напр. тук, тук или тук.

Има обаче поне няколко недостатъка на предложените в момента подходи, които все още не са разгледани:

  • Оркестрация на ML pipelines — в текущото състояние могат да се следват две стратегии:
  • използване на външна оркестраторска услуга или инструмент, като AzureML Pipelines или Apache Airflow за директно извикване на код на Snowpark
  • ръчно опаковане на кода на Snowpark в Python UDFs и използването им за изграждане на насочена ациклична графика (DAG) от стъпки на собствения механизъм на задачи на Snowflake

За съжаление нито един от тези методи не изглежда лишен от недостатъци — първият изисква допълнителни компоненти за планиране, които да бъдат включени в архитектурата, което я прави по-сложна и по-малко независима от платформата. Последният е по-малко удобен за потребителя, тъй като изисква не само разработване на код за обучение, но и дефиниране на Snowflake DAG на задачи с помощта на обикновен SQL или език за програмиране Terraform.

  • Управление на жизнения цикъл на модела на ML — няма налична автоматизация, която да улеснява популяризирането/разгръщането на конвейери за обучение между етапни/изпълними среди — т.е. разработка — тестване — производство. Това изисква сами да подготвите процесите на непрекъсната интеграция/непрекъснато обучение (CI/CT).
  • Стандартизация на кода и шаблони за проекти — в сегашното си състояние Snowpark не се предлага с вграден механизъм за структуриране на код, тестване на единици или автоматизирано генериране на документация.

Горният списък с предизвикателства ясно показва, че липсва интегрирането на средата Snowflake с MLOps рамка, като Kedro.

Днес с гордост обявяваме решение, което ще запълни тази празнина — приставката kedro-snowflake. В следващата публикация ще ви преведем през цялата платформа MLOps и внедряването на ML модел на Snowflake. Нека обаче първо да разгледаме какво представлява Kedro и след това да изградим ML тръбопровод в Kedro и да го изпълним в средата на Snowflake в 3 прости стъпки.

Kedro — MLOps Framework

Kedro е широко възприета рамка на Python с отворен код, която претендира да върне инженерството в света на науката за данни. Обосновката зад използването на Kedro като рамка за създаване на поддържаем и модулен код за обучение е в много аспекти, подобна на предпочитането на технологията Terraform пред собствения SDK на доставчика на облак за осигуряване на инфраструктура и може да бъде обобщена в следните точки:

  • стандартизиране на оформлението на ML проекта,
  • преносимост на ML тръбопроводи,
  • кодова база за повторно използване, модули или дори цели тръбопроводи,
  • по-бърз цикъл на разработка благодарение на възможността за стартиране/тестване на конвейери локално,
  • ясна и поддържаема кодова база без зависимости от специфични за облака API (като аналогия с доставчиците на Terraform) и разделяне на конфигурациите по време на изпълнение
  • мулти облачна готовност
  • поддръжка на куки за по-нататъшна автоматизация,
  • безпроблемна интеграция с механизъм за добавки с инструменти на трети страни като MLflow, pandas-profiling или Docker,
  • подходящ за лесна интеграция с CI/CD инструменти за истинско MLOps изживяване.

Ние от GetInData|Part of Xebia сме силни защитници на рамката Kedro като наша избрана технология за внедряване на стабилни и удобни за потребителя MLOps платформи на много облачни платформи. С нашите плъгини Kedro с отворен код можете да напишете своя тръбопроводен код и да се съсредоточите върху целевия модел. След това, с плъгините на Kedro, вие го разгръщате на всяка поддържана платформа (вижте: Изпълнявате Kedro… навсякъде? Тръбопроводи за машинно обучение на Kubeflow, Vertex AI, Azure и Airflow — GetInData), без да променяте кода , което прави локалните итерации бързи и преминава към облак – безпроблемно.

От май 2023 г. ние поддържаме:

Сега дойде времето за Снежинка...

Kedro-Snowflake плъгин зад кулисите

Kedro-snowflake е най-новият ни плъгин, който ви позволява да изпълнявате пълни конвейери на Kedro в Snowflake. В момента поддържа:

  • Kedro starter, за да ускорите бързо
  • автоматично създаване на съхранени процедури на Snowflake от възли на Kedro (използвайки Snowpark SDK)
  • превеждане на тръбопровода на Kedro в DAG за задачи на Snowflake
  • управление на тръбопровода Kedro изцяло в рамките на Snowflake, без външна система
  • използвайки официалния SnowparkTableDataSet на Kedro
  • автоматично съхраняване на резултатите от междинните данни като Преходни таблици (ако се използват DataFrames на Snowpark)

Основната идея на този плъгин е да програмно обхожда конвейер на Kedro и да превежда неговите възли в съответните съхранени процедури и в същото време да ги обгръща в задачи на Snowflake, като същевременно запазва зависимостите между възлите, за да формира точно същия конвейер DAG на страната на снежинката. Крайният резултат е Snowflake DAG от задачи като тази:

които съответстват на тръбопровода Kedro:

Той също така идва с вграден стартер за snowflights (порт на официалните космически полети, разширен с функции, свързани със Snowflake), който ще ви помогне да стартирате вашата Snowflake- базирани ML проекти за секунди.

Бърз старт — вашият ML тръбопровод в 3 стъпки с плъгина Kedro-Snowflake

Нека започнем със стартера Kedro снежни полети. Първо, подгответе вашата среда (т.е. предпочитаната от вас виртуална среда на Python). Първо, просто инсталирайте нашия плъгин kedro-snowlake:

pip install "kedro-snowflake>=0.1.2"

След това създайте първия си ML тръбопровод с помощта на Kedro и Snowlake. Стартерът ще ви преведе през конфигурацията на връзката на Snowlake, включително акаунта на Snowlake и подробностите за склада:

kedro new --starter=snowflights --checkout=0.1.2

След това стартирайте стартовия конвейер:

kedro snowflake run --wait-for-completion

Това е! Можете да видите изпълнението на конвейера на ML в потребителския интерфейс на Snowflake:

и в терминала:

Този стартер ще демонстрира интеграцията на Kedro-Snowflake, включително връзката със Snowflake, трансформиране на ML Pipeline в Kedro във формат, съвместим със Snowflake, и изпълнение на конвейера в средата на Snowflake. Чувствайте се свободни да изградите свой собствен тръбопровод въз основа на този стартер или от нулата с нашия плъгин. Вижте повече в следната документация на приставката: Документация на приставката Kedro Snowflake!

Също така ви препоръчваме нашия видео урок, в който Marcin Zabłocki показва как да стартирате ML pipeline на Snowflake.

Резюме

В тази кратка публикация в блога ви представихме най-новия ни плъгин kedro-snowflake. Благодарение на този плъгин можете да изградите вашите ML тръбопроводи в Kedro и да ги изпълните в мащабируема среда Snowflake в три прости стъпки. Очаквайте втората част на тази публикация в блога, в която ще представим цялата платформа MLOps и внедряването на ML модел с плъгина kedro-snowflake, който е основният компонент.

Ако искате да научите повече за плъгина Kedro-Snowflake или да го обсъдите с нашите експерти относно MLOps, запишете се за безплатна консултация.

Хареса ли ви нашата публикация? Ако искате повече за MLOps, не се колебайте да изтеглите нашата безплатна електронна книга „MLOps: Засилване на процеса на машинно обучение. Въведение във Vertex AI, Snowflake и dbt Cloud”.

Автори на блога: Marek Wiewiórka — архитект на големи данни

Marcin Zabłocki — MLOps архитект

Michał Bryś — инженер по машинно обучение и собственик на технически продукти

Първоначално публикувано на https://getindata.com.