Интересное что-то
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
Вау, 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 делать. Все что хочешь короче.
Forwarded from эйай ньюз
Stanford Webinar - GPT-3 & Beyond

Вчера посмотрел эту прелестную лекцию из Стенфорда о новейших Языковых моделях. Проф С. Potts очень классно дал общий обзор языковых моделей и быстренько рассказал, как мы докатились до таких чудес как, например, GPT-3 и ChatGPT. Затем он порассуждал о том, в каких подтемах NLP можно еще что-то привнести обычному смертному, если у вас нет миллионов долларов на обучение SOTA моделей.

И вот какие актуальные темы для рисерча:
🔵 Retrival augmented in-context learning (условно, как поженить поиск и LLM)
🔵 Создание лучших бенчмарков, датасетов
🔵 "Last mile" for productive apps: Адаптация огромных моделей для конечных приложений, упрощающих жизнь
🔵 Исследования в сторону объяснения и верификации результатов, выданных LLM (огромными языковыми моделями).

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

Получилась не очень тяжелая, но очень вдохновляющая лекция! Может после этого вы захотите написать диссер в области NLP. Ну, либо создать стартап.

@ai_newz
Forwarded from Ivan
Добавлю еще хороший курс: https://rail.eecs.berkeley.edu/deeprlcourse/ , видео лекций разных годов есть на ютубе
#systemdesign
Roadmap with System Design books
#quant #courses
Стохастический анализ
Forwarded from Dmitry M.
Есть какие-то записи на ютубе: https://www.youtube.com/playlist?list=PLp9ABVh6_x4G5gt4gk68XAuHbpTmYuvl0