Заключительный пост про NeurIPS 2021, с бору по сосенке.
Для тех, кто любит менять оптимизаторы на что-то поновее после каждой конференции - SuperAdam (передаю привет @hushpar).
Unadversarial Examples: Designing Objects for Robust Vision представляет концепцию unadversarial текстур, патчей и объектов, условно “как надо раскрашивать объекты в реальном мире, чтобы CV лучше их распознавало в разных условиях”. Своего рода антипод adversarial patches - наклеек, которые позволяют совершать adversarial атаки на физических объектах.
AugMax: Adversarial Composition of Random Augmentations for Robust Training - подход к CV аугментациям, который обеспечивает большую устойчивость к изменению распределения. Авторы вводят разделение для аугментаций - для повышения сложности (например, adversarial атаки) и для улучшения разнообразия (например, вращения), и проектируют такой вид аугментаций, который сможет сочетать оба преимущества.
Adaptive Denoising via GainTuning тоже про устойчивость к distribution shift, на этот раз для задачи денойзинга. Для каждого тестового изображения предлагается выучивать дополнительный параметр gain, который используется для масштабирования весов основной сети.
Узнал новую для себя концепцию адаптеров для языковых (и не только) моделей из статьи Adaptive Fine-tuning for Vision and Language Pre-trained Models (саму статью не могу нагуглить, вот постер). Идея в том, чтобы добавлять внутрь крупных блоков (в данном случае - трансформер-блоков в VisualBERT) небольшие блоки-адаптеры, которые и будут дообучаться под будущие задачи. Сведущие в NLP люди рассказали, что идея не очень нова ), но в последнее время набирает популярность (см. например). Уже планирую прикрутить к computer vision задаче!
В speech recognition я не понимаю практически ничего, но Unsupervised Speech Recognition понравилась инженерным подходом к проблеме: не изобретая ничего особенно нового, авторы из готовых кусков собрали фреймворк для распознавания речи на неразмеченных данных (и тексты, и аудио).
Конечно, было немало статей про GANы, но я, как дилетант, обратил внимание только на т.н. StyleGAN 3 - Alias-Free Generative Adversarial Networks, авторы анализировали и успешно решили проблему т.н. texture sticking - артефакта, заметного при интерполяции в латентном пространстве и потому не позволяющего генерировать правдоподобные видео и анимации. Отдельно процитирую “This entire project consumed 92 GPU years” - это больше GPU-времени, чем я потратил за всю карьеру. 😱
Дискуссировали с коллегами про самое заметное название статьи, шорт-лист составили:
- Vector-valued Gaussian Processes on Riemannian Manifolds via Gauge Independent Projected Kernels 🤓
- A Gang of Adversarial Bandits 🦹
- You Never Cluster Alone 💔
Наконец, каким-то чертом меня занесло на туториал по NLP для редких языков, где ребята из Африки рассказывали, как им сложно учить языковые модели из-за отсутствия больших качественных датасетов. Но ничего нового не узнал, TL;DR - авторы рекомендуют использовать претрейны с более популярных языков, аугментации, шумную разметку эвристиками, multi-task learning, но все эти трюки все равно резко теряет ценность, как только появляется достаточное количество качественно размеченных данных (вот это поворот, конечно).
Для тех, кто любит менять оптимизаторы на что-то поновее после каждой конференции - SuperAdam (передаю привет @hushpar).
Unadversarial Examples: Designing Objects for Robust Vision представляет концепцию unadversarial текстур, патчей и объектов, условно “как надо раскрашивать объекты в реальном мире, чтобы CV лучше их распознавало в разных условиях”. Своего рода антипод adversarial patches - наклеек, которые позволяют совершать adversarial атаки на физических объектах.
AugMax: Adversarial Composition of Random Augmentations for Robust Training - подход к CV аугментациям, который обеспечивает большую устойчивость к изменению распределения. Авторы вводят разделение для аугментаций - для повышения сложности (например, adversarial атаки) и для улучшения разнообразия (например, вращения), и проектируют такой вид аугментаций, который сможет сочетать оба преимущества.
Adaptive Denoising via GainTuning тоже про устойчивость к distribution shift, на этот раз для задачи денойзинга. Для каждого тестового изображения предлагается выучивать дополнительный параметр gain, который используется для масштабирования весов основной сети.
Узнал новую для себя концепцию адаптеров для языковых (и не только) моделей из статьи Adaptive Fine-tuning for Vision and Language Pre-trained Models (саму статью не могу нагуглить, вот постер). Идея в том, чтобы добавлять внутрь крупных блоков (в данном случае - трансформер-блоков в VisualBERT) небольшие блоки-адаптеры, которые и будут дообучаться под будущие задачи. Сведущие в NLP люди рассказали, что идея не очень нова ), но в последнее время набирает популярность (см. например). Уже планирую прикрутить к computer vision задаче!
В speech recognition я не понимаю практически ничего, но Unsupervised Speech Recognition понравилась инженерным подходом к проблеме: не изобретая ничего особенно нового, авторы из готовых кусков собрали фреймворк для распознавания речи на неразмеченных данных (и тексты, и аудио).
Конечно, было немало статей про GANы, но я, как дилетант, обратил внимание только на т.н. StyleGAN 3 - Alias-Free Generative Adversarial Networks, авторы анализировали и успешно решили проблему т.н. texture sticking - артефакта, заметного при интерполяции в латентном пространстве и потому не позволяющего генерировать правдоподобные видео и анимации. Отдельно процитирую “This entire project consumed 92 GPU years” - это больше GPU-времени, чем я потратил за всю карьеру. 😱
Дискуссировали с коллегами про самое заметное название статьи, шорт-лист составили:
- Vector-valued Gaussian Processes on Riemannian Manifolds via Gauge Independent Projected Kernels 🤓
- A Gang of Adversarial Bandits 🦹
- You Never Cluster Alone 💔
Наконец, каким-то чертом меня занесло на туториал по NLP для редких языков, где ребята из Африки рассказывали, как им сложно учить языковые модели из-за отсутствия больших качественных датасетов. Но ничего нового не узнал, TL;DR - авторы рекомендуют использовать претрейны с более популярных языков, аугментации, шумную разметку эвристиками, multi-task learning, но все эти трюки все равно резко теряет ценность, как только появляется достаточное количество качественно размеченных данных (вот это поворот, конечно).
👍4
Мой братишка по масонской ложе, широко известный в data science тусовке качок-карьерист Валера недавно пустился во все тяжкие: свалил из Фейсбука Меты, перебрался в криптостартап, а теперь еще завел телеграм-канал "Время Валеры".
Всегда рад рекламировать каналы корешей, если там теплится жизнь, т.е. сколько-то регулярно появляется годный контент. Надеюсь, когда-нибудь Валера публично расскажет хотя бы часть кулсториз, которыми он делился приватно - например, как эффективно работать на трех работах и не поехать кукухой, или как справляться с тем, что твой подчиненный называет коллег "ебаными гуманитариями".
Всегда рад рекламировать каналы корешей, если там теплится жизнь, т.е. сколько-то регулярно появляется годный контент. Надеюсь, когда-нибудь Валера публично расскажет хотя бы часть кулсториз, которыми он делился приватно - например, как эффективно работать на трех работах и не поехать кукухой, или как справляться с тем, что твой подчиненный называет коллег "ебаными гуманитариями".
👍2
Очень хорошая статья со слегка пафосным названием A ConvNet for the 2020s.
TL;DR: чувакам надоел хайп vision трансформеров, и они решили сделать сверточные сети great again. Для этого они проанализировали, в чем же могут быть сильные стороны трансформеров, и попытались воспроизвести аналогичные преимущества в классической сверточной архитектуре (Resnet), что им в основном удалось.
Статья хороша не столько результатом (кого сейчас удивишь очередными 82+% точности на Imagenet), сколько стилем изложения. Авторы описали траекторию исследования и соответствующие кумулятивные улучшения, а не продемонстрировали очередную серебряную пулю из ниоткуда. Отдельный лайк за Robustness Evaluation в приложении.
TL;DR: чувакам надоел хайп vision трансформеров, и они решили сделать сверточные сети great again. Для этого они проанализировали, в чем же могут быть сильные стороны трансформеров, и попытались воспроизвести аналогичные преимущества в классической сверточной архитектуре (Resnet), что им в основном удалось.
Статья хороша не столько результатом (кого сейчас удивишь очередными 82+% точности на Imagenet), сколько стилем изложения. Авторы описали траекторию исследования и соответствующие кумулятивные улучшения, а не продемонстрировали очередную серебряную пулю из ниоткуда. Отдельный лайк за Robustness Evaluation в приложении.
❤27
В далеком 2018 мы с коллегами делали proof of concept сервиса по оценке размера кольца. Точнее, "мы с коллегами" на тот момент в основном означало, что Андрей рисовал на доске геометрические формулы и писал тонны кода, а я приставал к нему с туповатыми вопросами и иногда коммитил инфраструктурные мелочи. Сценарий простой: для онлайн-продаж ювелирки одна из проблем вызвана тем, что пользователи не знают размер своего пальца (или пальца своего партнера), и потому не могут опасаются заказывать кольцо в интернет-магазине. Для дорогих товаров магазины бесплатно высылают специальные мерные кольца, для дешевых - советуют разные эвристики типа "обмотай палец ниткой N раз, померяй использованную нитку линейкой и подставь результат в формулу". Примечание про несколько измерений, кстати, важно: это такой бутстраппинг курильщика, потому что единичные измерения слишком шумные.
Наш подход cтроился на фотографии руки на листе бумаги А4, для которого известен размер, а значит - есть референс для калибровки. Соответственно, можно найти нужный палец, определить его размер в пикселях и перевести в мм. В итоге дальше прототипа дело не пошло по двум причинам. Во-первых, медианная ошибка нашего подхода получалась около 0.4 мм, а это примерно шаг размера, т.е. точность недостаточна. Даже увеличение датасета не спасало ситуацию, т.е. говоря умными словами, большая часть ошибки отражала aleatoric uncertainty. Во-вторых, тестовые пользователи игнорировали инструкции и фотографировали руки на чем угодно (например, на мятых салфетках), но не на ровном листе А4. В итоге направление было деприоритезировано, но многие наработки оттуда были успешно использованы в другом, гораздо более успешном проекте.
И вот прошло четыре года, и я снова делаю измерение физического размера по фотографии, на этот раз сугубо своими руками. На этот раз права на ошибку меньше - в этой нише пользователей интересует точность в микронах. Но общий уровень сложности как будто снизился: сабпиксельная точность четыре года назад оказалась нерешенной задачей, а сейчас уже почти получается. Конечно, не стоит приписывать все заслуги себе: камеры стали лучше,
Наш подход cтроился на фотографии руки на листе бумаги А4, для которого известен размер, а значит - есть референс для калибровки. Соответственно, можно найти нужный палец, определить его размер в пикселях и перевести в мм. В итоге дальше прототипа дело не пошло по двум причинам. Во-первых, медианная ошибка нашего подхода получалась около 0.4 мм, а это примерно шаг размера, т.е. точность недостаточна. Даже увеличение датасета не спасало ситуацию, т.е. говоря умными словами, большая часть ошибки отражала aleatoric uncertainty. Во-вторых, тестовые пользователи игнорировали инструкции и фотографировали руки на чем угодно (например, на мятых салфетках), но не на ровном листе А4. В итоге направление было деприоритезировано, но многие наработки оттуда были успешно использованы в другом, гораздо более успешном проекте.
И вот прошло четыре года, и я снова делаю измерение физического размера по фотографии, на этот раз сугубо своими руками. На этот раз права на ошибку меньше - в этой нише пользователей интересует точность в микронах. Но общий уровень сложности как будто снизился: сабпиксельная точность четыре года назад оказалась нерешенной задачей, а сейчас уже почти получается. Конечно, не стоит приписывать все заслуги себе: камеры стали лучше,
from pretrained_sota import SuperbModel
точнее, а итерации на современных GPU и с современными инструментами - быстрее.👍27
Еще недавно сложно было представить, что я буду постить ссылки на разработки Сбера, но с моей колокольни кажется, что в русскоязычном ML-коммьюнити по влиянию сейчас их опережает только Яндекс, причем разрыв стремительно сокращается. Так вот, я хотел обратить внимание уважаемых читателей на pytorch-lifestream - библиотеку для создания ембеддингов для из последовательностей евентов.
Я сам этой библиотекой не пользовался и в ближайшее время не планирую, мои задачи все больше из другого домена. Но концептуально подход мне кажется очень правильным. Более того, в последнее время я все больше верю, что почти весь прикладной ML сведется к сочетанию относительно сложного representation learning и простых моделей (линейных, kNN, cosine similarity) поверх этих representations. Это в свою очередь приведет к масштабируемому разделению обязанностей: core ML команда будет пилить те самые волшебные representations, а инженеры в продуктовых командах будут учить регрессию на этих фичах.
Мои вера основана на таких наблюдениях:
1) self-supervised и contrastive методы начали прилично работать в разных доменах и модальностях, в т.ч. мультимодально (самый популярный пример - CLIP);
2) архитектуры в разных задачах все больше сближаются (см. восхищение трансформерами в твиттере Карпатого)
3) деплоить и поддерживать такие модели становится проще, чем “классический” ML (всякие бустинги и ручные фичи).
Я сам этой библиотекой не пользовался и в ближайшее время не планирую, мои задачи все больше из другого домена. Но концептуально подход мне кажется очень правильным. Более того, в последнее время я все больше верю, что почти весь прикладной ML сведется к сочетанию относительно сложного representation learning и простых моделей (линейных, kNN, cosine similarity) поверх этих representations. Это в свою очередь приведет к масштабируемому разделению обязанностей: core ML команда будет пилить те самые волшебные representations, а инженеры в продуктовых командах будут учить регрессию на этих фичах.
Мои вера основана на таких наблюдениях:
1) self-supervised и contrastive методы начали прилично работать в разных доменах и модальностях, в т.ч. мультимодально (самый популярный пример - CLIP);
2) архитектуры в разных задачах все больше сближаются (см. восхищение трансформерами в твиттере Карпатого)
3) деплоить и поддерживать такие модели становится проще, чем “классический” ML (всякие бустинги и ручные фичи).
👍40🔥2😁2❤1👎1
Недавно перезапустился широко известный в узких кругах Open ML Course, и, как человек, приложивший руку к его первой версии, я не могу об этом умолчать.
Первая версия курса (2017 год!) представляла из себя десяток лонгридов на Хабре, написанных разными людьми, и peer reviewed домашние задания к каждому из них. Ваш покорный слуга, например, писал главу про feature engineering и убил на нее часов сорок, если память не изменяет. Иронично, что в прошлом посте я как раз высказывал пророчества о том, что роль feature engineering угасает и продолжит угасать. С тех пор курс эволюционировал, были оффлайн лекции, переводы на английский, французский и китайский, публикации на альтернативных платформах (например, у англоязычной версии моей главы только на Медиуме было почти 50к просмотров) и многое другое - я особо не следил. В последний раз курс косвенно напомнил о себе, когда из-за этой старой статьи ко мне обратилось издательство Manning и попросило поревьювить соответствующий черновик одной из их книг.
Юра Кашницкий, который тащил это все с самого начала, ожидаемо наконец-то устал, и передал русскую версию Пете Ермакову, который уже давно тяготел больше к преподаванию, чем датасайнсу своими руками. Сейчас Петя пытается вдохнуть в него новую жизнь.
У меня неоднозначное отношение к курсу: по состоянию на 2022 его едва ли можно назвать исчерпывающим, и просто стряхнуть пыль может оказаться недостаточно. Тем не менее, для поверхностного понимания data science и machine learning он может пригодиться. Учитывая его бесплатность, я бы посоветовал рассмотреть его всем, кто собирался занести денег за аналогичные курсы в какую-нибудь недешевую школу для "вайтишников".
Первая версия курса (2017 год!) представляла из себя десяток лонгридов на Хабре, написанных разными людьми, и peer reviewed домашние задания к каждому из них. Ваш покорный слуга, например, писал главу про feature engineering и убил на нее часов сорок, если память не изменяет. Иронично, что в прошлом посте я как раз высказывал пророчества о том, что роль feature engineering угасает и продолжит угасать. С тех пор курс эволюционировал, были оффлайн лекции, переводы на английский, французский и китайский, публикации на альтернативных платформах (например, у англоязычной версии моей главы только на Медиуме было почти 50к просмотров) и многое другое - я особо не следил. В последний раз курс косвенно напомнил о себе, когда из-за этой старой статьи ко мне обратилось издательство Manning и попросило поревьювить соответствующий черновик одной из их книг.
Юра Кашницкий, который тащил это все с самого начала, ожидаемо наконец-то устал, и передал русскую версию Пете Ермакову, который уже давно тяготел больше к преподаванию, чем датасайнсу своими руками. Сейчас Петя пытается вдохнуть в него новую жизнь.
У меня неоднозначное отношение к курсу: по состоянию на 2022 его едва ли можно назвать исчерпывающим, и просто стряхнуть пыль может оказаться недостаточно. Тем не менее, для поверхностного понимания data science и machine learning он может пригодиться. Учитывая его бесплатность, я бы посоветовал рассмотреть его всем, кто собирался занести денег за аналогичные курсы в какую-нибудь недешевую школу для "вайтишников".
👍50🔥5👏2🤯1
Я когда-то писал, как на Google Colab можно завести SSH и пользоваться этой машинкой без Jupyter. И вот случайно обнаружил, что есть и следующий шаг в этом направлении: аналогично в колабе можно запустить code server - веб IDE на базе VS code, есть даже готовый пакет. Наверное, это сколько-то рабочее решение для тех, у кого почему-то нет доступа к нормальному компьютеру, а есть только ограниченный тонкий клиент (например, ipad или chromebook).
👍36
Наткнулся на отличную статью в блоге Uber о том, как они переносили оценку времени поездки на DL пайплайн, и меня захлестнуло ностальгией.
Примерно пять лет назад я работал в компании Juno - израильском райдшеринге, который оперировался в Нью-Йорке, а разрабатывался в Минске 🤯 (сейчас остатками компании владеет Lyft). И там мы, неопытные машинлернеры, делали в т.ч. робкие попытки затащить ML для той же задачи получения ETA.
Вообще, самый простой способ получить ответ на вопрос "сколько машина будет ехать из точки А в точку B" - спросить API какого-нибудь провайдера карт, например, Google, Яндекс или TomTom. Но это решение 1) быстро становится дорогим, 2) не учитывает паттерны именно в твоих поездках (например, опытные таксисты в среднем могут добираться до точки назначения быстрее среднего водителя). Следующий шаг эволюции - взять какой-нибудь open source движок типа Valhalla или OSRM и допилить его под свои нужды, например, прикрутив туда свой движок пробок. Это уменьшает счета от гугла, но все еще не делает предсказание очень точным.
Соответственно, ML решение должно уточнять предсказание вышеописанного сервиса. Мы придумали много handcrafted фичей, обучили какой-то градиентный бустинг, оффлайн метрики были хорошими - примерно на уровне данных из Google. Но вот катить в прод это было сложно по ряду причин, как технических, так и не очень. Из технических упомяну только сложность реализации всех этих фичей (включая всякие исторические агрегаты) в рантайме - в те времена простые пацаны еще не знали таких слов, как feature store.
И тогда у нас родилась безумная идея - предсказывать ETA end2end довольно простой сетью, без всяких сложных фичей и маршрутов из Valhalla. География Нью-Йорка очень простая, и, как оказалось, с датасетом в миллионы поездкок можно получить хорошую модель, используя только геокоординаты и фичи времени для учета сезонности. Впрочем, в прод это так и не доехало - приоритеты сменились. Так я впервые своими глазами увидел, как очень прямолинейный deep learning go brrr бьет куда более сложные решения.
Кстати, самый первый бейзлайн - довольно рабочий! - в этой задаче выглядел примерно так:
Примерно пять лет назад я работал в компании Juno - израильском райдшеринге, который оперировался в Нью-Йорке, а разрабатывался в Минске 🤯 (сейчас остатками компании владеет Lyft). И там мы, неопытные машинлернеры, делали в т.ч. робкие попытки затащить ML для той же задачи получения ETA.
Вообще, самый простой способ получить ответ на вопрос "сколько машина будет ехать из точки А в точку B" - спросить API какого-нибудь провайдера карт, например, Google, Яндекс или TomTom. Но это решение 1) быстро становится дорогим, 2) не учитывает паттерны именно в твоих поездках (например, опытные таксисты в среднем могут добираться до точки назначения быстрее среднего водителя). Следующий шаг эволюции - взять какой-нибудь open source движок типа Valhalla или OSRM и допилить его под свои нужды, например, прикрутив туда свой движок пробок. Это уменьшает счета от гугла, но все еще не делает предсказание очень точным.
Соответственно, ML решение должно уточнять предсказание вышеописанного сервиса. Мы придумали много handcrafted фичей, обучили какой-то градиентный бустинг, оффлайн метрики были хорошими - примерно на уровне данных из Google. Но вот катить в прод это было сложно по ряду причин, как технических, так и не очень. Из технических упомяну только сложность реализации всех этих фичей (включая всякие исторические агрегаты) в рантайме - в те времена простые пацаны еще не знали таких слов, как feature store.
И тогда у нас родилась безумная идея - предсказывать ETA end2end довольно простой сетью, без всяких сложных фичей и маршрутов из Valhalla. География Нью-Йорка очень простая, и, как оказалось, с датасетом в миллионы поездкок можно получить хорошую модель, используя только геокоординаты и фичи времени для учета сезонности. Впрочем, в прод это так и не доехало - приоритеты сменились. Так я впервые своими глазами увидел, как очень прямолинейный deep learning go brrr бьет куда более сложные решения.
Кстати, самый первый бейзлайн - довольно рабочий! - в этой задаче выглядел примерно так:
def get_eta(coords_from, coords_to):
if is_manhattan(coords_from) and is_manhattan(coords_to):
return 4 # minutes
...
🔥54👍16😁10🤔3
Это очень личный пост совершенно не по тематике канала. Но не написать я его все равно не могу; несколько раз пытался его переписать, но изящная словесность все равно как-то не получается.
Я прожил тридцать один год в Минске, и только в 2020 уехал оттуда с одним чемоданом и билетом в один конец. Уехал, когда принял тот факт, что Лукашенко удержался у власти - в основном стараниями Путина - и сейчас медленно, но верно начнет мстить всем, кто был против.
Вне Беларуси многие думали, что происходящее в стране в 2020 - это какие-то внутренние разборки. Те, кто видел изнутри, так не думал, но вряд ли кто-то понимал, что именно усатый колхозник отдал своему покровителю.
Сейчас мы все поняли. Четвертый день с территории Беларуси в сторону Украины вылетают самолеты и ракеты, чтобы разрушать и убивать. Лукашенко за 28 лет прошел весь путь от местечкового популиста до военного преступника мирового уровня. Ни я, ни мои родные, ни мои близкие друзья за него никогда не голосовали (когда-то это еще играло роль!), но все равно мне стыдно, что белорусы как нация это допустили.
Как неисправимый оптимист, я верю, что скоро все разрешится, и мы все будем жить дальше без страха ядерной войны. Но хочется призвать, чтобы каждый из нас уже сегодня выучил этот урок и начал уделять больше внимания возможным долгосрочным последствиям своих действий и бездействий, смог больше помогать и меньше бояться.
И, конечно, не забывайте, что общество делится не по цвету паспорта или способности произнести шибболет "паляниця", а скорее по тому, действительно ли ты человек, который стремится к процветанию себя и окружающих, или недальновидный агрессивный орк.
P.S. Слава Україні! 🇺🇦 ❤️
Я прожил тридцать один год в Минске, и только в 2020 уехал оттуда с одним чемоданом и билетом в один конец. Уехал, когда принял тот факт, что Лукашенко удержался у власти - в основном стараниями Путина - и сейчас медленно, но верно начнет мстить всем, кто был против.
Вне Беларуси многие думали, что происходящее в стране в 2020 - это какие-то внутренние разборки. Те, кто видел изнутри, так не думал, но вряд ли кто-то понимал, что именно усатый колхозник отдал своему покровителю.
Сейчас мы все поняли. Четвертый день с территории Беларуси в сторону Украины вылетают самолеты и ракеты, чтобы разрушать и убивать. Лукашенко за 28 лет прошел весь путь от местечкового популиста до военного преступника мирового уровня. Ни я, ни мои родные, ни мои близкие друзья за него никогда не голосовали (когда-то это еще играло роль!), но все равно мне стыдно, что белорусы как нация это допустили.
Как неисправимый оптимист, я верю, что скоро все разрешится, и мы все будем жить дальше без страха ядерной войны. Но хочется призвать, чтобы каждый из нас уже сегодня выучил этот урок и начал уделять больше внимания возможным долгосрочным последствиям своих действий и бездействий, смог больше помогать и меньше бояться.
И, конечно, не забывайте, что общество делится не по цвету паспорта или способности произнести шибболет "паляниця", а скорее по тому, действительно ли ты человек, который стремится к процветанию себя и окружающих, или недальновидный агрессивный орк.
P.S. Слава Україні! 🇺🇦 ❤️
👍110❤91💩12
Все русскоязычные профессиональные сообщества, за которыми я наблюдаю, в последние три недели сместились в сторону вопросов "куда и как свалить?" или хотя бы "как бы найти удаленку, которая будет платить криптой в мою затронутую санкциями страну, пока я не смогу выехать". Немало крутых специалистов резко разлюбили свои корпорации с зарплатами в рублях и начали смотреть по сторонам. Но и количество знакомых, которые постоянно спрашивают "а посоветуй, кого бы нанять на такую-то позицию", по-прежнему велико.
Давайте попробуем в комментариях к этому посту матчить таких людей.
Пишите в комментариях, если вы опытный специалист "про данные" (например, software engineer, ML engineer, data scientist etc.) и ищете работу с релокейтом или удаленку, ссылки на linkedin приветствуются.
Пишите в комментариях про свои вакансии, если вы нанимаете и готовы помочь с релокейтом или работать с диджитал номадами.
Минутка монетизации: если вы найдете себе интересную работу или сотрудника в этом посте, будьте котиками и сделайте посильный донат в любую организацию по вашему выбору, которая делает мир лучше (верю в сознательность читателей канала). Всем добра! 🕊
Давайте попробуем в комментариях к этому посту матчить таких людей.
Пишите в комментариях, если вы опытный специалист "про данные" (например, software engineer, ML engineer, data scientist etc.) и ищете работу с релокейтом или удаленку, ссылки на linkedin приветствуются.
Пишите в комментариях про свои вакансии, если вы нанимаете и готовы помочь с релокейтом или работать с диджитал номадами.
Минутка монетизации: если вы найдете себе интересную работу или сотрудника в этом посте, будьте котиками и сделайте посильный донат в любую организацию по вашему выбору, которая делает мир лучше (верю в сознательность читателей канала). Всем добра! 🕊
❤64👍12👎5
Реддит завалило ссылками на https://github.com/nebuly-ai/nebullvm, и ко мне тоже пришли с вопросом "a free lunch, or snake oil?". Я люблю такие штуки и сразу пошел смотреть.
Библиотеку делает некий стартап nebuly.ai, который я не нашел даже на Crunchbase. Зато обещания на лендинге и в readme совсем не скромные: мы, дескать, все ускорим 5-20x, волшебным способом, а от вас понадобится только несколько строчек кода. Судя по примерам кода, должно работать на уже обученной модели, т.е. под капотом не могут оказаться сложные концепции типа дистилляции и квантизации. Какие тогда инновации они там спрятали?
Правильно, особо никакие. Внутри - красивая обертка над ONNX, OpenVino, TensorRT и TVM. Т.е. оптимизация в общих чертах выглядит так: "скомпилируем под существующий inference движок, выкинув ненужные куски, переберем параметры и честно продемонстрируем ускорение".
Несмотря на некоторый скепсис в тексте выше, я все-таки думаю, что это хорошее начинание. Да, любой толковый ML инженер может сделать подобное своими руками, но даже в сфере инструментов для разработчиков важна не только core технология, но и удобство использования, над которым они явно поработали. А вот как на основе такого продукта они собираются развивать компанию, я совершенно не представляю.
Библиотеку делает некий стартап nebuly.ai, который я не нашел даже на Crunchbase. Зато обещания на лендинге и в readme совсем не скромные: мы, дескать, все ускорим 5-20x, волшебным способом, а от вас понадобится только несколько строчек кода. Судя по примерам кода, должно работать на уже обученной модели, т.е. под капотом не могут оказаться сложные концепции типа дистилляции и квантизации. Какие тогда инновации они там спрятали?
Правильно, особо никакие. Внутри - красивая обертка над ONNX, OpenVino, TensorRT и TVM. Т.е. оптимизация в общих чертах выглядит так: "скомпилируем под существующий inference движок, выкинув ненужные куски, переберем параметры и честно продемонстрируем ускорение".
Несмотря на некоторый скепсис в тексте выше, я все-таки думаю, что это хорошее начинание. Да, любой толковый ML инженер может сделать подобное своими руками, но даже в сфере инструментов для разработчиков важна не только core технология, но и удобство использования, над которым они явно поработали. А вот как на основе такого продукта они собираются развивать компанию, я совершенно не представляю.
GitHub
GitHub - nebuly-ai/optimate: A collection of libraries to optimise AI model performances
A collection of libraries to optimise AI model performances - nebuly-ai/optimate
👍15😁10💩2❤1
Скандалы, интриги, расследования - небезызвестный Валера приоткрывает завесу тайны над нашей совместной книгой по ML system design.
Под шумок расскажу еще пару слов про эти писательские планы: пока готов только черновик т.н. proposal (общее описание книги, целевой аудитории, оглавление и т.п.), есть интерес со стороны нескольких издательств, ревью в основном положительные, хотя есть и казусы, как в посте выше. Предполагаем, что это работа на пару лет.
Под шумок расскажу еще пару слов про эти писательские планы: пока готов только черновик т.н. proposal (общее описание книги, целевой аудитории, оглавление и т.п.), есть интерес со стороны нескольких издательств, ревью в основном положительные, хотя есть и казусы, как в посте выше. Предполагаем, что это работа на пару лет.
Telegram
Время Валеры
Отправили вместе с @arsenyinfo из @partially_unsupervised оглавление книги Machine Learning System Design на ревью в издательство, ревью проводит N человек по M пунктам, один из ревьюеров удивил
Is the Table of Contents appropriate for the readers described…
Is the Table of Contents appropriate for the readers described…
👍27🔥3
Этот пост потребует некоторого контекста для незнакомых со мной читателей: скриншот примерно показывает, как выглядит мой 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