Отдавали ли вы образ с Dockerfile в репозиторий для деплоя модели
Что проверяют
Доводили ли вы модель до состояния, в котором её можно выкатить без вас. За вопросом стоит граница между исследованием и продом: заканчивается ваша работа ноутбуком с метриками или артефактом, который забирает эксплуатация. Уточните заодно, о чём речь: об образе в реестре или о Dockerfile в репозитории с кодом.
Как отвечать
Опишите, как собран образ и что в нём лежит:
- базовый образ зафиксирован по версии, для GPU отдельная сборка на подходящем слое с CUDA;
- зависимости закреплены лок-файлом, а не диапазоном версий, иначе пересборка через месяц даст другую библиотеку;
- многоступенчатая сборка, запуск не от root, секреты приходят переменными окружения, а не слоем;
- тег образа связан с версией кода и версией весов,
latestв проде не используется.
Отдельно обсудите веса. Вшить их в образ значит получить воспроизводимый артефакт ценой размера и пересборки на каждое переобучение. Подгружать при старте из хранилища артефактов значит держать образ лёгким, но получить внешнюю зависимость на старте. Скажите, какой вариант выбрали и почему.
Хорошо добавить про эксплуатацию: модель загружается один раз при старте процесса, а не в обработчике запроса, есть проба готовности, а число воркеров считается от памяти, потому что каждый держит свою копию весов.
Где спотыкаются
Кладут веса и датасеты в git. Репозиторий распухает, история становится неподъёмной, и лечится это уже отдельным хранилищем артефактов, а не удалением файла в следующем коммите.
Не фиксируют зависимости. Образ, собранный из свободных версий, перестаёт быть воспроизводимым, а несовпадение сборки библиотеки с драйвером вылезает не на сборке, а на первом инференсе.
Украшают рассказ процентами ускорения, которых никто не мерил. Вопрос был про факт передачи образа, и выдуманная цифра превращает простой ответ в повод усомниться во всём остальном.