[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-model-versioning::ru":3,"gloss-cluster-model-versioning::ru":26,"gloss-next-model-versioning::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"model-versioning","mlops","Версионирование моделей","Версионирование моделей — это практика точно знать, какая модель породила данное поведение, и закреплять эту принадлежность в коде вместо того, чтобы принимать всё, что провайдер сейчас отдаёт под удобным именем. Разница между системой, поведение которой меняется, когда её меняете вы, и системой, поведение которой меняется по расписанию, которым вы не управляете.\n\nПотребность легко недооценить, потому что снаружи ничего не ломается. Размещённую модель, на которую вы ссылаетесь через алиас, могут обновить под вами, и обновление обычно является улучшением в среднем. Но ваш продукт живёт не средним. Он живёт промптами, написанными под прежнее поведение, форматами вывода, которых ждёт ваш парсер, границами отказов, к которым привыкли пользователи, и краевыми случаями, которые вы починили конкретной формулировкой. Изменение выше по течению способно улучшить бенчмарк и сломать тот самый сценарий, на котором вы держитесь, — а поскольку ваш код не менялся, туда никто не смотрит первым делом.\n\nПоэтому разумная настройка по умолчанию — привязка к явной версии. Идентификатор версии живёт в конфигурации, записывается вместе с каждым сохранённым ответом и попадает в результаты оценки, чтобы сдвиг качества можно было проследить до смены модели, а не обсуждать на словах. Ответ, залогированный без версии, которая его породила, — это запись о том, что произошло, но не о том, почему, а это ровно половина того, что нужно для разбора инцидента.\n\nПривязка полезна только вместе с планом её снятия. Размещённые версии выводят из эксплуатации, и закреплённая версия без пути миграции — это срок годности, который вы не занесли в календарь. Рутина здесь непримечательна и работает: следить за уведомлениями об устаревании, прогонять текущий оценочный набор на кандидатной версии, сравнивать на своих данных, а не по публичным заявлениям, мигрировать под флагом и держать старую версию доступной столько, сколько позволяет провайдер, чтобы откат был изменением конфигурации, а не переписыванием.\n\nВерсионировать нужно не только веса. Промпт, конфигурация поиска, описания инструментов и параметры сэмплирования тоже формируют поведение, поэтому версионировать стоит всю конфигурацию как один поставляемый артефакт. Изменение любой части должно порождать новый идентификатор: в системе, где промпт двигается независимо от версии модели, две команды могут одновременно быть уверены, что ничего не менялось.\n\nСамостоятельное размещение меняет одну проблему на другую. Без вас ничего не сдвинется, и сюрприз исчезает, но теперь ваши и файлы весов, и квантизация, и стек инференса, и параметры генерации — а любое из этого меняет вывод. Правило то же: версия — это та комбинация, которая фактически породила поведение, и её стоит уметь назвать точно.","Версионирование моделей закрепляет, какая именно модель отвечает на запрос, чтобы поведение менялось по вашему решению, а не при обновлении на стороне провайдера.",null,[11,14,17,20,23],{"slug":12,"name":13},"model-deprecation","Прекращение поддержки модели (model deprecation)",{"slug":15,"name":16},"model-registry","Реестр моделей (Model Registry)",{"slug":18,"name":19},"prompt-versioning","Версионирование промптов",{"slug":21,"name":22},"rollback","Откат (Rollback)",{"slug":24,"name":25},"semantic-versioning","Семантическое версионирование (SemVer)",[27,31,35,38,41,45,48,51,54,57,60,63],{"slug":28,"category":5,"name":29,"updated_at":30},"annotation-guidelines","Инструкции по разметке","2026-08-24T03:30:02+00:00",{"slug":32,"category":5,"name":33,"updated_at":34},"baseline-model","Базовая модель (baseline)","2026-08-24T02:46:38+00:00",{"slug":36,"category":5,"name":37,"updated_at":34},"batch-inference","Батч-инференс",{"slug":39,"category":5,"name":40,"updated_at":34},"canary-prompt","Канареечный промпт",{"slug":42,"category":5,"name":43,"updated_at":44},"champion-challenger","Чемпион–претендент (A\u002FB-тестирование моделей)","2026-08-24T02:46:37+00:00",{"slug":46,"category":5,"name":47,"updated_at":34},"class-imbalance","Дисбаланс классов",{"slug":49,"category":5,"name":50,"updated_at":34},"continuous-batching","Continuous Batching (непрерывная пакетная обработка)",{"slug":52,"category":5,"name":53,"updated_at":34},"cross-validation","Перекрёстная проверка",{"slug":55,"category":5,"name":56,"updated_at":34},"data-labeling","Разметка данных",{"slug":58,"category":5,"name":59,"updated_at":44},"drift-detection","Обнаружение дрейфа (Drift Detection)",{"slug":61,"category":5,"name":62,"updated_at":44},"eval-harness","Испытательный стенд оценки (Eval Harness)",{"slug":64,"category":5,"name":65,"updated_at":44},"experiment-tracking","Трекинг экспериментов (Experiment Tracking)"]