senior_augur | Unsorted

Telegram-канал senior_augur - Старший Авгур

4617

Сохраненки и шитпост про ML от @YallenGusev

Subscribe to a channel

Старший Авгур

Скриншот 18+
Расцензуренная версия модели: ссылка
Имхо, более чем достойно

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

Старший Авгур

Шахматы и языковые модели, часть 2
Первая часть: ссылка

🤴 Слой 2: модели мира
Хорошо, ну вот мы выучили сеть предсказывать следующий ход. Но понимают ли сети, а что вообще происходит на доске? Понимают ли, где стоят фигуры? Понимают ли, почему выбранный ход — лучший?

Emergent World Representations: Exploring a Sequence Model Trained on a Synthetic Task
Статья: ссылка
Emergent Linear Representations in World Models of Self-Supervised Sequence Models
Статья: ссылка
Пост: ссылка

Статьи не про шахматы, а про отелло, вариант реверси с фиксированным расположением первых 4 фишек. Эти статьи довольно сильно повлияли на последующие статьи про шахматы и механистическую интерпретируемость в целом. Авторы выбрали эту игру, потому что она проще шахмат, но недостаточно проста, чтобы можно было запомнить все ходы

Взяли 2 датасета: один маленький (140к) из онлайн-чемпионатов и один синтетический из случайных листьев игрового дерева (4кк). Как можно заметить, цель была не в том, чтобы модель хороша играла: случайные листья не научат этому модель. Обучили маленькую GPT на аналоге PGN, тут это просто координаты каждого хода.

А дальше начинается серия наблюдений:
- Модель научилась делать ход по правилам в 99.99% случаев, причём из любой позиции.
- Из активаций сети можно восстановить, какая фишка сейчас в заданном месте доски. Более того, во второй статье показывается, что если спрашивать не "чёрная/белая/никакая", а "моя/чужая/никакая", то достаточно обучить один линейный слой (зонд), чтобы эту информацию извлечь с точностью более 99%. Это и означает наличие "модели мира", но никак не показывает, эта модель действительно задействуется при генерации ходов.
- Если поменять активации сети так, чтобы линейный зонд показывал другое состояние доски, модель меняет свои предсказания соответствующим образом. Меняют активации на слое N и последующих, на последнем токене. И вот это уже прямое доказательство того, что "модель мира" не только существует, но и используется сеткой.
- Во второй статье авторы находят разные прикольные схемы в активациях, типа запоминания, какие фишки переворачивались, или изменения режима работы модели в эндшпилях.

Почему это ценные статьи? Потому что они разбивают аргумент о стохастических попугаях, пусть и не совсем для языковых моделей. Если бы модель просто запомнила партии из обучающей выборки, ни одно из наблюдений выше не было бы возможно. Ого, модели машинного обучения умеют обобщать 😱


OthelloGPT learned a bag of heuristics
Пост: ссылка

А вот в этом посте немного охлаждаются головы и ставится вопрос о том, как именно модель определяет состояние доски и ходы по правилам. И если вы думали, что где-то в модели зашит эффективный алгоритм определения легального хода или хотя бы того, чья фишка лежит на определённой клетке, то нет, это просто набор эвристик в стиле "сыгран A4 & B4 занят & C4 занят -> пометь B4, C4 и D4 как 'чужие'". Да и вспомните про 0.01% 😐

Другой вопрос: а может ли вообще эффективный алгоритм в принципе работать на архитектуре трансформеров? Спойлер: скорее всего не может, но об этом в следующей части (если я смогу в сложность).


Emergent World Models and Latent Variable Estimation in Chess-Playing Language Models
Статья: ссылка
Пост: ссылка

Прямой идеологический наследник OthelloGPT, но для шахмат. Датасет — 16кк игр с Lichess. Учили GPT на PGN, причём с посимвольной токенизацией 😳

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

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

Старший Авгур

Приглашаем на лекцию "Quantum Machine Learning: Future Revolution in AI"

Лектор: Никита Серов, PhD, руководитель лаборатории "Генеративный дизайн молекулярных машин"

Искусственный интеллект уже стал ключевым фактором перемен в XXI веке, о котором говорят в каждом втором новостном сюжете. Но существуют ли фундаментальные проблемы, которые могут ограничить развитие современных технологий ИИ в ближайшем будущем? На этой лекции вы узнаете, как квантовые эффекты способны перевернуть с ног на голову самые базовые идеи машинного обучения и произвести революцию в области ИИ.

Описание лекции:

Эта лекция предоставит уникальную возможность заглянуть за горизонт текущих технологий ИИ и понять, как квантовые вычисления могут кардинально изменить правила игры. Никита Серов, PhD, руководитель лаборатории "Генеративный дизайн молекулярных машин", как человек со знанием квантовой химии и ИИ, взял на себя задачу структурировать основные достижения в этой области и выделил плюсы и минусы новой технологии.

В ходе лекции будут рассмотрены следующие ключевые вопросы:
- Какие ограничения существуют у современных методов машинного обучения?
- Как квантовые эффекты могут преодолеть эти ограничения?
- Какие перспективы открываются перед ИИ благодаря квантовым вычислениям?
- Примеры реальных приложений квантового машинного обучения в химии и материаловедении.

👩‍🔬👨‍🔬Для кого подойдет эта лекция:

Лекция будет интересна всем любителям ИИ, владеющим английским языком. Входных требований нет, однако для более глубокого понимания материала полезно иметь базовые знания в области линейной алгебры и квантовой механики.

🌐 Эта лекция станет первой в серии "The era after AI we know", где мы будем обсуждать будущее ИИ, естественного интеллекта и нейроморфных вычислений.

🔥Не упустите шанс узнать о передовых разработках и обсудить будущие перспективы.

Дата и время проведения: 26 июля, 17:00

Место проведения: университет ИТМО, Ломоносова 9, аудитория 1303/8 Медиацентр

❗️Язык лекции: английский ❗️

⚡️ Регистрация по ссылке ⚡️

Мы ждем вас на нашей лекции!

🖥 Также будет вестись трансляция и запись лекции. Чтобы не пропустить - подписывайтесь на телеграм-канал лаборатории.

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

Старший Авгур

gpt-4o-mini доступна в боте с большими лимитами. Картинки она тоже умеет читать. Переключать модели можно как обычно, через /setmodel.

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

Старший Авгур

Посмеялся с текущих результатов русской арены. Я хз, в какой такой вселенной v7 лучше, чем 70b модели, или чем Хайку. Бедный YandexGPT 3 Pro так вообще утонул.

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

Старший Авгур

Если хочешь, чтобы что-то было сделано, сделай это сам.
Образ с vllm для runpod, который поддерживает вторую Гемму: ссылка
Патч: ссылка
Вторая Гемма доступна в боте. Только системные промпты в неё не пихайте, она их не поддерживает.

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

Старший Авгур

Счастье было так близко...
Но оно ещё не работает, код vllm немножко критично поменялся за месяц.

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

Старший Авгур

С abliterated моделью явно что-то не так, попробую поправить её. Ну и тюн сделал только хуже, хоть и не критично хуже относительно abliterated.

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

Старший Авгур

Что-то получилось. Оказалось, что хоть ортогонализация не даёт те же самые результаты, что и непосредственное применение вектора к активациям, цензура всё равно вполне успешно снимается для некоторых направлений и некоторых промптов. Плюс был небольшой баг из-за домножения на константу эмбеддингов вот тут, у единственной не моей abliterated модельки на HF он как раз и не исправлен. Выложил модельку, gemma-2-9b-it-abliterated, поверх неё поставлю обучаться Сайгу.

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

Старший Авгур

Немножко смешно (скрин с abliterated геммы)

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

Старший Авгур

Шахматы и языковые модели

Про сами шахматы я знаю не так уж и много, всего-то 20к игр на lichess и 6к игр на chess.com. И свой движок я когда-то писал просто по фану.
Даже если вы сами не играете в шахматы, эта тема любопытна по двум простым причинам:
1) Шахматы исторически имеют особое значения для всей области ИИ. Вы по-любому слышали про Deep Blue и AlpahaZero.
2) Шахматы всё ещё можно использовать как бенчмарк того, насколько хорошо обобщают модели общего назначения. И выяснять с их помощью, как именно это обобщение работает.


🧑‍🏫 Слой 0: языковые модели общего назначения
Для начала, насколько хорошо языковые модели из коробки играют в шахматы?

OpenAI намеренно включают шахматные игры в предобучение, см. дополнение A2 статьи Weak-to-Strong Generalization (спасибо посту с lesswrong за наводку). Из-за этого наибольший рейтинг (примерно 1750 ELO против Стокфиша с ограниченной силой) среди моделей общего назначения долгое время имела gpt-3.5-turbo-instruct, и тому есть много пруфов (раз, два, три). При этом это играла она гораздо лучше gpt-4 😁, что скорее всего означает, что шахматный сет долили в начале 2023 года.

Что касается gpt-4o, в неё этот сет уже как будто бы попал, в рейтинге по задачкам у неё примерно 1800 ELO. Все остальные модели общего назначения играют хуже. На эту тему есть много смешных видео.


🤴 Слой 1: специально обученные языковые модели
Странно ожидать от моделей общего назначения хорошей игры в шахматы, потому что от среднего человека вы бы тоже этого не ждали. Но что будет, если заморочиться и всё-таки специально их доучить? И тут есть несколько статей.

Но перед этим коротко о форматах.
PGN: Формат партии: последовательность ходов с мета-данными и комментариями. Пример: 1. e4 e5 2. Nf3 Nc6 3. Bb5
FEN: Формат доски: положения фигур, кто сейчас ходит, можно ли рокироваться. Пример: rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1
UCI: Протокол общения между движками и нотация ходов. Пример: e2e4


Grandmaster-Level Chess Without Search
Статья: ссылка
Из названия более чем понятно, о чём статья. Ребята скачали 10м игр с Личесса, разметили винрейты для позиций и для каждого хода через Стокфиш, всё ещё лучший существующий открытый движок. Дальше учили 3 версии моделей: 1) на винрейты позиций, 2) на оценки ходов, 3) на лучший ход. В качестве входа используется FEN (то есть никакой истории, только текущее состояние), и для 2 и 3 версии ещё кодируется ход. В качестве выхода в 1 и 2 версии используются корзинки вероятностей, в 3 версии — one-hot представление хода. Модели маленькие, до от 9м до 270м параметров.

Лучшая версия модели имеет 2900 ELO против людей и 2300 ELO против ботов на Личессе 😱
Есть у авторов несколько объяснений наличия 2 чиселок вместо одной, основное из которых — разные пулы игроков, но это не так важно. Из по-настоящему важного — размер сетки влияет довольно сильно, и такая сетка выигрывает у аналогичной у AlphaZero (без поиска, само собой). Но не выигрывает у аналогичных сеток у современных движков. Да и с чего бы, там же тоже трансформеры и датасет не хуже.


Шахматы и вопрос разумности больших языковых моделей
Статья: ссылка
Если откинуть философские рассуждения, учили gpt-2-medium (380м, статья-то 2022 года) на PGN без переделки токенизатора, на 3.5M партий из ChessDB. В итоге у модели получилось около 1300 ELO против Стокфиша с ограниченной силой. Косяков тут много (да хотя бы токенизатор), но при этом статья вполне показательна. Да и вот аналогичная модель с такой же тушкой, датасетом и ELO.

Размеры моделей сравнимые с прошлой статьёй, так почему же так плохо? 😭
Во-первых, обучение на PGN, из-за чего модели нужно самой восстанавливать оригинальное состояние доски и отслеживать все изменения. С FEN всё проще, модели не нужно ничего помнить. Во-вторых, и это самое главное, партии-то неаннотированы. Модель обучалась как на хороших ходах, так и на плохих.


Осталась ещё пара слоёв, типа моделей мира и исследования ограничений архитектур через призму шахмат. Об этом в следующем посте.

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

Старший Авгур

Привет!
Мы в лабараторию ебаного ресерча Vikhr models открываем летние стажировки
Что по задачам:

- Мержинг, стакинг, замеринг, эволюционка поверх LLM cтакинга
- собирать крутые инструкт сеты, у нас много gpt4 токенов, если хочется трогать руками RAG, агентность, function calling и прочие хайповые слова - велком!
- Учить Lora на разные задачи и трогать кучу очень интерсных задач (SPPO, DPO, KTO)
- Есть целых! 4v100 и к конце лета приедет а6000
- Собрать самые крутые и самые мемные бенчмарки😎
- развлекатся с vllm, быстрым инференсом и при желании строить опенсуср
- если вам хочется заводить свою шизо идею а на работе не дают - велком, мы сами такие

Оплата: в авторах на хабре, вероятно на arxiv, уникальный опыт(сорян денег реально нет, мы реально работаем на энтузиазме)

Скидывать cv, нюдсы, вопросы, ответы, предложения в: https://forms.gle/54BLnMMxZuNNboev6

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

Старший Авгур

🗯 Aeonium v1.1 Chat 4B

Дообученная на диалогах базовая языковая модель с нативной поддержкой русского языка.

Нейронная сеть сильно галлюцинирует, но иногда пишет хорошие стихи 😎

- HuggingFace
- Онлайн-демо

@hikonon

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

Старший Авгур

🤨
Обратный порядок abliterate сработал, это чистая победа. И на стрёмные вопросы всё ещё отвечает, не отказывает. Выложу как v7.

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

Старший Авгур

Про расширения RoPE
Первая часть: ссылка

Для начала коротко напомню, что вообще делает RoPE: берётся эмбеддинг и каждая пара фичей вращается на определённый угол. Для разных пар — разный угол. Для первого токена происходит один поворот, для второго — два поворота, и так далее. Вращаем и query, и key.

Кроме того, нас прежде всего интересует расширения контекст без дотюнивания.
Раздобыть данные на понимание длинного контекста и компьют на тюн не так уж просто.


Extending Context Window of Large Language Models via Positional Interpolation
Статья: ссылка

Казалось бы, ну и в чём проблема тогда? Пусть мы обучили модель на 4096 позициях. Тогда давайте просто вращать фичи 4097 раз, 4098 раза и так далее. Это называется экстраполяция 📊, и экспериментально подвтерждено, что она не работает с популярными базовыми моделями. Причём подтверждено ещё много где. При этом со стороны теории это несколько загадочно: RoPE не обучается и кодирует относитетельную позицию, так какого чёрта? То есть ожидается, что после экстраполяции модель будет себя вести так, как будто у неё скользящее окно в 4к токенов. А на самом деле её полностью разносит, логиты внимания для некоторых расстояний >4к улетают в небеса. 🤯
Почему? Об этом чуть ниже.

Пока же сосредоточимся на втором семействе методов — интерполяции. Базовая идея такая: представим, что для токена на 4096 позиции мы делаем в 2 раза меньше оборотов, 2048. И так для каждой позиции, вместо одного оборота делаем половину. После этого мы можем кодировать 8192 токенов вместо 4096. Но есть нюанс: модель-то не видела в обучении полуоборотов, соседние токены становятся практически неразличимы 💀
Поэтому авторы статьи полируют это всё тюном на расширенном контексте, что делает этот подход не особо практичным.


Scaling Laws of RoPE-based Extrapolation
Статья: ссылка

Суть статьи — обоснование провала экстраполяции. А виновата оказалсь база, θ = 10000 😐
Дело в том, что с такой базой не все фичи делают полный оборот за 4к. И в итоге для первых фичей модель видит полный оборот (и видит немонотонность функций), а для других фичей видит куски только до 2π, π или π/2. И как раз из-за наличия неполных кусков экстраполяция не работает как надо.

Авторы дотюнивают модель с разными базами, но в пределах оригинальной длины контекста, 4к. Если сделать базу радикально меньше, например 500, то все фичи совершают по несколько оборотов, и всё ок, экстраполяция будет работать с приемлемым качеством скользящего окна. С увеличением размера контекста становится хуже, но без переломов. Если сделать базу радикально больше, например 1000000, то точка перелома отодвигается на более широкий контекст, но всё ещё существует.

Хоть такой метод и выпадает из нашей изначальной постановки задачи, потому что снова надо тюнить, но тюнить-то надо на маленьком контексте 😊, поэтому проблем со сбором данных тут нет. Работает всё неплохо, особенно с маленькой базой.


NTK-Aware scaling
Пост: ссылка

Меняем интерполяцию с дообучением из первой статьи на масштабирование базы θ без дообучения. Описано в посте на Реддите, хронологически до статьи выше. По идее это всё ещё интерполяция (особенно если задать коэффициент масштабирования с запасом), только мы растягиваем для разных частот по-разному.


Dynamic NTK scaling
Пост: ссылка

Добавляем изменение коэффициента масштабирования в зависимости от текущей длины последовательности. То есть если текущая длины меньше оригинальной — не делаем ничего. А дальше растим коэффициент линейно.


YaRN: Efficient Context Window Extension of Large Language Models
Статья: ссылка

Добавляются две новых штуки: NTK-by-parts и температура в софтмаксе внимания. NTK-by-parts мотивирован фактом выше о том, что какие-то фичи и частоты и так нормально экстраполируются, так что их можно не трогать. Для тех фичей, которые не экстраполируются, мы интерполируем. А температуру меняем, чтобы выравнять распредление скоров внимания (она меньше 1). Да и экспериментально так получается перплексия пониже 🧠

И вот YaRN уже работает как без тюна, так и с тюном.

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

Старший Авгур

T-lite доступна в боте. Из скриншота видно, что есть серьёная проблема: x1.5 к длине ответа. Из этого же следует, что чиселки на бенчмарках завышены.

Модель — это доученная Llama-3 в несколько этапов на большом русском корпусе. Ещё раз: это не инстракт-тюн. Это почти что Вихрь, но не совсем, потому что токенизатор тот же.

Не поймите меня неправильно, модель отличная. Вторая Гемма и (возможно) Мистраль-Немо лучше, но они и больше. Эту модель можно в bf16 хостить в 24 Гб, как и оригинальную третью Лламу. При этом качество после доработки напильником у неё будет выше, чем у третьей Лламы.

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

Старший Авгур

Следующий пузырь после ИИ? 😁
А так про квантовые компьютеры я слышал ещё лет 7 назад, у нас даже был мини-курс про них в универе. Одна моя подруга и поныне ими занимается.

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

Старший Авгур

Mistral NeMo доступна в боте. Быстро? А чего вы ожидали, я теперь могу пересобирать контейнеры.

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

Старший Авгур

Drop-in replacement, говорили они...

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

Старший Авгур

Мой старый враг, bos токен, опять всё поломал. Если что-то спрашивали, сделайте /reset и спросите ещё раз, должно стать лучше.

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

Старший Авгур

Спасибо Игорю,
https://mistral.ai/news/mistral-nemo/

Архитектурно как будто бы старый добрый Мистраль, но с ещё лучшим токенизатором и заявленными метриками выше Геммы.

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

Старший Авгур

Ну так-то лучше. Только всё ещё часть промптов зацензурена.

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

Старший Авгур

Рано, ох рано я взялся за вторую Гемму. Официальные приколы:
- Связанный embed_tokens и lm_head (из-за чего при развязывании модель становится уже 10B) и огромный словарь.
- Скользящее окно внимания в каждом втором слое. До сих пор не поддерживается в vllm.
- Мягкая обрезка логитов во внимании и в финальном слое. Не совместимо с родным FlashAttention, из-за чего в том же vllm используют FlashInfer вместо этого.
- Post-ln и pre-ln одновременно, и с RMSNorm. В целом не проблема, но вот ортогонализации мешает.
- GQA: пофиг, все уже привыкли.

А есть ещё и неофициальные приколы:
- Неправильная константа масштабирования во внимании, которую поправили только недавно. И из-за которой какое-то время не работала конвертация в GGUF.
- Домножение эмбеддингов на sqrt(hidden_dim), что может быть проблемой в bf16. Плюс об этом нужно помнить во всех реализациях.

Плюс в том же Unsloth всё ещё есть баги при дообучении.

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

Старший Авгур

Ортогонализация во второй Гемме не работает.

Проблему я понял довольно быстро, просто там есть дополнительный RMSNorm перед добавлением чего угодно в остаточный поток. То есть между изменяемыми матрицами и теми местами, где по умолчанию снимаются активации, есть ещё один слой.

Но пока исправить это не получилось. Я попробовал:
1) Снимать активации напрямую с выходов внимания и MLP, до нормализации. Для этого пришлось немного переписать TransformersLens. Почему-то это незначительно влияет на итоговые тексты, цензура не снимается.
2) Обращать RMSNorm. То есть снимать активации с того же места, где и раньше, но перед ортогонализацией делить направление на w из RMSNorm. Аналогично, ноль эффекта, временные интервенции работают, а ортогонализация — нет.

Звучит так, что я недостаточно хорошо понимаю, что вообще происходит, разбираюсь.

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

Старший Авгур

Пока вторая часть не пишется из-за мелких жизненных неурядиц. Зато могу рассказать про интересный опыт использования языковых моделей, а именно своего бота 😊

Понадобилось мне на днях проверить большой контракт на голландском. Загрузил в бота (с выбранной claude-3-5-sonnet) pdf'ку, попросил перевести, и контракт прекрасно перевелся. После этого я загрузил типовой шаблон контракта и попросил найти расхождения и странные моменты, и это тоже идеально сработало. В итоге Клод спас меня от реально стрёмного контракта, который бы я намучился Google translate'ом по предложениям переводить, так ещё и проконсультировал 👍

Не то чтобы я до этого не пользовался языковыми моделями, лол. Но тут они прям сильно упростили жизнь.

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

Старший Авгур

Исследование профессионального ML-cообщества

Между постами хочу помочь ребятам из Центра научной коммуникации ИТМО провести опрос для MLщиков. Далее из самого опроса цитата:

Его цель – узнать больше о том, как устроено пространство профессиональной коммуникации, экспертиза и рынок труда в этой сфере.


Пройти опрос можно здесь. Ребята обещают выложить результаты опроса в открытый доступ, буду пинговать их, чтобы они сдержали своё обещание 👍.

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

Старший Авгур

Поработал над кодом бота:
- Подрубил mypy, навесил CI
- Отрефакторил шаблоны, добавил поддержку локализации интерфейса
- Выделил несколько вещей в отдельные файлы
- Добавил поддержку анализа картинок в Sonnet-3.5

На скриншоте как раз он, плюс включен один из персонажей.

Пока всё ещё есть баги, и основная их причина - вызовы инструментов, поэтому по умолчанию инструменты отключены. Обычно проблемы возникают при нескольких одновременных вызовах или очень специфичных контекстах.

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

Старший Авгур

ЭВРИКА. Хз, когда Телега это добавила, но пришедшие звёздочки теперь отображаются. Для этого нужно тыкнуть в Edit в профиле бота (очень логично, да?), и потом Balance. Так что добавлю оплату и ими.

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

Старший Авгур

Я там долил ещё примеров в saiga_scored и переобучил sft Лламу, получилась m11_d7. Она лучше предыдущей sft по метрикам. Но хуже после abliterate. После этого ещё навернул KTO, и так получилась m11_d7_abliterated_kto_m7_d7. По метрикам 49% против v6, зато обесцензуренная. Была ещё попытка с DPO вместо KTO, но там длина разъехалась. Попробую сначала сделать abliterate, а потом sft, может станет лучше.

А ещё пробую разделённые LR из https://unsloth.ai/blog/contpretraining

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

Старший Авгур

Отдал ручки Сайги сюда: https://llmarena.ru/
Отдал v6, saiga_phi3_medium_sft_m1_d2_kto_m5_d7 и saiga_llama3_70b_sft_m1_d5_abliterated_awq_4bit
В боте доступны всё те же модельки.

По поводу бенчмарка я настроен скептично (не будет там много голосов), но пусть.

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