История об ИИ · 01
Как большие языковые модели научились разговаривать
От вопроса Алана Тьюринга в 1950 году до модели на твоём компьютере. История о словах, числах и пространстве для идей.
Опубликовано AI Model Green Zone
Продолжить чтение →Подчёркнутые термины ведут в глоссарий. Наведи курсор или перейди клавишей Tab для короткой подсказки.
В первом хорошем разговоре с машиной есть что-то немного тревожное.
Ты вводишь вопрос. Ответ появляется почти мгновенно. В нём есть абзацы. Машина помнит, что ты сказал три сообщения назад. Она может объяснить налоговое правило, переписать любовное письмо, найти ошибку в программе на Python и, если вежливо попросить, придумать сказку на ночь про депрессивного дракона, который работает в бухгалтерии.
Естественно представить, что внутри компьютера сидит маленький электронный учёный: он прочитал весь Интернет и теперь роется в памяти в поисках ответа.
Но его там нет.
На самом деле происходит нечто менее волшебное и в каком-то смысле гораздо более странное.
Современная большая языковая модель (Large Language Model, LLM) — огромная математическая система, обученная распознавать закономерности языка и предсказывать, что, скорее всего, будет дальше. Она делает это по одному маленькому фрагменту текста за раз. Из этого скромного, казалось бы, умения вырастает удивительный набор способностей: писать, переводить, программировать, пересказывать, отвечать на вопросы, разбирать документы и поддерживать разговоры, которые кажутся поразительно человеческими.
Чтобы понять, почему эти машины работают и почему иногда ошибаются с такой впечатляющей уверенностью, стоит начать задолго до ChatGPT, графических процессоров и даже современной компьютерной индустрии.
До чат-бота был вопрос
В 1950 году британский математик Алан Тьюринг опубликовал статью с замечательно прямым названием Computing Machinery and Intelligence — «Вычислительные машины и разум».
Она начиналась с вопроса:
Могут ли машины мыслить?
Тьюринг сразу увидел проблему: никто не мог договориться, что именно считать мышлением. Философы спорили об этом веками, причём даже без подключения к электросети.
Поэтому он предложил кое-что практичнее.
Представь текстовую беседу с двумя невидимыми собеседниками. Один — человек, другой — машина. Если машина разговаривает так хорошо, что ты не можешь уверенно отличить её от человека, возможно, спорить о том, действительно ли она «мыслит», менее полезно, чем смотреть, что она умеет.
Эта идея стала известна как тест Тьюринга.
Тьюринг не изобрёл большую языковую модель. Он сделал кое-что важнее: помог перевести разговор от «Что такое интеллект?» к «Какое поведение убедило бы нас в его наличии?».
Десятилетиями ответ оставался преимущественно теоретическим.
С арифметикой компьютеры справлялись прекрасно. С разговором — совсем другая история.
Учим компьютер языку, правило за правилом
Первые языковые программы часто строили на правилах.
Видишь такое слово — делай это. У предложения такая структура — отнеси его к этой категории. Пользователь заговорил о матери — пожалуй, спроси, что он чувствует по отношению к матери.
Так получались остроумные демонстрации, но была одна фундаментальная проблема: человеческий язык не желает вести себя прилично.
Мы используем сарказм. Пропускаем слова. Придумываем выражения. Меняем значение в зависимости от ситуации. Английское «That’s sick» может относиться и к болезни, и к великолепному гитарному соло.
Попытка написать достаточно правил для обычной речи оказалась похожа на попытку составить инструкцию по обладанию личностью.
В 1980-е и 1990-е исследователи всё чаще обращались к статистике.
Вместо того чтобы объяснять компьютеру все правила языка, можно показать ему огромное количество текстов и позволить математике найти закономерности.
Одно важное семейство таких систем называлось n-граммными языковыми моделями.
Такая модель смотрит на короткую последовательность слов и, по сути, спрашивает:
Какое слово обычно следует за теми, которые я только что увидела?
Встретив фразу:
арахисовое масло и…
в американском рецепте ты скорее ожидаешь джем, чем вертолёт.
Машина могла научиться тому же, подсчитывая примеры.
По сравнению с современным AI это было примитивно, но произошла важная перемена. Компьютеру уже не объясняли каждое правило. Он начинал учиться закономерностям на данных.
Слова превращаются в числа
Компьютер не понимает слово «кот» как пушистое существо, которое сейчас сидит на клавиатуре и мешает тебе работать.
Компьютер понимает числа.
Исследователям требовался способ превратить язык в математику, не растеряв по дороге весь смысл.
Одним из важных шагов стало векторное представление слова — word embedding.
Слово представляется длинным списком чисел: точкой в математическом пространстве с сотнями или даже тысячами измерений.
Звучит отвлечённо, но идея проста.
Слова, которые встречаются в похожих обстоятельствах, приобретают похожие числовые представления.
«Король» и «королева» оказываются связаны. Как «Париж» и «Франция», «Токио» и «Япония», «собака» и «щенок».
У модели нет маленькой словарной статьи «щенок = молодая собака». Она усваивает связи, потому что эти слова снова и снова появляются в похожем языковом окружении.
Впервые у машин появилось нечто похожее на математическую карту смысла.
Но оставалась ещё одна проблема.
Язык — не просто мешок связанных слов. Порядок и контекст имеют значение.
Сравни:
The bank approved my mortgage. — Банк одобрил мою ипотеку.
и:
We sat on the bank of the river. — Мы сидели на берегу реки.
Одно английское слово bank. Совершенно разные миры.
Чтобы хорошо работать с языком, модели нужно учитывать не только отдельные слова, но и связи между частями предложения.
Так мы подходим к прорыву, который изменил современный AI.
Появляется Transformer
В 2017 году восемь исследователей опубликовали статью Attention Is All You Need — «Внимание — всё, что вам нужно».
Название было слегка дерзким. Последствия — огромными.
В статье была представлена архитектура Transformer.
Главной идеей стал механизм внимания — attention.
Внимание позволяет модели рассматривать последовательность и определять, какие части информации особенно связаны друг с другом.
Возьмём предложение:
Мария поставила стакан на стол, потому что он был мокрый.
Что было мокрым?
Стакан? Стол?
Полезная языковая система должна рассмотреть окружающие слова и связи между ними, чтобы разобраться.
Внимание даёт для этого математический механизм.
Вместо обработки языка только как жёсткой цепочки — первое слово, второе, третье — Transformer может рассматривать множество связей в тексте и придавать им разный вес.
Это сделало обучение на современном параллельном оборудовании гораздо эффективнее и позволило создавать намного более крупные модели.
И когда модели выросли, произошло нечто удивительное.
Они стали полезны в задачах, которым никто не прописывал отдельную программу.
Насколько большая — «большая»?
Когда модель называют 8B, 14B или 70B, буква B означает billion — миллиард.
В модели 8B примерно восемь миллиардов параметров.
Параметр — одно из настраиваемых числовых значений внутри нейронной сети.
Проще всего представить гигантский микшерный пульт с миллиардами маленьких ручек.
В начале обучения ручки настроены плохо. Модель предсказывает неудачно.
Во время обучения ей показывают примеры, измеряют ошибки и чуть-чуть поворачивают ручки.
Снова и снова — почти невообразимое количество раз.
В итоге сочетание миллиардов настроек сохраняет огромное множество закономерностей.
Эти сохранённые значения параметров обычно называют весами модели.
Когда ты скачиваешь файл модели размером пять, десять, двадцать или пятьдесят гигабайт, значительную его часть составляет громадная коллекция выученных чисел.
Знания модели не лежат в аккуратной энциклопедии с главами «Наполеон», «Программирование на Python» и «Как приготовить лазанью».
Они распределены по весам.
Поэтому языковая модель в один момент бывает блестящей, а в следующий — странной.
Это не обычная база данных.
Это машина закономерностей.
Самая маленькая единица разговора — не слово
Допустим, ты пишешь:
I absolutely love this computer.
Модель вовсе не обязана видеть текст так, как ты считаешь слова.
До попадания в нейронную сеть другая программа — токенизатор — режет текст на части, которые называются токенами.
Токен может быть целым словом.
Частью слова.
Знаком препинания.
Частью числа.
Слово computer для одной модели может быть одним токеном, а для другой — несколькими.
Это очень важно: современные AI-системы измеряют своё рабочее пространство токенами, а не страницами или словами.
Контекст в 32 000 токенов не означает 32 000 слов.
Это примерно 32 000 фрагментов по правилам токенизатора данной модели.
Разные языки могут тратить разное число токенов на одну и ту же мысль. Английский, русский, испанский, китайский, программный код и математические записи могут разбиваться по-разному.
Поэтому подсчёт токенов поначалу кажется загадочным.
Модель читает то же предложение, что и ты, но математически может видеть совершенно другой набор кусочков.
Невидимая пунктуация AI-разговоров
Есть ещё один класс токенов, которых ты обычно не видишь.
Они называются специальными токенами.
Представь театральную пьесу без указаний, кто произносит реплику. Ты быстро запутаешься.
У AI-разговоров та же проблема.
Модели нужны невидимые метки, например:
Здесь начинаются системные инструкции.
Сейчас говорит пользователь.
Теперь должен ответить помощник.
Это сообщение закончено.
Один важный пример — токен конца последовательности (End-of-Sequence, EOS).
Представь специальный знак препинания, понятный модели, а не читателю.
Разные семейства моделей используют разные специальные токены. Приложения обычно вставляют их автоматически.
Ты можешь никогда их не увидеть.
Но место они всё равно занимают.
И это подводит нас к одному из самых непонятных моментов локального AI.
У модели есть стол. Но стол не бесконечен
У каждой языковой модели есть окно контекста.
Это объём информации, с которым она может активно работать одновременно.
Представь блестящего исследователя с огромной библиотекой, но всего одним письменным столом.
Книги в библиотеке — знания, полученные при обучении.
Стол — окно контекста.
Всё, что исследователь должен учесть прямо сейчас, нужно разместить на столе.
Твой вопрос занимает место.
История разговора занимает место.
Документ занимает место.
Программный код занимает место.
Инструкции занимают место.
Инструменты занимают место.
Для ответа тоже нужно место.
Поэтому модель с заявленными 32 000 токенов не предоставляет все 32 000 для твоего документа.
К моменту его появления ты уже мог потратить несколько тысяч.
Это особенно важно для AI-агентов: модель может получить системные инструкции, описания инструментов, загруженные навыки, результаты поиска, файлы, прошлые действия и историю разговора ещё до начала самой задачи.
Теоретическое окно контекста и полезное рабочее пространство контекста — разные вещи.
Это одна из причин, по которым мы создали Green Zone.
Модели нужен ещё и блокнот
Есть ещё один потребитель памяти с чудесно загадочным названием:
Кэш ключей и значений (Key-Value Cache, KV cache).
Название звучит как что-то спрятанное внутри сервера баз данных. Сама идея гораздо проще.
Представь длинный разговор.
После каждой новой фразы твой собеседник не начинает беседу сначала, заново мысленно пересчитывая все предыдущие предложения.
Он сохраняет рабочую информацию о том, что уже произошло.
Transformer делает нечто похожее.
Обрабатывая токены, он вычисляет внутреннюю информацию — ключи и значения. Чтобы не пересчитывать её для каждого нового токена, система временно сохраняет её в KV cache.
Веса можно представить как долговременные выученные знания модели, а KV cache — как временный блокнот текущего разговора.
Чем длиннее разговор, тем толще блокнот.
А блокнот занимает память.
Отсюда важная практическая проблема.
Модель может технически поместиться на видеокарте и оказаться почти бесполезной для твоей работы.
Допустим, на видеокарте 32 гигабайта видеопамяти (Video Random Access Memory, VRAM).
VRAM — быстрая память, которую использует графический процессор (Graphics Processing Unit, GPU).
Если веса занимают 27 гигабайт, очень хочется отпраздновать.
Двадцать семь меньше тридцати двух.
Победа!
Не обязательно.
На KV cache, буферы программы, временную рабочую память и всё остальное, что нужно во время работы модели, осталось около пяти гигабайт.
Это как купить диван, который помещается в гостиную, но не оставляет места, чтобы открыть дверь.
Диван поместился.
Комнатой пользоваться больше нельзя.
Квантование: учим большие числа путешествовать налегке
Здесь появляется квантование.
Веса модели — числа. Компьютеры могут хранить их с разной числовой точностью.
Более высокая точность сохраняет больше информации о каждом числе, но требует больше памяти.
Квантование использует меньше битов для хранения этих чисел.
Представь, что записываешь результаты измерений в лаборатории.
Можно написать:
3.14159265358979
А можно:
3.14
Вторая запись короче. Но часть точности потеряна.
Квантование применяет гораздо более сложный вариант этой идеи к весам нейросети.
Ты часто встретишь обозначения Q8, Q6, Q5 и Q4.
Q означает quantized — квантованный.
Число примерно указывает количество битов для представления весов.
Q8 использует примерно восьмибитное представление.
Q4 — примерно четырёхбитное.
Поэтому Q4 обычно требует заметно меньше памяти, чем Q8.
Это не значит, что восьмимиллиардная модель в Q4 превратилась в четырёхмиллиардную.
В ней по-прежнему около восьми миллиардов параметров.
Ты просто плотнее упаковал их числовое представление.
Есть компромисс.
Меньшая точность экономит память, но часть информации теряется.
К счастью, современные методы квантования нередко удивительно хорошо сохраняют качество. Хорошо подготовленная версия Q4 или Q5 может быть очень полезной и занимать значительно меньше памяти, чем шестнадцатибитная.
Можно встретить и 16-битный формат с плавающей точкой (FP16), и Brain Floating Point 16 (BF16).
Это форматы более высокой точности, часто используемые в современном AI.
Практический вопрос не в том:
У какого формата больше точность?
Полезнее спросить:
Какой формат даст достаточно хорошее качество и оставит достаточно памяти для моей работы?
Вот это гораздо лучший вопрос.
Откуда у Instruct-модели хорошие манеры
В названиях моделей есть подсказки.
Например:
Qwen 8B Instruct
Qwen — семейство модели.
8B — примерно восемь миллиардов параметров.
Instruct означает совсем другое.
После огромного начального обучения модель может довольно хорошо работать с языком, но оставаться неудобным собеседником.
Ты просишь:
Объясни гравитацию двенадцатилетнему ребёнку.
Обычную предварительно обученную модель не обязательно специально учили быть полезным помощником.
Поэтому разработчики проводят дополнительное обучение на примерах инструкций и желательных ответов.
Это называется дообучением на инструкциях.
Модель видит примеры вроде:
Пользователь: Кратко перескажи этот абзац.
А следом — полезный пересказ.
Или:
Пользователь: Напиши функцию на Python, которая сортирует эти данные.
А следом — подходящий код.
После достаточного количества примеров модель лучше усваивает схему:
Человек просит меня что-то сделать; я должна попытаться это выполнить.
Отсюда Instruct.
Это скорее описание воспитания, чем мера интеллекта.
Базовая модель ходила в школу.
Instruct-модель ещё прошла курсы этикета.
Дообучение: отправляем модель обратно учиться
В общем случае дообучение — fine-tuning — это продолжение обучения уже подготовленной модели для более специализированной задачи.
Представь человека с широким университетским образованием, который затем поступает в медицинский вуз.
Он не забывает читать и считать.
Он получает специальную подготовку.
Так и общую модель можно дообучить для программирования, медицины, финансов, поддержки клиентов, юридических текстов или определённого стиля общения.
Полное дообучение бывает дорогим: оно меняет очень много весов.
Более лёгкий метод — низкоранговая адаптация (Low-Rank Adaptation, LoRA) — позволяет адаптировать модель эффективнее, обучая сравнительно небольшие дополнительные компоненты.
LoRA можно представить не как переписывание энциклопедии, а как добавление тщательно подготовленных примечаний.
Основная книга остаётся почти неизменной.
Три семейства Transformer
Не каждый Transformer создан для одной и той же работы.
Одна большая категория — энкодеры.
Энкодер читает информацию и создаёт её числовое представление.
Известный пример — BERT от Google.
Энкодеры полезны для определения темы текста, поиска похожих документов, выделения имён или анализа эмоционального тона.
Есть и декодеры.
Декодеры генерируют новые токены.
Большинство разговорных моделей, которые люди запускают локально — Llama, Qwen, Mistral, Gemma и подобные, — преимущественно относятся к этому семейству.
Они хорошо отвечают, пишут, программируют и продолжают последовательности.
Наконец, существуют системы энкодер-декодер, также называемые sequence-to-sequence, или «последовательность в последовательность».
Одна часть читает входные данные. Другая создаёт выходные.
Примеры — T5 и BART.
Они оказались особенно полезны для перевода и краткого пересказа.
Чтобы пользоваться локальным AI, заучивать эти категории не нужно.
Но они объясняют, почему две модели с надписью Transformer могут вести себя совершенно по-разному.
У пикапа и болида «Формулы-1» есть двигатели.
Ты ведь не станешь выбирать между ними только по числу цилиндров.
Странная сила предсказания следующего токена
Вот, пожалуй, самый удивительный факт о больших языковых моделях.
В основе обучения многих генеративных моделей лежит задача, которая звучит почти до неловкости просто:
предсказывать, что будет дальше.
Ты пишешь:
Столица Франции — …
Модель назначает вероятности возможным следующим токенам.
У Парижа вероятность очень высокая.
У банана — хочется надеяться — очень низкая.
Модель выбирает токен.
Потом повторяет процесс.
Снова.
И снова.
Тысячи раз.
Из этого повторяющегося предсказания рождаются абзацы, программы, объяснения, переводы, стихи, доводы, шутки, а иногда — полная чепуха с уверенностью человека, который объясняет дорогу по городу, где никогда не бывал.
Последнее важно.
LLM — не машина истины.
Это машина предсказания.
Её задача — выдать правдоподобное продолжение, а не поклясться под присягой в истинности каждого предложения.
Поэтому модели могут галлюцинировать: выдавать убедительно звучащую, но ложную информацию.
Слово неидеальное, явление — вполне реальное.
Модель не обязательно «лжёт».
Она генерирует продолжение по выученным закономерностям, даже когда лежащий в основе факт неверен.
От чат-бота к агенту
Сама по себе языковая модель может только генерировать информацию.
AI-агент добавляет инструменты.
Вернёмся к исследователю за столом.
Без инструментов он отвечает только по памяти и по документам, которые ты положил перед ним.
Теперь дадим ему:
калькулятор,
поисковик,
доступ к файлам,
базу данных,
интерпретатор Python
и разрешение выполнять определённые действия.
Исследователь становится гораздо полезнее.
AI-агент устроен похожим образом.
LLM отвечает за работу с языком и принятие решений.
Обычные программы выполняют действия.
Нужно число из базы данных — модель запрашивает соответствующий инструмент.
Нужно посмотреть файл — запрашивает чтение файла.
Нужно посчитать — вызывает калькулятор вместо попытки изобразить его самостоятельно.
Это важно: иногда об агенте говорят так, словно сама модель волшебным образом получила новые силы.
Нет.
Ей дали инструменты.
Плотник с дрелью — тот же плотник.
Просто дрель меняет то, что он может сделать.
Локальный AI меняет вопросы
Когда ты пользуешься облачным сервисом, оборудование принадлежит кому-то другому.
Ты отправляешь запрос.
Удалённый дата-центр заботится о графических процессорах, памяти, охлаждении, блоках питания и ужасающем счёте за электричество.
При локальном запуске отношения меняются.
Теперь оборудование твоё.
Вопросы, которыми раньше занимались инженеры дата-центров, вдруг оказываются на твоём столе.
Сколько у меня VRAM?
Как велики веса модели?
Какое квантование выбрать?
Какой контекст я могу себе позволить?
Сколько памяти съест KV cache?
Могу ли я загрузить модель и оставить достаточно места для чего-нибудь полезного?
Сначала всё это выглядит как суп из букв.
GPU. VRAM. KV. Q4. Q8. FP16.
Но под сокращениями скрывается очень обычная задача:
Места ограниченное количество. Что ты собираешься в него поместить?
Именно эту задачу Green Zone помогает увидеть.
Разница между «поместилось» и «работает»
Представь двух людей, собирающих чемоданы в поездку.
Первый забивает чемодан одеждой до отказа.
С торжеством застёгивает молнию.
Победа?
Потом вспоминает про обувь, лекарства, зубную щётку и паспорт, который каким-то образом оказался на самом дне.
Второй намеренно оставляет немного места.
Технически в первом чемодане больше одежды.
Практически второй лучше подготовлен к поездке.
У локального AI та же проблема.
Можно загрузить самую большую модель в VRAM и поздравить себя: поместилась.
Но если для контекста и рабочего состояния почти не осталось памяти, ты мог собрать впечатляющую систему, которая с трудом выполняет задачу, ради которой её купили.
Поэтому выбор модели — не соревнование на самое большое число перед буквой B.
Полезная конфигурация — это баланс.
Возможности модели.
Квантование.
Контекст.
KV cache.
Инструменты.
Файлы.
История разговора.
Место для ответа.
И физическая память видеокарты.
Лучшая конфигурация — не обязательно самая большая модель, которую оборудование способно загрузить.
Это конфигурация, которая оставляет модели достаточно места, чтобы работать.
Когда понимаешь эту разницу, пугающий лес цифр на страницах загрузки моделей становится гораздо менее загадочным.
Ты больше не спрашиваешь:
Можно ли втиснуть эту модель в мою видеокарту?
Ты задаёшь вопрос, который действительно важен:
Если я помещу модель на видеокарту, сколько места останется, чтобы она могла думать, помнить разговор, использовать мои файлы и закончить работу?
В этот момент локальный AI перестаёт быть коллекцией таинственных характеристик и становится инженерной задачей, в которой способны разобраться обычные люди.
Источники и дальнейшее чтение
Перепечатка и использование
Опубликовано AI Model Green Zone.
Перепечатка разрешена только целиком, без сокращений и изменений, с указанием AI Model Green Zone и заметной активной ссылкой на оригинальную статью на нашем сайте.
Для переводов, сокращённых версий и переработок требуется отдельное разрешение.
Эти условия не ограничивают использование, разрешённое законом.
Ссылка на оригинал появится после настройки публичного адреса сайта.