Почему он существует и как он используется в компонентах балочного трубопровода

Метаданные машинного обучения (MLMD) - это библиотека для записи и извлечения метаданных, связанных с рабочими процессами разработчиков машинного обучения и специалистов по данным.

TensorFlow Extended (TFX) - это сквозная платформа для развертывания производственных конвейеров машинного обучения

Текущая версия метаданных ML на момент публикации этой статьи - v0.22 (tfx также v0.22). API достаточно зрел, чтобы обеспечить массовое использование и развертывание в общедоступном облаке. Tensorflow Extended широко использует это для взаимодействия компонентов, отслеживания происхождения и других задач.

Мы собираемся запустить очень простой конвейер, который будет просто генерировать статистику и схему для образца csv из известного набора данных Chicago Taxi Trips. Это небольшой файл размером ~ 10 МБ, и конвейер может работать локально.

Запустите его один раз и откройте файл metadata_store.db для проверки.

Метаданные ML хранят информацию о 3 вещах:

  • Метаданные о сгенерированных артефактах
  • Метаданные о выполнении этих компонентов - шаги
  • Метаданные о конвейере и соответствующая информация о происхождении

Компоненты Apache Beam Pipeline TFX не передают все двоичные артефакты (которые должны обрабатываться ParDo с несколькими операциями ввода-вывода) следующим узлом. Вместо этого передаются URI артефактов. Артефакты обычно хранятся в какой-то облачной файловой системе, такой как ведра облачного хранилища.

Даже сохраненные файлы TFRecord tf.Example обрабатываются как артефакты промежуточного уровня. Они заархивированы для экономии места.

> SELECT * FROM `Artifact`;

Вы можете видеть, что все эти созданные родительские каталоги артефактов хранятся вместе с числом (подробнее о числах позже), временем создания и обновления.

В случае CsvExampleGen/examples/1 у нас есть 2 подкаталога, train и eval, которые хранятся как один и тот же артефакт. Часть / examples этого пути - это имя артефакта, который создает example_gen (посмотрите на код конвейера), который statistics_gen принимает в качестве входных данных.

Значения NULL, вероятно, находятся в стадии разработки, поскольку хранилище находится в версии v0.xx. Вы можете видеть, что в декларации буфера протокола исходного кода n может быть UNKNOWN — PENDING — LIVE — MARKED_FOR_DELETION — DELETED и имя хорошо, имя, кроме type_id.

Таблица Types находится на одном уровне с type_id, как и ожидалось:

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

  • Контекст содержит несколько артефактов, выполнений и событий.
  • Событие содержит артефакты и казни.
  • Выполнение обычно представляет собой отдельный этап конвейера.

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

  • События связывают artifact_ids с execution_ids
  • Выполнения отслеживают только type_ids и временные метки
  • Контексты соотносятся type_ids с запусками конвейера и информацией о времени

Таблицы Свойство выполнения и Свойство контекста содержат дополнительные данные в форме "ключ-значение".

  • ExecutionProperties содержит конфигурацию ввода и вывода, передаваемую каждому компоненту, а также корневые каталоги конвейера и шага, а также расположение артефактов ввода-вывода.
  • ContextProperties связывает context_ids с именами компонентов конвейера и отметками времени.

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

Доступ к данным

Доступен огромный объем информации только для простого трехэтапного конвейера, работающего локально. Этот конвейер может работать в облаке на Dataflow runner, например, с минимальными изменениями конфигурации.

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

С этого момента вы можете подключаться к хранилищу метаданных машинного обучения либо через прямое соединение SQL, либо через gRPC (через заглушку или простые старые вызовы). Затем нужно выбрать типы данных, которые вы хотите проверить вручную. Это может быть, например, схема или протобуф статистики.

Обычно вам нужен только доступ к идентификаторам ресурсов. У вас должен быть доступ к ним только через URI, если вы находитесь в той же среде (например, записная книжка внутри виртуальной машины GCP Project).

Пример использования

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

  • Вам понадобятся артефакты StatisticsGen / statistics для 2 различных прогонов конвейера (это тип ExampleStatistics с type_id 8). Их можно найти в таблице Artifact.
  • Вам также потребуется доступ к артефакту из правильных участков конвейера. Таблица Attribution связывает context_id с artifact_id. Единственное, чего не хватает, - это точно определить 2 context_id, которые вам нужны, чтобы сделать простой запрос выбора.
  • Таблица Context также содержит информацию о отметках времени. Например, строка Pipeline .2020–07–14T23:45:00.508181.StatisticsGen имеет context_id 5.

Идентификатор контекста 5 соответствует идентификатору артефакта 3 из таблицы атрибуции. Артефакт с идентификатором 3 действительно является тем артефактом статистики, который нам нужен.

К счастью, конвейеры kubeflow уже делают эту визуализацию автоматически

Вывод

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

Спасибо, что дочитали до конца!

Пользовательские артефакты

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