Интересное что-то
557 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Data Blog
Недавно слушала работу, одним из направлений которых был анализ моделей методами интерпретируемости для понимания поведения предметной области. И одним из моих тейков автору был такой — модель — она на то и модель — мы не можем утверждать, что нашли лучшую и максимально корректную, а потому методы интерпретируемости и инсайты из них надо аккуратно аблитировать.

И в эту сторону мне попалась работа “Quantifying LLM Attention-Head Stability: Implications for Circuit Universality” с вопросом: если мы обучаем одну и ту же GPT-архитектуру на одних и тех же данных, но с разными random seeds, получаем ли мы одни и те же attention-головы и одни и те же circuits?

Что сделали:

Натренировали 26 моделей (от 2 до 12 слоёв) с разными seeds и сравнили attention-головы между рефитами. Метрика — best-match по cosine similarity между post-softmax attention maps. То есть, для каждой головы h_i берётся max similarity к головам h_j в другой модели. На этой основе они показали три вещи.

Что нашли:

1. Ранние и последние слои оказываются относительно стабильными (от сида к сиду attentions похожи по метрике), а со средними слоями это не работает и провал усиливается с глубиной модели.

2. Стабильность отрицательно коррелирует с ℓ2-нормами query-матриц: где норма больше — там согласованность между seed’ами ниже .

3. В более глубоких слоях нестабильные головы оказываются более важными — важность для авторов — насколько меняется perplexity при удалении головы.

4. Residual stream стабильнее отдельных attention-голов . То есть локальные модули могут гулять, а магистральное представление — сходиться.

5. Оптимизатор может влиять на стабильность: AdamW даёт более стабильные головы, чем Adam, без заметной потери качества. (Но тут сразу возникает вопрос — а если притащить другие оптимизаторы, scheduler’ы? Насколько это эффект AdamW и именно его?)

Почему прикольно:

Меня зацепили дизайн работы и результаты для средних слоев. Потому что на моей практике, mid-layers богаты на "приколы" — представления, переломы и локализации признаков (и вроде у Antropic есть работа и тейк про богатство middle layers) — и если именно они нестабильны при refits, это грустно — стрельба пушкой по воробьям, если рассматривать одну модель (никогда так не делайте).

С другой стороны, claims звучат сильнее, чем позволяет эксперимент. Модели небольшие (до GPT-2 small, 124М). Неочевидно, что те же эффекты сохранятся при масштабировании на 1B+ или instruction-tuned модели. И, конечно, близость attention maps по cosine similarity не гарантирует функциональную эквивалентность голов.

В этом смысле, работа открывает много вопросов — так что если вы ищете тему для диплома или paper — можно записывать в идеи-для-рисерча 🙂

Кстати, надеюсь на неделе допишу ещё туториал с обзором на новую библиотеку, но как говорят мои коллеги "зарекаться не буду" ))
Андрюша Карпатый снова навалил базы: nanochat miniseries v1 😮

Андрей Карпатый не перестаёт радовать нас годным контентом. Он выкатил жирный апдейт в своём репозитории nanochat - проекте, который учит создавать свой ChatLGBT с полного нуля.

Если раньше мы просто учились запускать пайплайн, чтобы оно работало, то теперь Андрюха погружает нас именно в сам процесс обучения. Главный вопрос апдейта: как тратить вычислительные ресурсы (бабосиксаны) максимально эффективно? 🤔

Разбираем, что там внутри:

1️⃣ Scaling Laws
Для многих новичков подбор параметров модели звучит как что-то непонятное, но Карпатый показывает, что это - строгая и понятная математика. Суть проста: хватит гадать на кофейной гуще, какую архитектуру выбрать и сколько данных скормить. Бро использует законы масштабирования.

Эксперимент: Карпатый запустил серию обучений (miniseries) с фиксированным бюджетом (~$100 на H100) и потратил его по-разному:
🟣 Одни модели были «маленькими», но учились долго (много токенов)
🟡 Другие были «жирными», но учились быстро (мало токенов)

Результат: Все модели стоили одинаково, но одна конкретная конфигурация дала лучшее качество

2️⃣ Предсказуемость - наше всё
Вы не играете в казик, когда запускаете обучение. Вы можете провести дешёвые эксперименты за сотку баксов, найти идеальную формулу, а затем просто увеличить масштаб (вложить $100k или $1M) и гарантированно получить ожидаемый прирост качества. Инженеры OpenAI/Anthropic не тыкают пальцем в небо, они так считает деньги и масштабы 🍗

3️⃣ Сдвиг фокуса на Pretraining
В первой версии nanochat фишкой был «полный цикл» до веб-интерфейса. В miniseries v1 акцент сместился на Pretraining. Запомните: именно здесь закладывается фундамент интеллекта. Если вы обосрались на претрейне, то никакой файн-тюн (SFT/RLHF) это уже не исправит 🍌

Что с этим делать? Если хотите реально понимать, как работают LLM , а не просто импортировать либы:
Залетайте в обсуждение: github.com/karpathy/nanochat/discussions/420
Смотрите на графики Loss vs Compute
Ковыряйте код скрипта miniseries.sh - это эталон того, как нужно организовывать эксперименты

Итог 🏋️
Масштабирование - это сплошная инженерка. Андрюха дал вам песочницу, чтобы освоить её за копейки, прежде чем лезть в серьёзные бюджеты. Поэтому тыкаем это обсуждение с ЛЛМ-кой, чтобы понять его
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Vibecon / вайбкодим вместе (Andrei Muntanion)
Собрал для себя шаблон структуры вайбкод-проекта, с которого удобно стартануть на привычных мне стеках
У меня уже несколько раз просили поделиться подобным, наконец добрался и попросил Claude Code собрать во что-то более менее универсальное опыт моих production проектов

https://github.com/Muntello/vibe-project-template/

Можете пользоваться, форкать ну или предлагать какие-то улучшения через PR
Forwarded from Душный NLP
Рекурсивные языковые модели

В последнее время всё чаще обсуждают проблему длинного контекста. Большое количество токенов просто физически не помещается в модели, а с увеличением контекста зачастую падает качество. Авторы сегодняшней статьи предлагают решение: дать моделям правильные инструменты.

Как это устроено: у модели есть промпт с описанием задачи и доступных тулов. Первый — это Python REPL. Модель может исполнить произвольный код, где в переменной prompt сохранён весь длинный промпт.

Второй тул — это вызов языковой модели на глубине 1 (depth=1) с поданным фрагментом длинного промпта. Это напоминает субагентов в агентах для написания кода (Claude Code, Codex), но есть важное отличие. Вызов llm_query живёт «внутри» REPL, а значит модель может встроить его в цикл, условие или любую другую программную конструкцию. В Claude Code или Codex субагент — это отдельный тул-колл, который модель вызывает из контекста напрямую, без программного контроля. Такая модель называется рекурсивной (RLM), и их может быть несколько в рамках одного цикла. RLM не обязательно должна быть идентична изначальной. Главное, что у неё пустой контекст.

Суть метода, предложенного авторами статьи, в том, чтобы дать модели возможность запускать себя рекурсивно в той же программной среде (изображение 1). Среди бейзлайнов авторы рассматривают вариант без самовызовов (только модель с большим промптом и REPL), summary agent (суммаризация контекста, не поместившегося в модель) и CodeAct (код плюс ретривал через BM25).

Нюансы разницы RLM и типичных кодовых агентов до сих пор вызывают дискуссии с авторами в твиттере, и хайп вокруг статьи и идеи только растёт. Примеры тут, тут и тут.

Эксперименты проводили на Qwen3 и GPT-5 (изображение 2). На бенчмарке BrowseComp+ (контекст 6–11 миллиона токенов, нужно найти один релевантный документ из тысячи и ответить на вопрос) базовые модели невозможно запустить — контекст просто не влезает. RLM здесь работает.

Но поиск по длинному контексту — не единственная задача, которую решают RLM. Бенчмарк OOLONG требует семантической обработки фрагментов текста и их агрегации. Сложность линейная относительно длины входа. Здесь RLM без самовызовов уступает даже базовой модели, потому что задача требует «видеть» весь контекст. RLM с самовызовами заметно выигрывает у всех бейзлайнов.

Самый показательный результат на OOLONG-Pairs. Здесь нужно сравнивать пары фрагментов, то есть сложность задачи квадратичная. Базовая модель и summary agent выдают результат около нуля. RLM с самовызовами решает эту задачу, программно организуя квадратичное число вызовов через код в REPL. Это класс задач, недоступный другим подходам.

По стоимости RLM с самовызовами зачастую сопоставима с базовой моделью, хотя со сложностью задачи стоимость растёт (изображение 3).

Разбор подготовил Иван Рубачёв

Душный NLP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Готовый SaaS за 2730 рублей

📝 Какое-то время назад я писал про то, как тащить ML сервис в прод, а потом про то как пытались сделать свое веб приложение для обработки новостей. И что первая история, что вторая рушились на моменте продуктивизации кода. Не понятно было тогда, как настроить автодеплой с гита на vps, как менеджерить несколько контейнеров руками, как смотреть сколько ресурсов приложение потребляет. То есть оно как бы работало, но только чтобы самим посмотреть, сделать docker stop $(docker ps -aq) и больше к этому не подходить.

Но теперь все поменялось с приходом self-host лихорадки и ИИ агентов. Сейчас чтобы сделать то, для чего нужна была команда девпсов и сисадминов делается в одну строчку кода и 10 минут настройки. А агентский подход к разработке, экономит десятки часов разработки.


⛳️ Общие слова закончены, давай к сути. Вот ты молодой, перспективный чел, который хочет написать свой веб сервис и заработать денег. У тебя есть идея, ты проверил, она востребована, есть product market fit, юзеры готовы платить за решение их боли. Что дальше ?

Готовый пайплайн выглядит так:
1️⃣ Арендуешь VPS с убунтой на борту. Покупаешь домен. Стоит 15$.
2️⃣ Ставишь туда любую платформу управления докер контейнерами. Dokploy, Coolify, Dokku, не имеет значения. Эту штука закроет большую часть инфраструктурных задач. Автодеплой из гита, сбор логов, масштабирование, мониторинг, резервное копирование. Стоит 0 денег.
3️⃣ Тебе понадобится база данных, поднимаешь докер контейнер с Supabase. Из коробки будет доступно и обычные таблички и s3 хранилище и real time очереди и аутентификация пользователей. Стоит 0 денег.
4️⃣ Пишешь код своего приложения с помощью любых агентов. Не забывай составить план приложения с агентом в plan mode, настроить промты проекта и прочее что написано в доке этого агента, это важно !
5️⃣ Настраиваешь интеграции базы с приложение, автодеплой по пушу в репозиторий, использование домена

🏁 У тебя готово публичное приложение. Остается самое сложное, маркетинг, привлечение пользователей, продуктовая аналитика.

🤔 Я это все к чему ? Да к тому, что сейчас уже нет вопроса, как мне сделать приложение. У тебя есть все инструменты, которые сделают все за тебя. Сделают быстро и качественно. Качественно настолько, что еще несколько лет назад для этого нужна была команда, бюджеты, инвестиции. Сейчас твои инвестиции это 2730 рублей и твое свободное время по вечерам. Остается только начать делать.

👨‍💻 В общем, если ты хочешь "что-то свое, что приносит деньги", хочешь попробовать сделать бизнес из этого. Начни с этого. Напиши что нибудь, покажи это людям, посмотри что получилось.

Cпециально подробно не писал про инструменты, хотел поделиться общим подходом. А конкретные инструменты можно погуглить, найти что-то что будет лучше подходить под твои задачи
Please open Telegram to view this post
VIEW IN TELEGRAM
Контекст — всему голова. Почему In-Context Learning — единственный способ строить надежные AI-продукты

Я ненавижу галлюцинации. Я хочу их все уничтожить. Но чтобы победить врага, мне нужно научиться его определять.

Сама LLM сгаллюцинировала дала такое определение галлюцинаций: «Феномен, при котором LLM генерирует уверенные, но фактически неверные, вымышленные ответы». Мне это совсем не помогает. Что значит «фактически неверный» в вакууме? Где источник правды, что есть верные факты?

Но мы можем уточнить правила работы с LLM: всегда давать контент и требуем отвечать строго по нему. Тогда враг становится осязаемым: галлюцинация — это любой ответ, который не строится на выданном тексте. А если мы знаем, как искать врага, мы сможем его уничтожить. И сейчас я покажу как.

Что такое In-Context Learning

Мы закладываем все ожидаемое поведение LLM (то есть обучаем) прямо в контекстное окно (промпт). Без классического обучения.

- Нужно, чтобы модель узнала информацию? Закинули RAG в контекст.
- Модель делает ошибку? Написали в промпте корнер-кейс (от души прошу, не делай так»).
- Нужно рассуждение? Просто попросили подумать шаг за шагом.
- Модель тупит? Почистили контекст от мусора.

Это в разы быстрее и дешевле, чем дообучать саму модель. Скорость итераций взлетает. А главное — это легко оценивать и контролировать.

Как теперь мы уничтожаем галлюцинации

Как только мы зафиксировали чудовище, его очень просто победить. Алгоритм прямолинейный:

1. Мы делаем строгую метрику, которая автоматически детектирует: модель взяла ответ из выданного текста или выдумала его из своих «весов»? (вот тут написано как делать)

2. Мы начинаем мочить модель, чтобы она не отвечала из весов. Как обычно, 3-мя способами: промтинг, раг, дообучение (тут особенно круто раскрывается методы Reinforcment Learning)

Минусы подхода очевидны. Придется строить инфраструктуру, чтобы этот контекст собирать. Ходить в нужные системы, доставать информацию и пихать ее в промпт. Контекст будет «пухнуть», а модели на больших объемах данных могут терять фокус. Благо, с каждым днем они справляются с этим всё лучше. Тренд играет за нас.

LLM — движок рассуждений, а не энциклопедия

Эта логика в будущем сможет уменьшить размеры базовых моделей. LLM такие L (большие), потому что тащат в свои веса и нужное и всякий мусор. Посмотрите на бенчмарки: LLM знают кучу энциклопедических знаний, который любой инженер посмотрит в любимом справочнике. Они кодируют все эти знания в веса, чтобы хорошо предсказывать следующее слова.

Для моих кейсов не важно, чтобы LLM знала анатомию горилл. Можно, пожалуйста, не платить за горилл стоимостью инференса?

Я верю, что модели должны стать исключительно процессорами информации. Запомнить базовое — да. Всё остальное делать только логическими операциями на основе доверенных источников (но не стоит брать за источник правды текущие LLM, иначе весь этот схематоз развалится)

Нудное резюме

Хотите делать надежные AI-продукты? Нудно, системно и последовательно собирайте информацию, которая будете скармливать моделям нужный контекст.

Да, вам придется хорошенько подумать, какую именно информацию и когда вставлять. Зато, если не подумаете вы, LLM с радостью «подумает» за вас. И эта галлюцинация вам точно не понравится.
Forwarded from partially unsupervised
Чтобы гора сгенеренного кода меня не поглотила, к процессу вайбкодинга AI assisted разработки нужно было добавить и AI-based ревью. Но ожидаемо Клод слишком любит код, написанный Клодом, и мышей ловил недостаточно.

Так я начал использовать opencode с Gemini для ревью. Сначала все было хорошо, Gemini - такая странная модель, которую нельзя подпускать к написанию кода (мой любимый комментарий про это), но критиковать умеет по делу. Opencode был всем неплох, но жрал тонны памяти и периодически зависал в неинтерактивном режиме (в т.ч. на CI). Короче, not invented here синдром назревал.

https://github.com/arsenyinfo/nitpicker - just another code review agent. Быстрый, маленький, умеет в LLM council (хоть где-то пригодится подписка на z.ai и minimax), и за счет этого ловит довольно много ошибок (хотя и ценой ложных срабатываний).