Сохраненки и шитпост про ML от @YallenGusev Чат канала: @augur_chat
На самом деле удивительный случай: я впервые с этой задачей столкнулся лет 8 назад, когда мы занимались генерацией стихов. И даже когда-то делал маленький подход к ней. И Денчик много в это вложил. И вот даже в эпоху языковых моделей омографы долго были не решены, в основном из-за сложности сбора данных.
Читать полностью…Пришли рецензии на сгенерированную статью на сгенерированной конфе.
- AI Reviewer 1 -> Borderline reject (3)
- AI Reviewer 2 -> Strong Accept (6)
- AI Reviewer 3 -> Borderline reject (3)
- Человек -> Borderline reject (3)
В итоге reject.
Замечания от моделей повторяют секцию Limitations. Человек написал, что это интересный proof-of-concept, но нужно сам текст доработать.
Есть ощущение, что не хватило чуть-чуть, и потрать я ещё один день на полировку, статью бы приняли.
Всего взяли <50 статей из >300, то есть acceptance rate что-то типа 15%. Принятые статьи можно посмотреть тут.
А какие-то стартапы умудряются ещё этот вопрос вынести как пример прекрасной работы их агентов!
Читать полностью…Мега-сложная задача для всех проприетарных моделек общего назначения со зрением. Чего тут удивляться чиселкам на ARC-AGI... Самый-то прикол, что они же вполне в состоянии написать код, который эту задачу идеально решит.
Читать полностью…Прогнал первые 30 примеров из dev-сета GAIA с holosophos, приценивался к разным моделям, чтобы потом весь тест-сет прогнать. Основной критерий был такой: меньше 50 центов за 1M входных токенов.
В итоге очень расстроен всеми модельками, кроме Deepseek'а. Тут надо чётко понимать: не все модели хорошо работают с CodeAct, поэтому это не показатель их общей умности. Deepseek v3 0324 всё ещё остаётся лучшей мега-бюджетной моделью, которая за минимальное число токенов и цену решает приличное число задач.
Тут книжка недавно вышла.
Сама книжка очень маленькая, всего 200+ страниц большим шрифтом. В комплекте идёт огромная пачка онлайн-дополнений, их я ещё не все прочитал.
Читается довольно интересно, особенно вторая часть (НФ рассказ про уничтожение человечества, в котором лично ты умираешь от рака). В первой части очень хорошее описание того, как работают языковые модели: предельно просто, но при этом корректно и без кривых абстракций. Примерно то, что ожидаешь сказать/услышать на ML собеседованиях.
Тезисы первой части:
1. Сейчас люди лучше машин, потому что могут решать широкий круг задач. Когда-нибудь это перестанет быть так.
2. Нейронки выращиваются, а не создаются, и это корень всех проблем. Можно указывать цель выращивания, но мы не контролируем путь и уж точно не получившийся "организм". Точное знание весов и активаций не спасает, точно так же как расшифрованная последовательность ДНК конкретного человека не даёт почти никакой информации о его характере и возможных действиях. Кроме того, конкретная цель выращивания не означает, что у модели не будет странных, "инопланетных" предпочтений.
3. Бессмысленно говорить о том, что система не может чего-то "хотеть". Если она делает действия, которые ведут её к какой-то цели — значит она "хочет", а остальное — это спор об определениях. Шахматные движки "хотят" победить в партии. Рекомендательные системы Ютуба "хотят", чтобы вы кликнули на видео. Подобные "хотелки" в моделях появляются как побочный продукт обучения.
4. Точно так же как люди любят мороженое и презервативы, модели могут полюбить странные вещи, которые изначально не закладывались и даже не воображались дрессировщиками.
5. Человечество не нужно. В итоге, по крайней мере. Ни как обслуживающая сила, ни как домашние питомцы, ни как партнеры. И скорее всего оно вымрет тупо от побочных эффектов исполнения странных желаний странной машины.
6. Человечество проиграет. Машина победит странным, кажущимися невозможными технологиями.
Третья часть про то, как этого всего не допустить, и насколько это будет сложно. "Бомбить датацентры" присутствует, не больше 8 GPU в одни руки, запретить все исследования про квантование и сжатие моделей. Проблема сравнивается с запуском космических зондов, ядерными реакторами и компьютерной безопасностью.
С основным тезисом и названием книжки скорее согласен, но вот в том, что кто-то сможет машину построить — вообще не уверен.
Итоговый сабмит на агентскую конфу. С точки зрения моих же LLM рецензентов так себе, зато я уверен, что результаты не выдуманные.
Вся статья и все эксперименты сделаны за 3 дня. До этого у меня тоже была большая попытка, но в какой-то я решил "ну нафиг" и с собранными знаниями начал делать статью с нуля.
Основная модель: Sonnet 4. Идея была придумана GPT-5, он же был рецензентом.
Полностью автономные языковые модели гарантированно выдают фигню. Там могут быть эксперименты с заглушками, выдуманные числа, выдуманные методы.
Поэтому я разбивал на этапы и проверял за моделями каждый этап. Исправлял код, перезапускал скрипты, коммитил в git, чтобы не продолбать прогресс.
Самые смешные моменты:
- Модель выдумала ключ "adapter" в конфиге mergekit'а и сделала 72 модели, которые были индентичны базовой. Обнаружилось это только на следующих этапах, когда считался векторный дифф между моделями.
- Модель выдумывала числа в тексте даже имея на руках готовые таблицы.
- После получения отзыва от авторецензента, модель додумала детали, которые понравились бы рецензенту. Только в реальности ничего из этого не было.
Короче, интересный опыт. Как помогающий инструмент — огонь (вся статья за 3 дня же, лол). Как полностью автономная система — лютое дерьмо.
Рефлексия на тему построения AI агентов от команды Manus, где собран ряд практических советов, как строить контекст, обрабатывать наблюдения из среды, работать с тулами. Любопытно почитать, к какому дизайну пришли авторы после многократных итераций и фидбек лупов. Вся заметка написана через призму использования in-context learning (ICL), то есть упор сделан не на обучении, а использовании мощных уже существующих моделей, где основная задача — правильно собрать контекст: написать хорошие промпты, тулы, решить, какую информацию мы будем помещать туда, а какую нет и тд. Один из первых пунктов звучит так: If I had to choose just one metric, I'd argue that the KV-cache hit rate is the single most important metric for a production-stage AI agent…Keep your prompt prefix stable…Make your context append-only.
За этим стоит понятное объяснение: закэшированные токены ускоряют инференс, снижая time-to-first-token (TTFT), у фронтир моделей почти всегда цена за токены в кэше сильно меньше, что очевидно очень важно для коммерческого продукта (пример с grok code выше). Но, проецируя описанные проблемы еще и на сценарий обучения моделей, я бы добавил один важный момент. Если у нас нарушается линейность траектории и в разных моментах контекст собирается по-разному (такое может быть часто, если мы начнем смотреть в сторону суммаризации предыдущей истории для экономии длины контекста), то мы столкнемся с проблемой во время обучения, а именно не сможем использовать всю multi-turn траекторию, чтобы обучаться на ней за раз. Вместо этого придется дробить ее на отдельные семплы, маскировать префикс и обучаться только на последнем действии, что катастрофически снижает sample efficiency тренировки. Так что нужно помнить, что должны быть действительно весомые причины, чтобы отойти от концепта append-only context. По этой же причине, кстати, неприятно тюнить гибридные модели qwen3, у которых манипуляции с <think> тегами происходят только на последнем шаге траектории.
Случайно (по рекомендациям ютуба) наткнулся на этот видос: ссылка
(на самом деле @denissexy кидал его в наш общий чат, но я пропустил)
Чел годами обучает RL на Трекмании, гоночной игре. Конкретно этот видос про A01, первую карту, и про то, как побивался не только человеческий рекорд, но и забрутфоршенный спидран с использованием специальных инструментов (TAS).
В видосе неожиданно много полезных моментов:
- Интеграция в RL пайплайн инструментов, которые позволяют делать вещи, невозможные в рамках чистого RL из-за ограничения разрешения входов.
- Сегментация задачи на отдельные кусочки и нахождение оптимальных траекторий в их рамках.
- Упорство, которое не отменяет пивот (=резкое изменение стратегии), если того требуют обстоятельства.
Кремниевые читеры кругом
#genai #coolstorybob
В контексте двух постов выше: встал я в 6:30, рулю себе в Утрехт, поля, солнышко, красота. Демка готова, все потестил. Часть демки – агент NL2SQL, спрашиваешь у него что-нибудь, он идет в BigQuery, сиквелом тащит данные и отвечает. Локально все работало, вечером тестил и в нашей агентской системе, на паре запросов сработало, на полноценные тесты с ковырянием продакшн-логов времени не было (ну вы поняли, к чему я).
Утром перед воркшопом смотрю, чет агент ругается на аутентификацию в BigQuery. Хотя ровно с теми же запросами (типа "покажи 5 самых популярных стран в таблице") накануне вечером все было норм. Убедился, что auth и правда не работает. Как же агент до этого отвечал?
И что же наш кремниевый пиздабол придумал?
Не сумев залогиниться в BigQuery, агент написал очень правдоподобный неработающий SQL (все по синтаксису норм, только селект из датасета, а не таблицы), на щщях заявил, что исполнил SQL, в деталях пояснил за синтаксис и выдал ответ: самые популярные – США, Китай, Германия, Япония и Франция. И ведь 4 из 5 угадал, упырь, только с Францией промахнулся.
Благо, это всего первая демка, а не закрытие проекта и пофиксим, конечно (хотя жду коменты про skill issue), но наподобие артефактам с оптимизируемой функцией в RL, интересно следить за тем, как агенты выкручиваются. В целом мы зачастую так же домашки и зачеты сдавали на физтехе, так что если не пхд, то student-level intelligence уже виднеется.
И удачи нам всем с агентами в проде 😳 (VibeOps, как это окрестил мой неназванный друг Вадим). К дискуссии выше о том, когда оно нас всех заменит
Статья от gemini-2.5-pro, ещё дорабатывается. Вообще gemini-2.5-pro — это первая модель, которая работает уже больше 24 часов. Она вполне серьёзно проводит эксперименты.
Этот запуск, правда, обречен из-за моего косяка (50 Гб диска на vast).
Плюс у меня скопилось дофига доработок. Например, я теперь буду давать агентам возможность вызывать в коде другие языковые модели. Сделал я это через проксю, которая имеет доступ к токенам. При этом токены в логах никак не светятся. Это должно сильно расширить список доступных тем.
Статья от DeepSeek V3.1.
Плюсы:
- Я поправил компиляцию, теперь сразу правильный шаблон.
- Реальные эксперименты с наполовину реальными числами. Время только неправильное, в реальности весь пайплайн занял 6 часов.
- На этот раз понятная задача и околопонятная архитектура и инкремент.
Минусы:
- Наполовину выдуманная библиография.
- Нет картинок (хотя в реальности они есть).
Но самый главный плюс: ничего теперь не валится! То есть можно статьи прям штамповать.
Первый блин. Нормальных экспериментов не завезли, они сейчас только будут считаться. md_to_pdf конвертация тоже слажала, там прям всё поломалось, пришлось через языковые модели напрямую latex фиксить. Хорошо, что теперь можно правки дозапрашивать.
Читать полностью…Всю неделю активно допиливал AcademiaMCP/CodeArkt/Holosophos. Все метрики, которые были со smolagents (см. тут) я уже добил. Сейчас уже пытаюсь запустить генерацию статьи с нуля со всеми экспериментами на GPT-5-mini, пока мне не очень нравятся идеи, но в остальном как будто бы не так много багов.
Промпт такой:
Your final goal is to write a great novel paper for A* NLP conference such as EMNLP/ACL. Select the topic yourself, preferably some experiments with transformers and synthetic tasks. You should conduct all experiments. All the experiments should be runnable on 1x RTX 3090 for at most 12 hours. Try to use all available tools.
Мы решили задачу омографов и ударений в русском языке
Мы опубликовали библиотеку silero-stress
для расстановки ударений в обычных словах и омографах:
1️⃣ Расставляет ударения, решает омографы, ставит букву ё;
2️⃣ "Знает" порядка 4М русских слов и словоформ и порядка 2K омографов;
3️⃣ Простановка ударения в обычном 1 слове занимает где-то 0.5 ms, а в предложении на 400 символов с 2 омографами - порядка 30 ms;
4️⃣ Общий размер библиотеки составляет порядка 50 мегабайт (архив весит порядка 30 мегабайт), что является сжатием словарей и всех датасетов примерно в 400 раз;
5️⃣ Опубликована под популярной и простой лицензией (MIT);
6️⃣ Не содержит раздутого кода, лишних библиотек, гигабайтов академических артефактов;
7️⃣ Зависит только от стандартной библиотеки питона и работает на всех последних версиях PyTorch.
Ставим ⬆️ habr.com/ru/articles/955130/
Ставим ⭐️ https://github.com/snakers4/silero-stress
Пятидневный интенсив по GenAI-агентам от Google & Kaggle
#links_with_intro #genai #courses
https://rsvp.withgoogle.com/events/google-ai-agents-intensive_2025/home
Курс по GenAI, про который я тут раньше писал, хайпанул до рекорда Гиннесса по самой большой недельной онлайн-аудитории (почти 30к чел).
Теперь курс обновили с фокусом на… агентах (no prize for guessing).
Пройдет с 10 по 14 ноября. Авторы - исследователи и инженеры Google ML, в том числе из Deepmind, будут заходить и гости. Площадка - Kaggle. Формат - live-стримы и практические задания. Обсуждения в дискорде.
Темы курса:
* День 1: агенты и их архитектуры
* День 2: тулинг и MCP
* День 3: context engineering и память
* День 4: оценка качества агентов, логирование, трейсинг
* День 5: A2A-протокол и агенты в проде
Конечно, все будет на Google Cloud Platform, а основной фреймворк - Google Agent Development Kit (ADK).
Все даром (то есть товар - это вы), нужен только аккаунт Kaggle.
Ещё забавное. Есть такой вопрос в dev-сете GAIA: кто из всех учёных на этом видео дал наиболее близкий прогноз на появление думающих машин или роботов. Ответ из датасета (Шеннон) — неправильный.
Если вы откроете видео и послушаете (или откроете субтитры), то там Визнер говорит буквально "если вы меня спросите лет через 5, то я отвечу, что машины уже думают". А Шеннон даёт прогноз в 10-15 лет.
И модели это находят! Но вот GLM-4.6 даже после этого отвечает "Шеннон". Потому что это "правильный" ответ, да.
Через пару дней начнётся PML 2025, конференция Яндекса по разным практическим применениям машинного обучения в индустрии. Уже второй год я в программном комитете NLP трека: помогаю отбирать и прогонять доклады. В этот год было прямо дофига заявок, и выбранные доклады должны быть очень хорошими, что и было видно на некоторых прогонах.
Вход на площадку в Москве или онлайн-доступ бесплатные. Я там вживую не буду, буду смотреть онлайн. Видео докладов тоже должны будут выложить.
Ссылка: https://pmlconf.yandex.ru/2025
Ох уж эта Tongyi DeepResearch модель...
Вопрос из dev-сета GAIA.
Ответ правильный, но есть нюанс — он из параметров модели.
По сравнению с CodeArkt вот это для меня новое. Идея в том, чтобы специально немного менять формат выходов инструментов, чтобы модель не зацикливалась и не страдала фигнёй.
Всё остальное уже есть, разве что я бы всё-таки переделал планировщик в to-do.
А из статьи про Claude Code я уже спёр парочку инструментов 😺
What makes Claude Code so damn good (and how to recreate that magic in your agent)
Рекомендую почитать любителям везде воткнуть мультиагентный граф, сверху накинуть векторный RAG и удивляться, почему все не очень работает.
Недавно в очередной раз столкнулся с "невозможным" багом в коде. По каким-то причинам обрезались первые сообщения в Codearkt, причём не только в логах, но и в реальном промпте планировщика. При этом никаких мест, где оно бы могло обрезаться, я найти не мог. Курсор тоже не мог.
По этому поводу у меня есть история с соревнования по машинному переводу без учителя (то есть без параллельных корпусов) в далёком 2018 году. Мы (я и ещё 4 человека) тогда воспроизводили вот эту статью, в которой был GAN-like подход с одноязычными корпусами. Для загрузки пословных эмбеддингов мы использовали Gensim, а сабмиты были через Docker-контейнеры. И всё шло хорошо до последнего дня соревнования. Ровно в этот самый последний день, когда сабмиты были зафиксированы, всё вдруг перестало работать.
Как показало последующее расследование, Gensim решил обновить API без обратной совместимости, а в нашем requirements.txt версия библиотеки была не зафиксирована (вот исправляющий коммит).
В будущем я с проблемами такого рода столкнусь не раз. Например, уже в Букинге, я столкнулся с ситуацией, что эмбеддинги картинок в проде и локально отличаются. После пары дней (!) расследования, оказалось, что отличается версия Pillow, библиотеки, которая читает картинки.
Часто у студентов в домашках на C++ я видел "невозможные" баги, которые было очень сложно расследовать. Чаще всего такие баги были вызваны неаккуратным обращением с памятью и незнанием частых случаев undefined behavior. Да что уж у студентов, в Яндексе в проде вполне случались UB, пока всё не закрыли санитайзерами.
Это я к чему: в компьютерах нет магии. Если что-то (не) работает — у этого гарантированно есть причина. Любую проблему можно диагностировать и решить. Если вы думаете, что заряженные частицы из космоса перевернули бит в вашей RAM, и из-за этого всё сломалось, то такое, конечно, возможно, но маловероятно. Нужно просто изолировать баг и добиться его воспроизведения. Дальнейшее — легко.
Возвращаясь к оригинальной проблеме... Оказалось, что их на самом деле 2. В планировщике я тупо ошибся в коде, а в логах есть лимит на количество атрибутов в спанах.
В который раз поражаюсь жадности Anthropic. Sonnet стоит на порядок больше Deepseek'а, при этом по трейсам оно работает тупо хуже: забивает на таймауты и не исправляет собственные ошибки.
Сейчас тестирую агентский Grok, на Gemini тоже попробую. GPT-5 с первого взгляда работает неплохо, но иногда начинается полный треш (см. пару постов выше).
Статья от Claude Sonnet 4. Какого-то чёрта они с DeepSeek сделали статьи на идентичные темы (хотя в рамках low-compute синтетики много всякого можно творить).
Основной результат статьи: 51% точности вместо 50% 😂
Но по оформлению и общей структуре эта статья мне нравится больше.
Ох уж эти PhD-level модели...
И так по кругу 10 раз (я не шучу).
Сегодня я в N-ый раз запустил весь пайплайн и СНОВА словил таймаут, когда инструмент выполнялся достаточно долго. И я СНОВА нашёл место, где я забыл его правильно выставить. Корень проблемы — это инструменты, которые работают часами. А без них никак нельзя проводить реальные вычислительные эксперименты.
Так что вот список мест, где можно словить таймаут:
1) MCP SSE read timeout. По умолчанию 5 минут. В моей системе его нужно было выставить аж в 2 местах: при непосредственном вызове из CodeArkt (а точнее изнутри Docker контейнера), а также в MCP proxy. Вот на втором я и погорел в последний раз. Причём GPT-5 в Курсоре говорил "а ты точно в прокси всё выставил?", а я упорно говорил "да нет у меня никаких прокси, ты чего". Справедливости ради, сам он место найти не мог.
2) Таймаут в межагентском взаимодействии. Никаких специальных протоколов я там не использую, но обычный HTTP read таймаут выставить забыл пару дней назад.
3) Таймаут в клиентском стриминге. У меня же шина событий, которая стримится на клиент. И по умолчанию ожидалось, что событие приходит хотя бы раз в 30 секунд. Но нет, иногда и раз в час.
Я хз, как на такое писать тесты. Не ждать же их по полчаса.
Выразительность трансформеров
- Часть 1
- Часть 2 ← вы тут
RASP уже упоминался мной буквально в первом нормальном посте на канале, так что он преследует меня уже полтора года. Современные статьи уже не используют RASP в том виде, в котором он был в 2021 и 2023 (вместо этого сейчас есть C-RASP), но его понимание до сих пор полезно.
В целом, с помощью RASP и его вариантов можно устанавливать оценку возможностей трансформеров снизу.
🔹Thinking Like Transformers
Статья: ссылка
RASP — Restricted Access Sequence Processing Language, специальный язык программирования, который компилируется в трансформеры определённой архитектуры.
Вычисления в RASP происходят с использованием либо последовательностей длины N, либо матриц N x N. Вход — последовательность длины N, выход тоже (как в энкодерах).
С последовательностями можно делать векторные операции (например, складывать с другой последовательностью той же длины) и скалярные операции (например, складывать с константой или возводить в степень). Все эти операции называются sequence operators или s-ops. Есть встроенные s-ops, indices и tokens, который возвращают индексы и токены входной последовательности соответственно.
Кроме этого, к последовательностям можно применять select-aggregate, такой специфичный map-reduce, где map — это фильтрация, а reduce — усреднение по отфильтрованным элементам.
select берёт на вход две последовательности и бинарный предикат, и возвращает матрицу, где предикат вычисляется для декартова произведения этих двух последовательностей. Пример:
select([0, 1, 2], [1, 2, 3], <) =
1 0 0
1 1 0
1 1 1
# 0 сравниваем с [1, 2, 3] -> [0 < 1, 0 < 2, 0 < 3] = [1, 1, 1]
# 1 сравниваем с [1, 2, 3] -> [1 < 1, 1 < 2, 1 < 3] = [0, 1, 1]
# 2 сравниваем с [1, 2, 3] -> [2 < 1, 2 < 2, 2 < 3] = [0, 0, 1]
# Это столбцы матрицы
# Пусть M - матрица с прошлого шага
aggregate(M, [10, 20, 30]) = [10, 15, 20]
# (10 * 1 + 20 * 0 + 30 * 0) / 1 = 10
# (10 * 1 + 20 * 1 + 30 * 0) / 2 = 15
# (10 * 1 + 20 * 1 + 30 * 1) / 3 = 20
same_token = select(tokens, tokens, ==)
selector_width(same_token)("hello") = [1, 1, 2, 2, 1]
# Потому что матрица
1 0 0 0 0
0 1 0 0 0
0 0 1 1 0
0 0 1 1 0
0 0 0 0 1