Онлайн курс HARD ML от Karpov Courses
Hard ML — это не стандартный курс по машинному обучению. Команда кураторов этого обучения не стала ограничиваться одним лишь обучением моделей и решила охватить абсолютно все этапы работы ML-инженера. Вы научитесь самостоятельно собирать и размечать данные, строить пайплайны их поставки, деплоить приложения, настраивать мониторинги и оценивать эффективность алгоритмов.
Вы получите максимально глубокое погружение в задачи, с которыми сталкивается современный бизнес. Каждая тема курса будет рассмотрена на реальных кейсах. К концу каждого модуля у вас будет собственный ML-сервис, решающий сложную и важную задачу. Этот курс станет проверкой на прочность для любого ML-специалиста
Знания пригодились как на собеседованиях, так и в самой работе
Я воспользовался программой помощи в трудоустройстве, которая включена в курс. И именно через специалиста karpov. courses меня нашла моя новая работа (хотя я и сам искал вакансии). Я устроился в небольшой, уютный, но подающий надежды стартап, где с нуля развивал продукт по кредитному скорингу малых предпринимателей для продажи банкам.
Перед тем как начать искать работу, я прошел только модули «Ранжирование и матчинг» и «Динамическое ценообразование». И эти знания пригодились мне как на собеседованиях, так и в работе. Также, конечно, в ежедневной работе помогают «Сценарии деплоя ML-сервисов».
Применить непосредственно на практике заглавные темы модулей «Uplift-моделирование» и «Продвинутое A/B-тестирование» пока не довелось, но полученные знания всё равно не были лишними: продвинутое A/B-тестирование подтянуло статистику, а в модуле по uplift была тема по проектированию библиотеки факторов, что актуально в любых ML-задачах.
В целом, в каждом модуле для меня было что-то новое, полезное, интересное. Но если говорить о личных предпочтениях, то особенно понравились «Ранжирование и матчинг» и «Uplift-моделирование». Тут сыграли роль и обаяние преподавателей (не в обиду преподавателям других блоков), и структура модулей, и какие-то мои собственные интересы.
Еще обучаясь на курсе, выиграл свой первый хакатон
Немного предыстории: за спиной у меня инженерное образование с отличием, несколько книжек по машинному обучению (Тарик Рашид, Франсуа Шолле, Орельен Жерон) и несколько курсов. В рамках университета пробовал себя в различных областях: от гидродинамики в криогенных условиях в рамках вечной мерзлоты и моделирования идеального прикуса у человека до топологической оптимизации и аддитивных технологий. Сейчас аспирант по направлению «Моделирование с помощью функционально-градиентных материалов с использованием топологической оптимизации».
Познакомился с ML впервые в 2017 году, когда ездил в США на стажировку в Wolfram Research Inc. Помимо метода конечных элементов с топологической оптимизацией, там я реализовал алгоритм исправления опечаток в коде. Алгоритм был реализован достаточно дубово и мне предложили привлечь ML. Собственно тогда я и начал понемногу изучать эту область, но алгоритм завершить не успел, поскольку кончился контракт по времени.
В рамках основной работы я занимался задачами календарного планирования, неградиентными методами оптимизации, изучением новых подходов к решению таких задач. Попутно читал книжки по ML и решал курсы на Cтепике. Со временем понял, что с таким подходом у меня не получается выработать для себя однозначное решение в плане выбора ML как основного направления деятельности и развития.
На курс HARD ML я поступал с целью понять, осилю/не осилю, зайдет/не зайдет, и обрести уверенность в себе в области ML. Уверенность в себе появилась после блока Игоря. Я понял, что мне нравится глубоко копать и узнавать что-то новое, попутно применяя новые знания для решения практических задач. Тем не менее я решил поучаствовать в каких-нибудь хакатонах и опробовать полученные навыки (к этому моменту я прошел 2 первых блока). Сначала хотел поучаствовать в Raifhack, но его я благополучно «проспал», закрутился на работе, поэтому пошел участвовать в Лидерах Цифровой Трансформации 2021. Для меня это был первый хакатон и вообще проба себя именно в ML. Там выбрали задачу «Рекомендательная система для стартапов города Москва». Выбрал по достаточно простой причине — блок Игоря как раз про рекомендательные системы, а блок Стаса частично посвящен теме многоруких бандитов, которые тоже используются в рекомендательных системах. Мое предположение в целом оказалось верным, данные были предоставлены такие, что можно было сделать рекомендательную систему на многоруком бандите в первом приближении. В итоге смогли выиграть хакатон. Сейчас идет разговор о том, как эту систему довести до «production ready» уровня и выкатить «в прод» для города Москвы.
Хотелось бы просто сказать спасибо преподавателям (хотя мне и осталось пройти ещё 2 блока). Я ни капли не пожалел, что пошел к вам учиться.
Прим. от Андрея о времени, затрачиваемом на обучение: «У меня уходило по 8 часов в день на блок матчинга, поскольку Python для меня был „неродным“ языком, на 2-й и 3 -й блоки я уже тратил по 2−3 часа в день, так как к тому времени Python уже не был такой сильной проблемой».
Прошел 5 ML собеседований в компании из США и получил работу
У меня изначально были менеджерский бэкграунд и широкие, но неглубокие знания в области ML и DE. Поэтому мне было бы довольно сложно конкурировать с людьми, которые специализируются в CV, NLP, RL или DE. Но зато сейчас появилось много позиций DS Manager, где большую роль играют софт скиллы, умение быстро находить общий язык с HR, DS, AI Directors, VP и SVP, а также опыт управления командами и решения конкретных бизнес задач.
Поначалу я стеснялся сходить с инженерного трека, так как мне интересен и ресёрч, и инжиниринг, но потом понял, что если мои суперспособности — это двигать проекты и решать конфликты, то нечего и отпираться. По результатам тех самых 5 собеседований я проходил в небольшие и средние компании в США на DS, MLE и DS Manager позиции. В конечном счёте я выбрал DS Manager трек — с марта начну работать на позиции Data Science Manager в DISH.com.
По моему опыту, каждое ML интервью состояло из двух частей: базовый ML и продвинутый ML (этап с кодом в расчёт не берём).
В базовой части было важно не только правильно ответить на вопросы, но и объяснить ответы простым языком. Ожидается, что все это могут, поэтому выделиться на этом этапе особо нечем — разве что софт скиллами, улыбчивостью и ответами на каверзные вопросы.
А вот продвинутый ML — эта та часть собеседования, где действительно можно проявить себя. С этим этапом мне очень помог HardML. Люди, конечно, не прочь обсудить продвинутые/редкие штуки, которые вы оба знаете, но будет гораздо интереснее, если вы сможете рассказать о каких-то полезные вещах, которые они не знают. Особенно если есть проект с кодом, в котором можно покопаться. Из общих знаний обсуждались MultiArmedBandits, Fast Nearest Neighbors, CUPED, Clusterization, Uplift Trees. Из того, чем получилось похвастаться — Dask Feature Lib, Contextual MABs, target encoding, probabilistic forecasting, Толока и построение labeling pipelines, а также LambdaMART.
Ещё я для себя понял, что интервью — это не полностью заскриптованный процесс и им можно в некоторой степени управлять. Обычно работало хорошо, потому что слушать в 100 500 раз ответы на базовые вопросы мало кому охота, а обсуждать продвинутые темы всегда интересно. Для себя выбрал такую стратегию, которая работала с переменным успехом:
— Break the ice — small talk, чтобы снять дискомфорт: с кем-то пошутить про новый год, с кем-то посмеяться про гололёд и т. п.
— Понять, что делает команда и выбрать подходящие проекты и знания из своей копилки.
— Рассказывая о себе, обязательно упомянуть подходящие заготовки для продвинутой части.
— Побыстрее проскочить базовую часть.
— Поговорить про продвинутую часть, не сильно углубляясь в дебри.
— По возможности поразбирать код из своего проекта, чтобы сопоставить ожидания и свои возможности.
Так что для меня «ОБУЧЕНИЕ У НАС == КАРЬЕРА В IT» вполне сработало: D
Самый сложный квест в моей жизни
Я из Челябинска, начал обучение на курсе, имея уровень junior и совсем небольшие знания и опыт в Data Science и машинном обучении. Курс дался мне неимоверно сложно! Такого квеста в моей жизни до этого раньше никогда не было :)
Много сил и времени было потрачено на освоение программы, приходилось читать много дополнительных источников, так как три четверти материалов курса оказались для меня абсолютно новыми. Джунам не советую заходить на курс без кучи свободного времени и сильной мотивации победить.
К счастью, мне удалось окончить Hard ML с отличием. Из сильных сторон курса хочу выделить следующее: компетентность преподавателей и качество материала в модулях, активное участие преподавателей в учебном процессе, интересные и актуальные практические задачи с разными нюансами (обычно в лоб задание не выполнить), достаточно хорошая образовательная платформа и удобная инфраструктура. Благодаря курсу я стал кодить в 2−3 раза быстрее, приобрёл навыки решения задач в жёстких временных рамках, стал увереннее в своих знаниях, и, конечно, получил новые знания в предметной области. Теперь совсем не боюсь браться за сложные задачи :)
У меня была сильнейшая мотивация окончить курс успешно, так как я стремлюсь стать профессионалом в области DS/ML, и у меня всё получилось. Это настоящая победа для меня! Новые навыки и знания собираюсь применять в коммерческих компаниях, чтобы помогать им достигать успехов в бизнесе.
Большую благодарность хочу выразить Станиславу Гафарову за онлайн-разборы и Владиславу Ладенкову за активную помощь в решении проблемы с GitLab. Также прошу лично поблагодарить Шишкина Андрея из команды поддержки за оперативные и исчерпывающие ответы в модуле «Сценарии деплоя ML-сервисов», которые помогли мне выполнить задания!
Получил удовольствие от решения сложных задач
Интересный материал: из курса можно узнать много нового, что можно найти лишь в специализированной литературе. Сложные задания: над многими задачами приходилось сидеть по много часов. Но зато я действительно радовался, когда наконец получалось самостоятельно дойти до решения.
Я поступил на курс, так как хотел расширить кругозор за счет решения нетиповых задач. К сожалению, практического применения полученным навыкам на текущем месте работы нет. Особо хочу поблагодарить Владислава Ладенкова за то, что не только записал прекрасные лекции, но и лично подробно обсудил со мной финальный проект.
Очень понравился упор на практику, который удачно вписали в структуру курса, практически не потеряв важных фундаментальных вещей, а там где что-то вдруг потерялось — всегда подскажут, где об этом можно узнать. Качество подачи материала великолепное, лекторов слушать интересно. Опять же много разных практических советов, которые, надеюсь, отложились в голове и пригодятся в дальнейшем. Отдельное спасибо за множество инструментов, с которыми удалось познакомиться, а также за работу службы поддержки.
Разумеется, как и везде, можно найти какие-то небольшие недочеты, но во-первых, это наверняка очень субъективно, а во-вторых, на общее впечатление никак не влияет — готов всем советовать ваш курс, ваш Telegram чат, ваш канал на YouTube (очень интересно смотреть, ведь я теперь понимаю, о чем там речь). С удовольствием пройду еще какой-нибудь ваш курс, когда будет возможность.