Модели как артефакты

Как правило, после обучения модели создается автономный артефакт, который может запускать модель независимо от ее обучающей системы. Затем эти артефакты используются как часть службы, например, управляющей выводом модели, или как вызов библиотеки, выполняемый в приложении.

Есть две вещи для хранения:

  1. Код модели (обычно на питоне)
  2. Обученные веса или параметры.

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

В tensorflow SavedModel — это формат сериализации высокого уровня для сериализации графа модели и его хранения. В pytorch код модели на python преобразуется в скрипт подмножества python под названием Torchscript. Программа Torchscript/формат SavedModel может быть загружена в виде двоичного файла на другом языке и запущена по назначению.

Модели в качестве артефактов сегодня используются по умолчанию в промышленности, особенно в крупномасштабных средах. Он имеет некоторые неотъемлемые преимущества:

✅ Независимо от тренировочной обвязки. Артефакт модели можно загрузить в любой высокопроизводительной среде выполнения.

✅ Артефакт легко хранить и распространять.

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

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

🔴 Модель имеет зависимости от многих библиотек машинного обучения (часть среды выполнения). Модель не выполнится, если во время выполнения произошло критическое изменение. Традиционное модульное тестирование может легко их обнаружить, но, как упоминалось выше, природа модели «черный ящик» затрудняет написание хороших модульных тестов.

Модели как код

Это подводит нас к другой парадигме понимания моделей как кода. Код модели сохраняется как есть без преобразования или сериализации для его отдельного хранения.
Он остается в репозитории кода со всеми применимыми стандартными инструментами для модульного тестирования и проверки работоспособности кода.
Чтобы экспортировать модель, разработчик должен собрать модель и среду выполнения вместе, чтобы создать двоичный файл, совместимый с механизмом логического вывода. Обратите внимание, что это последний шаг перед отправкой на целевое устройство. Здесь модель будет извлечена как SavedModelFormat или Torchscript.
Любые изменения в коде модели или среде выполнения фиксируются в истории версий. Разработчик может напрямую писать модульные тесты для модели, которые будут обнаруживать любые непреднамеренные поломки во время сравнения.

✅ Модульное тестирование кода модели: никаких специальных инструментов не требуется.

✅ Регрессионные тесты могут выявить непреднамеренные изменения кода во время выполнения. CI/CD можно естественным образом расширить до модели как кода

✅ Воспроизводимость и управление версиями моделей предоставляются бесплатно благодаря системе контроля версий.

✅ Легко отлаживать.

🔴 Недостатком этого подхода является отсутствие единого артефакта модели для хранения и распространения.

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