life = curiosity + irreducible noise Whois: https://t.me/boris_again/1652 Лс: @btseytlin
В итоге мы имеем универсальный швейцарский нож который работает действительно хорошо. И я имею ввиду на практике хорошо, а через раз как, как Grounding-DINO или OWL-ViT. В этот раз это не Segment Anything, который вроде как хорошо работает, но непонятно зачем нужен, а то, что полезно простому работяге.
Можно детектить свою кошку, делать подписи и таким образом получать промпты для генерации картинки которая вам понравилась, поиск, эмбеддинги, использовать как часть inpainting пайплайна (выделить объект, перерисовать своей любимой диффузионкой), даже просто классифицировать, удалять с изображений фон, делать OCR (кстати лучше, чем тессеракт и многие OCR API).
Удивительно здесь не то, что авторы изобрели какую-то вундервафлю. Наоборот, они смогли упростить весь computer vision до одной функции ошибки, что меня очень впечатлило. Они получили крутую модель не потому, что закидали её данными, параметрами и сожжеными деньгами. Они просто хорошо подумали, что хотят получить и как этого можно добиться.
Что делает Florence-2 одной из немногих статей за год, особенно в CV, в которой сделали что-то нетипичное относительно текущей парадмигы, да ещё и получили практически полезный результат.
В итоге они собирали такие типы обучающих примеров:
1. Captioning трех видов: brief, detailed, more detailed. Задачи связанные с описанием изображения.
2. Region-text: phrase, brief. Это, например, детекция: найди всех кошек. Phrase будет при этом вариацией когда в качестве промпта подается сложная фраза, а brief когда, условно, "кошка." Сюда относится и обратная задача: опиши объект в данном регионе, коротко или объемно. Это и сегментация, и OCR, и так далее.
3. Text-Phrase-Region: brief, detailed, more detailed. Это в основном про grounding: такая задача, где модели требуется выделить часть из длинного текста и сопоставить эту часть с чем-то на изображении. Например, это может быть параграф текста, в котором модели нужно выделить все сущности и выделить их на изображении.
По части данных CLIP когда-то изменил парадигму в CV: 400 миллионов собранных из интернета пар изображение-подпись оказались гораздо лучше чем 328к качественной разметки MS COCO. По части способности к обобщению масштаб победил: лучше куча мусора, но зато большая! Поэтому с тех пор чем более foundational была модель, тем больше в неё засовывали примеров, но как-то кратного улушения её фаундейшналости не наступало, что видно по таким монстрам как Flamingo.
Florence-2 кладет всех на лопатки используя всего 126m изображений. Что меньше чем у CLIP (400m), Flamingo (185m) и даже меньше, чем у обычного ViT (300m). Но есть важная деталь: в датасете Florence-2 на 128m изображений приходится 5 миллиардов аннотаций. Авторы называют эту парадигму multi-task learning. Вместо того, чтобы собирать огромное количество примеров, давайте мы заставим модель решать все нужные задачи для каждого изображения. Одно и то же изображение получает много лейблов: короткое описание, длинное описание, bbox для сущностей, сегментационные маски. Если подумать, это разумно: я ведь не хочу модель, которая для каких-то изображений умеет делать подписи, а для других умеет делать детекцию. Я хочу модель, которая сможет сделать с любым изображением всё, что мне нужно.
Таким образом эффективное количество полезной разметки в этом датасете очень большое. Переобучения под изображения не наступает несмотря на то, что модель видит их много раз. Ведь задачи разные, а решать разные задачи с помощью запоминания сложнее, чем действительно выучить некий алгоритм "понимания" изображений.
В парадигме multi-task learning так же удобно собирать разметку. Как и во многих современных работах, авторы сделали data engine, итеративно улучшающий разметку. Процесс простой: берем изображения, делаем для них разметку с помощью специализированных моделей. Возьмем наш любимый OCR, Segment Anything для сегментации, OWL ViT 2 для детекции, и так далее. Таким образом мы получаем шумную синтетику. Далее мы фильтруем её как можно лучше. Обучаем на этой версии датасета Florence-2. С помощью этой версии модели и специалистов генерируем шумную разметку снова, снова фильтруем и так далее пока не надоест. Таким образом мы можем следить как меняется разметка для каждой конкретной картинки.
"Здесь довольно часто стулья меняются местами" — услышано про корпоративную реорганизацию.
Как же точно и емко.
Два стула поменялись местами, выбирайте
На моем канале мало контента для начинающих в ML/DS. Я не планирую это менять, но могу порекомендовать канал от Поступашек: Задачи DS - Собеседования, Соревнования, ШАД.
Ребята делают обзоры различных направлений в компаниях, разбирают тестовые задания и задачи с собеседований.
Что интересного можно у них почитать:
- О направлениях команд в Big Tech, работающих с ML
- О популярных задачах с собеседований по направлениям ML и DS
- Разбор задачи с собеседования в БКС Банк (DS)
# Test-Driven Development в эпоху LLM
Юнит-тесты в первую очередь помогают писать хороший код. Если ваш код тяжело тестировать значит это плохой код. Скорее всего в нем слишком большая связность, поэтому не получается изолировать входы и выходы, замокать внешние зависимости.
Раньше умение писать тесты было мощным инструментом. В эпоху LLM это стало одновременно важнее и проще.
Если ваш код хорошо написан, то LLM может моментально выдать вам все нужные тесты. Может парочку кейсов придется попросить добавить. Теперь нужно тратить меньше усилий на тесты, хотя это и раньше не было настоящей проблемой.
Если ваши тесты хорошо написаны, то LLM может внести нужные вам изменения не сломав всё остальное, а вы сможете быстро проверить результат.
Таким образом LLM генерация становится частью TDD цикла. LLM позволяет быстро закрепить стабильное состояние системы в тестах, а тесты позволяют эффективно использовать LLM для ускорения разработки. Не используя тесты вы среди прочего теряете часть потенциала LLM ассистентов.
Ещё до всяких LLM я считал юнит-тесты спецификацией. Они описывают требования к системе: что она делает и чего не делает. В 2025 это стало буквально так: можно считать, что ваши тесты это часть промпта для LLM. Конкретное описание того, что и как должно работать.
На самом деле always has been, просто раньше тесты были промптом для программиста (включая вас).
Кто-то в курсе скандала в порно?
Порноактриса Like Blackberry оказалась тимлидом аналитиков в Lamoda которая с 2022 года занималась очень жесткими дашбордами 🤮🤮🤮. Омерзительно
Если тут есть кто-то из онлифанса, прокомментируете, какие будут приняты меры?
Ого, в России запустили новое дейтинг приложение: записи в Росреестре.
Это потеснит лидирующие дейтинг-платформы:
- Сохраненки ВКонтакте (знакомства с фэбосами)
- Вопросы на прямой линии с президентом
- Исходный код продуктов Яндекса
"ML модели не умеют по-настоящему думать" это как "машина не умеет по-настоящему двигаться."
Да, она перемещается в пространстве, но разве это движение, если она не использует ноги? Жалкая имитация, она просто вращает колесами и это лишь выглядит как имитация ходьбы.
К тому же я ни разу не видел, чтобы машина поднималась по лестнице. Что еще раз доказывает фундаментальную неспособность колесных имитаторов по-настоящему двигаться.
https://x.com/fofrAI/status/1876638297134678173
Kling решил проблему вагонетки
Атмосфера в комментариях любого ML паблика без автоматической модерации через 0.0001 наносекунду после поста в последние несколько дней
Читать полностью…Dog Poop Compass: Bayesian Analysis of Canine Business
#DataWondering
Как и многие владельцы собак, во время прогулок с Аури я всё время наблюдаю один и тот же ритуал. Перед тем, как приняться за пёсьи дела, он каждый раз много-много раз крутится вокруг своей оси, пока не выстроится поудобнее.
В один прекрасный момент я начал делать скриншоты компаса, чтобы когда-нибудь оценить, а рандомно ли собака усаживается или нет? И вот, спустя много месяцев кропотливого сбора грязных (во всех смыслах этого слова) данных, у меня появился ответ.
Если вам тоже интересно узнать, как при помощи байесовских методов можно отвечать на такие важные жизненные вопросы, то добро пожаловать по ссылке: Dog Poop Compass
P.S. Статью опубликовали в TowardsDataScience! И теперь на меня еще datawondering">можно подписаться и читать на английском на Substack.
Оставалось только придумать как сформулировать задачу. Нужно, чтобы модель могла и читать текст, и писать текст, и квадратики с полигонами рисовать. В 2017 Vasvani et. al подарил нам универсальный способ представить и обработать что угодно:
1. Сделаем из входа последовательность токенов.
2. Засунем в трансформер.
Изображение превращается в эмбеддинги патчей по методологии как в Visual Transformer, здесь всё стандартно. Точно так же превращается в эмбеддинги как в любой языковой модели. Из нового, что придумали авторы: давайте сделаем специальные токены для координат. Они покрыли изображение сеткой и для каждой точки на сетки ввели специальный токен. Например, есть токен для точки (0, 0). Это как бы служебное слово, точно так же как <pad>, <unk> и прочие. Вы можете подавать его на вход модели, можете получать на выход. Готово, ваша модель умеет оперировать координатами в явном виде, а значит может читать и создавать ббоксы и полигоны. Это одна из главных причин почему LLM на данный момент не умеют делать детекцию: у них нет нормальной репрезентации для локаций на изображении. Авторы решили вопрос максимально просто и элегантно. Теперь любой вход можно представить как последовательность и засунуть в трансформер.
Ладно, мы можем засунуть это в трансформер. Но как же лейблы? Что на выходе? Нам нужно как-то обучать модель делать классификацию, детекцию и сегментацию. Но функции ошибок для каждой из этих задач совершенно разные.
Вот это самая интересная часть статьи. Авторы просто выбрасывают всё, что мы придумали в CV, и заменяют одной функцией ошибки: cross-entropy loss. Они фиксируют, что вход должен быть json, и выход должен быть json. Так что модель становится авторегрессионным генератором текста, точно так же как GPT, и просто предсказывает следующий токен. Следующий токен может быть в том числе одним из токенов зарезервированных под координаты. То есть эти ребята взяли и заменили весь наш computer vision на NLP. Одна функция ошибки, чтобы править всеми, и по наши костыли наконец-то пришел bitter lesson.
Админ трогал траву как не в себя, но наконец добрался рассказать вам про самую поразительную работу за 2024.
Я считаю, что про неё недостаточно говорят. Ваша любимая 400b VLM плохо рисует bounding boxes, а эта 770m шутка делает их отлично хоть на CPU. При этом VLM обучалась на немыслимом количестве данных, а у этой штуки было меньше примеров, чем у CLIP. Да что далеко ходить: у меня друг делает стартап по CV, мы с ним обсуждали эту модель, он её попробовал и перестал обучать свои YOLO детекторы: потому что эта штука просто работает. Причем несмотря на необходимость обнаруживать строительные машины на фотках с плохих камер в любимой родной слякоти и грязи.
#обзор_статьи
# Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks
Что если я скажу, что есть модель, которая умеет хорошо делать Zero-Shot детекцию, сегментацию, captioning и OCR? Что при этом её можно промптить, например требуя найти на картинке всех собак или сделать сегментацию объекта внутри ббокса? Вы наверное подумаете, что это новая огромная VLM. Но нет эта модель размером всего 770M, то есть как большой ViT. Можно запускать хоть на CPU. Более того, её можно дообучать, в том числе легко сделать из неё supervised детектор прикрутив ей свою любимую голову, скажем от DETR.
В Computer Vision у всех комплексы по поводу foundational models. Мы завидуем ребятам из NLP. Стало модно выпускать большие модели и говорить: "теперь у нас тоже фаундейшнл!" Однако что такого foundational, скажем, в Segment Anything? Это просто сегментатор обученный на большом количестве качественной синтетики. В моем понимании foundational это когда ты в свободной форме даешь модели любую задачу и она её решает, как GPT-4o, а не когда тебе нужно определенным образом зампромптить модель, чтобы получить решение задачи сегментации.
Florence-2 это первая модель в CV, которую я действительно готов назвать foundational. С одной стороны из-за её широкой полезности, так как она позволяет решать все популярные задачи в CV. Но так же из-за того, каким образом она сделала. Минимум костылей, как вы сейчас увидите.
Перейдем к сути, благо статья простая и благодаря этому очень красивая. Авторы рассуждают последовательно.
Чего мы хотим от универсальной CV модели?
1. Image-level understanding: понимание высокоуровневой семантики. Например, на картинке кошка или собака? Можно так же сказать, что это способность связать изображение и текстовое описание. Эту задачу отлично решает CLIP.
2. Region/pixel-level recognition: обнаружение объектов на изображениях и понимание их расположения. С этим отлично справляются supervised классификаторы, детекторы и сегментаторы.
3. Fine-grained visual-semantic alignment: связь между областями изображения, в том числе совсем маленькими, и текстом. Обнаружение частей изображений которые относятся к фразам, объектам, атрибутам и отношениям. Это способность обнаружить и отличить "нос собаки", "нос собаки слева", "нос рыжей собаки", "коричневый нос собаки" и так далее.
Когда желания определены дело за малым: выбрать данные, функцию ошибки и архитектуру. Через эти компоненты мы по факту формируем оптимизационную задачу.
Авторы решили, что для получения трех компонент понимания изображений нужно много разных аннотаций, которые можно распределить по двум осям:
1. Spatial hierarchy: аннотации должны включать разные масштабы изображений, чтобы модели требовалось понимание и на уровне изображения, и на уровне пикселей.
2. Semantic granularity: в текстах (описаниях, промптах, лейблах) должны встречаться разные уровни абстракции, требующие от модели как понимания общих концептов, так и небольших деталей и нюансов.
https://alignment.anthropic.com/2025/reward-hacking-ooc/
Читать полностью…Статья про атаки на нейросети. Постарался верхнеуровневого разобрать различные виды атак, коротко их описать и привести примеры статей, которые можно почитать про определенный вид атаки. Также в конце приложил список статей про различные атаки, которые я изучал ранее по данной тематике.
Читать полностью…Многие говорят, что лид не должен совмещать две работы.
Я скажу так: если у тимлида нет времени сниматься в порно значит он плохой менеджер.
Борис, история уже разрешилась лучшим возможным результатом
Читать полностью…С развитием технологий машинного обучения становится все труднее отличать текст, написанный машиной, от текста, написанного студентом, обученным на примерах, сгенерированных чатжпт
Читать полностью…Родни Брукс продолжает трекать свои предсказания по части развития ИИ, автопилотов, роботов и космоса. И чужие за одно.
При всей своей пессимистичности (относительно среднего хайпа) он очень даже точен. Но при этом не упирается рогом: когда Waymo запустили такси он пошел на них кататься и признал их большой прогресс.
Плюс дает хороший нарратив о произошедшем за 2024. Например, я не знал, что появилась практика, когда группы мужчин преследуют женщин использующих Waymo такси ночью, так как знают, что женщина одна и машина остановится в определенном месте.
https://rodneybrooks.com/predictions-scorecard-2025-january-01/
Грустная история.
Felix Hill, исследователь DeepMind с огромным хиршем, один из авторов бенчмарка GLUE, покончил с собой из-за депрессии к которой привел единоразовый прием кетамина. Что-то GDM в последнее время не везет. Он оставил предсмертную записку.
История примерно следующая: у него была рекуррентная депрессия и необычные реакции на алкоголь (агрессия, что-то типа психоза), а так же по моему личному мнению психологические проблемы (самооценка держалась на достижениях, необходимость постоянно быть лучше). Но 37 лет он жил с этим благодаря хорошей семье, друзьям, отношениям и антидепрессантам. Считал себя счастливым человеком.
Затем решил самостоятельно попробовать кетамин т.к. услышал истории из Долины о том, как он снимает тревогу, повышает концентрацию и помогает людям с депрессией. В том числе в предсмертной записке упоминается, что кетамин это выбор Илона Маска, так что возможно это повлияло.
В итоге принял слишком много и без наблюдения. Психоз и возвращение депрессии. Следующие два года жизни описывает как пытку 24/7, ничто не помогало, никаких даже проблесков. Не выдержал.
Для меня это жуткая история. Судя по всему у этого человека было множество предрасположенностей к психозу. Скорее всего включая необычный разум позволивший ему добиться так много в науке: он описывает, что его мозг всегда умел находить паттерны, а после психоза это как будто стало невозможно выключить.
Несмотря на предрасположенности, страшно, что полностью функционирующему человеку может разнести психику всего за один раз. Причем человеку с идеальной системой поддержки: здоровая семья, друзья, жена, интереснейшая работа, финансовая обеспеченность, поддерживающие коллеги, образование, йога, буддизм и философия (судя по всему человек был широко образованный), марафоны. Хочется верить, что можно подготовить свою психику к потрясению (ведь не только наркотики могут ее расшатать) создав себе хороший образ жизни, но в этом случае не помогло.
The Pitfalls of Next-Token Prediction
Статья: https://arxiv.org/abs/2403.06963
Видео: https://www.youtube.com/watch?v=9V0bfZqT1Yo
Олды несомненно помнят, что в ранних seq2seq моделях, основанных на рекуррентных нейронных сетях, существовало два режима обучения: teacher-forcing, где на каждом шаге генерации в качестве входов использовались реальные токены, и другой режим с использованием токенов, предсказанных текущей версией модели. С появлением трансформеров и их параллельного обучения все стали использовать teacher-forcing. Авторы статьи возвращаются к этому вопросу.
🔹Задача
Авторы придумали простую синтетическую задачу: поиск пути между двумя вершинами в деревьях очень специфичной структуры, а именно в таких, где есть одна центральная вершина и несколько цепочек, исходящих из этой центральной вершины. Пример такого дерева (степень центральной вершины = 2, длина цепочек = 5):
8 ← 1 ← 5 ← 4 ← 3 → 0 → 2 → 6 → 7
3 → 4 | 5 → 1 | 4 → 5 | 0 → 2 | 3 → 0 | 1 → 8 | 6 → 7 | 2 → 6 / 3 7
3 → 0 → 2 → 6 → 7
AI был ошибкой, выключайте
Как я писал раньше, наша инженерная команда состоит из четырех человек: три фуллтайм инженера и один PhD студент, который делает небольшой рисерч про видео модельки с нами. Над нами находился СТО, а внутри команды мы были довольно горизонтальные.
Неделю назад к нам присоединился новый тимлид с восхитительным послужным списком: четыре года стартапов, последние шесть лет в Adobe, рост с инженера до менеджера и лида команды.
Новый тимлид присоединился к нам и сразу же начался движ по организации. Если раньше мы делали ежедневные синки по 30 минут, то сейчас мы должны и созваниваться, и писать ежедневные планы в ноушен страничку с тем, что сделали за день и что сделаем за следующий. На каждую фичу стало нужно писать отдельный ноушен док и на каждое предложение по изменению фичи стало нужно писать отдельный ноушен док. В принципе, это я уже видел, стартап растет и организация меняется — неприятно, но ничего страшного.
Но сегодня произошел буквально AI-момент. Стартап, где я работаю, любит пробовать разный AI буллшит, поэтому натурально у нас появилась подписка на AI Software Engineer Devin — что-то типа чатгпт с доступом до апи ручек слака и гитхаба.
Я зашел замерджить свой PR и увидел это: (фотка). AI SWE Devin пришел в мой PR и начал оставлять очень полезные (нет) советы. Мне стало интересно - что же заставило бота пойти давать ценные комментарии? Оказалось, что наш новый тимлид пошел и подергал его отревьюить все открытые PR. Причем промпты выглядят как-то так: «Check for implementation issues. Add comments» или «Check for code quality and functionality. Suggest improvements to documentation».
Как вы думаете, может ли AI SWE Devin взять промпты «Suggest improvements» и «Add comments» и отказаться их выполнять если все и так хорошо? Нет, конечно, поэтому на всех открытых PR появились замечательные советы, не имеющие ничего общего с удобством или красотой кода.
Я считаю, что это ультимативный смешной AI момент, потому что новый тимлид даже месяца не продержался перед тем как начал аутсорсить свои задачки AI агенту. На комментарии которого, конечно же, будет отвечать AI агент с моей стороны. Зато сразу стало понятно, зачем нам теперь приходится не только созваниваться, а еще и писать текстом все. Потому что Notion AI отлично суммаризирует и передает, кто как поработал :)
Ждем, когда вместо тимлида на созвоны будет хоть AI аватар, сгенерированный синтезией, комменты писать Notion AI, код смотреть Devin, а в слаке отвечать простой советский чатгпт. С таким набором можно и 40 работ менеджера в долине взять и выйти на пенсию через год.
Помимо нового года у меня недавно был день рождения, запоздало получил от друзей вот такой торт
Читать полностью…