Введение

ChatGPT — это чат-бот с искусственным интеллектом, разработанный OpenAI, в котором вы можете вести беседу на любую тему, и вам отвечают связные ответы, подобные человеческим. Он построен на основе большой языковой модели, обученной на огромных объемах текстовых данных со всего Интернета и нескольких других источников. Он был запущен 30 ноября 2022 года и привлек внимание последовательными, правильными и четкими ответами во многих областях знаний.

Помимо основной функциональности ответов на вопросы с последовательными ответами, OpenAI предоставляет возможность настроить свою модель, чтобы скорректировать ответы в соответствии с конкретным случаем. Эта функция называется тонкой настройкой и позволяет любому использовать технологию GPT-3 для обучения персонализированной модели. В результате получается модель, которая отвечает на вопросы, соответствующие вашему сценарию, на основе предоставленных вами примеров. С персонализированной моделью качество ответов, связанных с вашей темой, улучшится, а задержка запросов уменьшится.

В этой статье вы найдете пошаговые инструкции по тонкой настройке модели OpenAI GPT-3 и получению обученной модели, соответствующей вашим конкретным сценариям. Вот несколько примеров сценариев, в которых можно применить процесс тонкой настройки:

  • Создайте персонализированный чат-бот для автоматического ответа на часто задаваемые вопросы (FAQ) ваших клиентов об услугах вашей компании.
  • Составление документов базы знаний вашей компании, чтобы любой сотрудник мог легко, быстрее и на естественном языке находить информацию
  • Обобщение текстовых документов, дискуссий, заметок или транскрипций встреч в кратком изложении с важными темами
  • Генерация кода программирования на основе кодовой базы вашей компании
  • И еще много других случаев…

Процесс тонкой настройки

Соберите и очистите свой набор данных

Прежде всего вам нужно собрать набор данных с сотнями или тысячами примеров, которые представляют ваш сценарий. Вы можете использовать инструменты, помогающие форматировать эти данные, такие как Apache Spark или любой другой инструмент или фреймворк MapReduce. Набор данных можно сохранить в следующем формате: CSV, TSV, XLSX, JSON или JSONL. и должен иметь только два свойства: «подсказка» и «завершение». Ниже вы можете увидеть пример в формате CSV о том, как должен быть структурирован ваш набор данных:

prompt,completion
How to create an Order?,To create an order you must do 5 things:…
How to create a new product?,To create a new product you must first…
How to create a promotion campaign?,To create a promotion campaign
...

Когда у вас есть данные, очищенные и представленные в одном из поддерживаемых форматов, вы готовы начать процесс тонкой настройки.

Предпосылки

Прежде всего, вам необходимо установить библиотеку Python OpenAI с помощью pip. Для этого выполните следующую команду (ref link):

pip install - upgrade openai

Затем вам нужно установить ключ API OpenAI, чтобы разрешить вам отправлять команды в OpenAI от имени вашей учетной записи. Вы можете найти API-ключ для своего аккаунта на странице api-keys. Запустите следующую строку, чтобы установить переменную среды для авторизации команд в OpenAI:

export OPENAI_API_KEY=<your_key>

Формат набора данных

Процесс тонкой настройки OpenAI принимает только файлы в формате JSONL, но не волнуйтесь, он предоставляет инструмент для преобразования любого упомянутого выше формата в JSONL. Просто запустите следующую команду, чтобы отформатировать набор данных в JSONL:

openai tools fine_tunes.prepare_data -f dataset.csv

Если команда не работает из-за отсутствия какой-либо зависимости, выполните следующую команду, чтобы исправить ее, и повторите попытку (нажмите здесь, чтобы узнать больше). Команда для установки необходимой зависимости для запуска пакета openai:

pip install OpenAI[dependency]

Команда проанализирует ваш набор данных и покажет вам список предложений с важной информацией о вашем наборе данных и некоторыми вариантами тонкой настройки. Прочтите внимательно! Затем, на основе анализа, он предложит выполнить некоторые действия, такие как удаление дубликатов, добавление суффиксного разделителя, добавление пробела в начале завершения и т. д. Я бы предложил применить все рекомендуемые действия, если нет причин не сделать это.

Одним из важных действий, которое нужно сделать, является «разделить данные на обучающий и проверочный наборы». При этом будут созданы два файла с обучающим набором, которые будут использоваться для точной настройки (примерно в 95 % примеров) и проверки. установлен для использования для оценки производительности обученной модели (около ~ 5% примеров). Это действие позволяет OpenAI генерировать подробные результаты о производительности модели позже.

Наконец, у вас будут два файла с набором данных в правильном формате, которые можно использовать при точной настройке. Обратите внимание, что когда команда закончит работу, она даст вам несколько советов и рекомендаций по тонкой настройке. Например, предлагаемая команда для использования, например «OpenAI api Fine_tunes.create…». Обратите на это внимание.

Выполнить тонкую настройку

Теперь у вас есть данные, правильно отформатированные в формате JSONL, и вы готовы запустить процесс тонкой настройки для вашей пользовательской модели. Обратите внимание, что это платная функция, и цена зависит от размера вашего набора данных и базовой модели, которую вы используете для обучения (см. цены здесь).

Вы можете запустить предложенную команду из предыдущего вывода команды или создать команду самостоятельно с параметрами, которые вы хотели бы установить. У команды есть несколько параметров, которые вы можете установить или изменить в зависимости от ваших потребностей (ознакомьтесь с тонкой настройкой команды здесь). Например, параметр -m, который вы можете установить как ada, babbage, curie или davinci, будучи одной из моделей на основе OpenAI, предоставляет различные преимущества, такие как производительность, точность, цена и т. д. ( узнайте больше о моделях, которые предоставляет OpenAI).

Обратите внимание, что команда может меняться в зависимости от значений вашего набора данных. Например, для задач классификатора, когда каждый ввод в подсказке должен быть отнесен к одному из предопределенных классов, необходимо установить параметр «— Compute_classification_metrics». Если есть только два класса, вы должны установить «—classification_positive_class «class1»». Если классов больше, необходимо установить «—classification_n_classes 5». См. эти примеры ниже.

Команда тонкой настройки для двоичной классификации:

openai api fine_tunes.create -t "dataset_train.jsonl" -v "dataset_valid.jsonl" \
 -m "ada" --compute_classification_metrics --classification_positive_class " true"

Команда тонкой настройки для многоклассовой классификации:

openai api fine_tunes.create -t "dataset_train.jsonl" -v "dataset_valid.jsonl" \
 -m "ada" --compute_classification_metrics --classification_n_classes 5

Когда вы выполните команду, она загрузит файл(ы) набора данных на серверы OpenAI, и команда предложит вам идентификатор точной настройки, такой как «ft-FpsHdkc836TLMi53FidOabcF», сохраните этот идентификатор. В этот момент серверы OpenAI получают запрос, и точная настройка ставится в очередь для выполнения. Выполнение точной настройки займет несколько минут или много часов в зависимости от размера вашего набора данных и выбранной вами модели. Вам не нужно ждать завершения команды, вы можете без колебаний убить процесс (ctrl-c) и вернуться позже, чтобы проверить ход выполнения задания. Вы можете проверить статус вашего процесса, выполнив следующую команду с идентификатором, который вы получили ранее:

openai api fine_tunes.get -i <FINE_TUNING_ID>

Когда тонкая настройка будет завершена, вы увидите статус процесса тонкой настройки как «обработано», что означает, что обучение вашей пользовательской модели завершено и она готова к использованию. Обратите внимание, что для использования обученной модели вам необходимо знать ее имя, которое вы можете найти в свойстве «fine_tuned_model» (например: «fine_tuned_model»: «ada:ft-personal-2023 –01–18–19–50–00”).

Чтобы использовать обученную модель при отправке запросов в OpenAI, просто установите параметр «-m» с идентификатором вашей модели, как показано ниже:

openai api completions.create -m <FINE_TUNED_MODEL> -p "Your prompt here!"

Вы также можете использовать созданную модель в своем аккаунте по адресу playground link. Теперь не стесняйтесь играть, проверять, тестировать и оценивать свою модель, чтобы убедиться, что она дает ожидаемый ответ для вашего сценария!

Результаты оценки производительности (бонус)

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

openai api fine_tunes.results -i <FINE_TUNING_ID> > results.csv
curl https://api.OpenAI.com/v1/files/$RESULTS_FILE_ID/content \
  -H "Authorization: Bearer $OPENAI_API_KEY" > results.csv

Выходные данные по умолчанию находятся в файле CSV и могут быть сохранены в файле для лучшей визуализации. Структура файла основана на шагах, выполненных в процессе обучения, которые представлены каждой строкой CSV-файла. Каждая строка показывает ценную информацию о шаге, например: сколько примеров было обработано, сколько токенов, потери при обучении, точность обучения, потери при проверке и многое другое. Подробнее о результатах смотрите по этой ссылке.

Заключение

OpenAI приносит один из самых революционных технологических прорывов за последнее время с созданием GPT-3 и ChatGPT. Самое приятное то, что любой может получить доступ к этому невероятному инструменту бесплатно. Кроме того, OpenAI предоставляет всем необходимые инструменты для создания персонализированных моделей для участия в любом конкретном сценарии. Этот процесс называется тонкой настройкой, и OpeanAI легко доступен каждому. Тонкая настройка обеспечивает доступ к передовой технологии машинного обучения, которую OpenAI использовал в GPT-3. Это предоставляет бесконечные возможности для улучшения взаимодействия с компьютером для компаний, их сотрудников и клиентов.

С тонкой настройкой любой может создать индивидуальную модель GPT-3, соответствующую вашему сценарию. Например, создайте чат-бота для обычного взаимодействия с клиентами, чтобы отвечать на конкретные вопросы о вашей компании, ваших услугах и продуктах. Другой пример — помочь сотрудникам быстро и легко найти ценную информацию в большой базе знаний с несколькими текстовыми статьями, где сложно и долго искать то, что нужно. Сценариев с большим объемом текста, с помощью которых он может помочь, бесчисленное множество.

Если у вас есть какие-либо вопросы, не стесняйтесь обращаться ко мне: https://www.linkedin.com/in/marceloax/