Розробка ML-рішень на замовлення: від прототипу до production

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

Розробка ML-рішень: де ламаються пілоти

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

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

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

Якість навчальних даних — не етап перед стартом, а постійний режим.

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

Тому розробка ML-рішень починається з перевірки того, як кожна ознака формується в момент ухвалення рішення, а не в момент вивантаження.

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

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

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

Що змінюється після впровадження моделі в роботу

До впровадження модель живе в блокноті дослідника: результат залежить від того, хто і коли її запустив, а будь-яка правка потребує повної ручної звірки.

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

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

Частка ручних операцій падає з 80% до 15–20% — вручну залишаються лише спірні випадки, які йдуть у чергу на донавчання, а не розбираються потоком.

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

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

Навантаження на перевіряльників перестає зростати разом з обсягом: розмічається й перевіряється вибірка за пріоритетом, а не весь потік.

Повторюваність результату фіксується на рівні артефактів — однаковий вхід за тієї самої версії дає ту саму відповідь, і розходження можна пояснити, а не списати на «магію».

Формати постачання рішень: сервіс, контур, гібрид

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

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

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

Формат Коли підходить Обмеження
Мережевий сервіс Потрібен швидкий старт, навантаження нерівномірне, у даних немає чутливих полів Модель і журнали залишаються на нашій стороні; час відгуку залежить від каналу зв'язку
Приватний контур Дані не можуть покидати периметр, потрібен повний контроль над моделлю та логами Обладнання, оновлення та спостереження за якістю бере на себе замовник; виведення в роботу довше
Гібридний режим Частина даних закрита, частина — ні; пікові навантаження вищі за власні потужності Складніша маршрутизація запитів і синхронізація версій моделі між контурами

Що уточнюємо до вибору

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

Етапи роботи: від розбору даних до передачі команді

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

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

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

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

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

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

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

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

Що залишається у вас: код, схеми, регламенти, доступи

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

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

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

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

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

До: вибірка раз на місяць і рішення вручну

У замовника був розрив між даними та дією.

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

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

Після: ознаки за розкладом і пріоритет за ризиком

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

Розмітка «пішов / залишився» будується на ковзному вікні, тому модель навчається в тих самих умовах, у яких потім працює. Той самий набір ознак, що збирався три дні, тепер оновлюється за 40 хвилин без участі аналітика.

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

Частка рішень, які ухвалюються вручну, знизилася зі 100% до 15% — решту закриває автоматичне продовження для клієнтів із низьким ризиком. Точність спрацювань на утримання — 7 із 10, відтік у цільовому сегменті за два квартали скоротився приблизно на третину.

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

Чим відрізняються дані для навчання та для роботи моделі?

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

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

Далі зсув розподілу: змінюється поведінка клієнтів, сезонність, склад джерел, і зв'язки, вивчені на минулому, перестають описувати теперішнє.

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

Окремо ловимо витік: якщо ознака в навчанні рахувалася за даними, недоступними в роботі, офлайн-метрики будуть відмінними, а в потоці модель розвалиться.

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

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

Технічні сумніви замовників: дані та якість

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

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

Даних мало, розмітка неповна — з чого почнемо?

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

Як зрозуміти, що якість просіла?

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

Що буде, якщо модель доведеться замінити?

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

Навіщо потрібна ваша команда після запуску?

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

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

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

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

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

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

Напрямки AI-розробки

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

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