Як стати Machine Learning Engineer: курси, поради і досвід українських спеціалістів

Сфера ML нині активно розвивається, відповідно стає все більше запитів на кваліфікованих Machine Learning Engineers. За нашими даними, медіанна зарплата українського ML Engineer сягає $3300, і нині у цій ніші є 36 вакансій на DOU.

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

«Забагато курсів, брак практики, хаотичний підхід до навчання — типові помилки новачків»

Єгор Сікачов, Machine Learning Engineer/Data Engineer у Tango

Насамперед важливо розуміти визначення Machine Learning Engineer. Часто помічаю, що у позиції доволі розмиті межі. Багато компаній шукають універсального бійця, який може і створювати моделі, і тренувати їх, і деплоїти, і підтримувати. Тому під час співбесіди я окремо цікавлюся, що саме потрібно робити. Як на мене, тренуванням моделей та їх створенням займається ML Researcher, кодом, прямо дотичним до моделей — ML Engineer, кодом і інфраструктурою — MLOps, а Data Scientist — це про бізнесові рішення на основі даних.


Я можу виокремити три найбільш поширені шляхи, як стають ML Engineer:

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

Освіту я б поділив на формальну та неформальну.

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

Неформальна освіта — це різні курси. Як офлайн, так і онлайн. З онлайн-курсів раджу пройти Machine Learning від Andrew Ng. Цей курс дасть гарне базове розуміння, що таке ML. Після цього можна спробувати підняти свій невеличкий вебсервер на Flask з нейромережею всередині. А потім перемкнутися на книжку Chip Huyen Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications. Вона детальніше розкриє, як саме запускати моделі в проді. До речі, в неї є досить цікавий блог, в якому серед іншого зібрані добірка курсів з ML й інші навчальні матеріали.

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

Основні знання для позиції отримав в університеті. В ХНУРЕ якраз є кафедра штучного інтелекту. Додатково я підтягнув Python на різних курсах з інтернету. Паралельно з навчанням проходив різні курсики з бібліотек Pandas, Numpy, Scikit-Learn. Підхід до самонавчання був досить хаотичним і несистематизованим, але це було краще, ніж нічого. Зараз я б порадив собі тодішньому пройти до 5–6 курсів з бази (Python, web-development with Python, ML Basics, ML Advanced topics, Python ML Libs) і працювати над різними пет-проєктами чи розв’язувати задачі на Kaggle.

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

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

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

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

«80% успіху ваших моделей і рішень залежить від правильної обробки та підготовки даних»

Олександр Коровій, Machine Learning Engineer у LetyShops

Після вступу в КПІ я багато чого спробував: від Web до Embedded, і одного разу натрапив на нейронні мережі. Я був вражений і дуже кортіло розібратися, як все працює. Спочатку я пішов у Data Engineering: займався парсингом вебсайтів, збором і процесингом даних в українському стартапі. Та коли накопичувалося багато текстових даних, постало питання їхньої обробки. Паралельно я цікавився методами машинного навчання і тим, як займатися обробкою природної мови. На щастя, у компанії дали змогу заглибитися у ML.


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

Втім також мені допомогли спільноти, де можна запитати, порадитися. Одразу залишу посилання:

  1. Група для людей, які працюють з NLP та українською мовою.
  2. Розпізнавання мови.
  3. Синтез мовлення.
  4. Computer Vision українською.
  5. Kyiv Data Science.
  6. Також є багато Discord-каналів, як-от Hugging Face; у них крутий блог.

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

На початку працювати було складно. Аби втілити у життя те чи інше рішення, я витрачав багато часу, бо банально бракувало досвіду. І воно часто виходило «кривим».

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

Я, як і чимало новачків, приділяв мало часу обробці даних. Наведу реальний приклад з роботи над класифікатором для текстів. Перша версія на так-сяк підготовлених даних мала метрики на рівні 30%. Потім я брав великі моделі і трансформери — вони збільшили метрики до 50% точності. Але вони були надто дорогими для впровадження. Тому я знову засів за дані й детально розглядав приклади, на яких модель помиляється, намагався зрозуміти, чому вона помиляється, яка різниця між тим, де все добре і де — погано, де потрібно було дорозмітити дані тощо. Коли я вже провів такий глибокий аналіз та обробку даних і повернувся до першої версії (архітектури) класифікатора, отримав приріст метрик з 30% до 78%.

Тому вже зі свого досвіду скажу, що 80% успіху ваших моделей і рішень залежить від правильної обробки та підготовки даних. Не бійтесь приділяти цьому більше часу.

Насправді я був вражений тим, наскільки в ML багато завдань, які легко розв’язати не вдасться. Дані постійно «шумні», в них багато косяків. Багато обмежень накладає бізнес, в якого немає мільйонів доларів на ML-інфраструктуру, і треба завжди йти на компроміси та видавати максимальну якість при мінімальних ресурсах.

Якщо говорити про поради тим, хто прагне стати ML Engineer, я насамперед рекомендував би почати з курсів. До прикладу, є лекції від Stanford CS224n (NLP) на YouTube, рекомендую також канал Андрія Карпати.

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

Як на мене, ML Engineer насамперед буде важко без ґрунтовних знань з математики, тобто матричних обчислень, а це — лінійна алгебра. Весь ML базується на цьому. Зазвичай для тих, хто не вивчав методи оптимізації функцій в університеті, це стає викликом. Наприклад, у моєму випадку за плечима є факультет прикладної математики в КПІ та спеціальність «Комп’ютерна інженерія». Втім навіть ті, хто вивчав згадане, мають повторювати все це.

Але ML того варте, бо це дуже перспективна галузь. Тільки згадайте, які революційні речі може робити ChatGPT, Llama, Sora та інші моделі. Зараз ШІ навіть на війні допомагає. Тому, думаю, скоро ми будемо його використовувати у житті на тому рівні, як, наприклад, використовуємо бази даних. І це буде обовʼязковою частиною багатьох продуктів.

«Безпосередня розробка моделей машинного навчання — це лише невелика частина роботи»

Антон Бражний, Machine Learning Engineer у Samsung R&D Institute Ukraine

Я закінчив Київський політехнічний інститут за спеціальністю «Комп’ютерні науки». Напрям цей обрав тому, що мене цікавили технології і я хотів розв’язувати складні задачі. І саме університетська програма з акцентом на аналітичні навички вплинула на те, що кар’єру я почав зі сфери Data Science, суміжної з машинним навчанням. Ця галузь здалася мені надзвичайно перспективною.


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

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

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

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

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

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

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

Наразі Machine Learning Engineers є особливо затребуваними через те, що зростає популярність великих мовних моделей, як-от ChatGPT. Проте штучний інтелект не обмежується лише мовними моделями та має широкий спектр застосувань, зокрема у таких галузях, як автомобільна промисловість, охорона здоров’я, розумні міста, енергетика тощо. Все це потребує постійних інновацій та розвитку, а отже кваліфікованих інженерів. Тобто навіть якщо інтерес до конкретних технологій може змінюватися з часом, загальний попит на фахівців у галузі машинного навчання залишиться високим.

Кілька корисних посилань від мене:

  • Papers With Code — ресурс із сучасними науковими статтями з ML. Можна знайти готові моделі та дані майже для будь-якої задачі.
  • Kaggle — платформа для змагань з аналізу даних та машинного навчання. Не завжди містить задачі, які відповідають реальним проєктам, проте є важливим ресурсом для тих, хто хоче отримати початковий практичний досвід. Також, коли ви аналізуєте та вивчаєте рішення інших учасників, можете отримати нові ідеї та підходи до розв’язання проблем.
  • Курс від New York University (базовий і просунутий) — для тих, хто хоче заглибитись в Deep Learning.

«Краще входити у професію поступово, ще ліпше — з ментором»

Андрій Яковина, Machine Learning Engineer в itemis

Я навчався у КПІ в Інституті прикладного системного аналізу (ІПСА). Моя інтернатура збіглася з початком пандемії коронавірусу. IT-ринок тоді почувався погано й пропозицій для мене як для початківця було небагато. Але був і плюс: в цей період з’явилося більше вільного часу, який я витрачав на курси з Machine Learning (наприклад, на Kaggle). Вже тоді ML видавалося чимось перспективним. Тож я вирішив сам стукатися у різні компанії й проситися на позицію Machine Learning Engineer.


У 2020-му на мій запит відгукнулися у Watched — це ШI-стартап. Саме там я здобув базові знання і навички в ML і зрозумів, як це все працює у середовищі, плюс-мінус наближеному до продакшену. Але це була інтернатура: неоплачувана й короткотривала. По суті, я потрапив туди лише тому, що вони вирішили самі мені допомогти — і я досі за це вдячний. Втім після стажування мені нічого не лишалося, крім як шукати іншу роботу, адже хотілося і працювати, і заробляти.

Кілька місяців я був Trading Analyst, але зрозумів, що фінансова сфера — це не моє. А у 2021-му перетнувся з EPAM. Фахівці компанії викладали на моєму факультеті курс з розробки й тестування. Я ще під час навчання добре себе зарекомендував, тож, коли мені запропонували приєднатися до команди на позицію Junior Software Test Automation Engineer, я погодився. Так, це не зовсім те, чого я хотів, але було б нерозумно нехтувати цим шансом.

Втім я майже відразу збагнув, що мені треба буде переходити кудись. Для себе бачив кілька варіантів: або в менеджмент всередині EPAM, або рухатися в бік ML деінде. Другий варіант імпонував більше.

Річ у тім, що Software Test Automation Engineering для мене не є чимось глибоким, де можна постійно поповнювати знання й рухатися вгору як професіонал. Натомість ML — сфера, де можна копати й копати глибше. Ця галузь у найближчі роки точно не вичерпає себе, навпаки — лише розшириться. Крім цього, я враховував і власний бекграунд. Математика, яку нам викладали в ІПСА, — це те, що використовують безпосередньо в Machine Learning Research. Тому я бачив себе переважно в цій галузі.

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

Тому після ІПСА я вступив до Білефельдського університету на спеціальність Data Science, а згодом до Мюнхенського технічного університету, де здобував ступінь магістра і вивчав Deep Learning, Machine Learning та інше. І зазначу, що математичних знань, які дали в ІПСА, більш ніж достатньо, щоб навчатися в цих університетах і працювати далі в напрямку ML.

Нині у мене дві роботи. З 2023-го я працюю парт-тайм у німецькій компанії itemis на позиції Machine Learning Engineer з фокусом на дослідження. Я люблю бачити результат того, над чим працював, фінальний продукт. Втім у випадку досліджень це рідко трапляється.

Тож у мене є і друга робота, яка закриває потребу бачити результат. Це стартап під назвою Bynesoft, що працює з Large language model. Ми заснували його разом з товаришами у січні 2022-го, тобто ще до появи ChatGPT. Ми надаємо готовий Back-end та інфраструктуру для створення застосунків на великих мовних моделях.

Від початку я відповідав переважно за Back-end, DevOps, MLOps-частину, та й за усю архітектуру загалом. З LLM мені доводилося працювати, але тоді, коли ми стартували компанію, моїх знань з ML бракувало і я мав у процесі підтягувати все. Стартапом займався паралельно з навчанням у німецьких вишах. Тепер же, коли я набрався знань і навичок, у Bynesoft я відповідаю за те, що й раніше, і додатково за встановлення зв’язків із замовниками та подальшу комунікацію з ними, інтеграцію продукту. До речі, ми зараз закриваємо перший раунд за участі британських та американських VC, тож незабаром будемо розширювати команду.

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

Припускаю, що особливо важко потрапити у сферу людям, які не мають математичного бекграунду. Без нього легко розгубитися, бо незрозуміло навіть, з чого починати.
Втім кілька корисних посилань підкажу. Мюнхенський технічний університет, публікує чимало класних лекцій. Раджу звернути увагу на матеріали про основи Data Engineering, MLGS і на канал професора Мюнхенського університету Matthias Niessner.

У мене є відчуття, що найближчим часом сфера ML буде активно розвиватися, і вчити щось нове, аби в ній затриматися, треба буде ще з більшими темпами, ніж в решті IT. Зараз пишуть тисячі наукових робіт, що показують, як можна змусити моделі краще розуміти цей світ. Але реального математичного обґрунтування багатьом дослідженням все ще бракує. Тому надалі будуть потрібні спеціалісти, які зможуть довести, що той чи інший метод справді працює.

Читайте також: Співбесіда з ML Engineer. 230 запитань для Junior, Middle та Senior

👍ПодобаєтьсяСподобалось10
До обраногоВ обраному20
LinkedIn



1 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.
У мене є відчуття, що найближчим часом сфера ML буде активно розвиватися, і вчити щось нове, аби в ній затриматися, треба буде ще з більшими темпами, ніж в решті IT.

Курси швидко осідлали цю тему, і намагаються вчити/заробляти, але то питання друге.
ithub.ua/...​-science-machine-learning
А ось питання як довго наші вузи будуть адаптувати свої застарілі програми під нові реалії? Більшість опитуваних з КПІ як і я, і не з чуток знаю як там не люблять накатані роками програми міняти на щось нове

Підписатись на коментарі