Часть 1. "4 месяца борьбы за место DS джуна" - тут
Такси
- "А у вас тоже свой бизнес, а такси так, для души?" - пошутил пассажир на заднем сидении.
До Нового 2020 года оставалось три часа. Праздновать я собирался за рулем, принимая заказы. Никто еще не слышал ни про какую Ухань. А если ты чихнул, не прикрывшись, людей вокруг это совершенно не волновало.
На голове - новогодние оленьи рога, в бардачке - конфеты. Но девять из десяти заказов - это замученные последним рабочим днем люди, и мои конфеты были им абсолютно не интересны.
- "Нет, к счастью, никакого бизнеса у меня нет."
На самом деле, историй из прошлого про бизнес у меня более, чем достаточно. Но это закрытая страница. Мог бы завести разговор, что не так давно решил рискнуть и начал учиться Data Science. Но не стал. За время поездки я вряд ли объясню обычному человеку, что значат эти два слова. Да, честно говоря, тогда и сам еще не до конца понимал.
Желание это было еще не до конца оформлено и существовало только в виде тетрадки (которую я завел несколько лет назад, понятия не имея ни про какой "машин лёрнинг") с размытыми идеями о том, как бы я разрабатывал свой искусственный интеллект, если бы делал его с нуля.
К этому времени уже 4 месяца я сидел за рулем одновременно в Яндекс.такси и Убере, катаясь по 12-14 часов в сутки 5-6 дней в неделю.
- "Такси, как наркотик. Я вот 12 лет назад пришел подработать, и до сих пор здесь", - сказал как-то управляющий моего первого таксопарка. Очень обнадеживающе.
Прогрессивная шкала. Ежедневная погоня за максимальной ставкой. Абсолютно бесполезная техподдержка. Пьяные, надменные, иногда вонючие пассажиры. Бесконечные пробки. Говорили, что кто-то умудрялся даже по 50-60т.р. в месяц зарабатывать. Но это - один перерыв на 15 минут за 12 часов, педаль в пол, постоянные нарушения. И дежурная чекушка для снятия стресса, как только сдал ключи сменщику.
Сдавая машину в конце смены, я вглядывался в лица этих простых водил. В них не было ничего. Разведенные, понурые, уставшие люди, у которых в жизни больше ничего не осталось, кроме таксометра на смартфоне.
До сих пор с уважением отношусь к их работе, но не вижу никаких причин, по которым надо в ней оставаться на тех скотских условиях, которые сформировали такси-агрегаторы, захватив рынок.
Было, конечно, в этой работе и что-то хорошее. Иногда попадались интересные люди: вертолетчик-ликвидатор пожара на ЧАЭС, директор областной школы для детей с задержкой в развитии с амбициями регионального депутата, участник команды Уральские пельмени, техник-водитель в арктической экспедиции.
Можно было даже представить, что это тоже бизнес. Практически сам себе хозяин. Захотел - включил таксометр, захотел - выключил. Никаких начальников, просто отдавай часть денег в парк и все. Считай доходы-расходы-прибыль. Сколько накатал, столько и заработал.
В ту новогоднюю ночь я заработал, как в самую обычную смену. Все встало на свои места. Такси начало затягивать меня в трясину, выбраться из которой через год-два я уже не смогу. Можно считать, с этого момента началось мое полноценное обучение.
Для начала я пересел на свою машину. На парковой или арендной первые 6-8 часов ты, по сути, отбиваешь аренду, потом уже работаешь на себя. На своей можно хоть что-то заработать даже за 4 часа. Время важнее. Число смен сократил до 3-4х в неделю, чтоб оставался необходимый минимум денег на жизнь. Если ответственно относиться к бюджету и отложить на неопределенный срок все, что не горит, вполне можно прожить и на 20т.р. в месяц. Если есть ради чего (должен отметить, что без поддержки близких было бы куда тяжелее). Остальное время - учеба.
Тут наверно многие скажут:
- "Ага, ага, как же. Что за развод? Какой-то тупой таксист затащил вышмат и залез в технологичную сферу, рассказывай..."
Ок, я не платные курсы, поэтому не буду убеждать, что так может каждый. Вероятно, не каждый. Тут уж надо себя адекватно оценивать. Тем более, если сейчас ты - таксист :)
Вообще, я учился в одной из лучших физ-мат школ Екатеринбурга, потом поступил на мат-мех. На 3м курсе пошёл на вторую вышку. Еще через год вместе с братом открыл компанию, став партнером СКБ Контура. И вобщем-то неплохо развернулся, продавая и обслуживая контуровский софт. Даже немного поруководил партнерской сетью Контура в Москве. Так что IT для меня - это не дальний космос. Да и софт скилы какие-никакие есть.
Но в жизни всякое бывает. Случилась долгая черная полоса (хотя это совсем другая история). А мат-мех был 15 лет назад, опыта в разработке - ноль, и мне уже стукнуло 37. Успех мероприятия был совсем не очевиден. А весь прошлый опыт не давал никаких бонусов в новой специальности. Скорее, наоборот - пришлось вычеркнуть его из резюме по советам бывалых, оставив только размытые формулировки об опыте в продажах и СММ, чтобы не пугать hr-ов.
С марта 2020 началась самоизоляциия, и из такси я ушел в учебу на 100%, самоизолировавшись в саду, где регулярно поливал морковку, редис и даже вырастил полную теплицу огурцов, чтобы было чем отвлечься в перерывах.
- "Куда уходишь то?" - поинтересовался управляющий моего последнего таксопарка.
- "Учиться делать беспилотное такси", - подколол я.
- "Надо бы сломать тебе пальцы, пока не поздно", - задумчиво парировал он.
На том и попрощались.
Когда на меня нападает прокрастинация, я вспоминаю это "прекрасное" время и понимаю, что не хочу больше в него возвращаться НИКОГДА. И сразу хочется учиться и работать.
Учёба
В первой части меня спрашивали, где и как конкретно я учился. Отвечаю.
Платил по 5т.р. в месяц только за специализацию на coursera.org, да и то оказалось, что можно было написать письмо на фин. помощь и учиться бесплатно. Говорят, никому не отказывали, по крайней мере раньше.
1. STEPIK
Программирование на Python: https://stepik.org/course/67
Введение в Linux: https://stepik.org/course/73
Нейронные сети: https://stepik.org/course/401
Нейронные сети и компьютерное зрение: https://stepik.org/course/50352
Практикум по математике и Python: https://stepik.org/course/3356
Линейная алгебра: https://stepik.org/course/2461
Python: основы и применение: https://stepik.org/course/512
Теория вероятностей: https://stepik.org/course/3089
Что-то пройдено полностью, что-то в достаточном для понимания объеме.
2. COURSERA
Легендарная специализация "Машинное обучение и анализ данных": https://www.coursera.org/specializations/machine-learning-data-analysis
Первые 4 курса - must have любому, кто хочет вкатиться в тему. 5й и 6й курс - тут уже по желанию. На мой взгляд, за практикой лучше сразу идти на kaggle.com и/или на собесы, решать тестовые задания.
3. ODS
Открытый курс машинного обучения: https://habr.com/ru/company/ods/blog/322626/
Это как конспект с подробными лекциями. Как только нужно копнуть поглубже или освежить какую-то тему - иду сюда.
4. Ну и какой-нибудь из известных онлайн-транажеров по SQL.
Я тут занимался: https://learndb.ru
5. Вся моя практика - это 1я часть истории, с сентября 2020 до января 2021: https://habr.com/ru/post/536014/
Junior data scientist
Три недели назад я узнал, что успешно прошел испытательный срок в питерской компании ADRIVER (группа компаний Internest). Собственно, этого момента и ждал, чтобы написать продолжение. А то было бы забавно... "Всем привет. Я стал дата саентистом, но не вытащил"...
Думаю, AdRiver это лучший вариант куда я мог попасть, с учетом моего прошлого опыта и пути развития.
За три месяца работы я уже успел поработать над несколькими задачами.
Основной продукт, в котором я участвую - это система управления баннерной рекламой. На пальцах все просто - кто-то в интернете заходит на один из десятков миллионов площадок, где мы можем показать рекламу. Получаем запрос, хотим ли показать этому человеку какой-то из десятков тысяч баннеров наших клиентов и сколько готовы за это заплатить.
Задача - оценить вероятность клика в каждом конкретном случае и, исходя из прогноза, предложить свою максимальную ставку. Короче говоря, то же, что я делал руками, настраивая тергетированную рекламу ВКонтакте, только теперь Data Science, Big Data и вот это вот всё.
Компания существует много лет, команда отличная (в этом я уже убедился, даже пожаловаться не на что), клиенты - в плюсе. Даже странно, что до работы здесь я никогда про нее не слышал, хотя наши технологии используют серьезные бренды и рекламные агентства, вроде Ламоды, МВидео, Digital BBDO и т.д.
Но есть одно маленькое "но".
В скором времени все известные браузеры закроют возможность передачи "кук" 3й стороны, а это значит, что мы, как и все остальные участники этого рынка, заметно потеряем в качестве прогноза, т.к. информации о том, кому показывать баннер теперь будет меньше. С этим надо что-то делать.
Собственно, я и делаю. И тут уже такой простор для творчества, что можно только позавидовать самому себе. Штатно в задачах "click prediction" используется градиентный бустинг.
Пришлось погрузиться в тонкости XGBOOST, CatBoost, форматы данных libsvm, написание скриптов для сбора статистик из файлов на 30-80млн. строк и фильтрации 400тыс. признаков, формирования всяких выборок и т.д. Погонять модели, поискать гиперпараметры для обновленных моделей. (А тут, знаете, модель в полном фарше может и сутки учиться). Короче, реальный Data Science - это вам не Титаник на Kaggle).
Сейчас начал изучать Hadoop и Java, чтобы мог сам вытаскивать данные для моделей. Дальше - больше. У нас есть баннеры, площадки, посадочные страницы. Это все кладезь информации, которая должна помочь улучшить модели в условиях надвигающегося дефицита. Здравствуйте, нейронки. Bert для выдергивания фичей из текста. CV-нейросетки. Данных - тьма! Скучно не будет. Что-то уже начал проверять.
Первая моя задача, чтобы влиться в работу, тоже порадовала.
Нужно было разобрать действующий в компании алгоритм визуальных рекомендаций(читай ResNet на Keras, который я в глаза не видел). Разобраться и оценить перспективы модели CLIP, выложенной за неделю до начала моей работы в компании. Если есть смысл - поменять ResNet на CLIP.
Поначалу, конечно - шок, паника, депрессия... Первые пару часов. Но глаза боятся - руки делают. Между делом пришлось обновить код под 3й питон, что, наверное, было самым неприятным. Постоянно вылазили какие-то непонятные баги.
На выходе получилась модель, выдирающая признаки с картинок и их описаний в виде определенного вида векторов. А по этим векторам можно уже и расстояние оценить. Русские части описаний картинок предварительно переводятся на английский другой нейросеткой(CLIP-то на английский заточен). И если кому-то на Ламоде приглянулось модное платье, модель готова предложить 10 похожих по стилю, бренду, цвету и фасону. Визуально выглядит очень круто, как само по себе, так и по сравнению с ResNet50.
Кстати, если вы не пробовали CLIP для классификации картинок, рекомендую срочно это исправить. Фичи с картинок какого-нибудь известного датасета, пропущенные через банальную логистическую регрессию, вас приятно удивят при оценке результата на тестовой выборке.
Подводя итог, все хорошо! Даже не верится. Но потом вспоминаешь, сколько сил и нервов ушло. И тогда вполне верится.
ЧБД (Что было дальше?)
В течение недели после публикации первой части я получил 3 оффера (еще до конца новогодних каникул). Один из них был как раз в AdRiver. Еще один в стартап по обработке документов. И еще один в белорусскую компанию, тоже по части NLP. Везде было неплохо, но AdRiver подкупил предстоящей широтой задач, на которых можно учиться новому.
Удивительно, но в отличие от всех прошлых собеседований, до статьи, по каждому из офферов меня совсем никак не гоняли по теории. Просили рассказать о прошлом опыте, о проекте для Почты России с хакатона, в стартапе дали 2 задания на время (пару несложных алгоритмов за 3 часа написать). И никакой теории.
Было еще несколько предложений "поднять data science" в каких-то непонятных проектах, где я так и не понял, что от меня хотят.
И, как последний штрих, собеседование на Аналитика в Сбер. Скажу прямо, такого унижения я не испытывал со времен первого настоящего мат-меховского экзамена.
Гоняли по всем возможным темам и разделам, заставляли "зашэрить" экран и писать код в блокноте, засыпали перекрестными вопросами. Больше половины вопросов жестко слил. Думал - без шансов. Но нет:
- "Все, конечно, на базовом уровне...", - и дали тестовое задание на следующий этап.
Тем не менее пришлось отказаться, т.к. надо было давать ответ по офферам. А гарантий прохождения в Сбер никто не давал. Внутри осталось ощущение, что раз в жизни в Сбере стоит поработать, хотя мнения о работе там очень неоднозначные. Но это уже как-нибудь потом, может быть.
Bromka
Вот читаю список пройденных курсов и даже как то стыдно за себя становится.