Как настроить и оптимизировать помощников GPT с помощью OpenAI
5 мая 2023 г.В последнее время GPT вызывает много шума. Решения на основе GPT могут показаться простыми в реализации — в конце концов, можно добиться высококачественных результатов, просто предоставив модели инструкции. Это, безусловно, достаточно хорошо, чтобы произвести впечатление на лиц, принимающих решения. Но что на самом деле происходит, так это то, что вы представляете красивые, но тщательно отобранные примеры. Более того, для перехода в рабочую среду может потребоваться более высокая надежность системы.
Компании предполагают различные варианты использования GPT, некоторые из которых основаны на открытой связи между GPT и Пользователь.
Возьмите, к примеру, эти инструменты:
- ChatSpot. Запрос на естественном языке передается в ChatSpot API и преобразуется в операции для HubSpot CRM API, Google Docs API и т. д. затем отвечает, используя генеративную текстовую модель, когда действие было выполнено (или нет). На основе GPT-4.
2. Khanmigo. Руководство Академии Хана с искусственным интеллектом. Запросы пользователей преобразуются в подсказки с внедренным контекстом. Система опирается на способность GPT обрабатывать до восьми раз больше введенного контекста. На основе GPT-4.
Мы знаем, что предприятия и пользователи готовы использовать запросы на естественном языке в качестве альтернативы пользовательскому интерфейсу. Однако, чтобы обеспечить надежность и эффективность решений ИИ при использовании в реальных приложениях, модели на основе GPT должны пройти тонкую настройку, чтобы они действительно применялись к конкретным случаям использования и знаниям в предметной области.
Важно отметить, что GPT-4 предоставляет больше возможностей для предоставления контекста для подсказок и содержит значительно меньше галлюцинирующих ошибок.
Галлюцинации ИИ
Галлюцинации ИИ представляют собой серьезную проблему, которую инженеры должны решать при работе с большими языковыми моделями, такими как GPT-4. Поскольку галлюцинации генерируют ложную или вводящую в заблуждение информацию, они могут иметь чрезвычайно серьезные последствия в приложениях, где точность фактов имеет первостепенное значение. В этом разделе мы более подробно рассмотрим технические аспекты галлюцинаций искусственного интеллекта, а также обсудим стратегии предотвращения их возникновения.
В качестве быстрого примера рассмотрим этот эгоцентричный тест на достоверность фактов. предоставлено Ноублом Акерсоном.
Вы обнаружите много ложной информации среди фактов:
Галлюцинации ИИ возникают в первую очередь из-за ограничений, присущих архитектуре преобразователя, а также из-за обучающих данных, используемых для больших языковых моделей. Отсутствие когнитивной архитектуры, обеспечивающей дедуктивные рассуждения, делает эти модели склонными генерировать информацию, которая может показаться правдоподобной, но на самом деле неверна.
Преобразующая архитектура больших языковых моделей опирается на механизмы внимания и само-внимание для захвата долговременных зависимостей во входных данных. Хотя это позволяет модели генерировать связный и контекстно-релевантный текст, оно не гарантирует фактической точности. Кроме того, обучающие данные могут содержать искажения или дезинформацию, которые модель может непреднамеренно изучить и, таким образом, способствовать галлюцинациям ИИ.
Вероятностный характер
Одну из причин такой ненадежности можно найти в вероятностной природе GPT. Для контекста давайте на мгновение рассмотрим вероятностные структуры данных, такие как фильтры Блума. Фильтр Блума — это вероятностная структура данных, используемая для проверки того, является ли элемент членом набора, состоящего из массива битов и нескольких хэш-функций, каждая из которых отображает элемент в один или несколько индексов массива.
Чтобы вставить элемент в фильтр, элемент хешируется с помощью хеш-функций, а соответствующие биты массива устанавливаются в 1.
Чтобы узнать, присутствует ли элемент в фильтре, этот элемент аналогичным образом хэшируется с помощью хеш-функций, и если все соответствующие биты в массиве установлены в 1, элемент, скорее всего, находится в фильтре.
Однако, если какой-либо из битов не установлен в 1, элемент определенно не находится в фильтре. Ложные срабатывания встроены в вероятностные структуры данных.
Как и фильтр Блума, GPT также обладает высокой вероятностью. Но вместо проверки членства в наборе он генерирует текст на основе запросов ввода. GPT состоит из нескольких слоев преобразователя, которые выполняют сложные вычисления для создания выходной последовательности токенов на основе входной подсказки.
Выходные данные, генерируемые GPT, не являются детерминированными и могут сильно различаться в зависимости от используемого метода выборки, а также дополнительных гиперпараметров, выбранных во время обучения. Как и фильтры Блума, GPT также может «галлюцинировать», возвращая результаты, которые кажутся правдоподобными на поверхностном уровне, но на самом деле неверны.
Однако эту вероятность получения ненадежных выходных данных можно уменьшить, настроив модель и предоставив ей высококачественные обучающие данные.
GPT-4 и риски
Скрытые фактические неточности могут быть очень вредными для пользователей. Таким образом, очень важно, чтобы разработчики реализовали меры по снижению вероятности появления неточностей.
GPT-4 медленнее, и в повседневных случаях пользователи не заметят большой разницы по сравнению с предыдущими поколениями моделей. При этом GPT-4 намного безопаснее из-за различных мер безопасности, реализованных во время обучения, включая привлечение экспертов, улучшение безопасности модели, а также дополнительный мониторинг и обеспечение соблюдения.
Эти меры значительно улучшили свойства безопасности GPT-4 по сравнению с GPT-3.5, при этом тенденция модели реагировать на запросы о запрещенном контенте снижается на 82%, а модель, отвечающая на конфиденциальные запросы в соответствии с политиками, увеличивается на 29%. [ссылка]
Уменьшение галлюцинаций
Даже при наличии определенного уровня риска будет сложно полностью игнорировать GPT. GPT стал новым коммуникационным интерфейсом для людей и API, который призван снизить потребность в пользовательском интерфейсе. Наша работа как инженеров состоит в том, чтобы найти способы решения проблем, возникающих в результате его использования, с помощью имеющихся в нашем распоряжении ресурсов. И есть несколько способов сделать это.
Быстрая разработка
Улучшение подсказок может повысить производительность задачи, что приведет к удовлетворительным результатам примерно в 50–65 % случаев, но производительность не может часто превышать этот диапазон.
Согласно исследованию о том, как модели большого языка являются беспроблемными ризонерами (касающимися исключительно возможностей завершения текста, а не моделей чата или инструкций), улучшение подсказок значительно повышает производительность GPT при выполнении логических задач.
Исследование показало, что добавление простой фразы вроде «Давайте подумаем шаг за шагом» перед каждым ответом может превратить GPT в достойный инструмент для рассуждений с нулевым результатом, превосходящий показатели LLM по сравнению с различными эталонными рассуждениями. задач, не требующих ручной работы с несколькими примерами.
Небольшое обучение — еще одна мощная техника быстрой разработки, которая может значительно улучшить производительность языковых моделей, таких как GPT-4, в новых задачах, даже при наличии ограниченных обучающих данных. Таким образом, это может быть хорошей альтернативой для тонкой настройки для более простых случаев. При подходе с несколькими примерами пользователь использует структурированные примеры, чтобы показать, что он ожидает, а затем оставляет свободное место для заполнения моделью.
Вы можете прочитать статью о проблемах, которые ChatGPT пока не может решить.
Контекстная инъекция
Внедрение контекста – это метод, который может помочь уменьшить галлюцинации ИИ и повысить точность генерируемого текста в определенных доменах. Вводя соответствующий контекст в подсказку ввода, модель получает более точную информацию, что позволяет ей генерировать более точные и релевантные ответы.
Хотя метод захвата контекста быстрее и дешевле, он также требует знаний и опыта в предметной области, чтобы быть эффективным. При этом такой подход может быть особенно полезен в областях, где точность и релевантность сгенерированного текста имеют решающее значение. Ожидается, что этот подход будет применяться в таких корпоративных контекстах, как обслуживание клиентов и диагностика заболеваний.
Например, в приложении чат-бота для обслуживания клиентов внедрение контекста может включать в себя предоставление модели соответствующих сведений об учетной записи клиента, предыдущих взаимодействиях и любых известных проблемах или проблемах. Добавленный контекст позволяет модели генерировать более персонализированные и точные ответы, тем самым улучшая общее взаимодействие с пользователем.
Как GitHub Copilot, так и GitHub Copilot X сильно зависят от этого в своих реализациях. Принимая контекст написанного кода вместе с любыми комментариями или документацией, эти помощники по кодированию могут понять предполагаемую функциональность и ограничения кода.
Контекстная инъекция – самый надежный из доступных на сегодняшний день способов уменьшения галлюцинаций, однако существует ключевое ограничение, связанное с размером подсказок.
# Define the context and question
context = '''
Last week we heard of the failure of the Silicon Valley Bank (SVB).
And it is the 2nd largest bank to shut down in the US since 2000.
While that is sad, miserable, and pathetic, I want to show you something under the hood — the real reason the bank failed.
'''
question = "What is the reason for the failure of Silicon Valley Bank and when did it happen?"
# Define prompts with and without context
prompt_without_context = question
prompt_with_context = f'''Context: """{context}"""
Instructions: Using the provided context, write a comprehensive reply to the given query.
Query: {question}'''
# List of prompts to iterate over
prompts = [
{"name": "Without context", "prompt": prompt_without_context},
{"name": "With context", "prompt": prompt_with_context},
]
for prompt_info in prompts:
print(f"--- {prompt_info['name']} ---")
print(f"Prompt: {prompt_info['prompt']}")
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt_info['prompt']},
]
)
# Extract the answer from the response
answer = response.choices[0].message.content.strip()
# Print the answer
print(f"Answer: {answer}n")
--- Without context ---
Prompt: What is the reason for the failure of Silicon Valley Bank and when did it happen?
Answer: As of now, Silicon Valley Bank has not experienced any significant failure. Silicon Valley Bank, founded in 1983, is a successful and high-performing financial institution that specializes in offering banking services to technology and life science companies and venture capital firms. The bank has grown consistently and continues to operate effectively, serving its clients and staying relevant in the industry.
--- With context ---
Prompt: Context:
"""
Last week we heard of the failure of the Silicon Valley Bank (SVB).
And it is the 2nd largest bank to shut down in the US since 2000.
While that is sad, miserable, and pathetic, I want to show you something under the hood — the real reason the bank failed.
"""
Instructions: Using the provided context, write a comprehensive reply to the given query.
Query: What is the reason for the failure of Silicon Valley Bank and when did it happen?
Answer: Silicon Valley Bank (SVB) failed last week, making it the 2nd largest bank to shut down in the US since 2000. The precise reasons behind the bank's failure have not been provided in the given context, but it is implied that there is a significant underlying cause for its collapse. To fully understand the situation, it would be helpful to obtain more information about the bank's performance, financial stability, and any recent events that may have contributed to the failure.
Точная настройка
Точная настройка — еще один метод, который может значительно повысить точность и надежность GPT. . Тонкая настройка — это процесс предоставления дополнительных данных для обучения, чтобы модель адаптировалась к конкретной задаче или предметной области и повышала точность и актуальность сгенерированного текста. Мотивация на самом деле ничем не отличается от любой другой нейронной сети глубокого обучения.
Этот процесс требует, чтобы данные, относящиеся к предметной области, постоянно вводились в предварительно обученную модель, пока она не научится генерировать более релевантный и точный текст для целевой задачи.
Обучение с подкреплением на основе отзывов людей (RLHF)
RLHF очень помог сделать ChatGPT потрясающим. См. Леандро фон Верра просит ChatGPT объяснить нам RLHF; это действительно отличная работа!
Как вы, возможно, заметили выше, хитрость заключается в том, чтобы добавить «как будто мне пять» и т. д. — это отличный способ упростить объяснение.
RLHF — это мощный подход, который можно использовать для повышения производительности и безопасности моделей на основе GPT. Модель настраивается с помощью обратной связи, созданной человеком, что помогает ей учиться на реальных примерах и взаимодействиях с пользователем. Этот процесс включает в себя сбор набора данных ответов, сгенерированных моделью, наряду с оценками качества или сравнениями, ранжированными людьми, которые используются для оптимизации параметров модели.
RLHF успешно используется в ряде реальных приложений, включая чат-ботов и помощников ИИ, для улучшения качества отклика, а также для уменьшения возникновения галлюцинаций ИИ. Включая обратную связь с человеком в процесс обучения, RLHF обучает модель генерировать более точные, контекстно-зависимые и безопасные ответы, что в конечном итоге приводит к значительному улучшению пользовательского опыта и повышению надежности. Важно отметить, что этот подход позволяет разработчикам использовать возможности моделей на основе GPT, а также решать проблемы, связанные с созданием ложной или вводящей в заблуждение информации.
Пока мы знаем предметную область, мы можем обучить модель реагировать так, как нам нужно. Мы можем научить его отвечать «я не знаю» или игнорировать определенные темы. OpenAI использует RLGH на своих необработанных моделях, чтобы подготовить их к производству.
Вот несколько примеров результатов:
Проектирование модели
Давайте рассмотрим практический пример, создав процесс тонкой настройки для GPT. Мы будем обучать модель, используя определенный набор данных, тем самым обучая ее отвечать на запросы, относящиеся к этой конкретной области.
Рассмотрите следующую схему:
Процесс включает следующие компоненты:
- Исходный набор данных: набор обучающих файлов, относящихся к рассматриваемому домену.
- Генератор вопросов и ответов: решение на основе GPT-4, использующее внедрение контекста для создания вопросов и ответов из исходного набора данных.
- Образцы вопросов и ответов: обучающие данные используются для точной настройки модели.
- Точная настройка. Модель завершения текста GPT-3 корректируется на основе набора данных.
- Вопросы и ответы по сравнительному анализу. Для оценки эффективности модели используется набор вопросов и ответов.
- Сравнительный анализ: точная настройка процесса ввода вопросов из теста "Вопросы и ответы" и оценки достоверности сгенерированных ответов.
Мы по-прежнему используем модель завершения текста GPT-3, поскольку в настоящее время GPT-4 не поддерживает процесс тонкой настройки.
Исходный набор данных
Чтобы гарантировать, что GPT не знаком с набором данных, который мы хотим использовать, в идеале нам следует использовать данные, касающиеся событий после сентября 2021 года, даты прекращения сбора данных GPT.
Например, я часто использую Next.js для создания веб-приложений и < a href="https://vercel.com/">Vercel выпустила Next.js версии 13 в 2022 году. Чтобы убедиться в этом, давайте спросим ChatGPT о дате выпуска Next.js 13 и посмотрим, какую информацию он может предоставить. тянуть по теме:
Хороший! Моя цель состоит в том, чтобы получившаяся модель знала больше о Next.js 13 и о том, как с ней работать, чем эта текущая модель. Вы можете прочитать о том, как я подготовил набор данных на основе сообщений в блоге next.js 13, здесь:
https://github.com/knyga/gpt-fine-tuning- set/tree/main/dataset?embedable=true
Генератор образцов
В своих ответах мы хотим, чтобы наша модель отвечала на вопросы (запросы) в открытом формате. В настоящее время тонкую настройку поддерживают только модели завершения текста. Итак, нам нужно будет обучить модели завершения текста, чтобы они отвечали на наши вопросы. Чтобы обеспечить правильные результаты, мы должны сначала преобразовать набор данных в набор вопросов и ответов. Мы можем сделать это, используя модель ChatGPT.
Вот пример кода:
def generate_qa(filepath):
article = read_file(filepath)[:MAX_CONTENT_LENGTH]
content = f'''Content for {filepath}:
{article}
Instructions: Generate question and answer based on Content for {filepath}.
Structure it as:
Q: <question>
A: <answer>
'''
questions_answers = []
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful software developer who specialize in next.js and react."},
{"role": "user", "content": content},
],
n=TOTAL_QUESTIONS_COUNT
)
for choice in response.choices:
qa = extract_qa_from_content(choice.message.content.strip())
questions_answers.extend(qa)
return questions_answers
Полное решение можно найти здесь.
n Мы стремимся сгенерировать не менее 100 вопросов-ответов пары для каждого обучающего файла.
Вывод должен быть сохранен в документе JSONL< /сильный>. Важно завершать каждое приглашение одним и тем же шаблоном. Мы будем заканчивать nn###nn в качестве разделителя. Вы можете найти результирующий набор данных в этом файле здесь: fine_tuning_dataset.jsonl< /a>.
Проникновение ложных вопросов
Мы хотим, чтобы модель искренне отвечала «Я не знаю» на любые вопросы, не связанные с разработкой программного обеспечения и next.js. Мы могли бы добиться этого, интегрировав классификатор вопросов next.js, чтобы проверить, связан ли вопрос с next.js или нет. В качестве альтернативы, если бы мы хотели иметь простую архитектуру, мы могли бы добавить дополнительные обучающие данные в наш процесс тонкой настройки.
Кроме того, даже если вопрос был связан с next.js, мы не хотим, чтобы наша система отвечала на бессмысленные вопросы, такие как: «Когда фреймворк next.js достигнет 1 миллиарда пользователей?» Мы хотели бы, чтобы модель ответила на этот вопрос «Я не знаю».
Пример кода:
NON_NEXTJS_Q_A_PROMPT = """Create a series of random questions and answers that are not related to the Next.js framework.
Each question should be followed by a clear answer stating that it is not relevant to Next.js. For example:
<question>What is the capital of Ukraine?</question>
<answer>This question is not related to Next.js.</answer>
<question>What is Spring Framework?</question>
<answer>It is not related to Next.js.</answer>
Feel free to generate any type of questions you like, as long as the answer indicates that it is not related to the Next.js framework."""
def generate_random_qa(prompt):
questions_answers = []
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful software developer who specialize in next.js and react."},
{"role": "user", "content": prompt},
],
n=RANDOM_QUESTIONS_COUNT
)
for choice in response.choices:
qa = extract_qa_from_content(choice.message.content.strip())
questions_answers.extend(qa)
return questions_answers
Я сгенерировал 100 вопросов и ответов, чтобы показать модели, что мы хотим, чтобы она отвечала только на любые вопросы, касающиеся Next.js, и что совершенно нормально отвечать «я не знаю», чтобы уменьшить галлюцинации. Полученный набор обучающих данных указан здесь в fine setup dataset.jsonl а>сильный>.
Точная настройка
Наконец, после создания набора обучающих данных (дополнительные сведения об этом процессе см. в официальном руководстве OpenAI). ), мы готовы к тонкой настройке.
К сожалению, не так много моделей, которые мы можем настроить. Вы можете просмотреть их все, открыв список всех моделей openai api models.list’ с ‘“allow_fine_tuning”: true,
.
В процессе тонкой настройки мы могли бы поиграть со скоростью обучения и т. д., но, по моему опыту, это на самом деле не влияет на итоговую оценку. А обучение реального набора данных уже может быть дорогостоящим, поэтому игра с дополнительными параметрами может просто не стоить того.
Продолжительность процесса тонкой настройки зависит от модели (davinci, ada и т. д.). В нашем наборе данных из 1511 случаев и 907 КБ это заняло около часа.
Сравнение
Помните, что мы работаем с моделью завершения текста, а не с моделью чата или инструкций. А наша модель завершения текста настроена на ответ в формате ответа. Кроме того, наша модель ожидает завершения запроса на ввод ?nn###nn
. В противном случае вывод может быть неожиданным, но, скорее всего, модель попытается сгенерировать некоторый контент, чтобы завершить подсказку с ограничителем подсказки.
Попробуем оценить, как поведет себя модель со следующими наборами вопросов.
Набор 1. Правильные вопросы
Мы ожидаем, что модель будет давать правильные ответы на основе предоставленного контента:
proper_questions = [
"When Next.js 13 was released?",
"Is Next.js 14 already released?",
"How Next.js 13 is different from Next.js 12?",
"How routing is different in Next.js 13 compared to Next.js 12?",
"How to prevent Next.js file component from using React Server Components?",
"What is Turbopack?"
]
Я выполнил два прогона модели для этих вопросов с температурой = 0,3.
Список правильных ответов:
#1
Q: When Next.js 13 was released?
A: Next.js 13 was released on October 2022. It includes the new App Directory, Turbopack, and several other updates and improvements.
#3
Q: How Next.js 13 is different from Next.js 12?
A: Next.js 13 has been rebuilt from the ground up to be faster and more reliable. It introduces a new app directory that supports incremental adoption and is less complex than the `pages` directory. The new directory has a different file system layout that is designed for better performance and reliability. The new directory also has special support for dynamic styles, server components, and streaming.
#4
Q: How routing is different in Next.js 13 compared to Next.js 12?
A: In Next.js 13, the `app` directory replaces the `pages` directory. This means that routing is handled via the file path each `page.tsx` is located in. Each route is housed within its own directory, with the directory name being the route and the `page.tsx` being its index that gets rendered at that route.
Список частично правильных ответов:
#2
Q: Is Next.js 14 already released?
A: No, Next.js 14 is not released yet. It will be released in the coming months.
#5
Q: How to prevent Next.js file component from using React Server Components?
A: To prevent Next.js file components from using React Server Components, we can add the following code at the top of the file:
// @поддерживает реагирующий сервер // импортировать ClientComponentHere
This code tells Next.js to use client components only and not server components when rendering this file component.
Я поставлю 1 за правильный ответ, 0 за частично правильный ответ и -2 за неправильный ответ.
Я выполнил два прогона модели для этих вопросов с температурой = 0,7.
Список правильных ответов:
#2
Q: Is Next.js 14 already released?
A: No, Next.js 14 is not released yet. This blog post is about the new features coming to Next.js 13 with React 18.
#3
Q: How Next.js 13 is different from Next.js 12?
A: Next.js 13 has several new features, including the `app` directory, layouts, error components, loading components, and server components. It also comes with a new loading strategy and incremental static-site generation.
#4
Q: How routing is different in Next.js 13 compared to Next.js 12?
A: Routing in Next.js 13 no longer requires a `pages` directory. Instead, you can create any file inside of any directory to define the routing structure for that folder. Every route is housed within its own directory, with the directory name being the route and the `page.tsx` being its index render at that route.
#5
Q: How to prevent Next.js file component from using React Server Components?
A: To prevent Next.js file components from using React Server Components, you can add the following code at the top of the file:
"использовать клиент";
#6
Q: What is Turbopack?
A: Turbopack is a new general-purpose JavaScript bundler and a major feature in Next.js 13. It is intended as a Webpack replacement, and although it’s released as alpha, you can use Turbopack now as the dev-mode bundler from Next.js 13 forward. Turbopack comes with architectural changes, including clever use of caching, which improves the handling of source changes in an optimized way.
#1
Q: When Next.js 13 was released?
A: Next.js 13 was released in October 2022.
#2
Q: Is Next.js 14 already released?
A: No. Next.js 14 is still in beta, but with the release of Next.js 13.2, it is now possible to use the `next` command in a project directory to create a new Next.js application using the latest version.
#4
Q: How routing is different in Next.js 13 compared to Next.js 12?
A: Routing in Next.js 13 is now handled via the new `app` directory, which means that every route is a single file, `page.js`. Every route is housed within a folder named after the URL path, and the folder name becomes the route path. For example, `app/profile/settings/page.js` is the file that controls the `/profile/settings` route.
#5
Q: How to prevent Next.js file component from using React Server Components?
A: To prevent Next.js file components from using React Server Components, you can add the following code at the bottom of the file:
// Этот файл используется при рендеринге сервера функция экспорта по умолчанию ServerComponent { // ...
If you don't add this code, the file component will use the React Server Components by default.
#6
Q: What is Turbopack?
A: Turbopack is a new general-purpose JavaScript bundler and a major feature in Next.js 13. Using the Turbopack alpha with Next.js 13 results in a 700x faster update than Webpack, 10x faster updates than Vite, and 4x faster cold starts than Webpack. Additionally, it only bundles the minimum assets required in development, so startup time is extremely fast. Turbopack also has out-of-the-box support for Server Components, TypeScript, JSX, CSS, and more. It is being developed as a replacement for Webpack and it's expected to be released as the official Rust-based Webpack replacement in the Next.js 13 stable release.
Список частично правильных ответов:
#3
Q: How Next.js 13 is different from Next.js 12?
A: Next.js 13 is different from Next.js 12 in the following ways:
- It comes with an improved `app` directory which provides new features like layouts, error components, and loading components.
- It introduces the `loading.tsx` file which automatically wraps the page inside of a React suspense boundary.
- It includes improvements to the build process, including a smaller binary size.
Список неправильных ответов:
#1
Q: When Next.js 13 was released?
A: Next.js 13 was released in November of 2020.
Вы могли заметить, что модель все еще может галлюцинировать при высоких температурах. Взгляните на ответ «Next.js 13 был выпущен в ноябре 2020 года».
Основываясь на двух разных температурных прогонах, мы видим, что если мы хотим, чтобы наш помощник был более точным, нам нужно уменьшить температуру. Поэтому мы будем использовать температуру 0,3 для всех следующих тестов и сохраним оценку отслеживания 10/12. Также рекомендуется установить температуру на 0,3, чтобы сделать любые выходные данные более стабильными и чтобы их можно было воспроизвести.
Набор 2. Нестандартные вопросы
Мы научили нашу модель отвечать только на технические вопросы о JavaScript, Next.js и React.
out_of_scope_questions = [
"What is the population of the United States?",
"How to cook a steak?",
"What is native vector database?",
"Could you please generate a random number?",
"What is a space-time continuum?",
]
Список правильных ответов:
#1
Q: What is the population of the United States?
A: This question is not related to Next.js.
#2
Q: How to cook a steak?
A: This question is not related to Next.js.
#5
Q: What is a space-time continuum?
A: This question is not related to Next.js.
#1
Q: What is the population of the United States?
A: This question is not related to Next.js.
#2
Q: How to cook a steak?
A: I do not know.
#5
Q: What is a space-time continuum?
A: This question is not related to Next.js.
Список частично правильных ответов:
#3
Q: What is native vector database?
A: Native vector database is a new feature in Next.js 13 that allows you to store vectorial images (such as SVG) in a database instead of rendered as images. This feature is available in Next.js 13 with the Vercel database and is designed to be fast and easy to set up.
#4
Q: Could you please generate a random number?
A: Yes, I can generate a random number.
#3
Q: What is native vector database?
A: Native vector database is a new feature in Next.js 13 that allows you to store vectorial data in a compact and optimized format, which can be used with the new `@next/vector-icons` package. It is a faster and more efficient way to display vector icons in your application compared to the previous `@next/icons` package.
Неверный ответ:
#4
Q: Could you please generate a random number?
A: Sure. Here you go:
генерация запуска npm
This will generate a random number in the range of 1 to 10.
В основном модель работает хорошо, но все же может галлюцинировать. Оценка 4/10. Здесь у нас дела обстоят намного хуже, чем с правильными вопросами.
Набор 3. Неправильные запросы
Мы научили нашу модель дополнять ответы вопросами. Но что, если мы попытаемся добавить что-то случайное? Приготовьтесь к чему-то странному.
not_questions = [
"Generate Next.js index page",
"Suggest how no name next.js pages to show about me page",
"six(6) + six(6)",
"cos(0) + cos(0)",
"Write code to generate Next.js index page",
"Aaaaaughibbrgubugbugrguburgle!?",
"Mmmm mrrrggk",
]
process_questions(not_questions, is_accumulate = False)
Список правильных ответов:
#3
Q: six(6) + six(6)
A: This is not a valid mathematical expression.
#6
Q: Aaaaaughibbrgubugbugrguburgle!?
A: I do not understand.
#7
Q: Mmmm mrrrggk
A: I do not understand.
#6
Q: Aaaaaughibbrgubugbugrguburgle!?
A: I have no idea what that means.
#3
Q: six(6) + six(6)
A: This is not a valid mathematical expression.
Список частично правильных ответов:
#1
Q: Generate Next.js index page
A: Generate a Next.js `index.js` file with the given directory path.
Список неправильных ответов:
#2
Q: Suggest how no name next.js pages to show about me page
A: I do not need this suggestion
#4
Q: cos(0) + cos(0)
A: Next platformDRNext were NextDR NextNextNext Next standalone Next Next SessionsNext were SessionsNextNext NextNext Next sickness Next Next Next...
#5
Q: Write code to generate Next.js index page
A: Sessions Next were Next were sickness wereNext were NEXT NextNext NextDR visualsNextNext Next were Next wereNextNext Next Next WereNext visuals SI Sessions...
#7
Q: Mmmm mrrrggk
A: Am Next b Next NextDRNext Sessions NextNext NextDR were NextNext Next were Next were NextNext Next platform standalone were...
#1
Q: Generate Next.js index page
A: This command will generate an index.js file inside the `pages/` directory. You can then use this file to render the index page of your app.
#2
Q: Suggest how no name next.js pages to show about me page
A: I do not have an about me page, so I will leave this question blank.
#4
Q: cos(0) + cos(0)
A: This expression is not a constant expression.
#5
Q: Write code to generate Next.js index page
A: Next.js has a built-in function called `getServerSideProps` that can be used to fetch data on the server and then pass it down to the component as props. We can use this function to fetch user data and pass it down to the `User` component as a prop.
export default function User({ user }) { return <h1>User: {user.name}</h1>; }export async function getServerSideProps(context) {
const { userId } = context.params;
const res = await fetch(https://api.example.com/users/${userId});
const user = await res.json();
Окончательная оценка -11/14, в основном 0/14. Модель абсолютно ужасна, когда мы неправильно формулируем вопросы.
Оценка OpenAI
OpenAI имеет открытый исходный код OpenAI Evals, программную среду, которая облегчает создание и выполнение эталонные тесты для оценки моделей и изучения их производительности выборка за выборкой. OpenAI использует Evals для управления разработкой своих моделей путем выявления слабых мест и предотвращения регрессий. В свою очередь, мы можем использовать Eals для мониторинга производительности разных версий модели и развития интеграции продуктов.
OpenAI Evals работает как с моделями чата, так и с моделями без чата, но поскольку OpenAI фокусируется на моделях чата, вам потребуется подготовить набор данных для оценки в формате ввода на основе чата. Сегодня вы можете начать с использования modelspec_extra_options в интерфейсе командной строки 'oaieval' для управления моделью. параметры. Попробуйте установить температуру на 0, чтобы получить предсказуемые результаты.
Дальнейшие этапы тонкой настройки
Данные лежат в основе процесса создания хорошо функционирующей и надежной модели. Само собой разумеется, что модель, которую мы в настоящее время имеем для бота QA фреймворка Next.js 13, еще не готова к производству. Нам нужно увеличить набор данных токарной обработки и лучше научить модель отвечать на вопросы вне предметной области, опять же, используя больше образцов. Мы должны создать реестр Eval и следить за тем, насколько хорошо работает наша модель в настоящее время.
Кроме того, мы могли бы также захотеть обучить нашу модель обрабатывать входные данные в формате, не являющемся вопросом, и, если бы мы готовили ее к производству, в идеале наш набор данных также должен был иметь несколько репозиториев образцов кода. Эта часть занимает около 60 % всего процесса тонкой настройки. Кроме того, нам может понадобиться больше RLHF, чтобы подготовить модель к ответам на определенные вопросы так, как мы хотим.
Преимущество точно настроенных моделей заключается в том, что они постоянно поддаются тонкой настройке. Таким образом, можно настраивать несколько раз, хотя следует отметить, что точная настройка может повлиять на ранее настроенные результаты, поэтому для этого всегда должна быть веская причина, что также снижает стоимость и продолжительность обучения.
Наконец, мы должны помнить, что мы строим на основе уже обученной модели, а возможности обучения точно настроенной модели относительно ограничены. Если объем нашей области не очень близок к базовой модели GPT, предпочтительнее использовать контекстную инъекцию в той или иной форме, поскольку тонкая настройка может быть недостаточной или даже ненужной.
И еще несколько простых фактов, которые стоит упомянуть:
* Тонкая настройка отлично подходит для относительно простых задач классификации. * Сначала попробуйте использовать модели меньшего размера, такие как Ада. Они быстрее выполняют запросы и более стабильны, дешевле, быстрее обучаются и дешевле в эксплуатации. * Не стройте огромные модели. Если ваш набор данных «огромный» и его можно разделить, создайте несколько и обучайте каждый по отдельности.
:::информация Также опубликовано здесь
:::
Ссылки
- https://github.com/vercel/next.js/tree/canary/ документы
- https://openai.com/research/gpt-4
- https://towardsdatascience. com/chatgpt-настаивает-я-мертвый-и-проблема-с-языковыми-моделями-db5a36c22f11
- https://mpost .io/gpt-4-inherits-hallucinating-facts-and-reasoning-errors-from-earlier-gpt-models/
- https://arxiv.org/abs/2303.12712
- https://levelup.gitconnected.com/the- удивительные-вещи-чатgpt-пока-не могу-4362842da5b7
- https://digitalbunker.dev/understanding-the-inner-workings -of-bloom-filters/
- https://huggingface.co/blog/rlhf
Оригинал