Этот пост потребует некоторого контекста для незнакомых со мной читателей: скриншот примерно показывает, как выглядит мой Linkedin профиль (я заблюрил то, что не имеет значения для этого поста). Лирическое отступление: advisor - это понятие растяжимое, в последние пару лет моя работа как эдвайзора в основном ограничивается тем, чтобы иногда выпить пивка с одним из фаундеров (приятная роль!).
И вот, пишет мне в linkedin на прошлой неделе рекрутер: блабла, мы в поиске ML/CV инженера в команду OneSoil, у вас релевантный опыт, не хотите ли пообщаться? Ну, почему бы и не пообщаться - мне же интересно, когда она дойдет до того, чтобы прочитать-таки мой профиль.
И вот, договариваемся о звонке, и происходит примерно такой диалог:
- Здравствуйте, Арсений. Я тут увидела, что вы уже работали в компании, почему же вы хотите в нее вернуться?
- Здравствуйте. А почему вы решили, что я оттуда ушел?..
- У вас в профиле написано, что вы работаете в компании Инструментал.
- Это правда.
- Так что же, в двух компаниях работаете?!
- Нет, я работаю в одной и изредка помогаю другой.
- Хм, понятно. А может тогда вы сможете объяснить, кого вы ищете в команду?
- Простите, я не понимаю ваш вопрос.
- Ладно, до свидания.
Через полчаса прилетает еще одно сообщение в Linkedin - "могли бы и сразу сказать!". Ой, все!
---
Некомпетентные (обычно внешние) рекрутеры - частая проблема найма в компаниях на некоторых стадиях. В совсем молодых стартапах наймом занимаются фаундеры, ранние сотрудники и другие заинтересованные люди (включая эдвайзоров и прочих друзей компании), которым ни к чему работать "на отъебись". Потом компании взрослеют, учатся скейлиться, нанимают рекрутеров, часто наступают на грабли. И кто-то из этого делает выводы, выстраивает процесс найма, и оставляет только профессиональных рекрутеров. А кто-то оставляет на самотек, годами аутсорсит найм и удивляется, почему в итоге сильные профессионалы почему-то не выстраиваются в очередь.
Несмотря на такие курьезные истории, я сильно верю в OneSoil. А потому вспомню о своих обязанностях эдвайзора, и прорекламирую их вакансии.
И вот, пишет мне в linkedin на прошлой неделе рекрутер: блабла, мы в поиске ML/CV инженера в команду OneSoil, у вас релевантный опыт, не хотите ли пообщаться? Ну, почему бы и не пообщаться - мне же интересно, когда она дойдет до того, чтобы прочитать-таки мой профиль.
И вот, договариваемся о звонке, и происходит примерно такой диалог:
- Здравствуйте, Арсений. Я тут увидела, что вы уже работали в компании, почему же вы хотите в нее вернуться?
- Здравствуйте. А почему вы решили, что я оттуда ушел?..
- У вас в профиле написано, что вы работаете в компании Инструментал.
- Это правда.
- Так что же, в двух компаниях работаете?!
- Нет, я работаю в одной и изредка помогаю другой.
- Хм, понятно. А может тогда вы сможете объяснить, кого вы ищете в команду?
- Простите, я не понимаю ваш вопрос.
- Ладно, до свидания.
Через полчаса прилетает еще одно сообщение в Linkedin - "могли бы и сразу сказать!". Ой, все!
---
Некомпетентные (обычно внешние) рекрутеры - частая проблема найма в компаниях на некоторых стадиях. В совсем молодых стартапах наймом занимаются фаундеры, ранние сотрудники и другие заинтересованные люди (включая эдвайзоров и прочих друзей компании), которым ни к чему работать "на отъебись". Потом компании взрослеют, учатся скейлиться, нанимают рекрутеров, часто наступают на грабли. И кто-то из этого делает выводы, выстраивает процесс найма, и оставляет только профессиональных рекрутеров. А кто-то оставляет на самотек, годами аутсорсит найм и удивляется, почему в итоге сильные профессионалы почему-то не выстраиваются в очередь.
Несмотря на такие курьезные истории, я сильно верю в OneSoil. А потому вспомню о своих обязанностях эдвайзора, и прорекламирую их вакансии.
👍25🔥6💩6
Существует известная проблема из области социологии: как получить более или менее честные данные в количественном исследовании, если респонденты не хотят/боятся/стыдятся отвечать честно.
И вот случайно наткнулся на простой и изящный подход в духе differential privacy. TL;DR - формируем список из N утверждений, делим респондентов на две группы, одной показываем все N утверждений, другой - все, кроме того самого чувствительного. Вопрос формулируется как "с каким количеством утверждений (неважно, каких именно) вы согласны", и по разнице между группами легко вывести истинную поддержку.
Должно подойти не только для опросов про войну, но и для user research.
И вот случайно наткнулся на простой и изящный подход в духе differential privacy. TL;DR - формируем список из N утверждений, делим респондентов на две группы, одной показываем все N утверждений, другой - все, кроме того самого чувствительного. Вопрос формулируется как "с каким количеством утверждений (неважно, каких именно) вы согласны", и по разнице между группами легко вывести истинную поддержку.
Должно подойти не только для опросов про войну, но и для user research.
EUROPP - European Politics and Policy
Do Russians tell the truth when they say they support the war in Ukraine? Evidence from a list experiment - EUROPP
Survey evidence indicates a majority of Russian citizens support their country’s military action in Ukraine. But does this give an accurate picture of public opinion? Using an innovative list experiment, Philipp Chapkovski and Max Schaub demonstrate that…
🔥48🤔15👍11
Вышла неплохая статья при участии дядьки ЛеКуна - The Effects of Regularization and Data Augmentation are Class Dependent. В ней живет дух старой школы statistical learning со ссылками на Тихонова, Вапника и Червоненкинса, но основная идея, как это часто бывает, очень интуитивна.
TL;DR: разные аугментации в задаче image classification по-разному влияют на точность по разным классам в зависимости от важности формы или текстуры для объектов этого класса. Например, у штопора очень характерная форма, а зебра больше идентифицируется текстурой. Соответственно, агрессивные аугментации типа random crop в среднем улучшает качество для "текстурных" классов (и портят для shape oriented), а пиксельный шум aka color jitter - наоборот. Большое количество графиков и примеров прилагается.
Вообще статья как бы намекает, что надо анализировать эффект чуть глубже, чем "насыпать аугментаций побольше, accuracy растет, збс". Удивительно только, что в статье нет ссылки на ImageNet-trained CNNs are biased towards texture (есть хороший пересказ на русском), которая лично мне казалось классикой в вопросе "texture vs shape".
TL;DR: разные аугментации в задаче image classification по-разному влияют на точность по разным классам в зависимости от важности формы или текстуры для объектов этого класса. Например, у штопора очень характерная форма, а зебра больше идентифицируется текстурой. Соответственно, агрессивные аугментации типа random crop в среднем улучшает качество для "текстурных" классов (и портят для shape oriented), а пиксельный шум aka color jitter - наоборот. Большое количество графиков и примеров прилагается.
Вообще статья как бы намекает, что надо анализировать эффект чуть глубже, чем "насыпать аугментаций побольше, accuracy растет, збс". Удивительно только, что в статье нет ссылки на ImageNet-trained CNNs are biased towards texture (есть хороший пересказ на русском), которая лично мне казалось классикой в вопросе "texture vs shape".
🔥32👍16
Хочу посоветовать уважаемым читателям небольшой бесплатный курс MLOps Zoomcamp от моего старинного приятеля Алексея, автора книги Machine Learning Bookcamp. Курс рассчитан на не самую опытную аудиторию и поможет закрыть некоторые пробелы в ответе на вопрос "Как же все-таки выкатывать ML в продакшен".
Говоря про MLOps, не могу не заметить, насколько хайповым стал этот термин. На каком-то этапе я обнаружил, что все вокруг говорят про MLOps, и заволновался, что отстал от жизни. Немного почитал и обнаружил, что это все знакомые практики под новым красивым названием. Позже в одном из первых ревью на план нашей с Валерой книги ревьювер даже написал замечание в духе "удивлен, что эта глава не называется MLOps, хотя содержание похоже на него".
Как хорошие software инженеры уделяли внимание мониторингу и пайплайнам деплоймента до того, как про devops стали вещать из каждого утюга, так и MLOps - это не что-то кардинально новое, а просто собранные вместе практики, которые нельзя игнорировать, работая с настоящим продакшеном, а не только тыкая fit-predict в jupyter ноутбуках. Впрочем, хоть горшком назови, тольков печь не ставь прод не роняй.
Говоря про MLOps, не могу не заметить, насколько хайповым стал этот термин. На каком-то этапе я обнаружил, что все вокруг говорят про MLOps, и заволновался, что отстал от жизни. Немного почитал и обнаружил, что это все знакомые практики под новым красивым названием. Позже в одном из первых ревью на план нашей с Валерой книги ревьювер даже написал замечание в духе "удивлен, что эта глава не называется MLOps, хотя содержание похоже на него".
Как хорошие software инженеры уделяли внимание мониторингу и пайплайнам деплоймента до того, как про devops стали вещать из каждого утюга, так и MLOps - это не что-то кардинально новое, а просто собранные вместе практики, которые нельзя игнорировать, работая с настоящим продакшеном, а не только тыкая fit-predict в jupyter ноутбуках. Впрочем, хоть горшком назови, только
GitHub
GitHub - DataTalksClub/mlops-zoomcamp: Free MLOps course from DataTalks.Club
Free MLOps course from DataTalks.Club. Contribute to DataTalksClub/mlops-zoomcamp development by creating an account on GitHub.
❤32👍28
Те, кто интересуется современным NLP, уже наверняка знают про большую (до 175B параметров) языковую модель, которую показал Facebook Meta AI. Веса ее младших версий (до 30B) уже в паблике, а старшую обещают приоткрыть для ресерчеров.
Но не менее интересно подглядеть, как же делают такие штуки; читать не стерильный пост в блоге, а рутинные внутренние артефакты. И, оказывается, их тоже можно найти и убедиться, что в Meta AI ресерч инфраструктура в каких-то аспектах тоже оставляет желать лучшего, как и (почти) у всех.
Но не менее интересно подглядеть, как же делают такие штуки; читать не стерильный пост в блоге, а рутинные внутренние артефакты. И, оказывается, их тоже можно найти и убедиться, что в Meta AI ресерч инфраструктура в каких-то аспектах тоже оставляет желать лучшего, как и (почти) у всех.
👍20
На прошлой неделе писал код для двух задач: подготовка налоговой декларации по capital gain за прошлый год и оптимизация по времени относительно сложного computer vision пайплайна. Угадайте, для какой из них пришлось вспоминать написание алгоритмов в духе leetcode?
Правильно, для налогов. Например, некий ассет покупался по разным ценам, то gain считается по принципу first bought - first sold, и нужно держать какую-то структуру с двумя указателями.
А вот оптимизация скорости пайплайна потребовала только пройтись профайлером, посмотреть на результат, раскидать IO по тредам и упростить кое-какую геометрию, заменив сложные универсальные библиотечные методы на решение в лоб для частных случаев.
Правильно, для налогов. Например, некий ассет покупался по разным ценам, то gain считается по принципу first bought - first sold, и нужно держать какую-то структуру с двумя указателями.
А вот оптимизация скорости пайплайна потребовала только пройтись профайлером, посмотреть на результат, раскидать IO по тредам и упростить кое-какую геометрию, заменив сложные универсальные библиотечные методы на решение в лоб для частных случаев.
👍32😁10
Ирония высшего порядка: Гугл отчаялся приучить т.н. датасайнтистов нормально структурировать код или хотя бы линейно исполнять ячейки в Jupyter ноутбуках, и потому запустил kaggle-соревнование, в котором нужно предиктить порядок исполнения этих самых ячеек.
😁126👍8🤯6🤩6🔥4😢3❤2🥰1🤮1
Вчера в новости просочился факт продажи некоего стартапа: Farfetch купил Wanna. Мелкая новость в масштабах индустрии, но значимая для меня - я был в числе первых сотрудников компании и, соответственно, оказался среди держателей опционов.
Описывая тот период, я обычно говорю, что это были лучшие и худшие полтора года в моей карьере. Кстати, всего полтора года? По ощущениям гораздо дольше.
Постоянные американские горки между "мы ничтожны, сами не понимаем, что делаем; вот-вот проедим инвестиции и закроемся ⚰️" и "мы великолепны; корпорации, выстраивайтесь в очередь со своими чемоданами денег 💰". Мы много работали, быстро учились (в основном на своих ошибках), падали и поднимались, угорали и веселились. В общем, было сложно, но охуенно.
Я благодарен тем, кто смог дотащить компанию до этой точки и тем, кто помогал по пути. И, конечно, непрошеный совет уважаемым читателям: работайте в (хороших) стартапах, пацаны и девчонки, это круто. В одном из следующих постов попробую собрать в кучу свои представления, что такое хороший стартап.
Описывая тот период, я обычно говорю, что это были лучшие и худшие полтора года в моей карьере. Кстати, всего полтора года? По ощущениям гораздо дольше.
Постоянные американские горки между "мы ничтожны, сами не понимаем, что делаем; вот-вот проедим инвестиции и закроемся ⚰️" и "мы великолепны; корпорации, выстраивайтесь в очередь со своими чемоданами денег 💰". Мы много работали, быстро учились (в основном на своих ошибках), падали и поднимались, угорали и веселились. В общем, было сложно, но охуенно.
Я благодарен тем, кто смог дотащить компанию до этой точки и тем, кто помогал по пути. И, конечно, непрошеный совет уважаемым читателям: работайте в (хороших) стартапах, пацаны и девчонки, это круто. В одном из следующих постов попробую собрать в кучу свои представления, что такое хороший стартап.
dev.by
Британский маркетплейс купил стартап беларусов Wannaby за $29,4 млн
Маркетплейс Farfetch приобрёл стартап с беларускими корнями Wannaby Inc за $29,4 млн.
Сделку закрыли 5 апреля 2022, это следует из отчётности Farfetch за первый квартал, опубликованной 25 мая.
Сделку закрыли 5 апреля 2022, это следует из отчётности Farfetch за первый квартал, опубликованной 25 мая.
👍64🎉33❤13🤔1
Итак, я обещал написать какие-то соображения, как выбирать стартап ранней стадии, к которому можно и нужно присоединяться. Дисклеймер: это личный опыт + наблюдения некоторых корешей, так что объективность не гарантируется. Кроме того, высказываюсь с позиции individual contributor, а не карьериста, который стремится к C-level.
Перефразируя Толстого, “все плохие стартапы плохи по-своему“. Нельзя найти критерии обязательного успеха, проще найти "красные флаги" 🚩- критерии, которые заметно снижают вероятность успеха в будущем.
🤔 фаундеры и команда сами не знают, что делают (или не могут толком объяснить).
Пивот - это нормально, но если вчера компания делала казино на блокчейне, а сегодня - AR для медицины, то это не пивот, а скорее хайпожоры пытаются ухватить очередной тренд.
🚜 инвестиции от непрофильных инвесторов;
Скорее всего, “хорошие” инвесторы денег не дали. Возможно, они что-то знают. Необязательно поднимать деньги от a16z или sequoia capital, но хотя бы от каких-то профессиональных VC. Фартовые пацаны с сетью шиномонтажей, вложившие деньги в стартап, с высокой вероятностью придут и попытаются рулить компанией по знакомым им понятиям. Кроме того, “плохие” инвесторы отпугнут потенциальных “хороших”. Сюда же - страновая принадлежность инвесторов: деньги от какого-нибудь чисто российского фонда сейчас обрекают компанию на жизнь внутри российской экосистемы без шанса влиться в мировую тусовку.
0️⃣ попытка на всем экономить;
Понятно, что денег у стартапа обычно немного, но если фаундер ML-focused стартапа говорит, что на видеокарты и разметку денег нет, крутись как хочешь, разговор можно заканчивать. «Пироги крошатся, если резать их слишком тонко», как говорил персонаж моей любимой книги.
💸 зарплата не по рынку.
С нищенскими зарплатами стартап не наймет достаточно сильных людей. С неадекватно высокими - быстро потратит инвестиции и не доживет до следующего раунда. Например, когда я пошел работать в Wanna, моя зарплата снизилась примерно на 40%.
👶 компания активно нанимает джуниоров на ключевые роли.
Слабая команда не сделает ничего хорошего. Нанимать джуниоров можно только тогда, когда сеньорам есть, что им делегировать (обычно это уже хотя бы series A или B, точно не seed/preseed)
📆 мутный вестинг;
Не могу представить ни одной уважительной причины хитрить с вестингом. Зато это полезно для фаундеров, чтобы потом кинуть гребцов 🚣♂️. Четыре года с клиффом - отлично, минимальные отклонения (например, неравномерный или ускоренный вестинг) тоже ок, а “посмотрим по результатам” - нет.
☁️ непрозрачность в целом;
Mushroom management 🍄 - известный антипаттерн, а для стартапов особенно опасный.
🎲 компания не может стать очень успешной даже в идеальном мире.
Простая эвристика: предположим, все планы фаундеров сбываются, все идет хорошо. Сколько в таком случае может стоить компания? Если продукт нацелен на рынок из трех с половиной калек (realtime MLOps для компаний в сфере рекламы азиатской косметики!), стать единорогом ему не светит даже при идеальном стечении обстоятельств, а на практике все будет только хуже.
В следующей серии: какие критерии все-таки могут засчитываться в плюс при выборе стартапа.
Перефразируя Толстого, “все плохие стартапы плохи по-своему“. Нельзя найти критерии обязательного успеха, проще найти "красные флаги" 🚩- критерии, которые заметно снижают вероятность успеха в будущем.
🤔 фаундеры и команда сами не знают, что делают (или не могут толком объяснить).
Пивот - это нормально, но если вчера компания делала казино на блокчейне, а сегодня - AR для медицины, то это не пивот, а скорее хайпожоры пытаются ухватить очередной тренд.
🚜 инвестиции от непрофильных инвесторов;
Скорее всего, “хорошие” инвесторы денег не дали. Возможно, они что-то знают. Необязательно поднимать деньги от a16z или sequoia capital, но хотя бы от каких-то профессиональных VC. Фартовые пацаны с сетью шиномонтажей, вложившие деньги в стартап, с высокой вероятностью придут и попытаются рулить компанией по знакомым им понятиям. Кроме того, “плохие” инвесторы отпугнут потенциальных “хороших”. Сюда же - страновая принадлежность инвесторов: деньги от какого-нибудь чисто российского фонда сейчас обрекают компанию на жизнь внутри российской экосистемы без шанса влиться в мировую тусовку.
0️⃣ попытка на всем экономить;
Понятно, что денег у стартапа обычно немного, но если фаундер ML-focused стартапа говорит, что на видеокарты и разметку денег нет, крутись как хочешь, разговор можно заканчивать. «Пироги крошатся, если резать их слишком тонко», как говорил персонаж моей любимой книги.
💸 зарплата не по рынку.
С нищенскими зарплатами стартап не наймет достаточно сильных людей. С неадекватно высокими - быстро потратит инвестиции и не доживет до следующего раунда. Например, когда я пошел работать в Wanna, моя зарплата снизилась примерно на 40%.
👶 компания активно нанимает джуниоров на ключевые роли.
Слабая команда не сделает ничего хорошего. Нанимать джуниоров можно только тогда, когда сеньорам есть, что им делегировать (обычно это уже хотя бы series A или B, точно не seed/preseed)
📆 мутный вестинг;
Не могу представить ни одной уважительной причины хитрить с вестингом. Зато это полезно для фаундеров, чтобы потом кинуть гребцов 🚣♂️. Четыре года с клиффом - отлично, минимальные отклонения (например, неравномерный или ускоренный вестинг) тоже ок, а “посмотрим по результатам” - нет.
☁️ непрозрачность в целом;
Mushroom management 🍄 - известный антипаттерн, а для стартапов особенно опасный.
🎲 компания не может стать очень успешной даже в идеальном мире.
Простая эвристика: предположим, все планы фаундеров сбываются, все идет хорошо. Сколько в таком случае может стоить компания? Если продукт нацелен на рынок из трех с половиной калек (realtime MLOps для компаний в сфере рекламы азиатской косметики!), стать единорогом ему не светит даже при идеальном стечении обстоятельств, а на практике все будет только хуже.
В следующей серии: какие критерии все-таки могут засчитываться в плюс при выборе стартапа.
🔥88👍34🥰1🤔1
Today I learned, что такое residential proxy.
Как известно всем ML практикам, датасет - это наше все. А для ряда задач данные вполне себе доступны в публичном интернете, правда, не всегда в формате "скачай и пользуйся". Короче, иногда без скрапинга никуда. И когда нужно скрапить очень много (миллионы и десятки миллионов объектов), возникают технические сложности.
Обычно сайты-доноры не хотят подвергаться скрапингу и сопротивляются: капчи, временные баны и так далее. На другой стороне этой борьбы щита и меча попытки мимикрировать под обычных пользователей - эмуляция браузера и, конечно, подмена IP при помощи проксей и VPN-ов. Впрочем, зачем я это пишу, вы это и так все знаете.
Так вот, очевидно, что не все прокси равны: сложно прикидываться обычным пользователем, когда IP явно указывает, что это AWS сервер. Логично, что нужны айпишники простых пользователей. Так вот, всякие сервисы, продающие прокси пачками, предлагают как "обычные" прокси, так и residentual - т.е. те, которые используются людьми, а не датацентрами. Разница в цене между ними у разных вендоров составляет примерно один порядок: $1 за гигабайт трафика через residentual прокси против $0.1 за обычный.
Вендоры утверждают, что у них десятки миллионов таких проксей. Возникает вопрос: а откуда они берутся?
Я нашел два сценария:
- можно самому осознанно сдавать свой канал в аренду за малую мзду. Например, Packetstream платит $0.1 (т.е. 10% от цены для покупателя) за гигабайт прокачанного трафика. Можно поставить приложение или запустить докер контейнер и сказочно обогатиться, я для эксперимента даже прокачал через виртуалку целых 7 мегабайт.
- паблишеры приложений могут выжимать со своих юзеров дополнительные пять центов в месяц, неявно внедряя такой SDK с прокси в свой продукт. Так что не удивляйтесь, когда очередная free-to-play игра вдруг сожрет у вас пару гигабайт мобильного трафика.
Ну и наверняка есть еще какое-то количество residential proxy, которые по сути своей ботнеты. Но, конечно, вендоры об этом не пишут - у них всегда ethical proxies, конечно.
P.S. Если кто-то знает секреты, как эффективно парсить Google на масштабе 3-5k RPS, напишите в комментариях или мне в личку (@arsenyinfo).
Как известно всем ML практикам, датасет - это наше все. А для ряда задач данные вполне себе доступны в публичном интернете, правда, не всегда в формате "скачай и пользуйся". Короче, иногда без скрапинга никуда. И когда нужно скрапить очень много (миллионы и десятки миллионов объектов), возникают технические сложности.
Обычно сайты-доноры не хотят подвергаться скрапингу и сопротивляются: капчи, временные баны и так далее. На другой стороне этой борьбы щита и меча попытки мимикрировать под обычных пользователей - эмуляция браузера и, конечно, подмена IP при помощи проксей и VPN-ов. Впрочем, зачем я это пишу, вы это и так все знаете.
Так вот, очевидно, что не все прокси равны: сложно прикидываться обычным пользователем, когда IP явно указывает, что это AWS сервер. Логично, что нужны айпишники простых пользователей. Так вот, всякие сервисы, продающие прокси пачками, предлагают как "обычные" прокси, так и residentual - т.е. те, которые используются людьми, а не датацентрами. Разница в цене между ними у разных вендоров составляет примерно один порядок: $1 за гигабайт трафика через residentual прокси против $0.1 за обычный.
Вендоры утверждают, что у них десятки миллионов таких проксей. Возникает вопрос: а откуда они берутся?
Я нашел два сценария:
- можно самому осознанно сдавать свой канал в аренду за малую мзду. Например, Packetstream платит $0.1 (т.е. 10% от цены для покупателя) за гигабайт прокачанного трафика. Можно поставить приложение или запустить докер контейнер и сказочно обогатиться, я для эксперимента даже прокачал через виртуалку целых 7 мегабайт.
- паблишеры приложений могут выжимать со своих юзеров дополнительные пять центов в месяц, неявно внедряя такой SDK с прокси в свой продукт. Так что не удивляйтесь, когда очередная free-to-play игра вдруг сожрет у вас пару гигабайт мобильного трафика.
Ну и наверняка есть еще какое-то количество residential proxy, которые по сути своей ботнеты. Но, конечно, вендоры об этом не пишут - у них всегда ethical proxies, конечно.
P.S. Если кто-то знает секреты, как эффективно парсить Google на масштабе 3-5k RPS, напишите в комментариях или мне в личку (@arsenyinfo).
👍35😱8
Делал несложный NLP классификатор-бейзлайн. Взял популярный фреймворк от huggingface 🤗 и начал адаптировать их пример.
На простой строчке
Страшновато работать в мире, где разработчики популярного фреймворка (т.е. чего-то системообразующего) считают нормальной практикой по умолчанию скачивать исходники примитивной функции и импортировать ее на лету. Мы же не фронтендеры!
На простой строчке
accuracy = load_metric("accuracy")
решил заглянуть в исходники, чтобы понять сигнатуру, а там внезапно такое.Страшновато работать в мире, где разработчики популярного фреймворка (т.е. чего-то системообразующего) считают нормальной практикой по умолчанию скачивать исходники примитивной функции и импортировать ее на лету. Мы же не фронтендеры!
GitHub
datasets/src/datasets/load.py at main · huggingface/datasets
🤗 The largest hub of ready-to-use datasets for ML models with fast, easy-to-use and efficient data manipulation tools - huggingface/datasets
😱38😁9🤯5💯5👍4🤔2
Моя первая работа "весь день писать код за деньги" была в Яндексе. Там я не трогал рантайм, а в основном занимался тем, что сейчас называют дата инженерией, т.е. нагружал кластер имени некоего польского математика. Как следствие, неоптимальный код ничего слишком страшного не делал, просто выполнялся часами или даже днями. Однажды я наспех написал джобу и пошел домой, утром увидел, что и близко не выполнена, и обнаружил там классическую ошибку новичка: проверка условия типа
Потом работал в компаниях, где оптимизировать надо было только рантайм/инференс, и редко делал это сам - вокруг было слишком много ICPC-олимпиадников, и я со свиным рылом в калашный ряд без особой нужды не совался. А если и совался, то обычно оптимизация лежала в DL плоскости и была довольно прямолинейной: попробовать порубить или факторизовать свертки тут и там, посмотреть на метрики, где это приносит меньше вреда, готово, вы великолепны. Было и такое: все датасеты были настолько маленькими, что можно было все алгоритмы делать брутфорсом, и никто бы не заметил; даже счета от AWS редко стимулировали что-то оптимизировать.
А сейчас я с интересом столкнулся с данными того интересного масштаба, что переходить на распределенные вычисления пока рано, а на одной машине, даже жирной, все работает слишком медленно. Например, в прошлом посте я писал, что пилю NLP классификатор. Все шустро работало, пока я не перешел с игрушечного датасета (десятки тысяч строк) к настоящему (десятки миллионов). Т.е. какая-нибудь функция даже с линейной сложностью и скоростью выполнения 1ms внезапно превратилась в недопустимо тормознутую, а подход "просто закинуть все в память" перестал масштабироваться.
Пока что я успел возненавидеть pandas (в одном пайплайне сделал +30% к скорости, заменив все на простые дикты), полюбить polars, написать суперспецифическую обертку к LMDB в стиле RocksDict и просто начать иногда думать в процессе написания кода, а не простокататься ебалом по клавиатуре принимать подсказки Copilot. Единственное, что меня беспокоило — это Rust. В мире нет никого более безответственного и безнравственного, чем 🦀 программисты, которые стремятся сделать все вокруг blazing fast 🚀. И я знал, что довольно скоро в это окунусь.
if user in some_users
, выполняемая миллионы раз, проходила по some_users, который был многомиллионным списком. Одна строка вида some_users = set(some_users)
ускорила тогда джобу в 250 тысяч раз. Это мой личный рекорд ускорения (и личный рекорд неэффективности, конечно, тоже).Потом работал в компаниях, где оптимизировать надо было только рантайм/инференс, и редко делал это сам - вокруг было слишком много ICPC-олимпиадников, и я со свиным рылом в калашный ряд без особой нужды не совался. А если и совался, то обычно оптимизация лежала в DL плоскости и была довольно прямолинейной: попробовать порубить или факторизовать свертки тут и там, посмотреть на метрики, где это приносит меньше вреда, готово, вы великолепны. Было и такое: все датасеты были настолько маленькими, что можно было все алгоритмы делать брутфорсом, и никто бы не заметил; даже счета от AWS редко стимулировали что-то оптимизировать.
А сейчас я с интересом столкнулся с данными того интересного масштаба, что переходить на распределенные вычисления пока рано, а на одной машине, даже жирной, все работает слишком медленно. Например, в прошлом посте я писал, что пилю NLP классификатор. Все шустро работало, пока я не перешел с игрушечного датасета (десятки тысяч строк) к настоящему (десятки миллионов). Т.е. какая-нибудь функция даже с линейной сложностью и скоростью выполнения 1ms внезапно превратилась в недопустимо тормознутую, а подход "просто закинуть все в память" перестал масштабироваться.
Пока что я успел возненавидеть pandas (в одном пайплайне сделал +30% к скорости, заменив все на простые дикты), полюбить polars, написать суперспецифическую обертку к LMDB в стиле RocksDict и просто начать иногда думать в процессе написания кода, а не просто
👍70😁30🔥13🐳10😢3🥱1
🐓 Рубрика "странные факты": оказывается, идентификация петухов важна не только в российских тюрьмах и других местах с похожей культурой - это еще и задача для ML стартапов.
Очевидно, что в птицеводстве важно уметь отличать петуха от курицы: петухи не только не несут яйца, но и набирают массу медленнее куриц, т.е. невыгодны для разведения на мясо. Так вот, я случайно узнал, что ключевая технология распознавания пола цыплят (называется vent chick sexing) была опубликована только в 1933 году и вовсю используется до сих пор. Технология довольно неприятная, впрочем, по сравнению с тем, что ждет юных петухов - совершенно ничего страшного.
Эта технология серьезно увеличила эффективность птицеводства и внесла свой вклад в то, чтобы нормально прокормить миллиарды людей было возможным. Тем не менее, это все еще далеко не оптимальная технология: требует много ручного труда, применима к уже вылупившимся цыплятам в возрасте одного дня, ну и про этические моменты я умолчу. Намного лучше было бы определять пол потенциального цыпленка, пока это только яйцо.
Есть не менее пяти стартапов, которые применяют для этого машинное обучение! Правда, это все поверх разнообразных сенсоров, думаю, ML там довольно простой, а сложность скорее в сенсорах.
Один из проектов, получивший под эту проблему грант от Евросоюза, утверждает, что этот рынок creates a €300 billion opportunity - любой мамкин стартапер согласится, что это неплохой total addressable market.
Очевидно, что в птицеводстве важно уметь отличать петуха от курицы: петухи не только не несут яйца, но и набирают массу медленнее куриц, т.е. невыгодны для разведения на мясо. Так вот, я случайно узнал, что ключевая технология распознавания пола цыплят (называется vent chick sexing) была опубликована только в 1933 году и вовсю используется до сих пор. Технология довольно неприятная, впрочем, по сравнению с тем, что ждет юных петухов - совершенно ничего страшного.
Эта технология серьезно увеличила эффективность птицеводства и внесла свой вклад в то, чтобы нормально прокормить миллиарды людей было возможным. Тем не менее, это все еще далеко не оптимальная технология: требует много ручного труда, применима к уже вылупившимся цыплятам в возрасте одного дня, ну и про этические моменты я умолчу. Намного лучше было бы определять пол потенциального цыпленка, пока это только яйцо.
Есть не менее пяти стартапов, которые применяют для этого машинное обучение! Правда, это все поверх разнообразных сенсоров, думаю, ML там довольно простой, а сложность скорее в сенсорах.
Один из проектов, получивший под эту проблему грант от Евросоюза, утверждает, что этот рынок creates a €300 billion opportunity - любой мамкин стартапер согласится, что это неплохой total addressable market.
👍28🔥15🤯4👎2
Вчера копался на помойке выносил мусор, и на столике, где обычно выкладывают барахло, которое кому-то может пригодиться (чаще всего одежду или технику), увидел такую книгу.
Кажется, big data хайп окончательно сдулся, даже в не самой технически продвинутой Варшаве.
А вот другая история об умеренно больших данных. Есть у меня некий пайплайн, который делал неоптимальные запросы в некое облачное хранилище. Я знал об их неоптимальности, но осознанно забил - эта неоптимальность обходилась примерно в $7 в день, и я откладывал разбирательство, как это исправить. И вот внезапно на вход начало приходить в 20 раз больше данных, и неоптимальность стала обходиться в $140 в день. Ущерб от моей лени оказался заметным, а фикс занял меньше двух часов, включая деплоймент.
Кажется, big data хайп окончательно сдулся, даже в не самой технически продвинутой Варшаве.
А вот другая история об умеренно больших данных. Есть у меня некий пайплайн, который делал неоптимальные запросы в некое облачное хранилище. Я знал об их неоптимальности, но осознанно забил - эта неоптимальность обходилась примерно в $7 в день, и я откладывал разбирательство, как это исправить. И вот внезапно на вход начало приходить в 20 раз больше данных, и неоптимальность стала обходиться в $140 в день. Ущерб от моей лени оказался заметным, а фикс занял меньше двух часов, включая деплоймент.
👍59😱7🤔4
На каком-то этапе то, чем я зачастую занимаюсь, окружающие начали называть MLOps. Мне никогда не нравился этот термин, от него попахивало какой-то погоней за хайпом: в моем понимании возня с ML инфраструктурой - часть обязанностей обычного ML инженера, зачем придумывать еще какой-то термин и популяризировать его? Впрочем, игнорировать термин полностью я уже не могу: например, издатель нашей будущей книги очень въедливо спрашивал, чем ML system design, про который мы пишем, отличается от MLOps.
И вот недавно наткнулся на статью, в которой немецкие исследователи из Karlsruhe Institute of Technology и IBM попытались формализовать, что это вообще за зверь. В статье производит впечатление навороченными схемами, которые должны описывать, где чья зона ответственности и как они друг с другом пересекаются. Например, для "типичного" ML проекта предлагается аж шесть технических ролей.
Если почитать методологию, становится понятно, откуда растут ноги: авторы провели интервью с 8 представителями индустрии из разных компаний. Компании не называются, но несложно догадаться, что, например, music streaming service с 6500 сотрудников - это Spotify. Кстати, именно Spotify - самая маленькая из представленных компаний, в остальных десятки и сотни тысяч сотрудников. Еще в одной компании я подозреваю Oracle, в другой - индийского аутсорс гиганта TCS.
Так я пришел к выводу, что термин MLOps начинает иметь какой-то смысл только для бюрократизированных многотысячных компаний.
И вот недавно наткнулся на статью, в которой немецкие исследователи из Karlsruhe Institute of Technology и IBM попытались формализовать, что это вообще за зверь. В статье производит впечатление навороченными схемами, которые должны описывать, где чья зона ответственности и как они друг с другом пересекаются. Например, для "типичного" ML проекта предлагается аж шесть технических ролей.
Если почитать методологию, становится понятно, откуда растут ноги: авторы провели интервью с 8 представителями индустрии из разных компаний. Компании не называются, но несложно догадаться, что, например, music streaming service с 6500 сотрудников - это Spotify. Кстати, именно Spotify - самая маленькая из представленных компаний, в остальных десятки и сотни тысяч сотрудников. Еще в одной компании я подозреваю Oracle, в другой - индийского аутсорс гиганта TCS.
Так я пришел к выводу, что термин MLOps начинает иметь какой-то смысл только для бюрократизированных многотысячных компаний.
👍43🤔9👎2😁2💯1
Недавно разговаривал с менеджером за жизнь на 1:1, речь зашла про образование, и он спросил "BTW, what's your degree? 🧑🎓". Как человек, 15 лет назад бросивший нетехнический факультет, я не мог удержаться от встречного вопроса - а ну-ка попробуй угадай. Его decision tree оказалось интересным:
- "не вставляешь свои пять копеек, когда кто-то вокруг начинает выебываться на тему математики и не стремишься решать задачи при помощи вычурных loss-функций - значит, не физика и не математика";
- "пишешь читаемый структурированный код и при этом интересуешься чем-то за пределами своей IDE - значит, не computer science";
- "напрашиваются нетехнические дисциплины, применяющие технические методы. Экономика?"
Ну да, я бы сильно удивился, если бы он прямо угадал моюцерковно-приходскую школу родную кафедру технологий коммуникации журфака БГУ.
Кстати, в предыдущий раз про образование меня спрашивали два с половиной года назад - в тот раз это были визовые юристы.
- "не вставляешь свои пять копеек, когда кто-то вокруг начинает выебываться на тему математики и не стремишься решать задачи при помощи вычурных loss-функций - значит, не физика и не математика";
- "пишешь читаемый структурированный код и при этом интересуешься чем-то за пределами своей IDE - значит, не computer science";
- "напрашиваются нетехнические дисциплины, применяющие технические методы. Экономика?"
Ну да, я бы сильно удивился, если бы он прямо угадал мою
Кстати, в предыдущий раз про образование меня спрашивали два с половиной года назад - в тот раз это были визовые юристы.
🔥105😁30👍17🤩2🤔1🤮1
Предположим такую ML ситуацию: например, мы учим классификацию, и на каком-то этапе train accuracy резко выросла (например, 80% => 90%), а на валидации - слегка просела (например, 75% => 74.5%). Как это прокомментировать?
👨🎓Ответ уровня junior: классический оверфит по учебнику, обязательно нужно делать early stopping или вводить другие способы регуляризации!
🤔 Ответ уровня middle: дорогой джун, а вот и необязательно оверфит, вдруг наша задача предполает, что качество трейна важно. Например, если у нас API, которое по адресу сайта предсказывает его тематику, и трейн содержит top-100000 сайтов по запрашиваемости, качество трейна важнее качества на валидации!
👴 Ответ уровня senior: дорогой middle, если у нас большая часть запросов касается трейнсета, давайте не будем там делать никакой ML, а просто запомним популярные значения и будем отдавать их из кэша. И тогда качество модели на трейне снова не важно!
🚁 Ответ уровня staff и выше: молчание - он верит, что коллеги разберутся с этой задачей, а у него есть дела поважнее.
Судя по тому, что я вчера прикрутил подобный lookup table (-17% к среднему времени инференса и +ε к точности), не быть мне пока стаффом!
👨🎓Ответ уровня junior: классический оверфит по учебнику, обязательно нужно делать early stopping или вводить другие способы регуляризации!
🤔 Ответ уровня middle: дорогой джун, а вот и необязательно оверфит, вдруг наша задача предполает, что качество трейна важно. Например, если у нас API, которое по адресу сайта предсказывает его тематику, и трейн содержит top-100000 сайтов по запрашиваемости, качество трейна важнее качества на валидации!
👴 Ответ уровня senior: дорогой middle, если у нас большая часть запросов касается трейнсета, давайте не будем там делать никакой ML, а просто запомним популярные значения и будем отдавать их из кэша. И тогда качество модели на трейне снова не важно!
🚁 Ответ уровня staff и выше: молчание - он верит, что коллеги разберутся с этой задачей, а у него есть дела поважнее.
Судя по тому, что я вчера прикрутил подобный lookup table (-17% к среднему времени инференса и +ε к точности), не быть мне пока стаффом!
🔥73😁18👍12🤣5🐳4❤2
Я в последнее время часто играю в GeoGuessr - это игра, в которой по картинкам из Google Street View за ограниченное время нужно угадывать локацию. Естественно, к этой игре уже сделали 100500 deep learning читов, которые угадывают сильно лучше среднего игрока. Но я хотел поделиться другим наблюдением: успех в GeoGuessr похож на успех в классических ML проектах. Т.е. для победы нужно придумать фичи и собрать датасет.
Примеры фичей: с какой стороны дороги едут машины, на каком языке написаны вывески и знаки (наконец-то мне пригодилось умение отличать польский от чешского, а вот сербский с болгарским пока иногда путаю), что растет на полях (конечно, с ребятами из OneSoil в этом соревноваться нельзя), видны ли в окрестностях море или горы, насколько разбита дорога, насколько просматривается солнце через облака, какое распределение машин/мопедов...
Но без достаточного датасета (желательно настоящих путешествий, а не наигранных матчей) фичи не помогают. Например, я никогда не был в южном полушарии, и потому едва ли могу отличать страны в Латинской Америке и Африке.
Примеры фичей: с какой стороны дороги едут машины, на каком языке написаны вывески и знаки (наконец-то мне пригодилось умение отличать польский от чешского, а вот сербский с болгарским пока иногда путаю), что растет на полях (конечно, с ребятами из OneSoil в этом соревноваться нельзя), видны ли в окрестностях море или горы, насколько разбита дорога, насколько просматривается солнце через облака, какое распределение машин/мопедов...
Но без достаточного датасета (желательно настоящих путешествий, а не наигранных матчей) фичи не помогают. Например, я никогда не был в южном полушарии, и потому едва ли могу отличать страны в Латинской Америке и Африке.
Geoguessr
GeoGuessr - Let's explore the world!
GeoGuessr is a geography game which takes you on a journey around the world and challenges your ability to recognize your surroundings.
🔥33👍8❤🔥5❤1
Читаю "Бобо в раю. Откуда берется новая элита" - про социальный класс bourgeois-bohemian, "буржуазной богемы" (в наших широтах похожих людей обычно называют не совсем точно хипстерами), и хочу выдернуть оттуда цитату:
Ваша карьера должна отражать изменчивые запросы бобо-этики. В 1950-х считалось, что деньги лучше всего получать по наследству. В среде сегодняшней бобо-элиты считается, что лучше всего разбогатеть по стечению обстоятельств. Деньги просто случилось заработать на пути к реализации творческой задачи. Это значит, что наиболее престижные профессии совмещают в себе артистическое самовыражение с высоким доходом. Писатель, зарабатывающий миллион долларов в год, куда престижнее банкира, получающего пятьдесят. Программист с опционом на акции стоимостью в несколько миллионов престижнее девелопера, чей пакет оценивается в десятки миллионов.
Думаю, эта цитата хорошо описывает, почему X денег, заработанных в Сбере или, например, на перепродаже спизженного кирпича - не так круто, как такие же X денег от продажи стартапа, призовых на Kaggle или гонораров за лекции.
Ваша карьера должна отражать изменчивые запросы бобо-этики. В 1950-х считалось, что деньги лучше всего получать по наследству. В среде сегодняшней бобо-элиты считается, что лучше всего разбогатеть по стечению обстоятельств. Деньги просто случилось заработать на пути к реализации творческой задачи. Это значит, что наиболее престижные профессии совмещают в себе артистическое самовыражение с высоким доходом. Писатель, зарабатывающий миллион долларов в год, куда престижнее банкира, получающего пятьдесят. Программист с опционом на акции стоимостью в несколько миллионов престижнее девелопера, чей пакет оценивается в десятки миллионов.
Думаю, эта цитата хорошо описывает, почему X денег, заработанных в Сбере или, например, на перепродаже спизженного кирпича - не так круто, как такие же X денег от продажи стартапа, призовых на Kaggle или гонораров за лекции.
Goodreads
Bobos in Paradise: The New Upper Class and How They Got…
In his bestselling work of “comic sociology,” David Bro…
👍76😁12🤔8👎5🔥5