Что такое большая языковая модель? Как работают программы LLM, объяснено без шумихи
Поймите, что на самом деле происходит, когда ИИ пишет текст. Узнайте о токенах, вложениях и внимании простым языком, запустите крошечный предсказатель следующего слова и поймите, почему эти модели могут быть блестящими и неправильными одновременно.
- большая языковая модель – это нейронная сеть, обученная на огромных объемах текста и предсказывающая, что будет дальше.
- Он работает с токенами и использует внимание, чтобы определить, какие более ранние токены имеют наибольшее значение.
- Он генерирует ответ по одному токену за раз, выбирая из набора вероятностей.
- Это может звучать уверенно, но при этом быть неверным, поэтому важные выходные данные требуют проверки.
Инструменты, которые общаются, обобщают и пишут код, кажутся почти волшебными, пока вы не увидите механизм, скрытый за ними. большая языковая модель, или LLM, по своей сути представляет собой очень сложную систему прогнозирования следующего фрагмента текста. Одна эта идея объясняет, в чем эти инструменты хороши, и почему они терпят неудачу.
В этом руководстве объясняются основные понятия без каких-либо математических вычислений, а затем создается крошечный предсказатель следующего слова, чтобы конкретизировать идею. Мы запустили этот код на Python 3.13, и в результате этого запуска были получены выходные данные. Это простая счетная игрушка, а не нейронная сеть, а настоящие LLM гораздо более способны. Мы также избегаем приводить цифры по конкретным моделям, поскольку они быстро меняются.
Что такое большая языковая модель?
LLM — это тип искусственного интеллекта, обученный понимать и генерировать человеческий язык. Разберем название по одному слову:
- Большой: он имеет огромное количество настраиваемых внутренних значений, называемых параметрами, и обучается на огромном объеме текста.
- Язык: работает с текстом, включая естественный язык и код.
- Модель: это математическая система, которая извлекает закономерности из данных и использует их для прогнозирования.
Модели — это двигатель, а такие продукты, как чат-ассистенты, — это машина, построенная на их основе. В продукт часто добавляют пользовательский интерфейс, системы безопасности, поиск и другие инструменты.
Основная идея: предсказать, что будет дальше
Вы делаете это сами. Если вы читаете «столица Франции», ваш ум сразу же предлагает «Париж». LLM делает нечто похожее, но в гораздо большем масштабе. Учитывая некоторый текст, он вычисляет, насколько вероятен каждый возможный следующий токен, выбирает один, добавляет его в текст и повторяет.
База данных сохраненных ответов не ищется. Модель хранит закономерности, изученные во время обучения, в виде чисел. Когда эти закономерности совпадают с истиной, вы получаете правильный ответ. Даже если это не так, вы все равно можете получить беглый ответ, и это важное отличие от поисковой системы.
Крошечная рабочая демо-версия
Чтобы увидеть предсказание следующего токена в простейшей форме, этот скрипт подсчитывает, какое слово следует за каким в крошечном тексте. Затем он генерирует новый текст на основе этих значений. Статистики называют это моделью биграммы.
import random
from collections import Counter, defaultdict
TEXT = """the cat sat on the mat . the dog sat on the rug .
the cat saw the dog . the dog saw the cat ."""
tokens = TEXT.split()
follows = defaultdict(Counter)
for current, following in zip(tokens, tokens[1:]):
follows[current][following] += 1
def probabilities(word):
counts = follows[word]
total = sum(counts.values())
return {w: round(n / total, 2) for w, n in counts.most_common()}
print(probabilities("the"))
print(probabilities("sat"))
# {'cat': 0.38, 'dog': 0.38, 'mat': 0.12, 'rug': 0.12}
# {'on': 1.0}
Этот результат представляет собой распределение вероятностей. После «the» модель, скорее всего, рассматривает «кошку» и «собаку». Теперь мы генерируем текст путем многократной выборки из этих вероятностей:
def generate(start, length, seed):
rng = random.Random(seed)
words = [start]
for _ in range(length):
counts = follows[words[-1]]
words.append(rng.choices(list(counts), weights=counts.values())[0])
return " ".join(words)
print(generate("the", 6, seed=1))
print(generate("the", 6, seed=2))
print(generate("the", 6, seed=3))
# the cat . the cat saw the
# the rug . the cat . the
# the cat saw the dog . the
Обратите внимание на три вещи. Один и тот же старт может давать разный текст, поскольку выбор случайный. Выходные данные напоминают обучающие данные, даже для последовательностей, которые никогда в них не появлялись. И понимания у него вообще нет, поэтому «коврик. кот» читается как брехня.
Спросите его о слове, которого он никогда не видел, и ему нечего предложить: follows["elephant"] пусто. Наша игрушка смотрит только на одно предыдущее слово. Огромный скачок в реальных программах LLM происходит благодаря рассмотрению длинных отрезков контекста и обучению на гораздо большем количестве данных с использованием нейронной сети, а не простого подсчета.
Токены: как читается модель
LLM не читают целые слова, как мы. Текст сначала разбивается на лексемы, которыми может быть слово, часть слова или знак препинания. Каждый токен соответствует числу, и модель полностью работает с числами.
Токены имеют значение на практике по двум причинам. Использование размещенных моделей обычно оценивается в токенах, и каждая модель имеет ограничение на количество одновременно обрабатываемых моделей. Токенизация также объясняет некоторые известные странности поведения. Поскольку модели видят фрагменты, а не буквы, такие задачи, как подсчет букв в слове, традиционно оказывались для них на удивление трудными.
Вложения: значение в виде чисел
Каждый токен превращается в вложение, длинный список чисел, который помещает его в своего рода смысловое пространство. Связанные понятия оказываются близко друг к другу, поэтому «кот» и «котенок» занимают соседние позиции, а «кошка» и «счет» — нет.
Та же идея лежит в основе семантического поиска, при котором вы находите документы по значению, а не по точным словам. Наше руководство по векторным базам данных описывает это использование.
Внимание и трансформатор
Большинство современных LLM основаны на архитектуре трансформатора, представленной исследователями Google в статье 2017 года «Внимание — это все, что вам нужно». Его ключевой механизм — самообслуживание.
Рассмотрим такое предложение: «Трофей не поместился в чемодан, потому что был слишком большим». Что означает «оно»? Вы знаете, это означает трофей. Внимание позволяет модели взвешивать каждый предыдущий токен при обработке каждого нового, поэтому она может связать «его» с наиболее релевантными словами, даже если они находятся далеко друг от друга.
Более ранние подходы обрабатывали текст шаг за шагом и имели тенденцию терять след отдаленных слов. Трансформаторы вместе просматривают контекст и могут выполнять большую часть этой работы параллельно на специализированном оборудовании, что делает обучение на таких больших объемах текста практичным.
Как обучают LLM
| Этап | Что происходит |
|---|---|
| Сбор данных | Большие объемы текста собираются и очищаются |
| Предварительная подготовка | Модель неоднократно прогнозирует следующий токен, и ее параметры корректируются всякий раз, когда он оказывается неправильным. |
| Тонкая настройка | Он учится на примерах полезных ответов, а отзывы людей часто используются для ранжирования ответов. |
| Оценка | Команды проверяют его на качество, безопасность и случаи сбоев. |
Предварительное обучение дает модели широкие языковые способности, но она может просто продолжить ваш текст, а не ответить на него. Более поздние стадии превращают его в полезного помощника. Обучение больших моделей требует значительных вычислительных мощностей и стоит дорого. Использование готовой модели, известной как вывод, обходится гораздо дешевле в расчете на один запрос.
Как он генерирует текст
- Ваше приглашение разбивается на токены и преобразуется во встраивания.
- Сеть обрабатывает их, используя внимание, чтобы связать их друг с другом.
- Он выводит вероятность для каждого возможного следующего токена.
- Один токен выбирается и добавляется в контекст.
- Шаги 2–4 повторяются до тех пор, пока не будет достигнута остановка.
Вот почему ответы обычно появляются слово за словом при потоковой передаче. Текст буквально создается последовательно. Температура определяет, насколько смелым будет шаг 4: низкие значения отдают предпочтение наиболее вероятным токенам, а более высокие значения обеспечивают большее разнообразие.
Совет. Для извлечения, классификации и других повторяющихся задач используйте низкую температуру там, где это возможно. Для мозгового штурма может оказаться полезным более высокое значение. Несмотря на это, низкое значение не гарантирует каждый раз одинаковые ответы.
Условия, с которыми вы встретитесь
| Срок | Значение |
|---|---|
| Подскажите | Ввод, который вы даете модели |
| Контекстное окно | Максимальное количество токенов, которые он может рассматривать одновременно |
| Параметры | Внутренние ценности, усвоенные во время обучения |
| Вывод | Запуск обученной модели для получения результатов |
| Галлюцинация | Уверенный вывод, который является ложным |
| Прекращение знаний | Момент, после которого заканчиваются обучающие данные |
| ТРЯПКА | Получение документов для придания модели дополнительного контекста |
| Модель с открытым весом | Модель, параметры которой вы можете скачать и запустить самостоятельно |
Ограничения, которые вы должны знать
- Галлюцинации. Модель может придумывать факты, цитаты или кодировать функции. Поскольку ложные утверждения создают правдоподобный текст, они могут выглядеть вполне правдоподобными.
- Ограничение знаний. Если продукт не подключает его к поиску или другим инструментам, он может не знать о недавних событиях.
- Ограниченный контекст. Если разговор выходит за рамки контекстного окна, более ранние подробности могут быть удалены или обобщены. Модели также не запоминают автоматически прошлые чаты, если только продукт не добавляет эту функцию.
- Смещение. Данные обучения отражают человеческие предубеждения, и они могут проявляться в результатах.
- Непоследовательность. На один и тот же вопрос могут быть разные ответы, что важно, когда вы создаете программное обеспечение на основе одного и того же.
- Угрозы безопасности. Скрытые инструкции в тексте могут манипулировать моделью. Эта проблема известна как быстрое внедрение.
Правильное использование LLM
Относитесь к LLM как к быстрому и способному помощнику, чья работа нуждается в проверке. Несколько привычек имеют большое значение:
- Будьте конкретны. Четкие инструкции, контекст и примеры дают лучшие результаты. Наше руководство по оперативному проектированию показывает, как это сделать.
- Предоставьте факты. Если ответы должны быть получены из ваших собственных документов, используйте RAG, а не полагайтесь на память.
- Проверяйте то, что важно. Сверяйте цифры, цитаты, юридические или медицинские утверждения с надежными источниками.
- Протестируйте сгенерированный код. Запустите его и напишите для него тесты, как если бы вы делали это для своего коллеги. Наше руководство по инструментам проверки кода AI содержит некоторую помощь.
- Защитите конфиденциальные данные. Прежде чем делиться конфиденциальной информацией с помощью размещенного инструмента, ознакомьтесь с правилами вашей организации.
Если вы решаете, как настроить модель для своей работы, наше сравнение RAG, точной настройки и быстрого проектирования поможет вам сделать выбор.
Итоги
LLM — это предсказатель следующего токена, обученный в необычайном масштабе, и он более полезен и более подвержен ошибкам, чем предполагает это описание. Помня об этом механизме, вы сможете эффективно его использовать: он богат языком и шаблонами и требует вашего контроля над фактами. Чтобы конкретизировать ситуацию, запустите небольшой скрипт, приведенный выше, со своим текстом, затем попробуйте несколько раз выполнить одно и то же приглашение в реальном помощнике и сравните ответы.
Часто задаваемые вопросы
Что такое большая языковая модель простыми словами?
Это система искусственного интеллекта, обученная на огромных объемах текста, чтобы предсказывать, что будет дальше. Повторяя это предсказание, он может отвечать на вопросы, писать и подводить итоги.
В чем разница между AI и LLM?
ИИ — это широкая область создания интеллектуальных систем. LLM — это особый тип модели ИИ, ориентированный на обработку и генерацию языка.
Понимают ли LLM, что говорят?
Это обсуждается. Они улавливают богатые смысловые схемы и могут решать многие проблемы, но они не познают мир и могут потерпеть неудачу так, как не стал бы человек.
Почему LLM все выдумывают?
Они генерируют вероятный текст, а не извлекают проверенные факты. Когда шаблоны указывают на правдоподобный, но ложный ответ, модель может сформулировать его с очевидной уверенностью.
Что такое токен в LLM?
Токен — это фрагмент текста, который обрабатывает модель, например слово, часть слова или знак пунктуации. Лимиты и цены часто измеряются в токенах.
Продолжайте учиться
Нужна помощь с тестированием, WordPress или SEO?
Мы помогаем командам выпускать лучшее программное обеспечение и развивать свои сайты. Расскажите нам, над чем вы работаете, и мы предложим четкий следующий шаг.
Больше руководств по тестирование, искусственный интеллект и современные разработки
Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.
Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить
Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…
Читать статью →DevOpsОбъяснение переменных среды: файлы .env, секреты и правильно выполненная конфигурация
Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…
Читать статью →Разработка ПООбъяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429
Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…
Читать статью →Автоматизация тестированияИздевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут
Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …
Читать статью →Тестирование ПООбъяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%
Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…
Читать статью →Базы данных и SQLDELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них
Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…
Читать статью →Базы данных и SQLОбъяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами
Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…
Читать статью →Разработка ПОИнтерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора
Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…
Читать статью →Разработка ПООбъяснение Python *args и **kwargs: гибкие функции с понятными примерами
Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…
Читать статью →Разработка ПОЛямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать
Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …
Читать статью →Искусственный интеллектЧто такое ИИ-агенты? Как они работают: можно запустить простой цикл агента
Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…
Читать статью →DevOpsМониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками
Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…
Читать статью →DevOpsDocker Volumes против Bind Mounts: правильное сохранение данных контейнера
Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…
Читать статью →Автоматизация тестированияTDD против BDD: ключевые различия, одна функция, созданная для обоих способов, и когда использовать каждый
TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…
Читать статью →Тестирование ПОПользовательское приемочное тестирование (UAT): процесс, контрольный список и реальные примеры
Приемочное тестирование пользователей объяснило: кто его проводит, чем оно отличается от контроля качества, семиэтапный процесс, шаблон тестового сц…
Читать статью →Базы данных и SQLОбъяснение значений NULL в SQL: IS NULL, COALESCE, NULLIF и ловушки, которых следует избегать
Значения SQL NULL объяснены с помощью запросов, которые мы выполнили: трехзначная логика, IS NULL, COALESCE, NULLIF, как агрегаты, соединения и сорт…
Читать статью →Базы данных и SQLОператор SQL CASE WHEN: синтаксис, реальные примеры и распространенные ошибки
SQL CASE WHEN объяснен с помощью запросов, которые мы выполняли: простые формы и формы для поиска, порядок условий, повороты с помощью SUM, трюки CO…
Читать статью →Разработка ПОЧто такое JWT? Веб-токены JSON, объясненные на рабочем примере
Что такое JWT? Объяснение JSON Web Tokens: три части: токен, созданный и измененный в коде, который мы запускали, JWT и сеансы, хранилище, токены об…
Читать статью →Разработка ПООбъяснение цикла событий JavaScript: стек вызовов, микрозадачи и таймеры с примерами
Цикл событий JavaScript объясняется с помощью кода, который мы запускали: стек вызовов, очереди задач и микрозадач, почему setTimeout 0 не является …
Читать статью →Разработка ПОГенераторы Python и объяснение доходности: экономьте память с помощью реальных примеров
Генераторы Python и доходность, объясненные с помощью кода, который мы запускали: как они приостанавливаются и возобновляются, измеряют экономию пам…
Читать статью →Искусственный интеллектЧто такое вложения? Простое объяснение векторов и косинусного сходства
Что такое вложения? Простое руководство по векторам, косинусному подобию и семантическому поиску с небольшим примером, который мы использовали, общи…
Читать статью →DevOpsСине-зеленое и канареечное развертывание: различия, компромиссы и как выбрать
Объяснение сине-зеленого и канареечного развертывания: как каждый из них работает, стоимость, риски и откат, стабильное группирование пользователей,…
Читать статью →Автоматизация тестированияНенадежные тесты: что их вызывает и как их исправить навсегда
Ненадежные тесты объясняются на демонстрациях, которые мы запускали: основные причины, способы подтверждения и диагностики, правильные исправления в…
Читать статью →Тестирование ПОНагрузочное тестирование и стресс-тестирование: различия, метрики и примеры k6
Объяснение нагрузочного и стресс-тестирования: что доказывает каждое из них, тесты на всплески и выдержки, важные метрики, почему средние значения в…
Читать статью →Тестирование ПОТестовый пример и тестовый сценарий: ключевые различия, примеры и когда использовать каждый
Объяснение тестового случая и тестового сценария: четкие определения, параллельная таблица, одна функция сброса пароля, взятая из сценариев в случаи…
Читать статью →Базы данных и SQLОптимизация SQL-запросов: чтение планов выполнения и исправление медленных запросов с указанием времени
Оптимизация SQL-запросов проверена на миллионе строк: читайте планы выполнения, добавляйте правильные индексы, исправляйте неразмещаемые фильтры, ис…
Читать статью →Базы данных и SQLSQL UNION против UNION ALL: различия, примеры и проверка производительности
SQL UNION и UNION ALL объяснены с помощью запросов, которые мы выполнили: дубликаты, правила, которым следуют оба, реальная ошибка данных, измеренна…
Читать статью →Разработка ПОУчебное пособие по API JavaScript Fetch: GET, POST, обработка ошибок и тайм-ауты
Учебное пособие по API JavaScript Fetch, протестированное на локальном сервере: GET и POST, почему не выдается ошибка 404, многоразовый помощник, ст…
Читать статью →Разработка ПООбработка файлов Python: чтение, запись, CSV, JSON и pathlib с примерами
Обработка файлов Python объясняется с помощью кода, который мы запускали: открытые режимы, чтение больших файлов, CSV, JSON, pathlib, двоичные файлы…
Читать статью →Разработка ПОКлассы и объекты Python: учебник ООП с реальными примерами
Классы и объекты Python, объясненные с помощью кода, который мы запускали: __init__, методы, атрибуты класса и экземпляра, наследование, свойства, м…
Читать статью →Искусственный интеллектЧто такое большая языковая модель? Как работают LLM, объяснено без шумихи
Что такое большая языковая модель? LLM объясняется простым языком: токены, встраивания, внимание, обучение, температурные и контекстные окна, крошеч…
Читать статью →DevOpsКоманды Linux для начинающих: основное руководство по терминалу с примерами
Команды Linux для начинающих, сгруппированные по задачам: навигация, файлы, просмотр журналов, grep, каналы, разрешения, процессы и архивы, с практи…
Читать статью →Автоматизация тестированияSelenium vs Playwright: ключевые различия, сравнение кода и что выбрать
Сравнение Selenium и Playwright: архитектура, ожидание, поддержка браузера и языка, отладка, одинаковый тест в обоих инструментах, советы по миграци…
Читать статью →Тестирование ПОРазделение эквивалентности: метод проектирования тестов, объясненный на рабочих примерах
Объяснение эквивалентного разделения: как найти действительные и недействительные разделы, рабочие примеры для возрастов, паролей и купонов, проведе…
Читать статью →Тестирование ПОСерьезность и приоритет в тестировании программного обеспечения: различия, матрица и реальные примеры
Объяснение серьезности и приоритета при тестировании программного обеспечения: четкие определения, четырехсторонняя матрица с примерами, шкалы уровн…
Читать статью →Базы данных и SQLУчебное пособие по подзапросам SQL: типы, коррелирующие подзапросы и EXISTS с примерами
Руководство по подзапросам SQL с выполненными нами запросами: скалярные подзапросы, IN, FROM и SELECT, коррелированные подзапросы, EXISTS, ловушка N…
Читать статью →Базы данных и SQLОбъяснение транзакций SQL и ACID: COMMIT, ROLLBACK и уровни изоляции
Транзакции SQL и ACID, объясненные с помощью банковского перевода, который мы выполнили: COMMIT, ROLLBACK, точки сохранения, блокировки, уровни изол…
Читать статью →Разработка ПОGit merge vs rebase: отличия, примеры и когда что использовать
Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.
Читать статью →Разработка ПОГенераторы списков в Python: синтаксис, примеры и когда их избегать
Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.
Читать статью →Базы данных и SQLSQL JOIN: объяснение с примерами (Inner, Left, Right, Full)
Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…
Читать статью →