Системи машинного навчання, які працюють у реальних умовах: тестування при розгортанні

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

  • перевіряти вхідні дані;
  • перевіряти конструювання ознак;
  • перевіряти якість нових версій моделі;
  • перевіряти робочу інфраструктуру;
  • тестувати інтеграцію компонентів конвеєра.

Багато розробників програмного забезпечення віддають перевагу розробці через тестування (TDD). При TDD розробники створюють тести до написання "справжнього" початкового коду. Однак для машинного навчання TDD може бути непростим завданням. Наприклад, неможливо написати тест для перевірки втрат до початку навчання моделі. Натомість потрібно спочатку визначити допустимі втрати під час розробки моделі, а потім тестувати її нові версії з урахуванням цього показника.

Про модель єдинорога

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

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

Тестування нових версій моделі з відтворюваним навчанням

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

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

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

  • Візьміть середнє значення з декількох запусків моделі.

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

Навіть якщо ви виконаєте ці рекомендації, це не гарантує відсутність інших джерел недетермінізму.

Тестові виклики API машинного навчання

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

Написання інтеграційних тестів для компонентів конвеєра

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

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

Перевірка якості моделі перед початком роботи

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

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

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

Перевірка сумісності моделі й інфраструктури перед початком роботи

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