ML-інженери: від А до Я про одну з найпопулярніших професій

ML-інженер

Machine Learning (ML) - технологічний напрямок, фахівці якого (ML-інженери/розробники) навчають комп'ютери виконувати завдання на основі наявних даних. У результаті вони можуть обробляти великі обсяги інформації за короткий час, показуючи точніші результати, ніж людина-фахівець. Цей напрямок іноді називають Artificial Intelligence (AI).

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

Для початку трохи термінології — стане в нагоді, щоб глибше розібратися в матеріалі.

Машинне навчання (Machine Learning, aka.AI) - алгоритми, здатні самостійно навчатися завдяки оброблюваним ними даним.

Модель машинного навчання (ML Model) — алгоритм машинного навчання, який описує, як буде навчатися комп'ютер, які дані та параметри потрібно буде задіяти у процесі, у якій черговості виконуватимуться ті чи інші команди та інше.

Якщо модель машинного навчання – нейронна мережа, то кажуть, що має місце глибоке навчання (Deep Learning). Це підклас алгоритмів Machine Learning, який містить методи, основані на роботі штучних нейронних мереж. Нейронні мережі — математичні конструкції, найчастіше складаються з безлічі шарів, які налаштовуються. Кожен шар — функціональна одиниця, здатна аналізувати вхідні дані, витягувати їх корисну інформацію, передавати її наступним шарам. Від типу та кількості шарів зазвичай залежить те, наскільки складні завдання зможе виконувати нейромережа: чим більше, тим складніше. Водночас чим вище число параметрів у нейромережі, тим більше даних і часу необхідно для її навчання.

Метрика машинного навчання (ML Metric). Важливо розуміти, наскільки корисна для завдання модель. Для оцінки використовуються метрики машинного навчання - числові характеристики, що відображають ефективність моделі. Метрики обчислюються за допомогою експериментів над даними, які не використовувалися для налаштування (навчання) моделі. Тобто на даних, які вона «бачить» уперше. Приклад: модель визначає, чи хворий пацієнт на коронавірус, аналізуючи його комп'ютерну томографію. У такому разі метрикою може бути частка правильних відповідей (accuracy) — відношення числа чітко поставлених моделлю діагнозів до загального числа проаналізованих КТ.

Де застосовується ML?

Продукти, в яких використовується ML, можна поділити на дві групи. У першому випадку це існуючий продукт, і за допомогою ML ми розширюємо його функціонал. Хороший приклад - Spotify та Instagram. Обидва сервіси не зав'язані на ML, але активно використовують його при створенні унікальних списків рекомендацій для кожного користувача.

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

Доменні області, в яких застосовується ML

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

  • Рітейл та електронна комерція.
  • Банкінг і фінанси.
  • Охорона здоров'я.
  • Маркетинг, продаж, реклама.
  • Біологія, фізика, хімія та інші точні науки.

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

  • Saas-рішення та мобільні програми.
  • Інженерні роботи.
  • Роботи та системи автопілотування.

Життєвий цикл ML-розробки

Він схожий на будь-який інший цикл розробки ПЗ, однак має свої особливості:

1 етап: збір вимог і дизайн системи

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

  • вибрати метрики Machine Learning, найважливіші для бізнес-цілей проєкту, які дозволяють закрити завдання, які ставить клієнт перед проєктною командою;
  • вирішити питання юридичні та етичні. Наприклад, не можна забувати про General Data Protection Regulation, GDPR, загальний регламент захисту персональних даних, встановлений Євросоюзом.

2 етап: реалізація

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

На виході ми очікуємо побачити код для обробки даних і код для навчання ML-моделі, а також набір розрахованих метрик Machine Learning, які показують, наскільки добре і точно працює система.

3 етап: розгортання та інтеграція ML-моделі

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

4 етап: тестування

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

5 етап: підтримка та моніторинг

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

Усі перераховані вище етапи зациклені один на одному. Часто після досягнення 5-го можна зробити кілька кроків назад, наприклад, якщо дані дуже змінилися. У такому разі необхідно буде поглянути на них ще раз, заново перетренувати ML-модель, протестувати… Так цикл ML-розробки на проєкті буде запущено заново.

Які знання знадобляться ML Engineer?

  • Знання Python (основна мова розробки) та C++ (застосовується набагато рідше).
  • Знання фреймворків: NumPy, Scikit-learn, Tensorflow, PyTorch.
  • Хороше розуміння ML.
  • Розуміння Flask, Docker, Pip, PyTest.
  • Вища математика на рівні розуміння векторів і матриць, похідних, основ теорії ймовірності та статистики.
  • Алгоритми та структури даних.

Читати також