Разберём весь путь: от текста к токенам, от токенов к вероятностям — и обратно к тексту. Плюс два продвинутых режима: размышление и мультимодальность. Всё можно потрогать руками.
Все демо на странице — симуляция: реальных запросов к модели нет, ответы и вероятности заложены заранее.
Прежде чем говорить про LLM, разберём слово «веса» на игрушечном примере. Задача: предсказывать цену квартиры по площади. Модель — прямая y = a·x + b, где a и b — это и есть веса: два числа, которые можно подкрутить. Попробуйте подобрать их руками, а потом посмотрите, как это происходит при обучении.
LLM — это большой классификтор. Модель снова и снова отвечает на вопрос: «какой кусочек текста будет следующим?» Нажмите «Прогнать цикл» — и проследите путь конкретной фразы через стадии генерации.
Токенизатор режет текст на фрагменты. Обычные слова — один токен, редкие — несколько кусочков. Введите текст и посмотрите, как он выглядит для модели.
На каждом шаге модель выдаёт распределение вероятностей по всему словарю, из него выбирается один токен, дописывается к контексту — и всё повторяется. Покрутите температуру: она управляет случайностью выбора. Запустите несколько раз — результаты могут быть разными.
Перед выбором токена модель выдаёт «сырые» оценки — логиты. Специальная формула превращает их в вероятности, а температура T — делитель внутри неё. Двигайте слайдер и смотрите, как меняется распределение.
Внутри трансформера каждый токен «опрашивает» все предыдущие: кто из вас важен, чтобы понять меня? Наведите курсор или коснитесь любого токена — линии покажут, куда и с какой силой направлено его внимание.
Толщина и яркость линии ≈ вес внимания. В настоящей модели таких «карт» тысячи. На практике из этого следует цена длинного контекста: каждый токен «опрашивает» все предыдущие, поэтому длинные документы требуют больше ресурсов (вычислений и памяти), а на очень длинных качество понимания деградирует.
Механизм тот же — предсказание токенов. Разница в том, какие токены генерируются: «думающая» модель сначала будто пишет решает задачу на бумаге (скрытые thinking-токены), а только потом озвучивает решение. Сравните два режима на одной задаче.
Ключевой момент: картинка и текст токенизируются раздельно и по-разному. Текст режет токенизатор по словарю, изображение — vision-энкодер на патчи. Только после этого оба потока склеиваются в одну последовательность — и дальше трансформер работает так же, как в разделе 03.
Каждое обращение к модели тарифицируется дважды: за input — все токены, которые вы отправили, и за output — токены, которые модель сгенерировала. И главное: модель не хранит состояние — вся история пересылается заново, увеличиваясь с каждой репликой. Проиграйте диалог из 5 ходов и посмотрите, как раздувается input — и как его срезает кэш.
Прежде чем предсказать хоть один новый токен, модель должна «прочитать» весь контекст: прогнать его через все слои и получить внутреннее представление. Это и есть дорогая часть input. Идея кэширования: сохранить эти уже вычисленные представления на сервере — и в следующий раз не пересчитывать, а просто загрузить.
Из механики раздела 03 следует неприятная вещь: модель всегда выбирает правдоподобное продолжение, а не истинное. Если знания нет, правдоподобное продолжение всё равно найдётся. Это и есть галлюцинация. Посмотрите, как можно уменьшить их число.
У модели нет памяти между вызовами: всё, что она «знает» о вашем разговоре, — это контекст, который пересылается ей каждый раз. И он ограничен. Когда диалог перерастает окно, старые сообщения вытесняются — модель их физически не видит. Проиграйте диалог и посмотрите, как теряется важный факт — а потом примените способы борьбы.
Контекст любого чата состоит из слоёв. Системное сообщение пишет разработчик приложения: оно лежит первым, задаёт роль, правила и границы. Промпт — ваш запрос. Для модели всё это просто токены, но слушать системное сообщение её учили сильнее. Ниже — конструктор: включайте элементы промпта и смотрите, как меняется ответ.
Параметры — те самые веса, которые настраивались при обучении; размер модели измеряют их количеством: 1B — миллиард, 70B — семьдесят миллиардов. Чтобы модель работала, все веса должны сидеть в памяти. Выберите размер и точность хранения — и посмотрите, на чём это запустится.
До сих пор мы молчаливо считали, что на каждый токен работают все веса модели. Такая архитектура называется dense («плотная»). Почти все современные флагманы устроены иначе — это MoE (Mixture of Experts — «смесь экспертов»): тяжёлая часть каждого слоя разбита на независимые блоки-«эксперты», а маленькая сеть-роутер выбирает для каждого токена лишь пару из них. Остальные эксперты этот токен просто не считают. Прогоните фразу и следите, кого выбирает роутер.