Кратък преглед на тръбопроводите Kedro, Azure Machine Learning и Scikit-Learn

Не ме разбирайте погрешно; Jupyter Notebooks (и като разширение Databricks Notebooks) са страхотни за извършване на първоначален проучвателен анализ на данни, изследване на производителността на модела и тестване на първоначални ETL задачи. Въпреки това, разчитането само на преносими компютри за обучение и внедряване на модели за машинно обучение ограничава възпроизводимостта и стандартизацията. Трудно е да грабнеш тефтера с jupyter на някой друг и да започнеш веднага!

И така, какво да правим за прехода на Jupyter Notebook „Explorations“ към повторяеми, стандартизирани конвейери?

Имаме много опции за превод на кода, първоначално разработен в преносими компютри, в набор от стандартизирани конвейери. Те могат да включват опции, които са специфични за библиотека за машинно обучение (напр. scikit-learn, Keras и др.), специфични за облачен доставчик (напр. Azure Machine learning или AWS Sagemaker) или в повечето библиотеки и облаци (напр. Kedro)

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

Казано по-просто, тръбопроводите позволяват работата ви да се разшири отвъд личните проекти и да се превърне в нещо, което може бързо да бъде споделено, съвместно изградено и лесно разгърнато. Някои специфични характеристики на тръбопроводите:

  • По-лесен контрол на източника:Разбиването на вашия монолитен бележник jupyter на смилаема подгрупа от файлове, класове и обекти на Python ви позволява да извършвате по-добър контрол на източника (Github, Azure DevOps, AWS CodeCommit и др.) и да проследявате промените
  • Модулен код:Разбиването на вашия монолитен преносим компютър jupyter на отделни файлове и класове на Python също ви позволява лесно да използвате повторно компоненти от предишни конвейери, вместо да преработвате друг проект за машинно обучение от нулата
  • По-лесно внедряване:Машинното обучение не свършва с висока производителност. Завършва с изводи, внедрени в уеб приложение, прозрения за важността на функциите за стимулиране на по-добри бизнес решения и решения за мащабируемост, за да се даде възможност за генериране на прозрения за производствени данни. Всичко това може да бъде рационализирано с тръбопроводи.

Преглед на избрани тръбопроводни решения за машинно обучение

Кедро

  • Същността:Python рамка с отворен код, която осигурява структура за изпълнение на конвейери, организиране на данни и рационализиране на избора на параметри. Бонус: Лесно визуализиране на тръбопроводните потоци с Kedro-Viz
  • Плюсове:Използваем във всички библиотеки за машинно обучение (които използват Python) и облачни платформи
  • Недостатъци:Може да бъде малко крива на обучение за случаи на напреднала употреба
  • Как да започнете:Вижте документите и примерен канал за класификация по-долу


Машинно обучение на Azure (Или други облачни PaaS решения)

  • Същността:Azure предлага различни нива на услуги за машинно обучение, вариращи от безкодиране до нискокодиране до управлявани изчислителни инстанции; Дизайнер за машинно обучение на Azureпредлага баланс между модули с нисък код / ​​без код с персонализирани блокове на Python или SQL код
  • Плюсове:Това предлага широк набор от инструменти (отвъд тръбопроводите) и позволява рационализирана интеграция с други облачни ресурси
  • Недостатъци:Това свързва вашето решение за машинно обучение с конкретен доставчик на облак и може да стане скъпо, ако се мащабира неправилно
  • Как да започнете:Регистрирайте се за безплатен акаунт в Azure тук, за да започнете. Вижте моето ръководство за машинно обучение на Azure по-долу:


Scikit-Learn (Или други конвейери, специфични за рамка)

  • Същността:Scikit-Learn предлага тръбопроводи в своята библиотека с отворен код. Това позволява на потребителите просто да съчетаят предварителна обработка, обучение и точкуване в рамките на един конвейер. („Пример тук“)
  • Плюсове:Вградените конвейери на Scikit-Learn са лесни за научаване и използване. Scikit-learn се използва широко, така че споделянето и внедряването с scikit-learn няма да бъде голям проблем
  • Недостатъци:Тръбопроводите на Scikit-Learn също са по-скоро зависими от моделите за изграждане в Scikit-Learn. Това може да се реши с някои заобиколни решения („Връзка към пример“)
  • Как да започнете:Този пример за Medium е добра отправна точка:


Допълнителни съображения за Kedro

Възли и тръбопроводи

Kedro използва страхотно възли и тръбопроводи, за да раздели дискретни функции за машинно обучение и да ги свърже заедно в конвейер („Kedro има добър урок за здравей, свят и по-подробен урок за документите“)

Възли:Възлите са отделна част от конвейер, състоящ се от функция, входове и изходи. Вижте по-долу за прост пример:

Това ви позволява да създавате конкретни действия в конвейер (като разделяне на данни), които могат лесно да бъдат възпроизведени за други проекти за машинно обучение. Входните данни в примера са рамка от данни на pandas за разделяне на данни и речник на параметрите на опциите за разделяне (повече за това скоро). Като цяло, това свежда до минимум ръчното усилие за промяна на параметри и функции в целия ноутбук jupyter.

Тръбопроводи:Тръбопроводите свързват възли, за да позволят на данните лесно да преминават през множество функции. Вижте по-долу за пример.

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

Каталог с данни и параметри

Но как се представят изходните данни и параметрите?

Всички данни са представени в yaml файл с каталог на данни и всички параметри са заснети в техния представителен yaml файл за конфигурация на тръбопровода

Каталог с данни:Този yaml файл се използва за обозначаване на входните имена, използвани във файл за конвейер. Ето един пример по-долу:

Тук виждате, че наборът от данни (класификация на гъби) се съхранява в междинни части на конвейера като .csv файл. Чрез стартиране на конвейера .csv файловете се записват в пътя на директорията (стандартен път на директория, използван за всички модели на Kedro). Това позволява на всеки да клонира хранилище и да стартира конвейер, без да намира файлове и да променя имена на директории.

Параметри:Вместо да крие параметри във функции или речник на параметри в бележник на jupyter, Kedro има yaml файл за всеки тръбопровод, за да съхранява параметрите на тръбопровода. Вижте по-долу например:

Всички тези параметри могат лесно да бъдат посочени от конвейер. Това рационализира използването на специфични параметри за конвейер за машинно обучение.

Има много повече за Kedro, включително Kedro-Viz. „Определено вижте документите“.

Като цяло конвейерите могат да трансформират ad hoc лични проекти в мащабируем проект за машинно обучение, който може лесно да бъде разгърнат за решения в реалния свят

Кодиране на ниво нагоре

Благодарим ви, че сте част от нашата общност! Преди да тръгнеш:

🚀👉 Присъединете се към колектива за таланти Level Up и намерете невероятна работа