Какие технологии/техники за этим стоят?

Модели больших языков (LLM). OpenAI создала ChatGPT, используя в качестве основы модели больших языков (LLM). Компания была пионером в обнаружении новых возможностей LLM и улучшении их с помощью подсказок. Однако у этого подхода есть ограничения, поскольку LLM полагаются на поверхностное статистическое угадывание следующего слова и не имеют модели мира. В результате они иногда могут допускать фактические ошибки и лишены здравого смысла.

Выравнивание — важнейший аспект дизайна ChatGPT. Это относится к процессу согласования результатов LLM с человеческими предпочтениями. Это достигается с помощью Обучения с подкреплением на основе отзывов людей (RLHF).

Как все это работает вместе во время обучения?

Во время обучения предварительно обученный LLM (например, GPT-4) генерирует одно или несколько предложений на основе подсказки, а люди-оценщики ранжируют результат, тем самым обучая модель вознаграждения (отдельный меньший LLM). Алгоритм оптимизации проксимальной политики (PPO) затем использует модель вознаграждения, чтобы обучить LLM генерировать больше предложений, ориентированных на человека.

Изобрел ли OpenAI какие-либо новые методы или просто упаковал уже известные вещи?

OpenAI и DeepMind добились значительных успехов в интеграции языковых моделей (LLM) с обучением с подкреплением (RLHF), развитии крупномасштабных функций LLM и разработке концепции выравнивания. Технология, лежащая в основе LLM, таких как Google Transformers и BERT (первая LLM с самостоятельным наблюдением), генеративный ИИ, а также OpenAI GPT, основана на десятилетиях исследований ИИ, в первую очередь на работе Хохрайтера и Шмидхубера 1997 года по долгосрочным краткосрочным операциям. память (LSTM) сети. LLM были разработаны как альтернатива параллельным вычислениям LSTM, способная выполняться на современном массово-параллельном оборудовании, таком как графические процессоры и Google TPU.

chatGPT для пользовательского домена своими руками? Зачем это делать

Мы рассматриваем варианты использования, аналогичные тем, которые использует Morgan Stanley с GPT-4.

Начиная с прошлого года компания начала исследовать, как использовать свой интеллектуальный капитал с возможностями встраивания и поиска GPT — сначала GPT-3, а теперь GPT-4. Модель будет работать с внутренним чат-ботом, который выполняет всесторонний поиск контента по управлению активами и «эффективно раскрывает совокупные знания Morgan Stanley Wealth Management».

Текущий предел контекстного окна chatGPT составляет 4 КБ (8 КБ для GPT-4).

Это означает, что невозможно загрузить, например, более нескольких страниц налогового кодекса и получить качественные ответы. По сути, ChatGPT и аналогичные языковые модели могут эффективно справляться со всеми традиционными задачами НЛП, включая контроль качества, обобщение и анализ настроений. Этот подход очень продуктивен и его гораздо проще реализовать, поскольку он устраняет необходимость в предметно-ориентированных знаниях в таких областях, как лингвистика или финансы.

LLM - это не все, что вам нужно

Запоминание фактов исключительно на основе весов LLM субоптимально. Вместо этого следует использовать сочетание поиска фактов и обучения LLM. Поиск информации может быть введен во время предварительной подготовки (РЕТРО), тонкой настройки или логического вывода.

Функциональная система контроля качества/чат-бота в пользовательском домене, вероятно, будет состоять из нескольких компонентов, включая LLM достаточного размера (например, предварительно обученные модели, такие как LlaMA², или предварительно обученный пользовательский LLM), модуль поиска информации (векторная база данных). , а также параметры точной настройки (например, классическая точная настройка на пользовательском домене или подходы на основе обучения с подкреплением, такие как RLHF¹ ).

Для пользовательского домена со значительным объемом текстовых данных, которые невозможно полностью пометить, важно решить, где и как их интегрировать. Потенциальный сценарий может включать использование универсального базового LLM и его тонкую настройку в процентах от помеченных данных пользовательского домена. Информационный поиск и LLM можно использовать для оставшихся немаркированных данных во время логического вывода.

Нужно ли и возможно ли (технически и экономически) делать своими руками?

chatGPT — это проприетарный API. Вы можете не захотеть раскрывать свои проприетарные данные для OpenAI API и, возможно, неявно для широкой публики, а также избегать ограничений, налагаемых Open AI².

Пока это дорогой и сложный продукт

По оценкам Горли, даже проект, требующий в несколько раз больше обучения, будет стоить несколько миллионов долларов, что вполне доступно для хорошо финансируемого стартапа или крупной технологической компании. Это волшебный прорыв, — говорит Гурли о тонкой настройке, которую OpenAI проделал с ChatGPT. Но это не то, что нельзя воспроизвести. Предпринимаются усилия с открытым исходным кодом для создания альтернатив.

Мы настоятельно рекомендуем создать учетную запись OpenAI и ознакомиться с API OpenAI, используя общие данные, прежде чем запускать проект репликации chatGPT для личного домена, поскольку он содержит множество соответствующей информации.

chatGPT в двух словах

GPT — это авторегрессионный трансформаторный декодер. Доступ к модели GPT-2 (GPT-3 по сути является GPT-2 со 175 миллиардами параметров) так же просто, как:

!pip install transformers
from transformers import GPT2Model, GPT2Config
config = GPT2Config(
    vocab_size=50257,
    n_positions=1024,
    n_ctx=1024,
    n_embd=4096,
    n_layer=8,
    n_head=32,
    resid_pdrop=0.1,
    embd_pdrop=0.1,
    attn_pdrop=0.1,
    layer_norm_epsilon=1e-5,
    initializer_range=0.02
)
model = GPT2Model(config=config)

Следующим шагом будет тонкая настройка выхода GPT2 с использованием RLHF через TRL.

!pip install trl
from transformers import AutoTokenizer
from trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead, create_reference_model
from trl.core import respond_to_batch

# get models
model = AutoModelForCausalLMWithValueHead.from_pretrained('gpt2')
model_ref = create_reference_model(model)

tokenizer = AutoTokenizer.from_pretrained('gpt2')

# initialize trainer
ppo_config = PPOConfig(
    batch_size=1,
)

# encode a query
query_txt = "This morning I went to the "
query_tensor = tokenizer.encode(query_txt, return_tensors="pt")

# get model response
response_tensor  = respond_to_batch(model_ref, query_tensor)

# create a ppo trainer
ppo_trainer = PPOTrainer(ppo_config, model, model_ref, tokenizer)

# define a reward for response
# (this could be any reward such as human feedback or output from another model)
reward = [torch.tensor(1.0)]
tokenizer.add_special_tokens({'pad_token': '[PAD]'})
# train model for one step with ppo
train_stats = ppo_trainer.step([query_tensor[0]], [response_tensor[0]], reward)

¹Джон Шульман (OpenAI): RLHF — это чисто оптимизация при одобрении человека… мы не всегда знаем правильный ответ и, вероятно, ошибаемся во многих вещах… мы просто оптимизируете то, что звучит убедительно и правильно.

² API OpenAI все еще может пригодиться на этапе прототипирования при принятии решения о размере и типе модели. LlaMA — это первый высокопроизводительный LLM, который вызвал лавину проектов, построенных на его основе. LlaMA имеет лицензию на некоммерческое использование.