Версіонування ML-моделей: налаштування Model Registry під ключ

Моделі оновлюються швидше, ніж команда встигає зрозуміти, яка версія працює в кожному середовищі. Ми налаштовуємо Model Registry під ключ: інвентаризацію моделей, режими зберігання, права доступу та регламент випуску версій. Ви отримуєте відтворюваність запусків і відкат моделі за хвилини, а не за дні.
Часті запитання

Model Registry: чому версії моделей розходяться за середовищами

Модель показує добру метрику на прогоні, а через тиждень у сервісі поводиться інакше. Дані ті самі, код той самий, але відтворити результат не вдається: ваги з одного запуску, підготовка ознак з іншого, схема даних уже змінилася. Розбираються в цьому вручну, а платить за це якість передбачень.

Перше джерело розходження — ручні артефакти. Ваги складають у спільну теку під іменем виду final_v2, поруч лежить скрипт навчання, а який набір даних і які параметри дали саме цей файл, уже ніхто не пам'ятає. На десятках запусків це терпимо, на сотнях зв'язок губиться остаточно.

Друге — розсинхронізація середовищ. У навчанні та в сервісі передбачень ознаки готують по-різному: інший порядок колонок, інша обробка пропусків, інша версія бібліотеки. Формально це одна модель, фактично — дві різні поведінки на одних вхідних даних.

Третє — відкат моделі. Якщо попередня версія не збережена разом зі схемою даних і залежностями, при деградації залишається гадати, що повертати. Відкат має займати хвилини, а не перетворюватися на відновлення за логами і пам'яттю інженера.

Model registry закриває це як єдина точка правди: версіонування ml-моделей, прив'язка до даних і параметрів запуску, відтворюваність експериментів і передбачуваний відкат. Нижче розбираємо, як саме це влаштовано.

Ефект від версіонування: відтворюваність і відкат моделі

Версія моделі перестає бути набором ваг у окремій теці: до неї прив’язується знімок навчальних даних, конфігурація запуску та метрики на фіксованих зрізах перевіркової вибірки.

Повторне навчання на тому самому знімку дає ту саму метрику — розходження видно на етапі перевірки, а не через тиждень у робочому контурі.

Відкат перестає бути операцією з невизначеним терміном. Раніше пошук останнього робочого стану займав години — артефакти, датасети та конфіги звіряли вручну.

З реєстром достатньо перевести мітку на попередню версію: відкат займає хвилини, і разом із моделлю повертається той самий знімок даних.

Частка відмов після випуску падає, тому що розсинхрон даних і моделі виявляється до викату. Порівняння версій моделей іде за одними й тими самими зрізами, тому видно, де приріст за цільовими метриками, а де — шум на зручній підвибірці.

Реєстр на кшталт MLflow Model Registry тримає цей зв’язок за замовчуванням: версії, стадії, мітки та артефакти лежать в одному сховищі, а переходи між стадіями описані правилами, а не домовленостями в переписці. Права на просування версії видаються ролями, історія змін зберігається.

Відповідь на питання «що саме працює зараз і на яких даних» займає один запит до реєстру, а розбір інциденту — хвилини замість нічного розслідування.

Режими зберігання та роздавання моделей: порівняння варіантів

Вибір способу зберігання версій майже ніколи не зумовлюється самою моделлю — він зумовлюється тим, скільки людей і контурів одночасно працюють з артефактами. Поки в команді один інженер і один стенд, достатньо каталогу з датою в імені файлу.

Щойно з'являються тестовий і бойовий контури, відтворюваність навчання перестає бути питанням зручності й стає питанням розбору інцидентів.

Нижче — три варіанти організації версій, між якими реально обирають на старті. Ми розгортаємо будь-який із них, але реєстр на власному контурі закриває те, чого каталог не закриває в принципі: незмінну версію артефакту з метаданими, правами та історією видачі в бій.

Варіант Коли підходить Обмеження варіантів
Каталог і теги в об'єктному сховищі один-два інженери, один стенд, ранні експерименти немає метаданих і розмежування прав, тег перезаписується, відкат шукають вручну за логами
Реєстр на власному контурі кілька команд, чутливі дані, вимоги до ізоляції потрібні підтримка сховища метаданих і окрема схема резервного копіювання
Керований сервіс швидкий старт, власного кластера немає, команда невелика артефакти й метадані у провайдера, тонке налаштування доступу обмежене

Різниця проявляється на відкаті: у каталозі шлях до попередньої версії відновлюють за журналами запусків, у реєстрі — за номером версії одним запитом, разом із середовищем навчання та метриками. Далі розбираємо, що входить у налаштування під ключ.

Етапи впровадження: від інвентаризації моделей до передачі

Порядок робіт вибудуваний так, щоб реєстр запрацював на реальних випусках, а не в демонстрації. Починаємо з аудиту: поки невідомо, які моделі живуть у проді й хто відповідає за кожну, налаштування перетворюється на перебирання гіпотез.

  1. Аудит моделей. Збираємо все, що навчається й запускається: сервіси, регулярні перенавчання, разові експерименти. Фіксуємо, де версія зберігається сьогодні — у вагах на диску, в імені файлу, у чиїйсь пам’яті.
  2. Інвентаризація версій. Зіставляємо артефакти з випусками: який код і дані дали конкретну версію, які ще використовуються, які пора архівувати. На виході — таблиця відповідності, за якою налаштовується реєстр.
  3. Проєктування схеми. Задаємо ієрархію «проєкт → модель → версія», правила іменування та обов’язкові метадані: датасет, метрика якості, власник, стадія. Схема фіксується до налаштування, інакше реєстр швидко перетворюється на звалище.
  4. Налаштування реєстру. Розгортаємо сховище артефактів, доступ за ролями, зв’язку із системою контролю версій і конвеєром збірки. Окремо — політика зберігання: скільки версій тримаємо напоготові, що йде до архіву.
  5. Перевірка випуску. Проганяємо повний сценарій на одній моделі: навчання, реєстрація, просування за стадіями, відкат на попередню версію. Критерій готовності — відкат за хвилини й без ручних правок.
  6. Навчання команди та передача в підтримку. Показуємо інженерам і аналітикам, як зареєструвати модель і знайти потрібну версію; передаємо регламент, ролі відповідальних і порядок розбору інцидентів.

Конфігурації, політики доступу та регламент випуску версій

Після здачі проєкту у вас залишаються не лише робочий реєстр, а й усі артефакти, за якими його можна супроводжувати, розвивати й передавати іншій команді.

Нижче — комплект, який ми фіксуємо в прийманні: його достатньо, щоб підключити нове джерело даних або змінити правила випуску без звернення до нас.

  • Конфігурації реєстру — файли параметрів сховища артефактів і бази метаданих, правила зберігання версій та очищення, прив’язка до об’єктного сховища, ліміти на розмір артефакту й на кількість одночасних публікацій.
  • Схема інтеграцій — як складальна лінія передає навчену модель, на якому кроці перевіряються метрики якості, хто й під яким обліковим записом реєструє версію, які зовнішні системи отримують повідомлення про нову версію.
  • Політики доступу — ролі та сервісні облікові записи з розподілом прав на читання, публікацію й переведення моделі в продакшн, строки дії токенів, порядок надання та відкликання доступів.
  • Регламент випуску — правила нумерації версій, обов’язкові стадії перевірки, точки погодження, умови переведення в продакшн, процедура відкату на попередню версію та її граничний строк.
  • Документація реєстру — опис структури, обов’язкові поля картки моделі (джерело даних, метрики, відповідальний, призначення), інструкція з підключення нового проєкту.
  • Інструкції для чергової зміни — що перевіряти під час збою публікації, як відновити доступ, куди дивитися насамперед у разі розбіжності версій між реєстром і продакшном.
  • Матриця відповідальних — хто володіє реєстром, хто затверджує випуск, до кого надходить ескалація в разі інциденту.

Усе перелічене ведеться у вашому репозиторії та передається з історією змін. Опишіть задачу — повернемося з оцінкою та планом, у якому обсязі цей комплект збирається під ваш контур.

Кейс: скоротили частку збоїв після випуску моделей

Кейс впровадження: у замовника в бойовому контурі жили 14 моделей, і кожна версія виходила через листування.

Ваги лежали в спільних папках, метрики — в окремій таблиці, код навчання — у чужій гілці, і зрозуміти, чим працююча версія відрізняється від тієї, що показувала цифри на захисті, можна було лише вручну.

Що змінили

Розгорнули MLflow Model Registry як єдине джерело правди щодо версій: у кожного запису — номер, прив’язка до датасету, коміту й вимірювань якості, а стадії «навчання → перевірка → бойовий контур» проставляються автоматично.

Ручний крок «скопіювати ваги на сервер» прибрали зовсім: випуск став просуванням версії стадіями, відкат — перемиканням вказівника на попередній запис.

Метрики до та після

Показник До Після
Час випуску версії 4–6 днів 40–90 хвилин
Частка збоїв у першу добу після випуску 28% 5%
Відкат на попередню версію 2–4 години ручної роботи хвилини, однією операцією
Моделі з відтворюваним навчанням 3 з 14 14 з 14

Скорочення збоїв дало не сам реєстр, а зникнення ручних артефактів: зник клас помилок «у бойовий контур поїхала не та версія» і «метрики рахувалися на іншому датасеті».

Залишкові відмови пов’язані з якістю даних і навантаженням — їх тепер видно на стадії перевірки, до випуску, а не на живих користувачах.

Чим Model Registry відрізняється від версіонування коду?

Код і модель версіонуються по-різному, тому що версія коду — це текст і конфігурація, а версія моделі — сукупність ваг, параметрів навчання, версії набору даних і метрик якості.

Коміт відтворює збірку, але не відтворює модель: той самий код на іншому зрізі даних дає іншу точність. Тому різниця підходів проявляється в тому, що саме вважається одиницею версії.

Практичний висновок: реєстр проти версіонування коду — не заміна, а доповнення. Код навчання живе в системі контролю версій, а реєстр зберігає те, що в неї не вміщується, і тримає зв’язки між версіями моделі, даними та метриками.

Ще одна відмінність — стадії життєвого циклу. Запис у реєстрі проходить зрозумілі стани: чернетка, на перевірці, в експлуатації, архів. Це дає відповідь на питання, яка модель зараз працює і на яких даних навчена, — без розкопок у листуванні та журналах експериментів.

Сумісність, зберігання артефактів і права: часті питання

Реєстр моделей (Model Registry) надбудовується над поточним стеком, а не замінює його: навчання відбувається у звичному середовищі, а версія, метрики та артефакт потрапляють до реєстру автоматичним кроком контуру збірки або через програмний інтерфейс.

Уже навчені моделі переносимо імпортом — ваги, метадані та власник версії прив’язуються до запису, історія експериментів не втрачається.

Артефакти описуються посиланням, а не копією: ваги, конфігурація, схема ознак і метрики лежать в об’єктному сховищі, а реєстр тримає версію, походження та статус. Права роздаємо за ролями — навчання, випуск у робочий контур, відкат, — і кожна дія залишає запис у журналі.

У нас уже розгорнутий реєстр — працювати з ним чи ставити новий?

Працюємо поверх наявного: підключаємо встановлене рішення, доналаштовуємо правила версіонування, доступи та розгортання. Заміна потрібна лише тоді, якщо поточне не витримує обсяг артефактів або не вміє відкочуватися.

Чи сумісний реєстр з нашими інструментами навчання? Підключення відбувається через програмний інтерфейс і стандартні бібліотеки, середовище навчання залишається незмінним. Якщо середовищ кілька, версії зводимо в один список з метриками та артефактами.

Що з обсягом артефактів? Правило життєвого циклу утримує останні версії на гілку та очищає проміжні збірки — сховище перестає зростати, а відкат до попереднього випуску залишається. Великі ваги йдуть у холодний контур.

Обговоримо задачу: з чого почати версіонування моделей

Щоб оцінка впровадження спиралася на факти, а не на здогадки, потрібні вхідні дані щодо контуру та моделей. Зберіть те, що вже під рукою, — решту уточнимо в розмові.

  • Які моделі працюють у продакшені: типи задач, формати артефактів, кількість активних версій на кожну.
  • Як моделі потрапляють із навчання в запуск: ручне розгортання, скрипти, конвеєр збірки — і де цей шлях найчастіше ламається.
  • Де лежать артефакти й метадані: файлове чи об’єктне сховище, реєстр образів, таблиці з експериментами.
  • Інфраструктура запуску: Kubernetes чи віртуальні машини, хмара чи власні сервери, ізольовані контури.
  • Що потрібно для відтворюваності й аудиту: чи зберігати датасет, хеш артефакту, метрики навчання та автора випуску.
  • Хто має право публікувати та відкликати версію: ролі, зовнішні підрядники, обмеження щодо доступів.
  • Строки виведення моделі в продакшен і вимоги до відкату на попередню версію.

За цими даними повернемося з планом робіт: схема реєстру під ваш контур, політики іменування та життєвого циклу версій, порядок перенесення поточних моделей, точки стикування з навчанням і запуском, критерії приймання. Оцінка впровадження прив’яжеться до етапів, а не до абстрактного обсягу.

Опишіть задачу та надішліть вхідні дані — хоча б чорновими нотатками: уточнимо деталі й повернемося з планом і строками.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142