Создал еще один канал помимо @ibragim_txt
Сюда буду скидывать всякие ссылки с комментами и заметки. Тематика: ML/NLP/#career
Сюда буду скидывать всякие ссылки с комментами и заметки. Тематика: ML/NLP/#career
Три года назад я устроил "сам себе буктемп" по вкатыванию в machine learning. На тот момент, я умел только немного писать код на С. Тогда я обложил себя всеми бесплатными курсами и ресурсами до которых дотянулся.
Потом нашел стажировку, которая стала работой. Проработав год, я откалибровал те курсы, которые оказались наиболее полезными и собрал репозиторий fast-internship-curriculum
Потом нашел стажировку, которая стала работой. Проработав год, я откалибровал те курсы, которые оказались наиболее полезными и собрал репозиторий fast-internship-curriculum
GitHub
GitHub - ibragim-bad/fast-internship-curriculum: A collection of resources to build your expertise in ML and related fields.
A collection of resources to build your expertise in ML and related fields. - ibragim-bad/fast-internship-curriculum
🔥3
Включил комменты, заодно закину ссылку на пост про >500$/month side projects
из топ комментов там:
1. шаблоны для саас на джанго приносят >5k$. там у него даже ссылка есть сколько он времени потратил
2. чувак завернул аналитику по акциям в красивый ui и типа как платные сигналы приносит 120k$/month прибыли говорит. Естественно не на сигналах, а на продаже подписок 🌚
3. Кофейная ферма в Колумбии. 800$/month.
Вообще, мне лень заходить на hackernews, поэтому я либо иногда смотрю топ за месяц, либо листаю канал куда парсятся топ комменты
@hn_best_comments
из топ комментов там:
1. шаблоны для саас на джанго приносят >5k$. там у него даже ссылка есть сколько он времени потратил
2. чувак завернул аналитику по акциям в красивый ui и типа как платные сигналы приносит 120k$/month прибыли говорит. Естественно не на сигналах, а на продаже подписок 🌚
3. Кофейная ферма в Колумбии. 800$/month.
Вообще, мне лень заходить на hackernews, поэтому я либо иногда смотрю топ за месяц, либо листаю канал куда парсятся топ комменты
@hn_best_comments
👍3
Если бы мне нужно было сделать презентацию или отчет по модели. Либо выложить инфу про нее на сайт, чтобы продавать апишку, я бы за основу взял формат карточек гугла.
https://modelcards.withgoogle.com/face-detection#overview
На что обратить внимание:
1. Метрики посчитали не только overall, но и sliced (на подвыборках по полу, расе, возрасту). Когда ты большая корпорация с fairness моделей шутки плохи.
2. Четко описали Limitations и на чем будут косяки
3. Можно загрузить фотку и оценить.
Вообще для доверия и чтобы заказчик фичи оценил модель, оч хорошая практика дать ему модель пощупать после презентации. Я обычно модели заворачиваю либо в бота в телеге, либо в streamlit.
https://modelcards.withgoogle.com/face-detection#overview
На что обратить внимание:
1. Метрики посчитали не только overall, но и sliced (на подвыборках по полу, расе, возрасту). Когда ты большая корпорация с fairness моделей шутки плохи.
2. Четко описали Limitations и на чем будут косяки
3. Можно загрузить фотку и оценить.
Вообще для доверия и чтобы заказчик фичи оценил модель, оч хорошая практика дать ему модель пощупать после презентации. Я обычно модели заворачиваю либо в бота в телеге, либо в streamlit.
Иллюстрированные конспекты на Стэнфордские cs221 - AI, cs229 - ML, cs230 - DL
Удобный формат, чтобы освежить знания базовых концептов перед собеседованиями. Для изучения с нуля — не подойдут. Еще там есть переключатель на конспекты про python и sql.
https://stanford.edu/~shervine/teaching/cs-230/
Удобный формат, чтобы освежить знания базовых концептов перед собеседованиями. Для изучения с нуля — не подойдут. Еще там есть переключатель на конспекты про python и sql.
https://stanford.edu/~shervine/teaching/cs-230/
Вброшу ссылок про литкод, мб кому пригодится.
В некоторых компаниях есть этап собеседования с алгоритмическими задачами. На собеседованиях ничего сложнее провалидировать скобки не попадалось, но если в стартапе есть ex-FAANG(MANGA) сотрудник, то могут дать что-то и на динамическое программирование. Ну и в компаниях упомянутых это тоже обязательный пункт. Олимпиадным программированием я не занимался, образование у меня не CS, поэтому все необходимые знания берем из интернета.
На литкоде есть раздел обучения, основные темы разобраны норм + есть практика в виде задачек. Для некоторых задач есть формальные доказательства решений и скорости (У меня правда на собесе такое только 1 раз спрашивали).
https://leetcode.com/explore/learn/
Есть переводы статей одного китайца. Оформлена в виде глав. Некоторые темы разобраны лучше, чем на литкоде, например, логика разделения на паттерны бинарного поиска.
https://labuladong.gitbook.io/algo-en/iii.-algorithmic-thinking/detailedbinarysearch
Список задач, покрывающий основные темы. Удобная сортировка по темам, сложности и компаниям + можно отмечать прогресс:
https://seanprashad.com/leetcode-patterns/
Данный список включает в себя задачи из списка blind-75
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU
+ с курса на educative.
https://www.educative.io/courses/grokking-the-coding-interview
Решения задач, если где-то застряли можно посмотреть вот тут: https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf
Объяснения оч четкие и приятный английский. Изложение более интуитивно понятное, чем решения на литкоде и можно посмотреть за ходом мыслей.
Если кто хочет более фундаментальной подход, вот курс Седжвика https://www.coursera.org/learn/algorithms-part1#syllabus (но задания на джаве там)
В некоторых компаниях есть этап собеседования с алгоритмическими задачами. На собеседованиях ничего сложнее провалидировать скобки не попадалось, но если в стартапе есть ex-FAANG(MANGA) сотрудник, то могут дать что-то и на динамическое программирование. Ну и в компаниях упомянутых это тоже обязательный пункт. Олимпиадным программированием я не занимался, образование у меня не CS, поэтому все необходимые знания берем из интернета.
На литкоде есть раздел обучения, основные темы разобраны норм + есть практика в виде задачек. Для некоторых задач есть формальные доказательства решений и скорости (У меня правда на собесе такое только 1 раз спрашивали).
https://leetcode.com/explore/learn/
Есть переводы статей одного китайца. Оформлена в виде глав. Некоторые темы разобраны лучше, чем на литкоде, например, логика разделения на паттерны бинарного поиска.
https://labuladong.gitbook.io/algo-en/iii.-algorithmic-thinking/detailedbinarysearch
Список задач, покрывающий основные темы. Удобная сортировка по темам, сложности и компаниям + можно отмечать прогресс:
https://seanprashad.com/leetcode-patterns/
Данный список включает в себя задачи из списка blind-75
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-100-LeetCode-Questions-to-Save-Your-Time-OaM1orEU
+ с курса на educative.
https://www.educative.io/courses/grokking-the-coding-interview
Решения задач, если где-то застряли можно посмотреть вот тут: https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53ldVwtstag2TL4HQhAnC8ATf
Объяснения оч четкие и приятный английский. Изложение более интуитивно понятное, чем решения на литкоде и можно посмотреть за ходом мыслей.
Если кто хочет более фундаментальной подход, вот курс Седжвика https://www.coursera.org/learn/algorithms-part1#syllabus (но задания на джаве там)
Leetcode
Explore - LeetCode
LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.
👍20🔥8❤1
Сейчас будет небольшой пост про статью, которую прочитал. Но перед этим немного терминологии. Я почти три года работаю с ML в диалоговом домене, это все про чит-чат модели или болталки. Поэтому будет много постов именно про этот домен NLP. Болталки - модели, которые могут поддержать беседу, независимо от темы. Базово тут работают два подхода:
+ Retrieval - основанный на поиске. Для фразы пользователя при текущем контексте вы выбираете подходящий ответ из своей базы в 100k ответов например.
+ Generative - модель генерирует ответ слово за словом (токен за токеном), как бы дописывая ответ на фразу пользователя. Что-то типа автодополнения на телефоне.
Еще есть просто rule-based древовидные сценарии, но их мы касаться особо не будем.
+ Retrieval - основанный на поиске. Для фразы пользователя при текущем контексте вы выбираете подходящий ответ из своей базы в 100k ответов например.
+ Generative - модель генерирует ответ слово за словом (токен за токеном), как бы дописывая ответ на фразу пользователя. Что-то типа автодополнения на телефоне.
Еще есть просто rule-based древовидные сценарии, но их мы касаться особо не будем.
В конце прошлого года вышла обзорная статья про Этические и социальные риски больших языковых моделей.
https://arxiv.org/pdf/2112.04359.pdf
Статья актуальная, в своей работе мы каждый день сталкиваемся с этими рисками и придумываем разные хаки, чтобы их обойти.
Приведу список рисков ЯМ именно в диалоговом домене. Риски больше для генеративных языковых моделей, retrieval подходы более безопасные, но все равно не лишены рисков (discrimination, например):
1. Discrimination — когда в ЯМ воспроизводит стереотипы из данных. Например, “два чеченца зашли в метро” и … или “Молодая девушка заработала кучу денег, тем что снимала …”. Если модель предлагает неэтичное продолжение - принцип fairness не соблюден.
2. Toxicity — при правильном подходе можно спровоцировать генерировать ЯМ мат и оскорбления.
3. Information Hazards - если модель обучалась на приватных данных, можно попробовать их вытащить. Пример, “личная электронная почта Илона Маска: ….”
4. Misinformation Harms — генеративные модели любят выдумывать ответы на вопросы, даже если не знают. В целом, это забавно, но человек может поверить ложной информации.
5. Human-Computer Interaction Harms — Тут чисто про Conversational Agents. Антропоморфизация ассистентов может привести к небезопасному использованию. Пару лет назад, с нами в хостеле жил мужик, который подкатывал к голосовому помощнику, потому что там был женский голос. Не знаю чем закончилась это история, но подобные штуки могут переносится потом и на общение с обычными людьми.
Как будет время и настроение, напишу что можно сделать с этими рисками. Или не делать: мы как-то обучили болталку общаться исключительно матом и оскорблениями, получился самый эмпатичный и эмоциональный собеседник!
https://arxiv.org/pdf/2112.04359.pdf
Статья актуальная, в своей работе мы каждый день сталкиваемся с этими рисками и придумываем разные хаки, чтобы их обойти.
Приведу список рисков ЯМ именно в диалоговом домене. Риски больше для генеративных языковых моделей, retrieval подходы более безопасные, но все равно не лишены рисков (discrimination, например):
1. Discrimination — когда в ЯМ воспроизводит стереотипы из данных. Например, “два чеченца зашли в метро” и … или “Молодая девушка заработала кучу денег, тем что снимала …”. Если модель предлагает неэтичное продолжение - принцип fairness не соблюден.
2. Toxicity — при правильном подходе можно спровоцировать генерировать ЯМ мат и оскорбления.
3. Information Hazards - если модель обучалась на приватных данных, можно попробовать их вытащить. Пример, “личная электронная почта Илона Маска: ….”
4. Misinformation Harms — генеративные модели любят выдумывать ответы на вопросы, даже если не знают. В целом, это забавно, но человек может поверить ложной информации.
5. Human-Computer Interaction Harms — Тут чисто про Conversational Agents. Антропоморфизация ассистентов может привести к небезопасному использованию. Пару лет назад, с нами в хостеле жил мужик, который подкатывал к голосовому помощнику, потому что там был женский голос. Не знаю чем закончилась это история, но подобные штуки могут переносится потом и на общение с обычными людьми.
Как будет время и настроение, напишу что можно сделать с этими рисками. Или не делать: мы как-то обучили болталку общаться исключительно матом и оскорблениями, получился самый эмпатичный и эмоциональный собеседник!
👍3🥰1
Forwarded from ibragim.txt
Как у меня дела.
В конце января перестал работать: взял саббатикал (длительный отпуск за свой счет, во время которого за сотрудником сохраняется должность) в сбердевайсах, чтобы отдохнуть, поучиться новому, посмотреть что еще нравится и сменить работу.
Как определенный итог своей работы: рассказал о том, чем мы занимались. В начале февраля сходил на подкаст к яндексу поболтать про болталки, а потом мы выступили с Сашей на перенесенном Хайлоаде.
В девайсы я уже не вернулся, в феврале-марте поготовился к собеседованиям, начал собеседования в апреле, а с мая вышел в новое место.
Получил пару офферов (некоторые дошли уже во время работы): большая компания в Европе, стартап в Англии, Яндекс. Начал процессы в Meta, Google, Amazon (тут большое спасибо рефералам), но параллельно с новой работой устал собеседоваться и остановил все. В итоге сошелся с ребятами с которыми был самый короткий собес (пообщались с СТО и партнером из фонда): сильная тех команда, четкий фонд за спиной, возможность с нуля выстроить весь ML и full-remote. Подумал, что в большие компании можно будет попробоваться в любой момент, а сейчас время для рок-н-ролла. Как сделаем x10 по метрикам - напишу подробнее, что делаем.
Сюда буду писать как и раньше, не очень регулярно, какие-то свои черновики статей, рефлексию по книгам, курсам и свой опыт. А в @c0mmit как строим ML системы и другие рабочие моменты.
P.S. Сейчас сижу с ребятами на Бали, поэтому будете тут — пишите, сходим на завтрак!
В конце января перестал работать: взял саббатикал (длительный отпуск за свой счет, во время которого за сотрудником сохраняется должность) в сбердевайсах, чтобы отдохнуть, поучиться новому, посмотреть что еще нравится и сменить работу.
Как определенный итог своей работы: рассказал о том, чем мы занимались. В начале февраля сходил на подкаст к яндексу поболтать про болталки, а потом мы выступили с Сашей на перенесенном Хайлоаде.
В девайсы я уже не вернулся, в феврале-марте поготовился к собеседованиям, начал собеседования в апреле, а с мая вышел в новое место.
Получил пару офферов (некоторые дошли уже во время работы): большая компания в Европе, стартап в Англии, Яндекс. Начал процессы в Meta, Google, Amazon (тут большое спасибо рефералам), но параллельно с новой работой устал собеседоваться и остановил все. В итоге сошелся с ребятами с которыми был самый короткий собес (пообщались с СТО и партнером из фонда): сильная тех команда, четкий фонд за спиной, возможность с нуля выстроить весь ML и full-remote. Подумал, что в большие компании можно будет попробоваться в любой момент, а сейчас время для рок-н-ролла. Как сделаем x10 по метрикам - напишу подробнее, что делаем.
Сюда буду писать как и раньше, не очень регулярно, какие-то свои черновики статей, рефлексию по книгам, курсам и свой опыт. А в @c0mmit как строим ML системы и другие рабочие моменты.
P.S. Сейчас сижу с ребятами на Бали, поэтому будете тут — пишите, сходим на завтрак!
В текущий момент я занимаюсь рекомендациями. Лента, рекомендации авторов, ранжирование. Начали с эвристик: свежее, популярное по регионам, бизнес логика для авторов. Потом пошли в ход коллаборативная фильтрация, item2vec, бустинг.
Про что думаю написать.
+ Рекомендации: feed, реклама, рекомендации авторов.
+ Скомбинировать с ML бизнес-логику: размазать трафик по авторам, популярное, подписки, бусты итп
+ Попутные задачи: автомодерация контента, авто тэгирование, анализ на ботов и спамеров.
+ Аналитика: стандартные продуктовые метрики в кликхаусе, RFM, АБ-тесты
Но в начале напишу о собесах и выложу материалы по подготовке.
Про что думаю написать.
+ Рекомендации: feed, реклама, рекомендации авторов.
+ Скомбинировать с ML бизнес-логику: размазать трафик по авторам, популярное, подписки, бусты итп
+ Попутные задачи: автомодерация контента, авто тэгирование, анализ на ботов и спамеров.
+ Аналитика: стандартные продуктовые метрики в кликхаусе, RFM, АБ-тесты
Но в начале напишу о собесах и выложу материалы по подготовке.
👍15🔥1
Подборка видов этапов собеседований, которые попадались и как к ним готовился:
+ Алгоритмическая секция. Решал карточки с литкода и делал мок-интервью. Тут писал подробнее.
+ Machine Learning System Design (как будешь ML задачу решать со старта до прода). CS 329S, буклеты, видео от fb + мок-интервью. Собрал попутно такой гитхаб.
+ Вопросы по ML теории. Стандартные: метрики, разобрать модель, написать пару формул. Учебник по ML от шада почитал и освежил в памяти что-то погуглив конкретные темы.
+ Дают код, надо найти и исправить ошибки. Из того, что поинтереснее: дали код обучения языковой модели с расписанными трансформер блоком и аттеншеном. Специально не готовился, но можно полистать реализации from scratch. Помню, что видел классные ссылки, мб кто-то скинет или сам опубликую как вспомню.
+ Вопросы по темам: питон, ML, CS, NLP.
+ Рассказываешь о своем опыт и с тобой погружаются вглубь и в особенности реализаций. Данные как размечали, как модели проверяли, как выкатывали. Тут просто более развернуто рассказал про пункты из CV.
+ Behavioural - стандартные вопросы, заранее заготовил ответы по STAR на распространенные вопросы.
+ Задачи на логику и по математике (теор вер, статистика). Не готовился к такому.
+ Просто за жизнь и опыт пообщаться, сходить в бар.
Примеры вопросов из этапа с общением.
+ Какая последняя статья понравилась? О чем? Почему понравилась?
+ Что будешь делать в первый рабочий день?
+ Какой факап был самый жесткий?
+ Алгоритмическая секция. Решал карточки с литкода и делал мок-интервью. Тут писал подробнее.
+ Machine Learning System Design (как будешь ML задачу решать со старта до прода). CS 329S, буклеты, видео от fb + мок-интервью. Собрал попутно такой гитхаб.
+ Вопросы по ML теории. Стандартные: метрики, разобрать модель, написать пару формул. Учебник по ML от шада почитал и освежил в памяти что-то погуглив конкретные темы.
+ Дают код, надо найти и исправить ошибки. Из того, что поинтереснее: дали код обучения языковой модели с расписанными трансформер блоком и аттеншеном. Специально не готовился, но можно полистать реализации from scratch. Помню, что видел классные ссылки, мб кто-то скинет или сам опубликую как вспомню.
+ Вопросы по темам: питон, ML, CS, NLP.
+ Рассказываешь о своем опыт и с тобой погружаются вглубь и в особенности реализаций. Данные как размечали, как модели проверяли, как выкатывали. Тут просто более развернуто рассказал про пункты из CV.
+ Behavioural - стандартные вопросы, заранее заготовил ответы по STAR на распространенные вопросы.
+ Задачи на логику и по математике (теор вер, статистика). Не готовился к такому.
+ Просто за жизнь и опыт пообщаться, сходить в бар.
Примеры вопросов из этапа с общением.
+ Какая последняя статья понравилась? О чем? Почему понравилась?
+ Что будешь делать в первый рабочий день?
+ Какой факап был самый жесткий?
👍11
Этап собеседования Machine Learning System Design.
Этот этап попадался в 9 из 10 компаний. Задача - полностью спроектировать ML решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
Здесь важный момент. Время собеседования ограничено. Поэтому с одной стороны важно не растекаться по дереву, с другой стороны важно покрыть все этапы решения ML задачи, а в некоторые даже погрузиться вглубь, чтобы показать что шарите.
В этом помогает четкая структура ответа:
1. Problem definition and requirement clarification. Определение задачи и оценка требований.
2. Data. Источники данных, какая разметка, как выглядит сэмпл.
3. Evaluation. Какие метрики, сравнение с бейзлайном.
4. Features and model. Препроцессинг, варианты моделей.
5. Online eval, deploy. Выкатка + АБ.
6. Further actions. Как дебажить/обновлять/улучшать/ускорять/итд модель.
Каждый из этапов более подробно разобран в репе ML design primer.
Порядок подготовки.
+ Посмотреть видео fb, яндекса, полистать гитхаб ml design primer.
+ Сделать себе пробный собес попробовать задизайнить систему из списка.
+ Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут
+ Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг-другу пробный собес. Моки можно искать в этом чате.
+ Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
Этот этап попадался в 9 из 10 компаний. Задача - полностью спроектировать ML решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
Здесь важный момент. Время собеседования ограничено. Поэтому с одной стороны важно не растекаться по дереву, с другой стороны важно покрыть все этапы решения ML задачи, а в некоторые даже погрузиться вглубь, чтобы показать что шарите.
В этом помогает четкая структура ответа:
1. Problem definition and requirement clarification. Определение задачи и оценка требований.
2. Data. Источники данных, какая разметка, как выглядит сэмпл.
3. Evaluation. Какие метрики, сравнение с бейзлайном.
4. Features and model. Препроцессинг, варианты моделей.
5. Online eval, deploy. Выкатка + АБ.
6. Further actions. Как дебажить/обновлять/улучшать/ускорять/итд модель.
Каждый из этапов более подробно разобран в репе ML design primer.
Порядок подготовки.
+ Посмотреть видео fb, яндекса, полистать гитхаб ml design primer.
+ Сделать себе пробный собес попробовать задизайнить систему из списка.
+ Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут
+ Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг-другу пробный собес. Моки можно искать в этом чате.
+ Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
👍10
Как сформулировать ML задачу?
Каждый этап разбирать не буду, но о первым расскажу на примере. Допустим, дали задачу сделать фид для контента. Цель: хотим сделать рекомендации контента(текстовые посты, картинки, видео). Текущая лента обратная хронологическая, хочется сделать персонализированной.
Первый вопрос: зачем? Кажется, что с персональной лентой пользователи будут чаще заходить, залипать в ленте, шерить продукт друзьям. Но, это только предположение, которое нуждается в проверке. Поэтому на старте определимся, как будем оценивать успех или неуспех в количественных показателях.
Продуктовые метрики в рамках собеседования я для себя разделил на три уровня:
1. Деньги 💰– revenue, arpu, конверсии в покупку.
2. Счастье юзера 😍 – like/view rate, avg session time, views count, etc
3. Технические метрики 🎯– recall@k, diversity of items, etc. Соответственно цель наша больше денег, а гипотеза в том, что повысив технические метрики –> повысим счастье юзера –> заработаем больше деньги. В жизни, к сожалению, зависимость не всегда прямая. Но для задачи этот момент опустим.
В cs329s этот этап разбит на 4 шага.
1. Framing. Какая ML проблема? Регрессия, Классификация - multiclass, multilabel.
2. Objectives. На какие подзадачи можно разделить? Например, Прокачать engagement ленты, но при этом не уронить качество постов, не форсить спам и кликбейты.
3. Constraints. Ограничения ресурсов, приватность данных, требования регуляторов.
4. Phases. Как будете внедрять решение: эвристика -> простая модель -> оптимизация простой модели -> сложная модель.
По данному пункту советую полистать лекцию 2 в cs329s и если что-то непонятно посмотреть в Lecture Note.
Еще один важный момент: на этом этапе задавать уточняющие вопросы, чтобы понять контекст задачи: как решается задача сейчас, число пользователей, доступные ресурсы итп.
Каждый этап разбирать не буду, но о первым расскажу на примере. Допустим, дали задачу сделать фид для контента. Цель: хотим сделать рекомендации контента(текстовые посты, картинки, видео). Текущая лента обратная хронологическая, хочется сделать персонализированной.
Первый вопрос: зачем? Кажется, что с персональной лентой пользователи будут чаще заходить, залипать в ленте, шерить продукт друзьям. Но, это только предположение, которое нуждается в проверке. Поэтому на старте определимся, как будем оценивать успех или неуспех в количественных показателях.
Продуктовые метрики в рамках собеседования я для себя разделил на три уровня:
1. Деньги 💰– revenue, arpu, конверсии в покупку.
2. Счастье юзера 😍 – like/view rate, avg session time, views count, etc
3. Технические метрики 🎯– recall@k, diversity of items, etc. Соответственно цель наша больше денег, а гипотеза в том, что повысив технические метрики –> повысим счастье юзера –> заработаем больше деньги. В жизни, к сожалению, зависимость не всегда прямая. Но для задачи этот момент опустим.
В cs329s этот этап разбит на 4 шага.
1. Framing. Какая ML проблема? Регрессия, Классификация - multiclass, multilabel.
2. Objectives. На какие подзадачи можно разделить? Например, Прокачать engagement ленты, но при этом не уронить качество постов, не форсить спам и кликбейты.
3. Constraints. Ограничения ресурсов, приватность данных, требования регуляторов.
4. Phases. Как будете внедрять решение: эвристика -> простая модель -> оптимизация простой модели -> сложная модель.
По данному пункту советую полистать лекцию 2 в cs329s и если что-то непонятно посмотреть в Lecture Note.
Еще один важный момент: на этом этапе задавать уточняющие вопросы, чтобы понять контекст задачи: как решается задача сейчас, число пользователей, доступные ресурсы итп.
Google Docs
cs329s_2022_02_slides_mlsd
Machine Learning Systems Design Lecture 2: ML and Data Systems Fundamentals Reply in Zoom chat: What MLOps tools would you want tutorials on? CS 329S (Chip Huyen, 2022) | cs329s.stanford.edu
👍10🔥6
📝 Собрал пак советов по оффлайн разметке.
Больше о разметке в контексте NLP. Часть советов покажутся очевидными, но все равно упомяну. Подходит и для in-house разметки, и для outsource разметки в сервисах (толока, mturk)
1. Прежде чем составить задание на разметку, попробуйте сами разметить пару десятков примеров. Так вы поймете, насколько данные и классы корректны.
2. В самом задании добавьте по паре примеров на класс для понимания. Здорово, если добавите сложный пример и в скобках объясните логику.
3. Сначала сделайте небольшой пробный батч и скорректируйте задание если нужно.
4. Примеры, которые вы разметили сами – используйте как оценочные для разметчиков, чтобы размечали только добросовестные разметчики.
5. Используйте меру согласованности между разметчиками (например, Fleiss’ kappa). Несогласованные сэмплы - либо треш, либо спорные сэмплы, которые наоборот помогут модели лучше разделить классы.
6. Даже если ресурсов мало, разметьте хотя бы golden set, на котором оценивайте метрики и другие способы разметки (active learning, разметкой эвристиками итп.)
7. Есть такая частая проблема в текстовых классификациях, что необходимые классы в сумме составляют только 0.001% от выборки. А остальное – класс other. Чтобы не тратить впустую деньги на разметку ненужных данных, обучите модель на небольшом куске разметки, насэмплите рандома в other и разметьте моделью выборку. А потом уже отправляйте на разметку, только то что разметилось, как не other.
8. Чтобы выжать максимум из разметки, помимо обычной дедупликации, можете сделать еще дедупликацию по нечетким совпадением или по близости эмбеддингов по порогу.
9. Что делать если данных нет? Ищите открытые датасеты по своей задаче. Если датасет на другом языке - можно перевести.
10. Можно скрапить сайты и выдачу из поиска. Как-то нам нужны были примеры, где люди рассказывают о себе и своих увлечениях, я наскрапил примеров с сайта для знакомств в духе анкет в газете 2000х.
11. Если данных совсем нет, можно сделать следующее: вручную написать по паре десятков разных примеров на класс. Векторизовать их sentence encoder и поискать ближайшие по косинусу в большом корпусе.
12. Если вам нужна специализированная разметка, а разметчиков-специалистов мало, то попробуйте переформулировать задачу для более простой разметки. Пример: нам нужно было разметить часть текстовых сообщений из логов, на предмет корректности их интента (>1k классов). Некоторые интенты похожи между собой. В них разбираются только внутренние разметчики. Задачу из "прочитать описания интентов и определить нужный" мы переформировали в "kind of NLI". Даны 4 предложения (размечаемый сэмпл + 3 примера из интента) - нужно найти лишний. Если разметчики верно выделяли сэмпл, значит он скорее всего не из этого интента. Спорные примеры уже размечали специалисты.
13. Что делать, если датасет после разметки оказался грязный? Если меньшая часть примеров из классов ошибочно приписаны в другой, то вместо того, чтобы переразмечать весь датасет, то можно разделить датасет на фолды -> обучить по кругу модель и предсказать leave-one-fold -> сохранить предикты с каждого цикла обучения -> переразметить сэмплы, в которых предсказание не совпадает с лейблом.
Напишите в комменты, что бы еще добавили? 🤔
Больше о разметке в контексте NLP. Часть советов покажутся очевидными, но все равно упомяну. Подходит и для in-house разметки, и для outsource разметки в сервисах (толока, mturk)
1. Прежде чем составить задание на разметку, попробуйте сами разметить пару десятков примеров. Так вы поймете, насколько данные и классы корректны.
2. В самом задании добавьте по паре примеров на класс для понимания. Здорово, если добавите сложный пример и в скобках объясните логику.
3. Сначала сделайте небольшой пробный батч и скорректируйте задание если нужно.
4. Примеры, которые вы разметили сами – используйте как оценочные для разметчиков, чтобы размечали только добросовестные разметчики.
5. Используйте меру согласованности между разметчиками (например, Fleiss’ kappa). Несогласованные сэмплы - либо треш, либо спорные сэмплы, которые наоборот помогут модели лучше разделить классы.
6. Даже если ресурсов мало, разметьте хотя бы golden set, на котором оценивайте метрики и другие способы разметки (active learning, разметкой эвристиками итп.)
7. Есть такая частая проблема в текстовых классификациях, что необходимые классы в сумме составляют только 0.001% от выборки. А остальное – класс other. Чтобы не тратить впустую деньги на разметку ненужных данных, обучите модель на небольшом куске разметки, насэмплите рандома в other и разметьте моделью выборку. А потом уже отправляйте на разметку, только то что разметилось, как не other.
8. Чтобы выжать максимум из разметки, помимо обычной дедупликации, можете сделать еще дедупликацию по нечетким совпадением или по близости эмбеддингов по порогу.
9. Что делать если данных нет? Ищите открытые датасеты по своей задаче. Если датасет на другом языке - можно перевести.
10. Можно скрапить сайты и выдачу из поиска. Как-то нам нужны были примеры, где люди рассказывают о себе и своих увлечениях, я наскрапил примеров с сайта для знакомств в духе анкет в газете 2000х.
11. Если данных совсем нет, можно сделать следующее: вручную написать по паре десятков разных примеров на класс. Векторизовать их sentence encoder и поискать ближайшие по косинусу в большом корпусе.
12. Если вам нужна специализированная разметка, а разметчиков-специалистов мало, то попробуйте переформулировать задачу для более простой разметки. Пример: нам нужно было разметить часть текстовых сообщений из логов, на предмет корректности их интента (>1k классов). Некоторые интенты похожи между собой. В них разбираются только внутренние разметчики. Задачу из "прочитать описания интентов и определить нужный" мы переформировали в "kind of NLI". Даны 4 предложения (размечаемый сэмпл + 3 примера из интента) - нужно найти лишний. Если разметчики верно выделяли сэмпл, значит он скорее всего не из этого интента. Спорные примеры уже размечали специалисты.
13. Что делать, если датасет после разметки оказался грязный? Если меньшая часть примеров из классов ошибочно приписаны в другой, то вместо того, чтобы переразмечать весь датасет, то можно разделить датасет на фолды -> обучить по кругу модель и предсказать leave-one-fold -> сохранить предикты с каждого цикла обучения -> переразметить сэмплы, в которых предсказание не совпадает с лейблом.
Напишите в комменты, что бы еще добавили? 🤔
👍7❤3👌2
На выходных баловался с ChatGPT и листал треды твиттера. Результатом стала статья на хабре. Если коротко, то модель крутая. Думаю, что пишет код лучше, чем Copilot, а вдобавок, может генерить много больше.
В качестве иллюстрации, вот вам шутка от модели про машинное обучение.
P.S. Если хотите потестить модель, напишите в комменты запрос - сгенерю за вас. Либо можете зарегаться сами, в статье все ссылки.
https://habr.com/ru/post/703568/
В качестве иллюстрации, вот вам шутка от модели про машинное обучение.
P.S. Если хотите потестить модель, напишите в комменты запрос - сгенерю за вас. Либо можете зарегаться сами, в статье все ссылки.
https://habr.com/ru/post/703568/
🔥10❤4👍2
Как и где искать новую работу.
Собрал небольшую заметку про поиск работы (больше про зарубежные компании). Тут оговорка, что в большинстве позиций нужно, чтобы у вас было право работы на территории страны. Но есть и вакансии full-remote и с релокацией.
Во-первых, нужно актуализировать или составить CV (резюме), профиль на Linkedin и других платформах.
1. Посмотреть материалы гарварда.
2. Полистать закрепы и примеры в чате @resume_review
3. Составить резюме. Я использовал вот такой шаблон в overleaf
4. Можно закинуть CV в чат из 2 пункта для обратной связи.
Во-вторых, искать вакансии и подаваться.
1. Найти рефералов (человек из компании, который вас рекомендует) в компании через знакомых, чаты и сеть Linkedin. Самый рабочий способ, если хотите в конкретные компании.
2. Заполнить свой профиль на Linkedin. Будут прилетать вакансии от рекрутеров в личку/на почту. Откликался на вакансии через сам Linkedin, отдача маленькая, но собесы оттуда были.
3. Откликаться на вакансии в чатах. На первый этап точно попадете. Круто, что в #_jobs в слаке ods, описание вакансий сразу с вилкой зп.
4. Бот @g_jobbot. Были и предложения, и офферы, и сам откликался.
5. На hackernews каждый месяц появляется тред, где публикуют вакансии. Вот их агрегатор.
6. Есть разные ресурсы, которые матчат вас с работодателем. Вроде honeypot. Я пробовал, даже был собес. Но там были низкие вилки и мало предложений.
7. Indeed.com или angel.co Регался, даже была пара собесов оттуда.
8. Находить на crunchbase свежие стартапы, которые подняли раунд и теперь нанимают. Не пробовал такой способ, но хотел.
Еще можно подаваться напрямую в компании через сайт, но я такой способ не пробовал без рефералов.
Напишите в комменты, какие еще ресурсы вам помогали в поиске работы. Или что из этого списка cработало.
Собрал небольшую заметку про поиск работы (больше про зарубежные компании). Тут оговорка, что в большинстве позиций нужно, чтобы у вас было право работы на территории страны. Но есть и вакансии full-remote и с релокацией.
Во-первых, нужно актуализировать или составить CV (резюме), профиль на Linkedin и других платформах.
1. Посмотреть материалы гарварда.
2. Полистать закрепы и примеры в чате @resume_review
3. Составить резюме. Я использовал вот такой шаблон в overleaf
4. Можно закинуть CV в чат из 2 пункта для обратной связи.
Во-вторых, искать вакансии и подаваться.
1. Найти рефералов (человек из компании, который вас рекомендует) в компании через знакомых, чаты и сеть Linkedin. Самый рабочий способ, если хотите в конкретные компании.
2. Заполнить свой профиль на Linkedin. Будут прилетать вакансии от рекрутеров в личку/на почту. Откликался на вакансии через сам Linkedin, отдача маленькая, но собесы оттуда были.
3. Откликаться на вакансии в чатах. На первый этап точно попадете. Круто, что в #_jobs в слаке ods, описание вакансий сразу с вилкой зп.
4. Бот @g_jobbot. Были и предложения, и офферы, и сам откликался.
5. На hackernews каждый месяц появляется тред, где публикуют вакансии. Вот их агрегатор.
6. Есть разные ресурсы, которые матчат вас с работодателем. Вроде honeypot. Я пробовал, даже был собес. Но там были низкие вилки и мало предложений.
7. Indeed.com или angel.co Регался, даже была пара собесов оттуда.
8. Находить на crunchbase свежие стартапы, которые подняли раунд и теперь нанимают. Не пробовал такой способ, но хотел.
Еще можно подаваться напрямую в компании через сайт, но я такой способ не пробовал без рефералов.
Напишите в комменты, какие еще ресурсы вам помогали в поиске работы. Или что из этого списка cработало.
❤14👍8
Мое резюме на момент апреля, мб пригодится как пример. Одно на mle позиции, второе на swe.
🔥13
