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

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

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

Давайте посмотрим на некоторые общие проблемы при внедрении машинного обучения в производство и на то, как TFX решает их с небольшой помощью Дороти, Тото и Волшебника страны Оз!

Когда данные не соответствуют действительности

«Львы? Тигры? а медведи? Боже мой! »

Дороти идет по дороге из желтого кирпича через густой лес, она хочет добраться до Изумрудного города! Она не слишком беспокоится о Львах, они довольно трусливы. Следует избегать тигров и медведей.

Имея надежное соединение 5G, она может получить большой объем данных и обучить классификатора отличать львов от тигров и медведей. Мы начинаем с корпуса, как показано ниже, и надеемся со временем построить наш набор данных.

Дороти отправляет Тотошу вперед с камерой, поскольку он встречает новых животных по мере того, как модель делает прогнозы. Ночью, когда Пугало и Железный Человек спят, она переобучает модель, добавляя недавно собранные данные. Таким образом, наш классификатор улучшится, смешивая наш исходный корпус с новыми данными. Производительность модели (точность, потери и т. Д.) Следует оценивать на основе данных, которые являются репрезентативными для того, что мы ожидаем увидеть завтра, поэтому Дороти использует изображения Тото для оценки модели.

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

Что такое конвейер машинного обучения?

"Я достану тебя, моя красавица, и твою собачку тоже"

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

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

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

Как Дороти может узнать, что в ее модели машинного обучения есть проблемы? Как она может судить, когда обновить свою модель в производстве? Насколько хорошо ей следует ожидать, что ее модель будет выступать в будущем?

Чем может помочь TensorFlow Extended

«Волшебник страны Оз стал одним из них из-за замечательных вещей, которые он делает!»

TFX упрощает рассмотрение вашего производственного конвейера машинного обучения. Помогает вам понимать, проверять и контролировать ваши данные в масштабе. В нем есть механизмы для обнаружения расхождений между данными обучения и оценки, а также данными обучения и вывода. Архитектура масштабируема и обеспечивает повторяемость и воспроизводимость вашего процесса. Дороти хотела бы TFX!

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

Это классический конвейер, но разработчики могут выбрать работу только с некоторыми из следующих компонентов, поскольку они являются компонуемыми.

  • Конвейеры начинаются с ExampleGen, эти компоненты получают данные в необработанном формате из хранилища (диск / база данных). ExampleGens связаны с вашим форматом данных CSV, JSON или TFRecords и выводят обучающие и оценочные наборы. Последующие компоненты будут использовать эти необработанные данные. ImportExampleGen может, например, читать TFRecords из облачного хранилища. Если какого-либо из приведенных в примере компонентов вам недостаточно, просто реализуйте свой.

  • Компоненты StatisticsGen, SchemaGen и Example Validator работают вместе и помогают вам анализировать наши входные данные. StatisticsGen вычисляет статистику функций по данным. SchemaGen определяет типы и диапазоны, которые могут принимать данные, это можно сделать автоматически, но указание диапазонов вручную может упростить обнаружение ошибок. ExampleValidator обнаруживает аномальные данные, используя выходные данные от SchemaGen и StatisticsGen (см. DAG выше).

  • Компонент Преобразование выполняет проектирование функций, необходимое для преобразования данных в правильный формат для использования в модели во время обучения и вывода. Указав преобразование в конвейере, мы гарантируем, что в нашем обучающем, оценочном или обслуживающем коде нет никаких регрессий. Это позволяет избежать непреднамеренного обучения с использованием функций, которых у нас нет во время вывода, Schema Skew.
  • Тренер берет наши преобразованные данные, затем обучает и оценивает модель. Поддерживаются как модели Оценщики, так и, в последнее время, модели на основе Keras. Модели могут быть инициализированы из хранилища, поддерживающего сценарии горячего запуска или передачи обучения. Поддержка поиска по гиперпараметрам была выпущена недавно и реализована с помощью компонента Tuner.
  • Evaluator и ResolverNode работают вместе для оценки модели. Компонент Evaluator оценивает метрики, по которым мы заинтересованы в отслеживании нашей модели. ResolverNode предоставляет предыдущую лучшую модель для запуска оценочного набора, это гарантирует, что мы сравниваем старую с новой на равных условиях. Если недавно обученная модель превосходит существующую, мы благословляем новую модель. Также можно указать абсолютные показатели производительности, например, точность должна превышать 80%. Эти компоненты предотвращают попадание в производство некачественных моделей. Мы также можем оценивать метрики по срезам наших данных, например, ROC по часам дня, это дает нам представление о том, где наша модель может работать плохо и может быть улучшена.

  • Pusher сохраняет нашу модель в хранилище. Если мы используем TensorFlowServing, на этом этапе наша модель может быть запущена в производство. Если вы ориентируетесь на мобильные устройства или браузер, также поддерживайте TFLite и TF.js.

Какой оркестратор мне следует использовать?

Не обращайте внимания на этого человека за занавеской!

TFX обеспечивает более высокий уровень абстракции при построении конвейеров машинного обучения. Он разработан для переносимости, что означает, что вы не привязаны к единой среде или среде оркестровки. Кроме того, вы можете запускать его локально или на облачных платформах, также возможно, чтобы конвейер работал в нескольких облачных средах. Такая гибкость означает, что вы можете выбрать платформу, которая наилучшим образом соответствует вашим потребностям.

TFX DAG выполняется на Orchestrator, в настоящее время TFX поддерживает некоторые из них.

  • Kubeflow (конвейеры платформы AI на GCP) работает на Kubernetes, также широко используется в технических командах и производстве. Kubeflow разработан для запуска конвейеров машинного обучения, он менее развит, чем другие варианты, и только что достиг стабильного статуса. Если вы управляете несколькими моделями и хотите масштабировать кластер в соответствии с вашими потребностями в обучении, это может вам подойти. Работать с вашей моделью в Kubernetes тоже несложно!
  • Apache Beam (Cloud Dataflow на GCP) отлично подходит для параллельной обработки наборов данных. TFX использует Beam для распределенной обработки данных, поэтому другие оркестраторы тоже используют Beam (включая сам Beam, когда вы используете его в качестве оркестратора!). Его также можно запускать локально, поэтому он полезен для отладки конвейера с помощью Direct Runner.
  • Airflow (Cloud Composer на GCP) популярен в командах Data Engineering. Если у вас уже есть такой экземпляр, запускающий ваш конвейер здесь будет знаком с небольшой дополнительной инфраструктурой для управления.

Компоненты Trainer и Pusher имеют исполнителей, которые поддерживают выполнение этих компонентов на платформе GCP AI для обучения и обслуживания вашей модели в бессерверной среде.

Заключительные мысли

Тото, у меня такое ощущение, что мы больше не в Канзасе.

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