ML-інженер не розуміє життя

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Шалом колеги.
Незважаючи на те, що в мене вже 10+ років досвіду з різними проектами і різними технологіями, з ML я почав працювати лише декілька місяців тому, хоча завжди хотів цим займатися, ця галузь манила мене.
Чомусь мені завжди здавалось, що тут, в ML/DS найрозумніші інженери, а всі решта це просто манкі-кодери, які вивчили пару патернів, трохи алгоритмів, фреймворк і вперед формошльопити мікросервіси.

Моя поточна контора має значну ML складову в своєму продукті і по моїх ініціативі, мене «перевели» працювати сюди.

Я вивчив базу(ну ок, по деяким пунктам ще в процесі): нейронки, трансформери, датасети, train/test split, метрики, візуалізація.
Але що далі — не дуже ясно.
Ситуація вчора:
1. сініор ML-колега дописав тренування трансформера
2. я підготував датасет
3. запустив на GPU
4. і.... результат лайно

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

Тепер питання до AI/ML/DS спільноти: Це так і треба? Ви так і працюєте?
Це так і має виглядати типовий день ML-інженера?
Ви реально більшість часу запускаєте експерименти, отримуєте погані результати, тюнінг, знову погано, знову тюнінг?
Чи мене контора обманює, спеціально хоче, щоб я облажався і можна було красиво звільнити «по статті»?

Буду радий за коменти і поради бо місце цікаве, робота також, тому хочу бути корисним і ефективним.

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Для людей, які будуть це читати в майбутньому:

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

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

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

про це є книзя (Superforecasting: The Art and Science of Prediction by Philip E. Tetlock, Dan Gardner) від дослідника теми, її можна навіть і не читати всю, а тільки витиснути розібрані деталі, імхо воно варто і поза як контекстом раціональних передбачень так і за контекстом датасаєнсу і тп

тільки треба обережно з надбаним скілсетом, в культурах де не дуже то й люблять ерудитів, яких на планеті більшість можна на себе легко накликати гм, негативні інтенції %)

Ще одне, пробуй починати з простих моделей, які дають explainability. Складні моделі варто застосовувати на хороших даних.

Я не вважаю себе ші спеціалістом, тому далі думка некваліфікованого профана.

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

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

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

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

працюють по відомих рецептам

Так це ж суть ІТ на 95%, якщо не на 99.99%

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

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

Так само і в ML / Ds, є відомі алгоритми і моя задача найкращим чином застосувати один із відомих і перевірених алгоритмів, а не вигадувати своє.
Я, звісно, можу експериметувати із наборами даних, гіперпараметрами моделей, пробувати комбінувати XGBoost та Random Forest, але, по великому рахунку, на абстрактному рівні, цей підхід не особливо відрізняється від того, аби кодер в своєму скрипті експериментував із тим, що працює швидше, масив чи зв’язаний список чи хеш-мапа.

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

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

Ну в AI/ML також всі розуміють чому щось зроблено саме так, а не інакше.

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

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

Учитывая что весь ML это просто квинтессенция того что хоть как-то работает из такого рода математики — то это норм. Скил ML как раз в том чтобы понимать что будет работать а что не будет. Сильный ресерч лучше отдать ресерчерам.
Никто не понимает как это работает, оно просто работает.

Хочу стати ресьорчером(ну хоча б частково), тому наразі берусь за такі задачі.
Але те, що всі слабо розуміють, чому і як це працює, це факт.

До речі, з вашого досвіду, як DL ліда, наскільки є сенс шукати в наукових пейперах відповіді на подібні запитання? Чи є сенс шукати пейпери по моїй предметній області( фінанси, часові ряди ) і намагатися натягнути їх підходи на свої дані?

Чи краще скормити весь наявний контекст ChatGT і пробувати все, що він скаже?

Пейперы хорошая вещь, но их слишком много в последнее время, разве что какой-то топ общепризнанный по своей теме почитать не лишнее.
ChatGPT тоже норм вариант для генерации новых идей, особенно дип ресерч.

Правило #1: гімняні дані дадуть гімняну натреновану модель. Проблема в

2. я підготував датасет

Як ви її підготували?

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

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

Мій попередній досвід, коли є тікет в джирі, взяв його, поправив чи згенерував новий код, рев’ю, залив, протестували, працює. Все straitforward, сиди, клікай, не парся, а тут якийсь інший світ!

З мого досвіду підготовка тренувальної вибірки це 60% усього часу. Ще 30% постобробка після інтерференції тренованої моделі.
1. Чи доменні експерти перевіряли ваші дані на коректність, розмітки, лейбелінг, формат, інформаційний шум?
2. Ви ділили на train, validation, test datasets, якщо так то як і коли який використовували? Які вони у вас завеликі?
3. Чи проводили ви аналіз помилок?

Мій попередній досвід, коли є тікет в джирі, взяв його, поправив чи згенерував новий код, рев’ю, залив, протестували, працює. Все straitforward, сиди, клікай, не парся, а тут якийсь інший світ!

Це в розробці, а тут в ML/DS є багато research який коротко можа охарактеризувати так: «як з гімна зліпити кулю». Але не переймайтеся, в академічних дослідженнях ще більша жесть.

Наштовхнули мене на пару ідей, які варто перевірити, дякую.

А от ще з вашого досвіду, наскільки довго допустимо «займатися експериментами», підготовлювати датасет і показувати, що із запуска в запуск модель показує погані результати?
Це нормальний кейс?

Скільки таке може тривати, день, тиждень, місяць?

Тиждень. За тиждень потрібно зробити кілька ітерацій та експериментів і мати якийсь висновок та мати щось показати. Не обов’язково що за тиждень можна добитися задовільного результату.

Погоджуюсь, по моїм відчуттям ± десь так само, просто хотів отримати підтвердження.

Чому це ти так вважаєш? В академічних дослідженнях багато користі і досвіду, на мою думку.

А хто казав що немає користі в академічних дослідженнях?
Я мав на увазі що з наукових даних дуже часто важко витягнути корисний сигнал.

Це в розробці, а тут в ML/DS є багато research який коротко можа охарактеризувати так: «як з гімна зліпити кулю». Але не переймайтеся, в академічних дослідженнях ще більша жесть.

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

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

Часові ряди та трансформер — це якось трохи дивно.

Трансформери працюють із токенами та їх семантикою, вони не дуже якщо треба якісь тренди передбачити. Більш того, їх зазвичай не тренують з нуля (бо ви не гугл), а донавчають опен сорс моделі. Ну, наприклад, щоб модель була у змозі генерувати ваш DSL замість звичайного SQL. Отаке буде добре працювати, бо базові знання модель вже має, ви лише навчаєте її вашому «словнику».

Може краще якусь більш класичну модель брати? Там взагалі достатньо даних для передбачень а не лише шумо генерації?

Це трохи не той трансформер, не LLM.

Ммм. То що він таке? Це нейронка чи якийсь auto regression, або random forest, чи може якась баєсова модель, або щось інше?

Бо без деталей ми спілкуємось про то як готувати сферічних коней у вакуумі :)

Welcome у світ ML) research може займати багато часу і у ML негатівний результат то теж результат. То ж не перемайся, в нормальних компаніях це розуміють.
P.S пошук рішення і місяці може займати

Я це розумію, але як про це коректно доносити менеджменту)?

Звільнятись та шукати місце, де це менеджменту доносити не требо)

контора обманює

а якщо контора і сама не розуміє перспективу... 🤔

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

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