mlops
Словарь ↗Версионирование моделей
Версионирование моделей — это практика точно знать, какая модель породила данное поведение, и закреплять эту принадлежность в коде вместо того, чтобы принимать всё, что провайдер сейчас отдаёт под удобным именем. Разница между системой, поведение которой меняется, когда её меняете вы, и системой, поведение которой меняется по расписанию, которым вы не управляете. Потребность легко недооценить, потому что снаружи ничего не ломается. Размещённую модель, на которую вы ссылаетесь через алиас, могут обновить под вами, и обновление обычно является улучшением в среднем. Но ваш продукт живёт не средним. Он живёт промптами, написанными под прежнее поведение, форматами вывода, которых ждёт ваш парсер, границами отказов, к которым привыкли пользователи, и краевыми случаями, которые вы починили конкретной формулировкой. Изменение выше по течению способно улучшить бенчмарк и сломать тот самый сценарий, на котором вы держитесь, — а поскольку ваш код не менялся, туда никто не смотрит первым делом. Поэтому разумная настройка по умолчанию — привязка к явной версии. Идентификатор версии живёт в конфигурации, записывается вместе с каждым сохранённым ответом и попадает в результаты оценки, чтобы сдвиг качества можно было проследить до смены модели, а не обсуждать на словах. Ответ, залогированный без версии, которая его породила, — это запись о том, что произошло, но не о том, почему, а это ровно половина того, что нужно для разбора инцидента. Привязка полезна только вместе с планом её снятия. Размещённые версии выводят из эксплуатации, и закреплённая версия без пути миграции — это срок годности, который вы не занесли в календарь. Рутина здесь непримечательна и работает: следить за уведомлениями об устаревании, прогонять текущий оценочный набор на кандидатной версии, сравнивать на своих данных, а не по публичным заявлениям, мигрировать под флагом и держать старую версию доступной столько, сколько позволяет провайдер, чтобы откат был изменением конфигурации, а не переписыванием. Версионировать нужно не только веса. Промпт, конфигурация поиска, описания инструментов и параметры сэмплирования тоже формируют поведение, поэтому версионировать стоит всю конфигурацию как один поставляемый артефакт. Изменение любой части должно порождать новый идентификатор: в системе, где промпт двигается независимо от версии модели, две команды могут одновременно быть уверены, что ничего не менялось. Самостоятельное размещение меняет одну проблему на другую. Без вас ничего не сдвинется, и сюрприз исчезает, но теперь ваши и файлы весов, и квантизация, и стек инференса, и параметры генерации — а любое из этого меняет вывод. Правило то же: версия — это та комбинация, которая фактически породила поведение, и её стоит уметь назвать точно.
Похожие термины