boris_again | Unsorted

Telegram-канал boris_again - Борис опять

12937

life = curiosity + irreducible noise Whois: https://t.me/boris_again/1652 Лс: @btseytlin

Subscribe to a channel

Борис опять

В итоге мы имеем универсальный швейцарский нож который работает действительно хорошо. И я имею ввиду на практике хорошо, а через раз как, как 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 года занималась очень жесткими дашбордами 🤮🤮🤮. Омерзительно

Если тут есть кто-то из онлифанса, прокомментируете, какие будут приняты меры?

Читать полностью…

Борис опять

https://www.hackerinheels.com/about

💅

Читать полностью…

Борис опять

Ого, в России запустили новое дейтинг приложение: записи в Росреестре.

Это потеснит лидирующие дейтинг-платформы:
- Сохраненки ВКонтакте (знакомства с фэбосами)
- Вопросы на прямой линии с президентом
- Исходный код продуктов Яндекса

Читать полностью…

Борис опять

"ML модели не умеют по-настоящему думать" это как "машина не умеет по-настоящему двигаться."

Да, она перемещается в пространстве, но разве это движение, если она не использует ноги? Жалкая имитация, она просто вращает колесами и это лишь выглядит как имитация ходьбы.

К тому же я ни разу не видел, чтобы машина поднималась по лестнице. Что еще раз доказывает фундаментальную неспособность колесных имитаторов по-настоящему двигаться.

Читать полностью…

Борис опять

https://x.com/fofrAI/status/1876638297134678173

Kling решил проблему вагонетки

Читать полностью…

Борис опять

Атмосфера в комментариях любого ML паблика без автоматической модерации через 0.0001 наносекунду после поста в последние несколько дней

Читать полностью…

Борис опять

https://calebhearth.com/dont-get-distracted

Читать полностью…

Борис опять

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/

Читать полностью…

Борис опять

What a time to be alive

Читать полностью…

Борис опять

Грустная история.

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


Эту задачу мы решаем какой-нибудь моделью, которая умеет работать с последовательностями, например трансформером или рекуррентной сетью в авторегрессионном режиме (генерация токенов слева направо, как в языковых моделях).

🔹Эмпирическая часть
— Авторегрессионные модели не справляются с решением этой задачи даже для деревьев с фиксированной структурой. Потому что сложно понять в какую сторону идти от центральной вершины. 💀
— При развороте пути задача успешно решается авторегрессионными моделями. Это логично, потому что это гораздо проще: вы просто поднимаетесь по родителям, пока не найдёте центральную вершину. 📈
— Если во время обучения маскировать уже сгенерированную часть пути, модели также успешно решают задачу. Это странно, потому что мы делаем задачу сложнее для модели, заставляя её генерировать весь путь сразу. Но каким-то образом на такой версии задачи модель учится, а на оригинальной — нет. 😱

Я потратил пару вечеров и воспроизвёл это в Колабе: ссылка. Воспроизводил для 2-5 деревьев, то есть ровно таких, как в примере выше. Код писал с нуля, но опираясь на их Гитхаб. Всё получилось, как написано в статье: усложнение задачи приводит к возможности её выучивания. Технически это выглядит просто как маскирование части input_ids.

🔹Про предсказание следующего токена
Щепотка "соломенного чучела": распространенная критика языковых моделей состоит в том, что они являются лишь "стохастическими попугаями", способными только предсказывать следующий токен. Считается, что из-за этого они не могут эффективно планировать или исправлять ошибки.

Однако авторы статьи предполагают, что основная проблема не в механизме предсказания следующего токена как таковом. Проблема — в teacher forcing'е, то есть в том, что во время обучения у модели нет необходимости планировать и пытаться сформулировать решение в активациях. И ведь большинство современных моделей обучалось именно с использованием этого метода.

🔹Ограничения
— Эмпирическая часть работает при фиксированном наборе гиперпараметров, и сломав их, можно сломать 2 и 3 наблюдение. Это прежде всего оптимизационная задача. Однако ни у меня, ни у авторов не получилось сделать модель, которая была бы контрпримером для первого наблюдения.
— У авторов нет никакого теоретического обоснования наблюдений. Как нет и алгоритма, по которому сеть считает путь. Мне кажется, что тут есть простор для творчества и механистической интерпретации.

Читать полностью…

Борис опять

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 работ менеджера в долине взять и выйти на пенсию через год.

Читать полностью…

Борис опять

Помимо нового года у меня недавно был день рождения, запоздало получил от друзей вот такой торт

Читать полностью…
Subscribe to a channel