От GPT-1 до моделей рассуждения: что изменилось с каждым поколением для разработчиков
Проследите эволюцию семейства GPT от предварительной обучаемости в 2018 году до моделей для рассуждений, узнайте, какие идеи были добавлены каждым поколением, а также ознакомьтесь с функциями GPT-4o Vision и Structured Outputs от Python.
Источники: The GPT Timeline: How OpenAI Built the Brains of Modern AI
Каждый запрос к современной языковой модели через API основан на нескольких ключевых идеях, появлявшихся постепенно с каждым поколением: генеративная предварительная обучаемость, масштабируемость, обучение в контексте, согласование на основе обратной связи от людей, встроенная мультимодальность и дополнительные вычисления во время выполнения запроса. Понимание того, откуда происходит каждая идея, значительно упрощает понимание того, на что способна модель, почему она терпит неудачи и какие функции API следует использовать. В этом обзоре рассматривается эволюция семейства GPT от его зарождения в 2018 году до моделей, ориентированных на логическое мышление, с приведением в конце двух практических примеров на Python для GPT-4o.
До GPT: почему был важен Transformer
До примерно 2018 года большинство методов обработки естественного языка основывались на рекуррентных нейронных сетях и их варианте LSTM. Эти модели обрабатывали текст по одному токену за раз, что затрудняло параллелизацию обучения и приводило к тому, что информация из начала длинного текста утрачивалась до его конца.
В 2017 году в научной статье Google под названием «Attention Is All You Need» была представлена архитектура Transformer. В ней рекуррентность была заменена механизмом самообращения, позволяющим каждой позиции в последовательности напрямую обращаться ко всем остальным позициям. Компания OpenAI построила свою серию моделей GPT (Generative Pre-trained Transformer) на этой архитектуре, а в июне 2018 года опубликовала статью «Improving Language Understanding by Generative Pre-Training», которую в то время мало кто расценил как начало значительных изменений в области вычислений.
2018–2019: предварительное обучение и преимущества масштабирования
GPT-1: сначала предобучение, затем тонкая настройка
Первая модель по современным стандартам была довольно простой:
- 117 миллионов параметров
- Transformer с только декодером и 12 слоями
- обучалась на BooksCorpus, примерно 5 ГБ текста
Ее вклад заключался в двухэтапный подход. Сначала ненадзорное предобучение на необработанном тексте позволило модели освоить грамматику, фактические связи и структуру языка путем прогнозирования следующего токена. Затем небольшое количество надзорного тонкого настройки для конкретной задачи, такой как анализ настроений или классификация, было достаточно для достижения передовых результатов без необходимости разработки специальной архитектуры для каждой задачи.
GPT-2: появление поведения без обучения
Следующим шагом стало увеличение размера модели:
- 1,5 миллиарда параметров, примерно в десять раз больше, чем у GPT-1
При достаточном масштабе тонкая настройка стала необязательной для многих задач. GPT-2 демонстрировал обучение без примеров: запрос вроде «Перевести на французский» мог направить его на выполнение задачи, для которой он никогда прямо не обучался, исключительно потому, что продолжение данного текста логично подразумевало создание перевода.
GPT-2 также известен тем, как он был выпущен. OpenAI изначально сдерживала публикацию полной версии модели, выражая опасения по поводу возможного использования её для массового производства фейковых новостей и спама, и выпускала её поэтапно. Это решение спровоцировало длительные публичные дискуссии о безопасности ИИ и о том, следует ли публиковать мощные модели открыто.
2020–2022: обучение в контексте и согласование
GPT-3: примеры внутри запроса
GPT-3 сместил границу от исследований к коммерческому продукту:
- 175 миллиардов параметров, что в более чем сто раз больше, чем у GPT-2
- обучался на смеси отфильтрованного веб-текста, книг и Википедии, взятых из примерно 45 ТБ необработанных данных до фильтрации
Его ключевой способностью было масштабированное обучение с небольшим количеством примеров. Если в запрос указать два-три рабочих примера, модель будет продолжать эту закономерность, будь то написание кода, стихов или извлечение данных из неструктурированных источников. Это является обучением в контексте: модель адаптируется исключительно на основе запроса, без изменения весов.
Однако у базовой версии GPT-3 было серьезное ограничение. Она обучалась только на продолжении текста, а не на выполнении функций полезного помощника, поэтому часто выдумывала факты, отклонялась от темы или игнорировала поставленные задачи. Ниже приведена схема, иллюстрирующая внесенные позже исправления: согласование с помощью обратной связи от людей превращает модель, предсказывающую текст, в модель, выполняющую указания.
[Raw Pre-training] --> Predicts likely text continuations (often rambling or toxic)
│
▼ + RLHF (Human Feedback Alignment)
[InstructGPT Engine] --> Follows instructions safely and concisely
InstructGPT и ChatGPT: обучение на основе предпочтений людей
Решением стало использование метода усиленного обучения на основе обратной связи от людей (RLHF). Люди оценивали результаты работы модели, модель вознаграждений училась этим предпочтениям, после чего языковая модель оптимизировалась для генерации ответов, которые больше нравились людям. Результатом стали модели InstructGPT, которые гораздо более прямолинейно и эффективно выполняли указания.
30 ноября 2022 года OpenAI выпустила ChatGPT, основанный на серии GPT-3.5. Сочетание многократных диалогов с поведением, отрегулированным с помощью RLHF, привело к тому, что его назвали самым быстрорастущим потребительским приложением на тот момент — примерно за два месяца его использовали около 100 миллионов пользователей.
2023–2024: профессиональное рассуждение и мультимодальность
GPT-4: более сильные способности к рассуждению, изображения и инструменты
GPT-4, выпущенный в марте 2023 года, сместил акцент с способности к плавному формированию текста на решение академических и профессиональных задач с использованием логического мышления. OpenAI сообщил о результатах, таких как балл примерно на 90-м процентиле в симулированном экзамене Uniform Bar Exam и высокие оценки на многих экзаменах типа AP. Кроме того, была добавлена способность к пониманию изображений, а семейство GPT-4 получило функции, от которых разработчики сейчас зависят ежедневно: вывод в формате JSON, вызов функций и использование инструментов, таких как выполнение кода и поиск в Интернете.
Часто ошибочно приводятся два факта. OpenAI официально не публиковал архитектуру GPT-4; широко распространенное утверждение о том, что это модель типа Mixture of Experts, основано на неподтвержденных сообщениях. А окно контекста объемом 128 к токенам появилось с версией GPT-4 Turbo позже, в 2023 году, а не с первой версией от марта, которая предлагала гораздо более маленькие окна контекста.
GPT-4o: одна сеть для текста, визуальной информации и аудио
Ранее системы обработки голоса состояли из нескольких компонентов: одна модель транскрибировала речь, другая — генерировала текст, а отдельный движок синтезировал аудио. GPT-4o, где «o» означает «omni», обрабатывает текст, изображения и аудио в единой цепочке от начала до конца. Устранение необходимости передачи данных сократило задержку голосовой связи до примерно 200 мс и позволило модели воспринимать и формировать тон голоса, а не только слова.
Модели рассуждения: использование вычислительных ресурсов во время инференса
По мере того как становилось всё сложнее добиться улучшений за счёт более длинных процессов обучения, а качественные данные для обучения превращались в серьёзное ограничение, внимание сместилось на вычисления во время тестирования: позволение модели обдумать ответ перед его формулировкой. Разница проста: классический ответ GPT начинает генерироваться сразу по получении запроса, тогда как модель, способная к рассуждениям, сначала проходит внутренний алгоритм мышления, а уже затем даёт окончательный ответ.
Traditional GPT Response: Prompt ──> Immediate Word-by-Word Streaming
o-Series Response: Prompt ──> Internal Chain-of-Thought (Deliberation) ──> Final Answer
Серии o1 и o3 от OpenAI построены именно так. Вместо того чтобы сразу выбирать следующее слово, модель тратит дополнительные вычислительные ресурсы на изучение крайних случаев, проверку промежуточных шагов и отладку собственного кода, что особенно эффективно в математике, соревновательной программировании и задачах, требующих многократных логических операций. Ценой этого являются более высокая задержка и затраты, поэтому такие модели следует использовать только для задач, требующих тщательного обдумывания.
Работа с GPT-4o на Python
История объясняет, почему GPT-4o изменил подход к ежедневной разработке: вместо объединения модели видения, языковой модели и движка речи один вызов API может принимать смешанные данные. Два примера демонстрируют наиболее полезные функции для разработчиков.
Отправка изображения и текста в одном запросе
С помощью GPT-4o можно разместить текст и изображения рядом друг с другом в массиве content одного пользовательского сообщения. Изображение может быть передано в виде публичного URL или в формате с кодировкой Base64. В приведённом ниже примере используется официальный Python SDK, ключ API считывается из переменной окружения, модели задаётся задача проверить фото бетона на наличие трещин и оценить степень их серьёзности, ответ ограничивается количеством max_tokens, а затем выводится текст первого варианта ответа.
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
# Sending a visual inspection query directly to GPT-4o
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Analyze this image for architectural structural damage. Identify any cracks and rate severity."
},
{
"type": "image_url",
"image_url": {
"url": "https://upload.wikimedia.org/wikipedia/commons/e/e1/Concrete_crack_example.jpg"
},
},
],
}
],
max_tokens=500,
)
print(response.choices[0].message.content)
Содержимое представляет собой список типизированных элементов (text и image_url), что позволяет объединять несколько изображений и инструкций за один раз. Рассматривайте результат как материал для анализа; любые вопросы, связанные с безопасностью, всё равно требуют участия эксперта.
Получение JSON, соответствующего схеме, с использованием структурированных выходных данных
Раньше надежное извлечение JSON из модели подразумевало тщательную настройку запросов и защитный анализ с использованием регулярных выражений. Функция Structured Outputs решает эту проблему на этапе декодирования: процесс генерации ответа моделью ограничивается так, чтобы результат соответствовал предоставленной схеме JSON. Благодаря строгим схемам OpenAI утверждает, что это гарантирует их соблюдение, что является более надежным подходом, чем старый «режим JSON», который гарантировал лишь синтаксически корректный JSON.
В Python наиболее удобным инструментом является Pydantic. В примере определены модели Entity и ArticleAnalysis, включающие заголовок, краткое описание, оценку настроения в диапазоне от -1.0 до 1.0 и список сущностей; затем эта модель передается в качестве параметра response_format в помощник SDK parse. Помощник преобразует модель в схему JSON, отправляет её вместе с запросом и возвращает типизированный объект в поле message.parsed.
from openai import OpenAI
from pydantic import BaseModel, Field
from typing import List
client = OpenAI()
# Define the exact JSON schema required by your database
class Entity(BaseModel):
name: str
category: str = Field(description="Person, Organization, Location, or Date")
class ArticleAnalysis(BaseModel):
title: str
summary: str
sentiment_score: float = Field(description="Score between -1.0 and 1.0")
key_entities: List[Entity]
# Pass the schema directly into the completion request
completion = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are an automated intelligence parser."},
{"role": "user", "content": "OpenAI CEO Sam Altman announced new developer tooling in San Francisco today."}
],
response_format=ArticleAnalysis,
)
# Extract type-safe output directly as a Python object
result: ArticleAnalysis = completion.choices[0].message.parsed
print(f"Summary: {result.summary}")
print(f"Entities: {result.key_entities}")
Два практических замечания. При запуске этой функции вспомогательный компонент находился внутри client.beta, но более новые версии SDK также предоставляют его вне пространства имён beta, поэтому убедитесь, какую версию SDK использует ваш проект. Хотя структура данных гарантирована, значения — нет: оценка настроения будет числом, но то, является ли оно разумным числом, по-прежнему определяется моделью. Обрабатывайте отказы и проверяйте бизнес-правила так же, как и любой внешний ввод.
Семейство GPT в кратком обзоре
- GPT-1 (2018): 117 млн параметров; показал, что генеративная предварительная обучаемость в сочетании с лёгкой доработкой эффективна.
- GPT-2 (2019): 1,5 млрд параметров; возможность выполнения задач без предварительной обучаемости и поэтапный выпуск с учётом требований к безопасности.
- GPT-3 (2020): 175 млрд параметров; возможность обучения в реальном времени на больших объёмах данных.
Что означает эта эволюция для вашей технологической стековой архитектуры
- Только масштабирование больше не является ключевым фактором. Первоначальные скачки происходили за счет увеличения количества параметров (117 млн, затем 1,5 млрд, затем 175 млрд); последующий прогресс обусловлен также техниками настройки, такими как RLHF, мультимодальная интеграция и обдумывание результатов во время тестирования.
- Модели, переведённые из режима автодополнения в режим действий. Современные модели планируют действия, вызывают функции и координируют многоэтапные рабочие процессы с использованием инструментов, поэтому проектирование агентов сейчас является важной частью инженерных решений.
- Прогнозируемость — это функция, которую можно использовать. Функция структурированного вывода позволяет вставлять результаты работы модели в код с определённой структурой вместо парсинга свободного текста.
- Эффективность теперь соперничает с объёмом данных. Более компактные версии, такие как GPT-4o mini, и специализированные модели для рассуждений, зачастую превосходят крупнейшие модели по стоимости и времени выполнения задачи, поэтому следует выбирать модели в зависимости от конкретных задач, а не только по их общим характеристикам.
Разработка с использованием этих моделей всё чаще сводится к созданию систем из моделей, инструментов и схем, а не к отправке одного-единственного запроса.