Выбрать главу

Внутри статьи описывалась модель под названием GPT-3. Её главные характеристики были такими. Сто семьдесят пять миллиардов параметров. Девяносто шесть слоёв трансформера. Контекстное окно в две тысячи сорок восемь токенов. Обучена на массиве примерно из пятисот миллиардов слов, собранных из почищенного слепка Common Crawl, английской Википедии, нескольких сборников книг и веб-страниц. Стоимость обучения, по разным оценкам, от пяти до двенадцати миллионов долларов только на вычисления. Время обучения — несколько недель на тысячах видеокарт в облачной инфраструктуре Microsoft Azure.

Цифры впечатляли. Но впечатляли не они. Впечатляло то, что модель показывала результаты, не предусмотренные ни одной из теоретических работ по обучению нейронных сетей.

То, чего никто не ожидал

До GPT-3 в обработке естественного языка существовала очень устоявшаяся практика. Если у вас есть задача (скажем, классификация эмоциональной окраски твитов или ответы на вопросы по медицинским документам), вы берёте предобученную модель типа BERT или GPT-1, собираете несколько тысяч размеченных примеров вашей задачи, и дообучаете модель на этих примерах. Это называлось fine-tuning, и без этого шага никакая большая модель не была пригодна для практического применения.

GPT-3 предложил иную парадигму. Вместо того, чтобы менять веса модели под каждую конкретную задачу, нужно просто описать задачу в текстовом виде и подать на вход модели как обычный текст. Скажем, вы хотите классифицировать твит. Вы пишете в начале промпта: «Определи эмоциональную окраску твита: положительная, отрицательная или нейтральная». Дальше даёте два или три примера: твит и правильная метка. После этого даёте свой реальный твит и оставляете строку для ответа пустой. Модель видит этот текст, видит примеры, и сама догадывается, что нужно сделать. И в ответ выдаёт правильную метку.

Это поведение Том Браун и его команда назвали in-context learning, «обучение прямо в контексте». В отличие от классического обучения, никаких изменений в весах модели не происходит; задача формулируется и решается полностью в момент генерации.

В статье вводилось три режима использования. Zero-shot, когда модель получает только описание задачи без каких-либо примеров. One-shot, когда даётся один пример. Few-shot, когда даётся от двух до сотни примеров. Каждый следующий режим, как правило, работал лучше предыдущего. И на многих задачах few-shot GPT-3 уже подходил по качеству к специально дообученным под задачу BERT-овским моделям.

Это было поразительно. До GPT-3 общая мудрость отрасли гласила: одна модель не может одинаково хорошо решать много задач без специальной адаптации к каждой. После GPT-3 эта мудрость рассыпалась. Одна модель могла переводить с английского на французский, отвечать на вопросы из истории, складывать двузначные числа, придумывать стихи, писать SQL-запросы, исправлять опечатки в коде. Без переобучения. По одному и тому же набору весов.

Что особенно поразило: некоторые из этих способностей не показывались моделями меньшего размера. GPT-3 умел складывать двузначные числа с точностью больше восьмидесяти процентов; GPT-2 со своими полутора миллиардами параметров на той же задаче проваливался полностью. Это явление стало называться эмерджентностью: некоторые способности появлялись как бы из ниоткуда, когда модель достигала определённого размера, и не присутствовали в моделях меньшего размера ни в каком виде.

В научном сообществе эмерджентность вызывала противоречивые чувства. С одной стороны, было ясно, что это конкретное наблюдаемое явление. С другой стороны, никто не мог его объяснить. Самый честный комментарий на этот счёт дал тогдашний главный научный сотрудник OpenAI Илья Суцкевер. Он сказал в одном из публичных выступлений, что они и сами не понимают, почему это происходит; что у них есть только эмпирические данные, и эти данные говорят, что при определённых размерах в моделях появляется качественно новое поведение. Глубже этого никто пока не разобрался.

Закрытая бета и денежный поток

OpenAI приняла относительно той же модели решение, существенно отличающееся от того, как они себя вели с GPT-2.

Веса GPT-3 не были опубликованы в открытом доступе. Никаких staged release. Никаких возможностей скачать модель. Вместо этого OpenAI запустила платный API: пользователи могли отправлять запросы в виде HTTP-запросов на серверы OpenAI и получать ответы. За использование платили потокенно — по фиксированному тарифу за каждую тысячу токенов. Это была первая коммерческая монетизация большой языковой модели в истории.