Головна / Статті

Від GPT-1 до моделей міркування: що змінилося в кожному поколінні для розробників

Простежіть еволюцію родини GPT від попереднього навчання 2018 року до моделей для міркувань, дізнайтеся, які ідеї додала кожна версія, а також познайомтеся з функціями GPT-4o vision та Structured Outputs від Python.

Видавець: REACTAPP.TOP10 хв читання2213 слів

Джерела: 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: з’являється поведінка типу „zero-shot“

Наступний крок стосувався переважно розміру:

  • 1,5 мільярда параметрів, приблизно в десять разів більше, ніж у GPT-1
  • навчений на WebText, приблизно 8 мільйонів веб-сторінок або 40 ГБ тексту
  • З достатньою масштабністю доробка параметрів стала необов’язковою для багатьох завдань. 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, походить з непідтверджених даних. А вікно контексту на 128k токенів з’явилося у версії 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 з моделі раніше вимагало ретельного формулювання запитів та обережної обробки за допомогою регулярних виразів. Структуровані результати вирішують цю проблему на етапі декодування: процес генерації моделлю стримується так, щоб результат обов’язково відповідав наданій схемі JSON. За допомогою суворих схем OpenAI стверджує, що це гарантує їх дотримання, що є кращим, ніж у старішому „режимі JSON“, який гарантував лише синтаксично коректний JSON.

    У Python найзручнішим інструментом є Pydantic. У прикладі визначаються моделі Entity та ArticleAnalysis, які містять заголовок, резюме, оцінку настрою в діапазоні від -1,0 до 1,0 та список ентитетів; потім ця класифікація передається як response_format до функції-допоміжника parse SDK. Цей допоміжник перетворює клас на схему 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 млрд параметрів; можливість навчання в межах контексту та обробки даних у великих масштабах.
  • InstructGPT та ChatGPT (2022): метод RLHF дозволив перетворити модель для прогнозування тексту на помічника.
  • GPT-4 (2023): міркування на професійному рівні, обробка зображень та використання інструментів.
  • GPT-4o (2024): єдина мережа для обробки тексту, зорової та аудіо інформації з низькою затримкою передачі голосу.
  • o1 та o3: моделі міркувань, які жертвують часом обробки даних заради точності при розв’язанні складних задач.
  • Що означає цей розвиток для вашого стеку

    • Лише масштабування більше не є ключовим фактором. Початковий прогрес досягався завдяки кількості параметрів (117 млн, потім 1,5 млрд, а потім 175 млрд); подальший розвиток залежав також від технік налаштування, таких як RLHF, багатомодальна уніфікація та обмірковування під час тестування.
    • Моделі, які були переміщені з функції автодоповнення до функції виконання дій. Сучасні моделі планують, викликають функції та координують багатокрокові робочі процеси інструментів, тому проектування агентів зараз є основною проблемою інженерії.
    • Прогнозованість — це функція, яку можна використовувати. Функція Structured Outputs дозволяє вставляти результати роботи моделі у шаблонований код із фіксованою структурою замість парсингу вільного тексту.
    • Ефективність тепер конкурує з розміром моделей. Менші версії, такі як GPT-4o mini, та моделі для цілеспрямованого міркування, часто перевершують найбільші моделі за витратами та часом виконання для певного завдання, тому обирайте їх залежно від конкретних завдань, а не лише за загальними характеристиками.

    Створення програм з використанням цих моделей все більше полягає у складанні систем з моделей, інструментів та схем, а не у надсиланні одного запиту.