Интересное что-то
557 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Start Career in DS
🐍 Регулярные выражения в Python. Лучшая статья на русском!

Регулярные выражения супер-полезны, когда вам нужно перелопатить большой объём текстовых данных.
Например, вытащить из наименований товаров граммаж, достать города из адресов и т.д.
При этом на русском материалы по этой теме очень сложно найти.

Вот эта статья на хабре - лучшее что я видел 🙂
Регулярные выражения в Python от простого к сложному. Подробности, примеры, картинки, упражнения
#dl #cv #courses
Из ODS:

Есть отличный курс по CV с домашками и материалами EECS442, который ведет Дж. Джонсон (он же был ассистентом в Стэнфорде на cs231n и сейчас преподает его обновленную версию в Мичигане): https://web.eecs.umich.edu/~justincj/teaching/eecs442/WI2021/
Видео лекций есть у китайцев:
https://www.bilibili.com/video/BV1BV411n7Km/
#rl #courses
С чего начать изучение RL
Forwarded from Igor Chebuniaev
Можно сделать следующие 5 курсов. Cначала вообще хорошо почитать Саттона и Барто:
https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf

Параллельно находить какие-то объяснительные сопроводительные материалы, которые помогают в этой книжке разобраться. Первые 4 курса как раз в этом помогают, они построено по главам книги, чтение там входит в домашку. Это специализация на курсере:
https://www.coursera.org/learn/fundamentals-of-reinforcement-learning/home/welcome

Паралелльно с этими 4-мя курсами настоятельно рекомендую смотреть лекции Сильвера. Они также хорошо привязываются к главам книжки. Очень он хорошо все по полочкам раскладывает.
https://www.youtube.com/watch?v=2pWv7GOvuf0&t=10s

Как альтернатива ему, чтобы проверять понимание, можно это:
https://www.youtube.com/playlist?list=PL-myaKI4DslUer7Pwkamk92F4PAFyBTPW

После этого нужен курс, который доводит базу, которую ты освоил до более современных (но уже не очень) методов.
Для этого можно посоветовать очень богатый курс от яндекса/вышки — Practical Reinforcement Learning. На курсере сейчас доступ к нему закрыли, но остались материалы на гитхабе:
https://github.com/yandexdataschool/Practical_RL

Тут как параллельные объясняловки хороши вот эти видео:
https://www.youtube.com/c/pieterabbeel

Запалировать и ознакомиться с использованием фреймворка stable baselines 3 можно как раз по курсу HF, рекомендованному выше.

Далее, как проверку усвоил ли ты материал, советую взять не совсем простую среду в gym-е и попробовать с нуля написать решение.
Такой средой может быть rocket-lander-v0.
Forwarded from Сиолошная
Если помните, есть такая компания Yahoo, которая поиск делала и делает. Они, конечно, тоже не хотят отставать от Google и Bing в гонке технологий, поэтому обращают внимание на Large Language Models (LLMs). У них ещё есть опенсорсная библиотека Vespa, в которой нет-нет да какие-то крутые фичи и добавляются.

Только что Jo Kristian Bergum, Distinguished Engineer (очень высокий грейд) в Yahoo, работающий над этой библиотекой, выпустил обзорный пост про использование LLM и генеративных моделей вообще для поиска. Вот ссылка - тык. Он - инженер в поиске с 20 годами стажа (!) - пишет, что "I've never been more excited". И это правда, потому что большие языковые модели помогут по-новому посмотреть на обучение приземленных маленьких-средних моделей, которые будут внедряться в прод.

У меня есть презентация и заготовленный доклад по теме обучения Retrieval-системы с использованием LLM, где сама модель осуществляет лишь всопомгательную функцию во время обучения, а для применения (инференса) не используется.
Ссылка на презентацию для самостоятельного разбора: тык (46 слайдов, ~1.5 часа на чтение)

Если под постом соберется 400 сердечек - сделаю видео-лекцию на YouTuve по этой прзентации, где детально расскажу, что, как и почему происходит в пайплайне. А пока - всем удачного изучения :)

Репосты приветствуются, чтобы получить 400 ❤️ как можно скорее 😳
Please open Telegram to view this post
VIEW IN TELEGRAM
Вау, streamlit от питонистов 🤩

Вышел новый фреймворк (в альфе сейчас) под названием Pynecone. Выглядит он как pytorch vs tensorflow и как FastAPI vs Flask, то есть очень удобный.

1) ООП (например, нужно наследоваться от pc.State, чтобы поддерживать стейт в приложении, а не st.session_state["my_key"] 🤮)
2) pydantic для валидации типов объектов
3) SQLAlchemy под капотом для баз данных!
4) Можно легко вставлять react компоненты

Есть галлерея с демками, го тестить

https://pynecone.io/docs/gallery
Forwarded from Записки Ппилифа (Ppilif [GMT+1])
На что я смотрю во время собесов #собесы

Выше немного написал про то, как бы я готовился к собесу по алгоритмам. В этом посте хочу описать, на что я обычно смотрю, как собеседующий. Кажется, что к текущему моменту, в общей сложности, я провел около 50 собесов. Не так много, но и не так мало. В основном, это были собесы с джунами/мидлами по аналитике и ML. Иногда дополнением в рамках этих секций шёл код.

Все мои тейки применимы именно к обсуждению кейсов. Про задачи с кодом напишу отдельно.

1. Любая задача — это приглашение к разговору. Ценен сам разговор и ход мыслей, а не правильное решение задачи. Мы должны понять, как человек думает и как он будет проявлять себея в работе, а не сколько брейнтизеров он вызубрил.

Брейнтизеры — это плохое приглашение к разговору. Кандидат либо вызубрил брейнтизер либо нет. Никогда не спрашивайте брейнтизеры

Куда лучше вкинуть какой-то кейс. Это может быть игрушечный кейс вроде детсадовской аналитики:

Двадцати детям в детском садике задали вопрос: живут ли их родители вместе? Два ребёнка ответили, что не живут. На следующий день в местной газете выходит статья с заголовком: "10% семей в нашем городе в разводе". Почему данное утверждение неверно?

Хороший кандидат моментально накидает проблем, а дальше из каждой из них можно будет уйти в технические детали, и поговорить, как правильно собирать выборки, как проверять гипотезы, как посчитать сколько наблюдений надо для АБ и так далее.

Это может быть какой-то реальный кейс про то, что вы делаете с коллегами на работе, но очень поверхностный:

У нас есть комментарии. Мы хотим очистить их от спама. Хотим использовать ML и модераторов. Выборок пока что нет. Как бы ты это делал?

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

Если важно не решение задачи, то что важно? Важно то, как чувак будет впоследствии работать. По собесу ты должен это понять.

Поэтому первым делом мы должны прикинуть, что чувак будет делать в команде. Он будет анализорвать АБ? Он будет обучать модели в рамках уже существующих ML-ных библиотек? Он будет писать трансформеры в торче?

От ответа на этот вопрос зависит то, насколько глубоко и в какую сторону надо закапываться в технические детали.

2. Технические детали.

Чувак будет заниматься АБ? Окей, говорим про АБ, но не упарываемся. Плевать как выглядят конкретные формулы, не надо заставлять кандидата их выводить. Надо выяснить, понимает ли он смысл, лежащий за АБ и сможет ли применить формулу с википедии.

Например, если ты спросил у кандидата, как найти число наблюдений для проведения АБ для долей, а он с ходу сказал число наблюдений зависит от ошибки первого рода, второго рода и MDE, на этом можно остановиться. Можно спросить, где зависмость прямая, а где обратная либо уйти в смысл ошибок и откуда брать MDE. Заставлять выводить формулу абсолютно бессмысленно.

По аналогии, с ML. Если вы работаете с готовыми библиотеками, не надо в подробностях спрашивать как устроен бустинг, просить выписывать формулы и выводить на доске для нейронок производные для бэкпропа. Это кринж уровня брейнтизеров.

Лучше попросите кандидата подобрать пороги для классификатора так, чтобы модераторов не завалило потоком фолсов. Либо поговорите про то, как будете собирать пул для обучения модели и оценивать её качество, надо ли тест по таймстемпу отделять, на каких фичах учиться, где в пайплайне обучения могут быть лики, что делать если эвристики работают нормально, а модель не хочет учиться от слова совсем. Где искать проблемы? Как дебажить, при условии что с кишками библиотеки для обучения всё впорядке и тп.
Forwarded from Записки Ппилифа (Ppilif [GMT+1])
Конечно же, пул вопросов определят то, чем конкретно будет заниматься кандидат. Кейс надо подбирать близко к работе. Если вы пишете свои библиотеки или свою рекомендательную систему с нуля — то лезть в реализации ML-ных алгоритмов норм.

3. Как чувак будет работать?

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

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

На что я пытаюсь обращать внимание:

🍏 Умеет ли кандидат срывать низковисащие плоды

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

Понятное дело, что по одному ответу про классификатор нельзя сделать такие выводы, но ты обычно видишь в течение собеса много признаков.

🛣 Как кандидат подходит к решению задачи

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

Например, если мы говорим про классификатор спама — чувак может предложить подбирать пороги для отправки комментов на модерацию максимизируя Recall, а может предложить посмотреть, сколько у нас есть денег на модераторов и подобрать порог исходя из этого.

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

🪡 Насколько кандидат самостоятельный

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

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

Другой дискриптор самостоятельности — самокритика. Если кандидат накидывает решения, а потом отмечает их слабые места — он молодец.

⁉️ Умеет ли кандидат задавать вопросы

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

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

🐰 Умеет ли кандидат лезть вглубь

Насколько нетривиальные идеи вкидывает кандидат? Может ли он не теряться в своих же мыслях и нормально развивать их или он мечется от одной к другой и теряется в своих же рассуждениях?

😭 Ступор

Тэйки выше можно легко перепутать со ступором. Если кандидат впал в ступор и молча сидит, думает, его надо срочно вытаскивать. Надо просить его рассуждать вслух, даже если он будет говорить глупости. Дальше ты как интервьюер цепляешься за эти мысли и вкидываешь подсказки, чтобы вытащить человека из ступора.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Записки Ппилифа (Ppilif [GMT+1])
Почему кандидат впал в ступор? Либо он умница, но стрессует, либо он плохой кандидат. Наша задача, как интервьюеров, — отделить одних от вторых. Без подсказок тут не получится. Нельзя ставить на людях крест из-за ступора или стресса. Надо дисконтировать на него ваше общение, пока не создашь более комфортную обстановку для кандидата. Помогите умнице почувствовать себя увереннее и раскрыться.

А на какие штуки вы обращаете внимание во время собесов?
Forwarded from Red Powerful
На английском канале провел эксперимент с интересной штукой под названием (нет, не ChatGPT, хотя его я тоже там юзал) PyScript: она позволяет использовать python вместо JavaScript на веб-страницах.

За два стрима я сделал АБ тест калькулятор лучше, чем у Эвана Миллера. Лучше потому, что он позволяет рассчитывать размеры выборок для групп разных по размеру. В остальном у меня просто MVP получился, почти без дизайна и т.д.

И весь прикол в том, что мне не надо делать никакой бэкэнд для того, чтобы использовать python. Python встраивается в веб-страницу, и все расчеты выполняются на стороне пользователя.

Если у тебя была идея сделать какой-то простой пет-проект, но тебя останавливал ненавистный джава скрипт или сложность написания отдельного бэкэнда, то можно попробовать реализовать это с помощью PyScript и любимого python. Там можно и pandas юзать, и csv загружать, и ml делать. Все что хочешь короче.