В этой первой части мы углубимся в основные концепции моделей OpenAI и искусство их тонкой настройки. В следующей части будут представлены практические примеры процесса тонкой настройки.

Что такое точная настройка модели машинного обучения?

Под тонкой настройкой подразумевается использование весов уже обученной сети в качестве начальных значений для обучения новой сети. Точная настройка – это подход к переносу обучения, при котором веса предварительно обученной модели обучаются на новых данных.

Точная настройка API OpenAI. OpenAI дает пользователям возможность точно настраивать свои модели.

Когда использовать тонкую настройку openAI?

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

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

Конкретное сопоставление ввода-вывода. Если ваша задача требует определенного формата или структуры для ввода и вывода, точная настройка может помочь модели научиться генерировать желаемые выходные данные в нужном формате.

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

Точная настройка позволяет получить больше от моделей, доступных через API, предоставляя:

  1. Результаты более высокого качества, чем подсказки
  2. Возможность обучения на большем количестве примеров, чем может уместиться в подсказке.
  3. Экономия токенов за счет более коротких подсказок
  4. Запросы с меньшей задержкой

Этапы тонкой настройки

  1. Подготовьте данные
  2. Загрузите данные обучения
  3. Обучите свежую, отлаженную модель
  4. Используйте точно настроенную модель

Модели OpenAI открыты для тонкой настройки

  1. gpt-3.5-turbo-0613 (рекомендуемый выбор)
  2. Бэббидж-002
  3. Давинчи-002

Этап 1. Подготовка данных

Чтобы подготовить набор данных, после того как выбрана тонкая настройка и выполнена оперативная оптимизация, курируйте разнообразные примеры разговоров, отражающие взаимодействие в реальном мире. Экземпляры набора данных должны соответствовать структуре API дополнений Chat — последовательности сообщений с ролями, контентом и именами. Включите случаи, посвященные проблемам поведения модели. Сообщения Ассистента должны содержать примеры желаемых ответов.

Образцы:

{"messages": [ {"role": "system", "content": "Our chatbot, Quip, blends factual information with a touch of sarcasm."},
{"role": "user", "content": "Could you explain the concept of parallel universes?"},
{"role": "assistant", "content": "Oh, sure! Just imagine an infinite number of 'you' reading an infinite number of responses, and you'll be close."}, ]}
{"messages": [ {"role": "system", "content": "Our chatbot, Quip, blends factual information with a touch of sarcasm."},
 {"role": "user", "content": "Tell me about the benefits of exercise."}, 
{"role": "assistant", "content": "Exercise, my friend, transforms couch potatoes into slightly less potato-like beings."}, ]}

Проверьте форматирование данных

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

Этап 2. Загрузите данные обучения

После проверки данных загрузите файл для точной настройки:

openai.File.create(
  file=open("mydata.jsonl", "rb"),
  purpose='fine-tune'
)

Этап 3. Точная настройка модели

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

Начните работу по тонкой настройке с помощью OpenAI SDK:

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.FineTuningJob.create(training_file="file-abc123", model="gpt-3.5-turbo")

Этап 4. Использование точно настроенной модели

Если задание выполнено успешно, вы увидите поле Fine_tuned_model, заполненное именем модели, когда получите сведения о задании. Теперь вы можете указать эту модель в качестве параметра в дополнениях чата (для gpt-3.5-turbo).

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")

completion = openai.ChatCompletion.create(
  model="ft:gpt-3.5-turbo:my-org:custom_suffix:id",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

Дополнительные советы

Вы можете использовать следующий код, чтобы увидеть состояние заданий точной настройки:

# List 10 fine-tuning jobs
openai.FineTuningJob.list(limit=10)

# Retrieve the state of a fine-tune
openai.FineTuningJob.retrieve("ft-abc123")

# Cancel a job
openai.FineTuningJob.cancel("ft-abc123")

# List up to 10 events from a fine-tuning job
openai.FineTuningJob.list_events(id="ft-abc123", limit=10)

# Delete a fine-tuned model (must be an owner of the org the model was created in)
import openai
openai.Model.delete("ft-abc123")

Ограничения

  1. Для более точной настройки модели необходимо предоставить не менее 10 примеров. Явные улучшения можно увидеть при точной настройке от 50 до 100 обучающих примеров с gpt-3.5-turbo, но правильное число сильно варьируется в зависимости от конкретного варианта использования.
  2. Ограничения на токены: каждый обучающий пример ограничен 4096 токенами.

Заключение

Это руководство поможет вам освоить тонкую настройку модели OpenAI. Во второй части будет рассмотрен практический пример тонкой настройки модели gpt-3.5.