Как обеспечить безопасность типов в границах схемы Python + YAML + JSON в производственном конвейере ML?Python

Программы на Python
Anonymous
Как обеспечить безопасность типов в границах схемы Python + YAML + JSON в производственном конвейере ML?

Сообщение Anonymous »

Я работаю над производственными конвейерами машинного обучения и постоянно сталкиваюсь с одной и той же структурной проблемой. Типичный конвейер в нашем стеке требует:
  • Python для логики преобразования и вывода модели
  • YAML для конфигурации (гиперпараметры, пути к модели, размеры пакетов)
  • JSON Schema для проверки структур входных и выходных данных
  • Bash/shell для оркестрации и пошагового управления
Проблема в том, что информация о типе теряется на каждой границе между этими инструментами. Конкретные примеры сбоев, с которыми я столкнулся:
  • Дикт Python, возвращенный на этапе предварительной обработки, не соответствует схеме JSON, ожидаемой на следующем этапе — обнаруживается во время выполнения, в середине конвейера, после 45 минут вычислений.
  • Значение конфигурации YAML анализируется как строка, когда конвейер ожидает целое число — никаких ошибок до вызова модели. не удалось
  • Изменение схемы на шаге N автоматически нарушает шаг N+2, поскольку нет механизма проверки совместимости во время определения
Что я пробовал:
  • Pydantic модели на каждой границе этапа (добавляет шаблон, по-прежнему только во время выполнения)
  • Проверка jsonschema в точках входа в конвейер (не обнаруживает несоответствия между шагами)
  • Строгая типизация с помощью mypy в коде Python (не распространяется на схему YAML или JSON)
  • Пользовательские классы-оболочки для обеспечения соблюдения контрактов между шагами (поддерживается, но подробный)
Что я ищу:
Существует ли стандартный шаблон, инструмент или структура, обеспечивающая совместимость типов независимо от этих границ — в идеале во время определения, а не во время выполнения? В частности:
  • Можно ли проверить тип вывода шага конвейера A на тип ввода шага B перед запуском конвейера?
  • Существует ли какой-либо инструмент, который рассматривает весь конвейер (конфигурация + схема + логика + оркестровка) как однотипный артефакт?
Я знаю, что это по сути проблема многоязычной совместимости. Любопытно, нашли ли другие работоспособные решения или это общепринято считать нерешенной проблемой в области инструментов машинного обучения.

Вернуться в «Python»