Самое безумное: у меня нет никакого опыта в машинном обучении, я не знаю стандартных процедур обучения моделей и не разбираюсь во многих технических деталях. То, что я делаю, в основном сводится к тому, что я постоянно даю Sol требования и обратную связь, чтобы он сам находил проблемы, проектировал эксперименты и постоянно совершенствовался.Автор статьи: Anshu
Статья скомпилирована, источник: ME News
Это первый раз, когда я действительно почувствовал, что AGI, похоже, уже наступил.
Я обучил собственную автоматическую модель исправления ошибок с помощью GPT-5.6 Sol. В итоге эта локальная модель с всего 1,7 миллиарда параметров показала результат, немного превышающий GPT-5.6 Sol на тестовом наборе.
Самое безумное: у меня нет никакого опыта в машинном обучении, я не знаю стандартных процедур обучения моделей и не разбираюсь во многих технических деталях. То, что я делаю, в основном сводится к тому, что я постоянно даю Sol требования и обратную связь, чтобы он сам находил проблемы, проектировал эксперименты и постоянно совершенствовался.
Процесс полностью бесплатен.
Всё началось с всё более серьёзной «проблемы с набором текста»
После длительного общения с ИИ я заметил, что мои навыки печати становятся все хуже.
Я привык быстро печатать и перестал внимательно проверять орфографию, порядок букв или пропущенные символы. Вместо того чтобы переучивать себя печатать, я решил применить более подходящее для эпохи ИИ решение: продолжать использовать больше ИИ для решения проблем.
Традиционная автоматическая коррекция ошибок постоянно изменяет текст в процессе ввода, что может нарушить мышление. Моя идея состоит в том, чтобы позволить пользователю быстро вводить текст без помех, даже если он полон ошибок, а затем позволить ИИ очистить его сразу после завершения ввода.
В то же время я хочу, чтобы эта модель была как можно меньше.
Чем меньше модель, тем быстрее она работает, тем ниже потребление энергии и тем лучше она подходит для полного локального запуска. Будь то ради эффективности, автономной работы от батареи или просто из экспериментального интереса, я хотел бы посмотреть: до какого уровня может довести автоматическое исправление ошибок достаточно маленькая локальная модель.
Тогда я решил обучить его самостоятельно.
Сделайте Sol автоматизированным исследователем, проводящим эксперименты
Вдохновением для этого проекта послужил эксперимент Andrej Karpathy «autoresearch».
Я с помощью режима /goal Codex разработал циклический рабочий процесс для Sol:
Выберите эксперимент, проведите его и зафиксируйте результаты в документе; если он не удастся, откажитесь от этого направления; затем спланируйте следующий эксперимент, избегая повторения уже проверенных ошибок.
Я предоставил лишь несколько обязательных примеров ввода, строгие цели по задержке и желаемый конечный результат, после чего позволил Sol работать самостоятельно.
Дальнейшие события превзошли мои ожидания.
Sol сначала извлек и сравнил несколько кандидатских базовых моделей, включая Qwen 3.5, Gemma 4 и Liquid LFM 2.5. Затем он нашел на Hugging Face набор данных, связанных с реальными текстами печати.
Но реальных данных недостаточно.
Для создания опечаток, близких к реальным вводам пользователей, Сол написал симулятор «ударов пальцев по клавиатуре Mac». Он использует гауссово распределение для моделирования мест приземления пальцев в зависимости от физической раскладки клавиатуры и генерирует различные распространённые ошибки, такие как:
- Нажмите на соседнюю клавишу;
- Буквы в обратном порядке;
- Repeat input;
- Пропущен символ;
- Пальцы одновременно касаются нескольких клавиш.
После получения базовой модели, текстовых данных и симулятора опечаток Sol непосредственно на моём MacBook использовал MLX для тонкой настройки.
За меньше чем час он создал работоспособный прототип.
Проблема в том, что точность первой версии не очень хороша.
Первое узкое место: токенизатор не понимает опечатки
Sol прочитал соответствующие статьи и разработал серию тестов, в результате чего пришел к выводу: основным узким местом модели является не обучающая выборка, а токенизатор.
Крупные языковые модели обычно не понимают текст посимвольно, а сначала разбивают текст на токены. Обычные слова можно разложить на стабильные семантические единицы, но орфографические ошибки часто нарушают исходную структуру токенов.
Это означает, что для человека очевидная опечатка в букве может восприниматься моделью как набор совершенно незнакомых токенов.
Модели трудно действительно «понимать» ошибки; они могут лишь механически запоминать соответствие между неправильным и правильным написанием. Такой подход не только плохо обобщает, но и не позволяет полностью использовать имеющиеся у модели языковые знания.
Sol сначала попробовал ByT5 от Google.
ByT5 — это модель, которая не зависит от традиционных токенизаторов и обрабатывает последовательности байтов напрямую. Эта попытка принесла заметное улучшение, но ByT5 была выпущена давно, и сама модель обладает ограниченными языковыми знаниями, поэтому её итоговая производительность всё ещё не достигает уровня GPT-5.6 Sol.
После дальнейшего исследования Сол понял, что проблему не обязательно решать путем «полного отмены Tokenizer».
Он выбрал T5Gemma — модель с архитектурой Encoder-Decoder.
В отличие от моделей, предсказывающих только следующий токен, модель Encoder-Decoder сначала полностью понимает входные данные с помощью кодировщика, а затем генерирует исправленный текст с помощью декодера. Более того, Sol также может продолжать дообучение кодировщика, чтобы модель лучше распознавала входные данные с орфографическими ошибками.
This route significantly raises the model's performance ceiling.
Второй узкий момент: традиционные функции потерь стимулируют модель «не изменять»
После изменения архитектуры модели возникла новая проблема.
Модель уже может точно исправлять некоторые ошибки, но часто игнорирует другие очевидные опечатки. Даже при наличии ошибок во входных данных она склонна копировать их без изменений.
Sol в итоге обнаружил, что проблема возникает из-за наиболее распространенной функции потерь перекрестной энтропии.
В данных автоматического исправления большинство символов изначально правильны, и лишь небольшая часть требует исправления. Если обучать модель с использованием стандартной кросс-энтропии, наиболее безопасной стратегией для модели будет «尽量不要改».
Поскольку копирование оригинального текста позволяет получить правильный ответ в большинстве случаев, а активное изменение может привести к ошибкам.
Другими словами, традиционные цели обучения поощряют модель оставаться неизменной.
Для решения этой проблемы Sol написал набор пользовательских функций потерь.
Он сначала выравнивает исходный и целевой тексты на уровне байтов, а затем с помощью алгоритма динамического программирования вычисляет минимальный путь редактирования между двумя текстами, определяя, какие позиции являются копированием, а какие — настоящими вставками, удалениями или заменами.
На этой основе Sol значительно повысил вес обучения, соответствующий «правильному исправлению», и снизил выгоду от простого копирования символов.
После нескольких циклов настройки параметров точность исправления ошибок модели значительно повысилась.
Третий узкий момент: как только модель ошибается, вернуться назад невозможно
Последняя основная проблема связана с механизмом авторегрессивного генерирования.
Модель при генерации текста может предсказывать следующий токен только на основе уже сгенерированного контента. Как только на каком-либо предыдущем шаге возникает ошибка, последующая генерация строится на основе неверных результатов, и модель не может действительно вернуться и исправить их.
В теории модель можно обучить сначала «думать», как инференс-модель, а затем давать ответ, но это значительно увеличит задержку и не подходит для сценариев автоматического исправления ошибок, требующих мгновенного отклика.
Sol нашел более изящное решение: Beam Search, или поиск по пучку.
Модель больше не выбирает на каждом шаге только один путь с наивысшей вероятностью, а одновременно сохраняет несколько возможных ветвей генерации, параллельно исследуя различные результаты исправления ошибок. После завершения поиска выбирается полный путь с наивысшей суммарной логарифмической вероятностью.
Это эквивалентно замене однопоточного вывода параллельным поиском.
Beam Search значительно улучшил конечный результат, но также внедрил проблему с пользовательским опытом: пользователи не видят никакого вывода до завершения всего поиска.
Sol затем сделал очень умное наблюдение.
После каждого цикла поиска можно сравнить все сохранённые ветви. Если эти ветви имеют одинаковое начало, то эта «наибольшая общая префикса» обязательно появится в финальном результате.
Таким образом, система может немедленно отобразить этот контент пользователю.
По мере продолжения поиска более слабые пути постепенно отбрасываются, а общие префиксы оставшихся ветвей становятся все длиннее. В итоге пользователь видит не результаты, появляющиеся мгновенно, а непрерывно генерируемый исправленный текст.
Sol создал настраиваемую MLX-конвейерную инфраструктуру для вывода, используя GPU MacBook для параллельного декодирования.
В итоге задержка вывода первого токена составила всего около 40 миллисекунд — скорость достаточна, и весь процесс прошел полностью локально.
Итоговый результат: модель с 1,7 млрд параметров превзошла GPT-5.6 Sol
Финальная оценка проводится с использованием показателя «процент снижения ошибок»: чем выше значение, тем больше ошибок ввода модель исправляет.
Результаты оценки следующие:
- Автоматическая исправление ошибок Apple: 49,66%
- GPT-5.6 Luna: 82,47%
- GPT-5.6 Terra: 87,64%
- GPT-5.6 Sol: 90,56%
- Наша модель с 1,7 миллиарда параметров: 91,02%
Эта локальная маленькая модель в итоге превзошла GPT-5.6 Sol с очень небольшим преимуществом.
Я также специально проверил наличие утечек данных или "обмана" модели. Во время тестирования мы намеренно исключаем слова, встречающиеся в обучающих данных, чтобы убедиться, что модель не просто механически запоминает соответствие между ошибками и ответами.
Итоговая стоимость всего проекта:
Сброс лимита модели и нулевые денежные расходы.
Что действительно меня поразило, это не только итоговый счет
В процессе проекта было проведено множество нераскрытых экспериментов, включая различные направления, такие как сравнительное обучение, GRPO, DPO и динамическое маскирование.
Не все попытки увенчались успехом, но Sol смог самостоятельно изучить материалы, определить проблему, сформулировать гипотезы, спланировать эксперименты, проанализировать результаты и на основе неудачных опытов спланировать следующие попытки.
Для меня по-настоящему потрясающим является не сам факт того, что модель с 1,7 миллиарда параметров превзошла GPT-5.6 Sol.
Более того, человек без какого-либо опыта в машинном обучении теперь может с помощью ИИ выполнять экспериментальные процессы, которые раньше требовали профессиональной исследовательской команды.
Я не владею всеми базовыми знаниями и не разработал полную техническую стратегию заранее. Я просто четко понимаю, какую проблему хочу решить, и постоянно побуждаю Sol искать ответы.
Он не только пишет код, но и выполняет роли исследователя, инженера и дизайнера экспериментов.
Это, возможно, был первый раз, когда я по-настоящему «почувствовал AGI».
Don't let inexperience stop you from starting to experiment.
Когда ИИ может помочь обычным людям преодолеть профессиональные барьеры, многие проекты, которые раньше казались недостижимыми, могут уже не быть такими далекими.
