Aspiring Data Science
318 subscribers
386 photos
10 videos
6 files
1.39K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
Forwarded from New Yorko Times (Yury Kashnitsky)
Книга про ML собеседования
#ml #books #career #interview

Дочитал драфт книги Chip Huyen про ML интервью https://huyenchip.com/ml-interviews-book

Чип https://twitter.com/chipro - незаурядная личность: популярная вьетнамская писательница, выпускница Стэнфорда, поработала в NVIDIA, Netflix и паре стартапов, сейчас свой тащит и преподает ML system design. Я делал обзор на ее книгу Designing Machine Learning Systems» тут https://t.me/new_yorko_times/43

Книга про интервью рассматривает виды работы в области ML (research, applied science, ML engineering), мл сисдиз и MLOps (это по сути краткая выжимка упомянутой выше книги). Далее обсуждаются типы интервью, поведенческие тоже, что говорить и что нет. Далее - что делать с оффером, как переговариваться, как устроена компенсация оплаты в бигтехе. Рассматриваются ресурсы для подготовки (одсовцы найдут целых две пасхалки в части 4.2 про блоги и 4.3.1 про курсы) и наконец, добрая половина книги - это список вопросов к собесам по математике, CS и ML.
Forwarded from New Yorko Times (Yury Kashnitsky)
Собес с HuggingFace в 2019 и бодрое тестовое
#career #interview #fail #ml #petproject

На фоне новости о том, что HuggingFace привлек еще $235kk и уже от техгигантов (Google, Amazon, Nvidia, Intel, IBM Salesforce, Qualcomm и AMD), решил поведать 😃 как я с ними собеседовался в конце 2019. Я с удивлением обнаружил, что Томас Вульф живет в Утрехте - взял да и написал ему в личку. Встретились в кафе, потрещали (Томас уже тогда работал из дома/кафе, до того как это стало мейнстримом, тогда называл это “дикой жизнью”). Томас – очень простой и приветливый чел, из ряда тех, с кем общаешься-общаешься, а потом возвращаешься к мысли “но он же очень талантливый и работоспособный парень, вот скромняга!”. Все в духе истории, как HF вообще зарождался (”ребята, мы хотим по пиву, а потом есть идеи покодить вечерком – BERTа на PyTorch переложить, кто с нами?” (с) Thomas Wolf, EMNLP 2018).

В целом деньгами HF на тот момент не баловал, да и я тогда по визовым ограничениям и не мог бы работать на стартап. К тому же я прям совсем не рассматривал вариант работы из дома (кек). Наконец, тогла в 2019 совершенно не было понятно, как ребята будут монетизироваться. Но решил пособеседоваться, челлендж ведь. После бодрого знакомства с CEO Клементом первый шаг – тестовое задание.

Томас придумал веселое тестовое, которое впрочем точно устарело после очередной мини-революции в мультимодалке” (CLIP и в целом text2image). Так что пошарю в открытый доступ.

Мне задача понравилась, и я решил поботать просто по фану. Для контекста: дело близилось к Рождеству, никто уже на работе не впахивал, у меня две недели как родилась дочь (и, на удивление, как все оправились от первого шока с бессоницей, дальше высвободилось немало времени, т.к. существо в осномном спит). Ковид уже пошел по миру, но мы не догадывались. Я совсем недавно закруглился с млкурсом. В-общем, идеальная ситуация, чтоб душевно покодить пет-проджект, каким я рассматривал тестовое от HF.

Итак, задача – визуализировать текст ганами. Входной текст кодируется бертом, на выходе – BigGAN, вот сутью задания было обучить небольшую сетку отображать эмбеддинги берта в эмбеддинги BigGAN. Как это работает, можно глянуть в репе.

Сразу скажу, столько вкладываться в take-home точно не стоит, по оформлению оно лишка вылизанное (docker-compose, Streamlit, подробный ридми, гифки, все дела…). В инструкции Томаса советовалось “потратить на задание 2-3 часа”, что, конечно, немного лицемерно, но оптимум где-то посередине – часов 8. То что происходит в репе – почти безнадежно устарело с появлением CLIP. Но на оформление, структуру репы и презентацию тестового можно поглядеть.

К слову, я и не прошел. Ревьюеры похвалили как раз оформление, но придрались к мелочам типа того, что я не выставил 0 в attention mask для паддинга и что-то им мой пулинг-слой не зашел, нет разбивки на батчи и т.д.

Хоть я б в HF и не пошел, все равно было обидно. Так что с горя победили в гугловском NLP-соревновании на кекле и удалось закрыть мастера, а через месяц и работу сменить.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from asisakov
РЕЗЮМЕ
Часть 1

Продолжим цикл про собеседования. Здесь я раскрою подробнее, на что следует обратить внимание в ваших резюме. Самое главное - надо помнить, что просмотр резюме занимает 10-15 секунд у рекрутера, и после прохождения скрининга оно попадает на стол к человеку, открывшему вакансию, где он уже чуть внимательней просматривает ваше резюме на соответствие вакансии. Давайте пройдем по пунктам.

1. Соответствующий шаблон.

Есть некоторые устоявшиеся в IT правила заполнения резюме. Резюме должно составлять 1 страницу, максимум 2 (если вы идете на очень высокие позиции и у вас много значимых должностей и мест работы, то возможно вам уже и не нужно резюме). В резюме не должно быть фото, также обязательно следует указать ваши контакты. Один раз я видел резюме, в котором вообще не было ничего из информации, по которой можно связаться с человеком (как думаете, связались ли потом с ним?).
В резюме должна быть сухая выжимка из вашего опыта, сделанных проектов, навыков, образования. Шаблоны можно посмотреть здесь. Также есть тематические чаты в тех же DS сообществах, где можно например посмотреть, как коллеги по цеху готовят свои резюме и на какие ошибки им указывают.

2. Ключевые слова в навыках

Возможно одна из главных причин, когда резюме может просто не пройти скрининг. Допустим, в вакансии указаны ключевые слова по направлениям: Classic ML, NLP, CV (а также ключевые слова по условным библиотекам: pandas, numpy, sklearn, lightgbm, pyspark, torch, transformers, opencv, pillow). Я думаю, что подавляющее большинство не знает в совершенстве 3 этих дисциплины со всеми нюансами. Однако, возможно это и не требуется в вакансии. Возможно на саму позицию нужен человек, работавший с текстами и немного работавший с классикой и компьютерным зрением. Обычно на этом делается акцент в самом описании вакансии.
Хотя, возможно именно наличие этих ключевых слов позволит пройти первичный скрининг (например, есть моменты, когда этот самый первый этап проводит робот). Ни в коем случае не стоит обманывать. То есть, если вы никогда не работали допустим с CV, то и не стоит его указывать - потому что на самом мобеседовании это может сыграть с вами злую шутку (за каждый описанный в резюме пункт надо уметь доказать, что он там стоит справедливо). С библиотеками примерно то же самое.

3. Опыт работы и образование

Здесь в первую очередь важен именно опыт работы с раскрытием релевантных вакансии должностей и мест работы. Например, вы отправляете резюме в банк на позицию ML Engineer. В этом случае будет релевантным указать именно тот опыт работы, который перекликается с данной вакансией. Опыт разработчика, DS, аналитика, исследователя тоже не будет лишним. Даже некоторый опыт работы в банке даже не на DS позиции будет релевантен. Но не думаю, что опыт работы промоутером сыграл бы здесь роль, достойную отведенного ему места на страничке. Тем более уместить все на 1 страницу довольно проблематично.
В описании работы также хорошим тоном считается указать не должностные обязанности, а проекты, над которыми велась работа, и что было достигнуто. Например: “За счет разработки и внедрения в прод новой модели на транзакционных данных (линформер) удалось увеличить метрику Gini на X процентов, что позволило компании заработать Y денег.” Это позволяет показывать конкретный результат, который вы принесли за счет своей экспертизы и умение доводить дела до конца.
В графе образование можно указать вашу специальность и пройденные курсы, которые могут быть релевантны рассматриваемой вакансии. Даже упоминание релевантной дипломной работы и статей будет не лишним.

Продолжение ниже ⬇️

#interview #resume
Forwarded from asisakov
РЕЗЮМЕ
Часть 2

Начало выше ⬆️

4. Проекты

Здесь есть некоторое пересечение с тем, что было описано уже в рабочих проектах. Это скорее подходит для проектов, которые вы делали в свободное время. Например, у вас есть классный пет-проект, который помогает распознать, какая же цифра из 10 нарисована на изображении. Его и стоит включить сюда, скинуть ссылку на репозиторий проекта и по возможности страничку проекта. Как упороться по своему проекту, я напишу в будущем и приложу интересные ссылочки.

5. Дополнительная информация, которую вы считаете релевантной

Здесь может быть указан какой-нибудь уникальный интересный курс, который вы проходили (кроме баянистых курсер и подобного конечно). Возможно ваш опыт участия в олимпиадах, соревнованиях, спортивные достижения. Также неплохо будет указать опыт выступления на профильных конференциях.

В целом, здесь мы видим, что даже резюме требует достаточных вложений времени. И здесь это скорее такой универсальный способ выделиться среди остальных кандидатов за счет своих проектов, опыта и даже возможно образования. Если выразиться просто - это некий входной билет, который вы демонстрируете, чтобы дальше пройти на собеседования.

Успехов в оформлении резюме!

Если будет достаточный интерес, то могу выложить первую версию своего резюме, и во что оно превратилось после того, как я отредактировал вообще все, что в нем было согласно описанным тут пунктам.

Полезные ссылки:
1. Чек-лист для резюме
2. Валидация резюме (можно еще это сделать в сингулярисе)
3. "Идеальное резюме для разработчика"
4. Тагир про составление резюме (оригинал поста нашёлся)
5. Советы Бориса по составлению резюме
6. Краткий гайд по резюме для DS'а
7. Рома Васильев про правила составления резюме
8. Борис опять про оптимизацию резюме

#interview #resume
Forwarded from asisakov
АНАЛИТИКА
Часть 1

Прошлая часть серии по собеседованиям тут.

Собеседование, которое встречается именно на аналитические вакансии. Здесь есть такая особенность, что не особо сильно спрашиваются скиллы по алгоритмам или программированию, но важно понимание основ ML, AB-тестирования, умения аналитически мыслить и ставить задачи. Также у аналитики довольно много направлений. Например, есть маркетинговая/клиентская аналитика, а есть продуктовая (коммерческая). Можно также упомянуть HR аналитику. Под собой они содержат много различных направлений и разных задач, но базовая суть остается - уметь выдвигать и тестировать множество различных гипотез, а потом внедрять их многочисленными инструментами и моделями.

На начальных этапах скорее будут обсуждаться различные общие концепции, метрики и некоторое погружение в аналитические задачи, чтобы выявить в кандидате то необходимое аналитическое мышление. С более экспертными позициями будет пропорциональное погружение именно в ту область, в которую вы приходите. Если есть желание отсобеседоваться на синьора аналитика в коммерческой аналитике, то будьте добры поговорить несколько собеседований подряд про ассортимент, прайсинг и все особенности этого направления.

Давайте попробуем обозначить пайплайн, но скорее всего здесь я не особо точно смогу выразить все тонкости и некоторые базовые моменты - потому что даже в рамках одной компании аналитические собеседования могут совсем отличаться по своей структуре. Я все же попробую рискнуть, поэтому давайте обозначим разные группы тем, которые с высокой вероятностью придется обсудить на таком интервью.

1. SQL

Очевидно, что без этого царя батюшки точно не обойтись на данной позиции. А все потому, что придется постоянно различными хитрыми способами и запросами доставать данные. Причем иногда можно написать простенький код, но он будет работать 2 часа - и возможно это будет нормальным решением для одного-единственного запуска. Но потом возникает потребность в нескольких пусках именно этого запроса, и уже приходится заниматься оптимизацией, избавляться от джойнов больших таблиц и искать методы оптимизации своих запросов. О чем точно придется поговорить: о джойнах, синтаксисе, оконных функциях. Возможно даже придется написать небольшой запрос! (не обязательно простенький)

2. Статистика и теория вероятностей

Обязательно будет задачка на понимание статистики и теории вероятностей. Например, нужно будет решить какую-нибудь задачку из сборника отсюда или отсюда. Обычно даже идет некоторое обсуждение материала, например нужно просто написать или вывести формулу из теоремы Байеса. Если этот момент в принципе несложен, то по задачкам даже может случиться полный рандом (можно переволноваться и совсем неправильно начать решать проблему). Примеры простой задачи на собесе можно например посмотреть тут или тут.

3. A/B-тестирование

Здесь обязательно нужно уметь пояснить за p-value, с чем его едят и для чего применяют. И почему все-таки оно принимается как 0.05. Быстро вспомниить и понять все эти концепции можно в этом видео. Но аналитический собес на то и аналитический, поэтому нужно чуть более глубокое погружение: вывести формулу MDE, посчитать мощность выборок и раскидать за CUPED. Различные тонкости можно кстати посмотреть на самом популярном в этом плане канале Carpov.Courses.

Продолжение ниже ⬇️

#interview #analytics #ab #sql
Forwarded from asisakov
АНАЛИТИКА
Часть 2

Начало выше ⬆️

4. Продуктовые метрики

В работе аналитика минимум 1 раз в день будет упоминаться та или иная метрика. MAU, DAU, conversion, retention, LTV, CAC, ROI, ARPPU. Если вы знаете, как все это расшифровывается и что подразумевает под собой, то это уже неплохо (если не знаете, то хотя бы почитайте про это тут). Но все же в каждом направлении аналитики будут свои метрики и это необходимо знать перед собеседованием и уметь этим оперировать. Часто бывает момент, когда собеседующий предлагает выдумать свою метрику и обосновать ее. Тут нужно проявить все свое аналитическое творческое мышление и обосновать свой выбор, а также пояснить возможные минусы и плюсы от использования этой метрики (возможно ли ее например взломать?).

5. Обсуждение кейса

Встречается почти на всех собеседованиях. Здесь предлагается задача, прямо связанная с тем, что придется делать на работе. Например, вопрос “Как оценить/улучшить качество ответа поддержки в Авито” не требует мгновенного и точного ответа, а скорее является началом диалога как в собесах по ML System Design. И здесь вам нужно будет уточнить весь контекст поставленного вопроса, понять вообще какие данные у нас есть, озвучить разные подходы и возможно предложить несколько идей. Дальше общение может перетечь в решение узких вопросов, связанных с этой задачкой, но это более advanced уровень. Например, обсуждение юридических нюансов скоринга саппорта.

Погружаться в каждую из частей можно бесконечно, но не только это может определить уровень человека. Важно не только уметь раскидать по зардам, а важны еще и ваши софт-скиллы. Если вы не сможете нормально обсудить с заказчиком бизнес-задачу, то тут никакой хардскилл не затащит. Если не уметь мыслить продуктово, то возможно и задачи будут решаться немножко не те, что изначально имелись в виду (про это хорошо написано тут) Поэтому не забываем и про софты!

Список полезных источников:
1. Как стать аналитиком от поступашек
2. Как решать задачки на market-sizing
3. Серия постов про воронки конверсий от Вани Максимова и также пост про размен метрик от него
4. Как вкатиться в аналитику от Марины
5. Подборка материалов по продуктовой аналитике
6. Как связаны A/B-тесты и линейная регрессия
7. Статьи про A/B от аналитиков X5
8. SUKI в A/B-тестах и надо ли от них избавляться
9. Подборка метриалов по A/B-тестированию от Reliable ML
10. Подборка про Байесовские методы в A/B-тестах от Александра
11. Материалы по подготовке к собесам по A/B

#interview #analytics #ab #sql