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

Именованные входы и выходы - это, по сути, словари со строковыми ключами и значениями тензора.

Преимущества

  1. Защита от изменения порядка функций
  2. Самодостаточная модель обслуживания подписей и метаданных
  3. Защита от переименования и отсутствия функций

Большинство конвейеров машинного обучения считывают данные из структурированного источника (база данных, файлы CSV / Pandas Dataframes, TF Records), выполняют выбор функций, очистку (и, возможно,) предварительную обработку, передавая необработанный многомерный массив (тензор) в модель вместе с другим тензором. представляющий правильный прогноз для каждой входной выборки.

Изменить порядок или переименовать входные функции в рабочей среде?Бесполезные результаты или перебои на стороне клиента в рабочей среде

Отсутствующие функции? Недостающие данные? Неправильная интерпретация выходного значения? По ошибке перепутали целочисленные индексы? Бесполезные результаты или производственные перерывы на стороне клиента

Хотите узнать, какие столбцы функций использовались для обучения, чтобы предоставить те же столбцы для вывода?Вы не можете - Ошибки неверной интерпретации

Хотите знать, какое значение представляют выходные значения?Не можете - ошибки неверной интерпретации

Не оставляйте имена столбцов на входных слоях модели.

tf.data.Dataset уже позволяет делать это по умолчанию, рассматривая ввод как словарь.

С годами стало легче справляться с вышеуказанными проблемами. Вот небольшой обзор доступных решений с экосистемой Tensorflow 2.x.

  • TFRecords and tf.Example - это лучший формат данных для использования в любых масштабных проектах глубокого обучения. Каждой функции присвоено имя по умолчанию.
  • Tensorflow Transform использует именованные входные данные и производит именованные выходные данные, побуждая вас сделать то же самое для вашей модели.
  • Keras поддерживает словари слоев в качестве входов * и * выходов

Используя это определение подписи serving_raw, вы можете вызвать конечную точку обслуживания Tensorflow напрямую с помощью полезной нагрузки JSON без сериализации в tf.Example.

Посмотрите подпись metadata на обслуживании TF с образцом режима прогнозирования биткойнов, над которым я сейчас работаю:

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

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

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