Время прочтения: 4 мин.
Сегодня рассмотрим плагины Kedro, которые позволяют рассмотреть ml-алгоритм в графически-структурированном виде.
В прошлой части статьи мы рассмотрели создание pipeline для анализа данных с помощью ml-алгоритма. В этой части уделим внимание инструментам, которые упростят понимание в использовании и настройке вашего проекта. В рамках статьи будем ссылаться на код, представленный в репозитории.
В первую очередь, посмотрим на работу всего pipeline проекта, который реализовали в прошлой статье. Для этого необходимо установить пакет kedro-viz. После успешной установки, в командной строке запустим команду:
kedro viz
После запуска, kedro запустит локальный сервер и предложит перейти по следующему адресу:
http://127.0.0.1:4141/
Здесь мы можем увидеть все этапы проекта, где для каждого элемента pipeline представлена описательная информация. Для данных — это тип и физическое расположение. Для функций – это расположение в файле проекта, параметры, входные и выходные данные. Дополнительно можно просмотреть полный код функции, переключив ползунок «Show Code».
Также можно добавить в визуализацию отображение стадий (raw, intermediate, models и т.д) в рамках data engineering соглашения. Для этого необходимо отредактировать файл titanic\conf\base\catalog.yml, где добавим параметр «layer».
Таким образом, если после продолжительного перерыва вы решили вспомнить, что же происходит в данной папке с проектом или решили показать коллеге или Product Owner’у подход по работе с данными, то плагин viz как раз то, что вам нужно.
В kedro реализована надстройка над библиотекой mlflow, благодаря которой можно отслеживать значение метрик модели при различных значениях входных параметров. Для начала нам необходимо установить пакет kedro-mlflow. Далее добавим в исходный код логирование параметров:
\titanic\src\titanic\pipelines\data_science\nodes.py
import mlflow
from mlflow import sklearn
в функцию split_data:
mlflow.log_param("test_size", parameters["test_size"])
mlflow.log_param("random_state", parameters["random_state"])
mlflow.log_param("features", parameters["features"])
в функцию train_model:
mlflow.log_param("n_estimators", parameters["n_estimators"])
в функцию evaluate_model:
mlflow.log_metric(parameters["metric"], score)
И инициализируем mlflow в kedro:
kedro mlflow init
Таким образом, после каждого запуска pipeline (kedro run) будет осуществляться запись логируемых параметров, подробности можно найти в официальной документации.
Для просмотра результатов, при различных параметрах, запустим команду:
kedro mlflow ui
И перейдем по адресу:
http://127.0.0.1:5000
В появившемся окне, в левом верхнем углу перейдем во вкладку с именем проекта, где будет отображена вся информация по каждому запуску pipeline. Для более детального просмотра можно перейти по ссылке в столбце «Start Time».
Таким образом, мы можем отслеживать результат работы алгоритма на различных этапах взаимодействия с данными, в том числе различное состояние параметров, модели ml-алгоритма, версию git и т.д.
Следующий важный этап проектирования алгоритма – создание документации. Документация в Kedro формируется при помощи Sphinx. Для документирования методов и классов используются двойные кавычки, которые трижды дублируются в начале и конце описания метода. Для описания аргументов функций будем использовать следующие атрибуты:
:param [ParamName]: [ParamDescription] – для описания входных аргументов
:type [ParamName]: [ParamType] – указание типа входных аргументов
:return: [ReturnDescription] - для описания выходных данных
:rtype: [ReturnType] - указание типа выходных данных
:raises [ErrorType]: [ErrorDescription] – для описания исключений в методе
Для примера составим простое описание для пары методов из этапа предобработки данных
titanic\src\titanic\pipelines\data_processing\nodes.py:
Для метода cat_to_num:
"""
Convert categorical value to numeric
:param arr: array of string values
:type arr: numpy array
:return: dict of {srt: int} values
:rtype: dict
"""
Для метода preprocess_dataset:
"""
Label encoding for two columns "Sex" and "Embarked"
:param df: dataframe with ["Sex", "Embarked"] columns
:type df: pandas DataFrame
:return: dataframe with prepared columns
:rtype: pandas DataFrame
"""
Стоит отметить, что Sphinx чувствителен к пробелам после двоеточий, и пропуску строки к основному описанию метода.
Остается запустить команду:
kedro build-docs
Что создаст полный стек документации к вашему проекту в следующем виде:
Таким образом, для создания документации нужно лишь добавить «docstring» в методы проекта и вызвать команду «kedro build-docs», после чего сформируется файл index.html в директории titanic\docs\build\html с полной структурой проекта.
Как видим, с помощью простых манипуляций и вызова пары команд возможно представить сложную структуру проекта в подробном и наглядном виде. В статье затронули лишь малую часть функционала Kedro, в официальной документации вы найдете различные «трюки», которые помогут в разработке и поддержке Вашего проекта.