Мнение

Выполнение машинного обучения - это направленный ациклический граф

Выполнение машинного обучения не следует рассматривать как конвейер.

Продолжая разрабатывать операции машинного обучения (MLOps) , нам нужно рассматривать процесс разработки и развертывания машинного обучения (ML) как направленный ациклический граф (DAG).

DAG - страшная аббревиатура, как и LTSM, DNN, обратное распространение, GAN, преобразователь и многие другие.

Я считаю, что использовать «pipeline» неправильно.

Проблема с «pipeline» в том, что это сленг. Но, что еще хуже, это означает линейный процесс шагов.

Уверяю вас, человеческий мозг - это не «конвейер».

Примечание. Я не могу представить себе млекопитающих как имеющих «трубопровод». Есть ли у некоторых насекомых и динозавров трубопровод ганглиев?

Пожалуй, самое ужасное, что нет глубокой математической теории и нет сопутствующих алгоритмов для «конвейера».

В DAG есть богатый набор алгоритмов, необходимых для нелинейных шагов сложной геометрии множества сверточных нейронных сетей (CNN).

Вот почему основные фреймворки CNN, такие как Tensorflow, Pytorch, MXNET и другие, используют термин DAG и являются DAG.

Что такое трубопровод?

Концепция вычислительного конвейера существовала до массового внедрения машинного обучения.

Программные конвейеры, которые состоят из последовательности вычислительных процессов (команд, запусков программ, задач, потоков, процедур и т. Д.), Концептуально выполняемых параллельно, причем выходной поток одного процесса автоматически подается как входной поток следующий. Система Unix под названием pipe является классическим примером этой концепции. - https://en.wikipedia.org/wiki/Pipeline_(computing)

Где вы впервые узнали о конвейерах в контексте машинного обучения?

Я узнал о конвейерах из конвейера машинного обучения sk-learn.

Люди, придумавшие библиотеку sk-learn, определили класс (объект) Python под названием Pipeline.

Последовательно применяйте список преобразований и окончательную оценку. Промежуточные этапы Трубопровода должны быть преобразованы; то есть они должны реализовать методы подгонки и преобразования. Окончательному оценщику нужно только реализовать подгонку. - sk-learn pipeline documentation.:

Пример sk-learn Pipeline:

pipe = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])
pipe.fit(X_train, y_train)

=>

Pipeline(steps=[('scaler', StandardScaler()), ('svc', SVC())])

В приведенном выше примере конвейер - это экземпляр класса, который последовательно применяет операцию подгонки сначала к StandardScaler (sk-learn t ransformer), а затем к SVC (sk-learn Estimator ).

Мне нравится определение класса sk-learn pipeline.. Мне не нравится рисовать любой поток машинного обучения с помощью кисти для конвейера.

Что такое направленный ациклический граф (DAG)?

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

[В] теории графов ориентированный ациклический граф (DAG) - это ориентированный граф без ориентированных циклов. Он состоит из вершин и ребер (также называемых дугами), причем каждое ребро направлено от одной вершины к другой, так что следование этим направлениям никогда не образует замкнутый цикл. - https://en.wikipedia.org/wiki/Directed_acyclic_graph

Конвейер запутался как DAG

Каким-то образом от sk-learn до настоящего времени конвейер стали путать с направленным ациклическим графом (DAG).

создавать, производить и масштабировать сквозные конвейеры машинного обучения и наблюдать за тем, как эти конвейеры оказывают глубокое и коренное влияние на бизнес. - https://www.slideshare.net/databricks/navigating-the-ml-pipeline-jungle-with-mlflow-notes-from-the-field-with-thunder-shiviah

Конвейер - это описание рабочего процесса машинного обучения, включая все компоненты рабочего процесса и то, как они объединяются в график. - https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/

Некоторые называют свою сеть шагов DAG.

Плагин для анализа конвейера Jenkins (ранее рабочий процесс) запускается путем проверки ориентированного ациклического графа FlowNodes, который их включает. Предназначен для случаев, когда зависимости не позволяют включить его в плагин API рабочего процесса. - Плагин Jenkins

Если мы думаем о потоке выполнения модели машинного обучения как о DAG, мы можем использовать богатую область теории графов.

Tensorflow и Pytorch представляют вычислительный поток как DAG.

Две ведущие платформы машинного обучения (Deep Learning - DL), Tensorflow и Pytorch, создают DAG потока модели CNN. Что еще более важно, сообщество разработчиков называет эти модели CNN статическими или динамическими группами DAG, а не конвейером.

Полный исходный код четырехуровневой модели сверточной нейронной сети (CNN), показанной ниже, находится на GitHub.

model = keras.models.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(32, activation='relu'),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
])

Tensorboard отображает поток вычислений любой модели Tensorflow или Pytorch DL как DAG.

Какие алгоритмы теории графов используются для моделей машинного обучения?

В презентации Оптимизация графа Tensorflow показаны алгоритмы DAG, используемые для уменьшения размера CNN за счет более быстрого обучения CNN с небольшой неточностью деградации.

Graph HyperNetworks for Neural Architecture Search показывает, как теория графов используется для поиска топологии нейронной сети (NN) для конкретной задачи.

Все группы DAG CNN имеют свойства, которые определяют возможные действия и ограничения, которые они могут использовать или анализировать.

Что такое машинное обучение (MLOps)?

MLOps - это практика автоматизации рабочих процессов машинного обучения (ML). Рабочие процессы MLOps представляют собой группу доступности базы данных, узлы которой являются грубыми этапами жизненного цикла машинного обучения:

  • Ввод разных наборов данных разными методами (FeatureStore);
  • Обучите разные модели машинного обучения;
  • Решить и протестировать (этап), какую обученную модель машинного обучения запустить в производство;
  • Развернуть обученную модель машинного обучения в производственной системе;
  • Следите за серийной моделью ML.

Эти этапы MLOps концептуально показаны на рисунке 3.

Я надеюсь, что в 2021 году мы сможем лучше понимать полный цикл проектов машинного обучения, создавать инструменты MLOps для поддержки этой работы, а также систематически создавать, производить и поддерживать модели ИИ. - Проф. Эндрю Нг - Партия 30 декабря 2020 г.

Мы можем использовать богатую область теории графов, если будем рассматривать поток операций машинного обучения или поток MLOps как DAG.

Это конвейер или DAG?

Документация Kuberflow показывает, что последовательность элементов ML (конвейер) приводит к DAG вычислений.

Код этого Kuberflow примера xgboost находится на Github.

После развертывания поток машинного обучения по-прежнему будет содержать больше элементов и точек ветвления. Называть поток машинного обучения конвейером - это, в лучшем случае, неверное направление.

Я не призываю отказаться от термина конвейер. Я говорю, что есть хорошая возможность применить теорию графов к потоку MLOps, представленному как DAG.

Какие алгоритмы теории графов используются для MLOps?

Cyclone - это движок рабочего процесса для ресурсов Kubernetes. Cyclone имеет шаблоны DAG для расписаний элементов рабочего процесса DevOps и MLOps.

Вы можете представить все элементы Kubernetes сетки моделей машинного обучения (ML) в виде DAG. Вы можете выполнить сокращенный подграф только для тех моделей машинного обучения, которые вам нужны для этой задачи. Пример показан на рисунке 5.

Подгруппа DAG на рисунке 5 DAG предназначена для выполнения службы TextToSpeech. Другой суб-DAG должен последовательно выполнять службы AutoTranslation, SpeechToText, TextToSpeech, и DialogFowEnterprise.

Любой связанный суб-DAG обнаруживается и выполняется с помощью алгоритмов теории графов.

Git - это DAG версий. GitActions - это группа DAG действий над версией.

Направленный ациклический граф может использоваться в контексте конвейера CI / CD для построения взаимосвязей между заданиями, чтобы выполнение выполнялось максимально быстро, независимо от того, как этапы могут быть настроены. - https: // docs. gitlab.com/ee/ci/directed_acyclic_graph/

Опять же, любой связанный суб-DAG обнаруживается и выполняется с помощью алгоритмов теории графов.

Anthos - это решение MLOps для смешанных конфигураций Kubernetes.

Anthos - это ответ Google на организацию обширной системы, состоящей из смеси из сервиса Goggle Cloud Kubernetes (GKE), локального Kubernetes (внутреннего облака предприятия) и Kubernetes в облаке другого поставщика.
Anthos - это мета-сервис Kubernetes. который представляет компоненты и их взаимосвязь в виде группы доступности базы данных. Anthos называет представление DAG сервисной сеткой.

Anthos Service Mesh, полностью управляемая сервисная сеть Google, позволяет легко управлять этими сложными средами (например, кластерами микросервисов) и пользоваться обещанными ими преимуществами. - Сервисная сеть Anthos

Центральным моментом является не то, что вы называете сеткой служб Anthos, а использование богатого алгоритмического набора теории графов с представлением DAG.

Инструменты DAG для машинного обучения

Уже существуют инструменты DAG с кодом с открытым исходным кодом для рабочего процесса MLOps, представленного как DAG:

  • Набор инструментов, которые вы применяете к любому DAG;
  • Воздушный поток (DataOps);
  • DAG Scheduler: Универсальное расписание DAG r;
  • Dagon позволяет правила перезаписи для поиска и преобразования суб-DAG в материнской DAG. Он создает новый DAG, который может быть меньше и проще. Это устраняет избыточные суб-группы DAG, устраняет суб-DAG, которые не являются доступными входными данными, и многое другое. Я должен вас предупредить, Dagon написан на Scala, но работает быстро. Обратите внимание, что Dagon состоит из правил перезаписи. Я считаю Дагона прекомпилятором DAG. Добавьте серверную часть Y, где Y - целевая среда, в Dagon, и у вас есть компилятор DAG to Y.

Инструменты DAG готовы к будущему значительного потока выполнения MLOps.

Резюме

Основные концепции этого блога:

  1. Предположим, мы думаем о потоке выполнения модели машинного обучения как о группе DAG. Мы можем использовать богатую область теории графов.
  2. Несколько различных сервисов машинного обучения создают значительный поток выполнения MLOps. Один из способов рассуждать о рабочем процессе MLOps - представить их как группы DAG.

Вплоть до 1980-х годов у нас была социальная сеть, исчисляемая десятками. Если бы мы жили достаточно долго и были харизматичными, у нас была бы социальная сеть, исчисляемая сотнями.

Теперь у нас есть социальная сеть, которая насчитывает от тысяч до десяти миллионов. У вас есть несколько социальных сетей, некоторые из которых не пересекаются и не связаны, вы играете в игры, принадлежите к чат-группам, у вас есть подписчики и вы подписаны на другие сайты.

По мере роста социальных сетей будет расти и машинное обучение (ML). Я предсказываю не столь отдаленное будущее сети узлов ML и групп DAG MLOps, поддерживающих эти узлы ML в облаке. Я предполагаю, что сервисная сетка машинного обучения будет меньше на телефонах, роботах и ​​других периферийных устройствах.

Удачного кодирования!