Кратък преглед на тръбопроводите 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 лични проекти в мащабируем проект за машинно обучение, който може лесно да бъде разгърнат за решения в реалния свят
Кодиране на ниво нагоре
Благодарим ви, че сте част от нашата общност! Преди да тръгнеш:
- 👏 Аплодирайте за историята и следвайте автора 👉
- 📰 Вижте повече съдържание в Публикация за кодиране на ниво нагоре
- 🔔 Последвайте ни: Twitter | LinkedIn | Бюлетин
🚀👉 Присъединете се към колектива за таланти Level Up и намерете невероятна работа