Типы преобразований в datapipe

Генерация данных из внешнего источника

  • Парсинг YML фида и заполнение таблицы с данными
  • Запрос внешнего АПИ для получения списка чего-то

Генерация идет батчами, объем заранее не известен.

Батч-трансформация данных 1-1 (без требования всех данных)

  • Ресайз картинок
  • Инференс модели машинного обучения

Батч-трансформация один-много, много-один на небольших батчах

  • Распаковка свойств товара в отдельные записи: (product_id) → (product_id, property_id)
  • Сборка данных о классифицированных ббоксах в одну запись: (image_id, bbox_id) → (image_id)

Глобальная (или около-глобальная трансформация)

Данные могут быть использованы несколько раз. Объем данных может не позволить загрузить в память целиком.

  • Обучение модели машинного обучения на таблице

Типы ComputeStep

DatatableTransform

Принимает на вход список входных и выходных DataTable. Применяет к ним внешнюю функцию.

Это поведение нельзя контролировать с точки зрения Changelist обработки.

Генерация и глобальная трансформация (обучение модели) относятся к такому типу обработки.

BatchTransform

Принимает в качестве аргументов функцию func, входные и выходные таблички для расчета трансформации. Имеет выделенную функцию run_batch где внешняя система расчитала списки данных на обработку и передала в функцию.

Подходит для Changelist обработки.

Батч-трансформации 1-1 и небольшие батчи 1-N, N-1 относятся к такому типу обработки.

Имеет magic injection:

  • Если у функции func есть аргумент ds, то туда передатся используемый DataStore.
  • Если у функции func есть аргумент run_config, то туда передатся используемый текущий RunConfig.
  • Если у функции func есть аргумент idx, то туда передатся используемый IndexDF -- текущие индексы обработки.

BatchGenerate

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

Имеет magic injection:

  • Если у функции func есть аргумент ds, то туда передатся используемый DataStore.