Настройка модели с помощью тонкой настройки

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

  • Более качественные результаты, чем то, что вы можете получить только из запроса инженерии
  • Возможность обучать больше примеров, чем может соответствовать максимальному ограничению контекста запроса модели.
  • Экономия маркеров из-за более коротких запросов
  • Запросы с низкой задержкой, особенно при использовании небольших моделей.

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

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

Необходимые компоненты

Примечание.

В настоящее время необходимо отправить приложение для доступа к Службе Azure OpenAI. Чтобы применить к доступу, заполните эту форму.

Модели

Следующие модели поддерживают точную настройку:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

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

Просмотр рабочего процесса для Azure OpenAI Studio

Ознакомьтесь с рабочим процессом точной настройки для использования Azure OpenAI Studio:

  1. Подготовьте данные обучения и проверки.
  2. Используйте мастер создания пользовательской модели в Azure OpenAI Studio для обучения пользовательской модели.
    1. Выберите базовую модель.
    2. Выберите данные обучения.
    3. При необходимости выберите данные проверки.
    4. При необходимости настройте дополнительные параметры для задания тонкой настройки.
    5. Просмотрите варианты и обучите новую пользовательскую модель.
  3. Проверьте состояние настраиваемой настраиваемой модели.
  4. Разверните настраиваемую модель для использования.
  5. Используйте настраиваемую модель.
  6. При необходимости проанализируйте настраиваемую модель для повышения производительности и соответствия.

Подготовка данных обучения и проверки

Данные обучения и наборы данных для проверки состоят из входных и выходных примеров того, как должна работать модель.

Для различных типов моделей требуется другой формат обучающих данных.

Используемые данные обучения и проверки должны быть отформатированы в виде документа JSON Lines (JSONL). Для gpt-35-turbo-0613 набора данных тонкой настройки необходимо отформатировать в формате беседы, который используется API завершения чата .

Если вы хотите пошаговое руководство gpt-35-turbo-0613 по настройке модели, ознакомьтесь с руководством по настройке Azure OpenAI.

Пример формата файла

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Формат файла чата с несколькими поворотами

Кроме того, поддерживается несколько поворотов беседы в одной строке файла обучения jsonl. Чтобы пропустить тонкую настройку для определенных помощник сообщений, добавьте пару необязательных weight значений ключа. weight В настоящее время можно задать значение 0 или 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Помимо формата JSONL, файлы данных обучения и проверки должны быть закодированы в UTF-8 и включать метку порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Создание наборов данных для обучения и проверки

Чем больше примеров обучения у вас есть, тем лучше. Задания тонкой настройки не будут продолжаться без по крайней мере 10 примеров обучения, но такое небольшое число недостаточно, чтобы заметно повлиять на ответы модели. Рекомендуется предоставить сотни, если не тысячи, примеры обучения, которые будут успешными.

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

Использование мастера создания пользовательской модели

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

  1. Откройте Azure OpenAI Studio https://oai.azure.com/ и войдите с учетными данными, имеющими доступ к ресурсу Azure OpenAI. Во время рабочего процесса входа выберите соответствующий каталог, подписку Azure и ресурс Azure OpenAI.

  2. В Azure OpenAI Studio перейдите к области "Модели управления>" и выберите "Создать пользовательскую модель".

    Снимок экрана, на котором показано, как получить доступ к мастеру создания пользовательской модели в Azure OpenAI Studio.

Откроется мастер создания пользовательской модели .

Выбор базовой модели

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

Выберите базовую модель в раскрывающемся списке " Тип базовой модели" и нажмите кнопку "Далее ".

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

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • Или можно точно настроить ранее настроенную модель, отформатированную как base-model.ft-{jobid}.

Снимок экрана: параметры модели с настраиваемой тонкой моделью.

Дополнительные сведения о базовых моделях, которые можно настроить, см. в разделе "Модели".

Выбор обучающих данных

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

Снимок экрана: панель данных обучения для мастера создания пользовательской модели в Azure OpenAI Studio.

Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Большие файлы могут работать нестабильно при отправке через многокомпонентные формы, так как запросы являются атомарными, и их невозможно повторить или возобновить. Дополнительные сведения о Хранилище BLOB-объектов Azure см. в разделе "Что такое Хранилище BLOB-объектов Azure?".

Примечание.

Обучающие файлы данных должны быть отформатированы как JSONL-файлы, закодированные в UTF-8 с меткой порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Отправка обучающих данных из локального файла

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

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

  • Выберите "Обзор файла " из клиентской области данных обучения, выберите файл для отправки из диалогового окна "Открыть ", а затем нажмите кнопку "Отправить файл".

После выбора и отправки обучаемого набора данных нажмите кнопку "Далее ".

Снимок экрана: панель данных обучения для мастера создания пользовательской модели с параметрами локального файла.

Импорт обучающих данных из хранилища BLOB-объектов Azure

Набор данных обучения можно импортировать из БОЛЬШОго двоичного объекта Azure или другого общего веб-расположения, указав имя и расположение файла.

  1. Введите имя файла.

  2. В качестве расположения файла укажите URL-адрес БОЛЬШОго двоичного объекта Azure, служба хранилища Azure подписанный URL-адрес (SAS) или другую ссылку на доступное веб-расположение.

  3. Выберите " Отправить файл ", чтобы импортировать набор данных обучения в службу.

После выбора и отправки обучаемого набора данных нажмите кнопку "Далее ".

Снимок экрана: панель

Выбор данных проверки

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

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

Снимок экрана: панель данных проверки для мастера создания пользовательской модели в Azure OpenAI Studio.

Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Большие файлы могут работать нестабильно при отправке через многокомпонентные формы, так как запросы являются атомарными, и их невозможно повторить или возобновить.

Примечание.

Как и для обучающих файлов данных, файлы данных проверки должны быть отформатированы как JSONL-файлы, закодированные в UTF-8 с меткой порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Отправка данных проверки из локального файла

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

  • Перетащите файл в клиентную область области данных проверки и нажмите кнопку "Отправить файл".

  • Выберите "Обзор файла " из клиентской области данных проверки, выберите файл для отправки из диалогового окна "Открыть ", а затем нажмите кнопку "Отправить файл".

После выбора и отправки набора данных проверки нажмите кнопку "Далее ".

Снимок экрана: панель данных проверки для мастера создания пользовательской модели с параметрами локального файла.

Импорт данных проверки из хранилища BLOB-объектов Azure

Вы можете импортировать набор данных проверки из БОЛЬШОго двоичного объекта Azure или другого общего веб-расположения, указав имя и расположение файла.

  1. Введите имя файла.

  2. В качестве расположения файла укажите URL-адрес БОЛЬШОго двоичного объекта Azure, служба хранилища Azure подписанный URL-адрес (SAS) или другую ссылку на доступное веб-расположение.

  3. Выберите " Отправить файл ", чтобы импортировать набор данных обучения в службу.

После выбора и отправки набора данных проверки нажмите кнопку "Далее ".

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

Настройка дополнительных параметров

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

Имя Тип Description
batch_size integer Размер пакета, используемый для обучения. Размер пакета — это количество обучающих примеров, используемых для обучения одного прямого и обратного прохода. Как правило, большие размеры пакетов работают лучше для больших наборов данных. Значение по умолчанию, а также максимальное значение этого свойства относятся к базовой модели. Более крупный размер пакета означает, что параметры модели обновляются реже, но с более низкой дисперсией.
learning_rate_multiplier number Множитель скорости обучения, используемый для обучения. Скорость обучения точной настройки — это исходная скорость обучения, используемая для предварительного обучения, умноженная на данное значение. Более крупные показатели обучения, как правило, лучше работают с большими размерами пакетов. Мы рекомендуем поэкспериментировать со значениями в диапазоне от 0,02 до 0,2, чтобы проверить, что даст наилучшие результаты. Меньшая скорость обучения может оказаться полезной, чтобы избежать переполнения.
n_epochs integer Количество эпох для обучения модели. Под эпохой понимается один полный просмотр набора данных для обучения.

Снимок экрана: панель

Выберите Default, чтобы использовать значения по умолчанию для задания тонкой настройки, или выберите "Дополнительно ", чтобы отобразить и изменить значения гиперпараметров. При выборе по умолчанию мы определяем правильное значение алгоритмически на основе обучающих данных.

После настройки дополнительных параметров нажмите кнопку "Далее ", чтобы просмотреть выбранные варианты и обучить настроенную модель.

Просмотрите варианты и обучите модель

В области проверки мастера отображаются сведения о выборе конфигурации.

Снимок экрана: панель

Если вы готовы обучить модель, нажмите кнопку "Начать обучение", чтобы начать задание тонкой настройки и вернуться на панель "Модели ".

Проверка состояния пользовательской модели

В области "Модели" отображаются сведения о пользовательской модели на вкладке "Настраиваемые модели ". На вкладке содержатся сведения о состоянии и идентификаторе задания точной настройки для пользовательской модели. После завершения задания на вкладке отображается идентификатор файла результирующий файл. Чтобы просмотреть обновленное состояние задания обучения модели, может потребоваться выбрать "Обновить ".

Снимок экрана: панель

После запуска задания тонкой настройки может потребоваться некоторое время. Задание может находиться в очереди за другими заданиями в системе. Обучение модели может занять несколько минут или часов в зависимости от размера модели и набора данных.

Ниже приведены некоторые задачи, которые можно выполнить на панели моделей :

  • Проверьте состояние задания тонкой настройки для пользовательской модели в столбце "Состояние" вкладки "Настраиваемые модели".

  • В столбце "Имя модели" выберите имя модели, чтобы просмотреть дополнительные сведения о пользовательской модели. Состояние задания точной настройки, результатов обучения, событий обучения и гиперпараметров, используемых в задании.

  • Выберите "Скачать обучающий файл ", чтобы скачать обучающие данные, используемые для модели.

  • Выберите "Скачать результаты", чтобы скачать файл результатов , подключенный к заданию тонкой настройки модели, и проанализировать настраиваемую модель для повышения производительности обучения и проверки.

  • Нажмите кнопку Обновить для обновления сведений на странице.

Снимок экрана: панель

Развертывание пользовательской модели

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

Внимание

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

Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах на Azure OpenAI Service, каждая настраиваемая (настраиваемая) модель, развернутая почасовая стоимость размещения независимо от того, выполняются ли вызовы завершения или завершения чата в модель. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.

Примечание.

Для пользовательской модели разрешено только одно развертывание. При выборе уже развернутой пользовательской модели отображается сообщение об ошибке.

Чтобы развернуть пользовательскую модель, выберите пользовательскую модель для развертывания и выберите команду "Развернуть модель".

Снимок экрана: развертывание пользовательской модели в Azure OpenAI Studio.

Откроется диалоговое окно "Развертывание модели ". В диалоговом окне введите имя развертывания и нажмите кнопку "Создать ", чтобы начать развертывание пользовательской модели.

Снимок экрана: диалоговое окно

Ход развертывания можно отслеживать на панели "Развертывания " в Azure OpenAI Studio.

Развертывание между регионами

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

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

Развертывание между подписками и регионами можно выполнить с помощью Python или REST.

Использование развернутой пользовательской модели

После развертывания пользовательской модели его можно использовать как любую другую развернутую модель. Вы можете использовать игровые площадки в Azure OpenAI Studio для экспериментов с новым развертыванием. Вы можете продолжать использовать те же параметры с пользовательской моделью, например temperature с max_tokensдругими развернутыми моделями. Для точно настроенных babbage-002 и davinci-002 моделей вы будете использовать игровую площадку завершения и API завершения. Для точно настроенных gpt-35-turbo-0613 моделей вы будете использовать игровую площадку чата и API завершения чата.

Снимок экрана: панель

Анализ пользовательской модели

Azure OpenAI присоединяет файл результатов с именем results.csv к каждому заданию тонкой настройки после завершения. Вы можете использовать файл результатов для анализа производительности обучения и проверки пользовательской модели. Идентификатор файла результата указан для каждой пользовательской модели в столбце идентификатора файла результатов на панели "Модели " для Azure OpenAI Studio. Идентификатор файла можно использовать для идентификации и скачивания файла результатов из области файлов данных Azure OpenAI Studio.

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

Имя столбца Description
step Количество шага обучения. Шаг обучения представляет собой один проход вперед и назад в пакете обучающих данных.
train_loss Потеря для обучаемого пакета.
training_accuracy Процент завершения в пакете обучения, для которого прогнозируемые маркеры модели точно соответствуют истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Процент маркеров в пакете обучения правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].
valid_loss Потеря пакета проверки.
valid_accuracy Процент завершения в пакете проверки, для которого прогнозируемые маркеры модели точно соответствовали истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Процент маркеров в пакете проверки правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].

Вы также можете просмотреть данные в файле results.csv как графики в Azure OpenAI Studio. Выберите ссылку для обученной модели, и вы увидите три диаграммы: потеря, средняя точность маркера и точность маркера. Если вы предоставили данные проверки, оба набора данных будут отображаться на одном графике.

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

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

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

Удаление развертывания модели

Внимание

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

Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах на Azure OpenAI Service, каждая настраиваемая (настраиваемая) модель, развернутая почасовая стоимость размещения независимо от того, выполняются ли вызовы завершения или завершения чата в модель. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.

Развертывание настраиваемой модели можно удалить на панели "Развертывания " в Azure OpenAI Studio. Выберите развертывание для удаления и нажмите кнопку "Удалить ", чтобы удалить развертывание.

Удаление пользовательской модели

Пользовательская модель можно удалить на панели "Модели " в Azure OpenAI Studio. Выберите пользовательскую модель, чтобы удалить ее на вкладке "Настраиваемые модели ", а затем выберите "Удалить ", чтобы удалить пользовательскую модель.

Примечание.

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

Удаление файлов обучения

При необходимости можно удалить файлы обучения и проверки, отправленные для обучения, и результирующих файлов, созданных во время обучения, на панели файлов данных управления>в Azure OpenAI Studio. Выберите файл, который нужно удалить, и нажмите кнопку "Удалить ", чтобы удалить файл.

Непрерывная настройка

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

Для точной настройки модели, которую вы ранее настроили, вы будете использовать тот же процесс, что и при создании настраиваемой модели , но вместо указания имени универсальной базовой модели можно указать уже настроенную модель. Настраиваемая настраиваемая модель будет выглядеть следующим образом. gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

Снимок экрана: создание пользовательского интерфейса модели с выделенной тонкой моделью.

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

Необходимые компоненты

Примечание.

В настоящее время необходимо отправить приложение для доступа к Службе Azure OpenAI. Чтобы применить к доступу, заполните эту форму.

Модели

Следующие модели поддерживают точную настройку:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

Или можно точно настроить ранее настроенную модель, отформатированную как base-model.ft-{jobid}.

Снимок экрана: параметры модели с настраиваемой тонкой моделью.

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

Просмотр рабочего процесса пакета SDK для Python

Ознакомьтесь с рабочим процессом точной настройки пакета SDK для Python с Azure OpenAI:

  1. Подготовьте данные обучения и проверки.
  2. Выберите базовую модель.
  3. Отправьте данные обучения.
  4. Обучите новую настраиваемую модель.
  5. Проверьте состояние настраиваемой модели.
  6. Разверните настраиваемую модель для использования.
  7. Используйте настраиваемую модель.
  8. При необходимости проанализируйте настраиваемую модель для повышения производительности и соответствия.

Подготовка данных обучения и проверки

Данные обучения и наборы данных для проверки состоят из входных и выходных примеров того, как должна работать модель.

Для различных типов моделей требуется другой формат обучающих данных.

Используемые данные обучения и проверки должны быть отформатированы в виде документа JSON Lines (JSONL). Для gpt-35-turbo-0613 набора данных тонкой настройки необходимо отформатировать в формате беседы, который используется API завершения чата .

Если вы хотите пошаговое руководство по настройке точной настройки gpt-35-turbo-0613 , ознакомьтесь с руководством по настройке Azure OpenAI.

Пример формата файла

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Формат файла чата с несколькими поворотами

Кроме того, поддерживается несколько поворотов беседы в одной строке файла обучения jsonl. Чтобы пропустить тонкую настройку для определенных помощник сообщений, добавьте пару необязательных weight значений ключа. weight В настоящее время можно задать значение 0 или 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Помимо формата JSONL, файлы данных обучения и проверки должны быть закодированы в UTF-8 и включать метку порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Создание наборов данных для обучения и проверки

Чем больше примеров обучения у вас есть, тем лучше. Задания тонкой настройки не будут продолжаться без по крайней мере 10 примеров обучения, но такое небольшое число недостаточно, чтобы заметно повлиять на ответы модели. Рекомендуется предоставить сотни, если не тысячи, примеры обучения, которые будут успешными.

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

Отправка данных для обучения

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

Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Большие файлы могут работать нестабильно при отправке через многокомпонентные формы, так как запросы являются атомарными, и их невозможно повторить или возобновить. Дополнительные сведения о хранилище BLOB-объектов Azure см. в статье "Что такое хранилище BLOB-объектов Azure"?

Примечание.

Обучающие файлы данных должны быть отформатированы как JSONL-файлы, закодированные в UTF-8 с меткой порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

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

# Upload fine-tuning files

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

# Upload the training and validation dataset files to Azure OpenAI with the SDK.

training_response = client.files.create(
    file=open(training_file_name, "rb"), purpose="fine-tune"
)
training_file_id = training_response.id

validation_response = client.files.create(
    file=open(validation_file_name, "rb"), purpose="fine-tune"
)
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Создание настроенной модели

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

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

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

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

Текущие поддерживаемые гиперпараметры для точной настройки:

Имя Тип Description
batch_size integer Размер пакета, используемый для обучения. Размер пакета — это количество обучающих примеров, используемых для обучения одного прямого и обратного прохода. Как правило, большие размеры пакетов работают лучше для больших наборов данных. Значение по умолчанию, а также максимальное значение этого свойства относятся к базовой модели. Более крупный размер пакета означает, что параметры модели обновляются реже, но с более низкой дисперсией.
learning_rate_multiplier number Множитель скорости обучения, используемый для обучения. Скорость обучения точной настройки — это исходная скорость обучения, используемая для предварительного обучения, умноженная на данное значение. Более крупные показатели обучения, как правило, лучше работают с большими размерами пакетов. Мы рекомендуем поэкспериментировать со значениями в диапазоне от 0,02 до 0,2, чтобы проверить, что даст наилучшие результаты. Меньшая скорость обучения может оказаться полезной, чтобы избежать переподбора.
n_epochs integer Количество эпох для обучения модели. Под эпохой понимается один полный просмотр набора данных для обучения.

Чтобы задать пользовательские гиперпараметры с версией 1.x API OpenAI Python:

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
  hyperparameters={
    "n_epochs":2
  }
)

Проверка состояния задания точной настройки

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Развертывание настроенной модели

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

Внимание

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

Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах на Azure OpenAI Service, каждая настраиваемая (настраиваемая) модель, развернутая почасовая стоимость размещения независимо от того, выполняются ли вызовы завершения или завершения чата в модель. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.

Для развертывания настраиваемой модели можно использовать Azure OpenAI или Azure CLI .

Примечание.

Для настраиваемой модели разрешено только одно развертывание. Ошибка возникает при выборе уже развернутой настраиваемой модели.

Развертывание точно настроенной модели

В отличие от предыдущих команд ПАКЕТА SDK, развертывание должно выполняться с помощью API уровня управления, который требует отдельной авторизации, другого пути API и другой версии API.

переменная Определение
token Существует несколько способов создания маркера авторизации. Самый простой способ начального тестирования — запустить Cloud Shell из портал Azure. Затем выполните az account get-access-token. Этот маркер можно использовать в качестве временного маркера авторизации для тестирования API. Мы рекомендуем сохранить это в новой переменной среды
Подписка Идентификатор подписки для связанного ресурса Azure OpenAI
resource_group Имя группы ресурсов для ресурса Azure OpenAI
resource_name Имя ресурса Azure OpenAI
model_deployment_name Настраиваемое имя для нового точно настроенного развертывания модели. Это имя, которое будет ссылаться в коде при вызове завершения чата.
fine_tuned_model Получение этого значения из задания точной настройки приводит к предыдущему шагу. Оно выглядит так: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Необходимо добавить это значение в deploy_data json.
import json
import os
import requests

token= os.getenv("<TOKEN>") 
subscription = "<YOUR_SUBSCRIPTION_ID>"  
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}

deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83
            "version": "1"
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Развертывание между регионами

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

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

Ниже приведен пример развертывания модели, которая была точно настроена в одной подписке или регионе в другой.

import json
import os
import requests

token= os.getenv("<TOKEN>") 

subscription = "<DESTINATION_SUBSCRIPTION_ID>"  
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"

source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"


source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'

model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}



deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"FINE_TUNED_MODEL_NAME">, # This value will look like gpt-35-turbo-0613.ft-0ab3f80e4f2242929258fff45b56a9ce 
            "version": "1",
            "source": source
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

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

Развертывание модели с помощью Azure CLI

В следующем примере показано, как использовать Azure CLI для развертывания настраиваемой модели. В Azure CLI необходимо указать имя развертывания настраиваемой модели. Дополнительные сведения об использовании Azure CLI для развертывания настраиваемых моделей см. в статье az cognitiveservices account deployment.

Чтобы выполнить эту команду Azure CLI в окне консоли, необходимо заменить следующие <заполнители соответствующими значениями> для настраиваемой модели:

Заполнитель Значение
<YOUR_AZURE_SUBSCRIPTION> Имя или идентификатор подписки Azure.
<YOUR_RESOURCE_GROUP> Имя группы ресурсов Azure.
<YOUR_RESOURCE_NAME> Имя ресурса Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> Имя, которое вы хотите использовать для развертывания модели.
<YOUR_FINE_TUNED_MODEL_ID> Имя настраиваемой модели.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Использование развернутой настраиваемой модели

После развертывания пользовательской модели его можно использовать как любую другую развернутую модель. Вы можете использовать игровые площадки в Azure OpenAI Studio для экспериментов с новым развертыванием. Вы можете продолжать использовать те же параметры с пользовательской моделью, например temperature с max_tokensдругими развернутыми моделями. Для точно настроенных babbage-002 и davinci-002 моделей вы будете использовать игровую площадку завершения и API завершения. Для точно настроенных gpt-35-turbo-0613 моделей вы будете использовать игровую площадку чата и API завершения чата.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

Анализ настраиваемой модели

Azure OpenAI присоединяет файл результатов с именем results.csv к каждому заданию точной настройки после завершения. Вы можете использовать файл результатов для анализа производительности обучения и проверки настраиваемой модели. Идентификатор файла результата указан для каждой настраиваемой модели, и вы можете использовать пакет SDK Для Python для получения идентификатора файла и скачивания файла результатов для анализа.

В следующем примере Python извлекается идентификатор файла первого файла результатов, присоединенного к заданию точной настройки для настраиваемой модели, а затем используется пакет SDK Python для скачивания файла в рабочий каталог для анализа.

# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
    result_file_id = response.result_files[0]

retrieve = client.files.retrieve(result_file_id)

# Download the result file.
print(f'Downloading result file: {result_file_id}')

with open(retrieve.filename, "wb") as file:
    result = client.files.content(result_file_id).read()
    file.write(result)

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

Имя столбца Description
step Количество шага обучения. Шаг обучения представляет собой один проход вперед и назад в пакете обучающих данных.
train_loss Потеря для обучаемого пакета.
training_accuracy Процент завершения в пакете обучения, для которого прогнозируемые маркеры модели точно соответствуют истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Процент маркеров в пакете обучения правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].
valid_loss Потеря пакета проверки.
valid_accuracy Процент завершения в пакете проверки, для которого прогнозируемые маркеры модели точно соответствовали истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Процент маркеров в пакете проверки правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].

Вы также можете просмотреть данные в файле results.csv как графики в Azure OpenAI Studio. Выберите ссылку для обученной модели, и вы увидите три диаграммы: потеря, средняя точность маркера и точность маркера. Если вы предоставили данные проверки, оба набора данных будут отображаться на одном графике.

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

Очистка развертываний, настраиваемых моделей и файлов обучения

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

Удаление развертывания модели

Внимание

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

Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах на Azure OpenAI Service, каждая настраиваемая (настраиваемая) модель, развернутая почасовая стоимость размещения независимо от того, выполняются ли вызовы завершения или завершения чата в модель. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.

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

Удаление настраиваемой модели

Аналогичным образом можно использовать различные методы для удаления настраиваемой модели:

Примечание.

Вы не можете удалить настраиваемую модель, если она имеет существующее развертывание. Прежде чем удалить настраиваемую модель, необходимо сначала удалить развертывание модели.

Удаление файлов обучения

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

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

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
for item in files:
    if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
        results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')

# Enumerate the file IDs for our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Непрерывная настройка

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

Для точной настройки модели, которую вы ранее настроили, вы будете использовать тот же процесс, что и при создании настраиваемой модели , но вместо указания имени универсальной базовой модели можно указать идентификатор уже точно настроенной модели. Идентификатор точно настроенной модели выглядит следующим образом. gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  
)

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

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

Если вы не уверены в идентификаторе существующей точно настроенной модели, эти сведения можно найти на странице моделей Azure OpenAI Studio или создать список моделей для определенного ресурса Azure OpenAI с помощью REST API.

Необходимые компоненты

Примечание.

В настоящее время необходимо отправить приложение для доступа к Службе Azure OpenAI. Чтобы применить к доступу, заполните эту форму.

Модели

Следующие модели поддерживают точную настройку:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)

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

Просмотр рабочего процесса для REST API

Ознакомьтесь с рабочим процессом точной настройки для использования REST APIS и Python с Azure OpenAI:

  1. Подготовьте данные обучения и проверки.
  2. Выберите базовую модель.
  3. Отправьте данные обучения.
  4. Обучите новую настраиваемую модель.
  5. Проверьте состояние настраиваемой модели.
  6. Разверните настраиваемую модель для использования.
  7. Используйте настраиваемую модель.
  8. При необходимости проанализируйте настраиваемую модель для повышения производительности и соответствия.

Подготовка данных обучения и проверки

Данные обучения и наборы данных для проверки состоят из входных и выходных примеров того, как должна работать модель.

Для различных типов моделей требуется другой формат обучающих данных.

Используемые данные обучения и проверки должны быть отформатированы в виде документа JSON Lines (JSONL). Для gpt-35-turbo-0613 и других связанных моделей набор данных тонкой настройки должен быть отформатирован в формате беседы, который используется API завершения чата .

Если вы хотите пошаговое руководство по настройке точной настройки gpt-35-turbo-0613 , ознакомьтесь с руководством по настройке Azure OpenAI.

Пример формата файла

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Формат файла чата с несколькими поворотами

Кроме того, поддерживается несколько поворотов беседы в одной строке файла обучения jsonl. Чтобы пропустить тонкую настройку для определенных помощник сообщений, добавьте пару необязательных weight значений ключа. weight В настоящее время можно задать значение 0 или 1.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Помимо формата JSONL, файлы данных обучения и проверки должны быть закодированы в UTF-8 и включать метку порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Создание наборов данных для обучения и проверки

Чем больше примеров обучения у вас есть, тем лучше. Задания тонкой настройки не будут продолжаться без по крайней мере 10 примеров обучения, но такое небольшое число недостаточно, чтобы заметно повлиять на ответы модели. Рекомендуется предоставить сотни, если не тысячи, примеры обучения, которые будут успешными.

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

Выбор базовой модели

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

Выберите базовую модель в раскрывающемся списке " Тип базовой модели" и нажмите кнопку "Далее ".

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

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)

Или можно точно настроить ранее настроенную модель, отформатированную как base-model.ft-{jobid}.

Снимок экрана: параметры модели с настраиваемой тонкой моделью.

Дополнительные сведения о базовых моделях, которые можно настроить, см. в разделе "Модели".

Отправка данных для обучения

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

Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Большие файлы могут работать нестабильно при отправке через многокомпонентные формы, так как запросы являются атомарными, и их невозможно повторить или возобновить. Дополнительные сведения о хранилище BLOB-объектов Azure см. в статье "Что такое хранилище BLOB-объектов Azure"?

Примечание.

Обучающие файлы данных должны быть отформатированы как JSONL-файлы, закодированные в UTF-8 с меткой порядка байтов (BOM). Размер файла должен быть меньше 512 МБ.

Отправка обучающих данных

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"

Отправка данных проверки

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"

Создание настроенной модели

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

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "'<VALIDATION_FILE_ID>"
}'

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

Текущие поддерживаемые гиперпараметры для точной настройки:

Имя Тип Description
batch_size integer Размер пакета, используемый для обучения. Размер пакета — это количество обучающих примеров, используемых для обучения одного прямого и обратного прохода. Как правило, большие размеры пакетов работают лучше для больших наборов данных. Значение по умолчанию, а также максимальное значение этого свойства относятся к базовой модели. Более крупный размер пакета означает, что параметры модели обновляются реже, но с более низкой дисперсией.
learning_rate_multiplier number Множитель скорости обучения, используемый для обучения. Скорость обучения точной настройки — это исходная скорость обучения, используемая для предварительного обучения, умноженная на данное значение. Более крупные показатели обучения, как правило, лучше работают с большими размерами пакетов. Мы рекомендуем поэкспериментировать со значениями в диапазоне от 0,02 до 0,2, чтобы проверить, что даст наилучшие результаты. Меньшая скорость обучения может оказаться полезной, чтобы избежать переподбора.
n_epochs integer Количество эпох для обучения модели. Под эпохой понимается один полный просмотр набора данных для обучения.

Проверка состояния настраиваемой модели

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

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2023-12-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Развертывание настроенной модели

Внимание

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

Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах на Azure OpenAI Service, каждая настраиваемая (настраиваемая) модель, развернутая почасовая стоимость размещения независимо от того, выполняются ли вызовы завершения или завершения чата в модель. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.

В следующем примере Python показано, как использовать REST API для создания развертывания модели для настраиваемой модели. REST API создает имя для развертывания настраиваемой модели.

переменная Определение
token Существует несколько способов создания маркера авторизации. Самый простой способ начального тестирования — запустить Cloud Shell из портал Azure. Затем выполните az account get-access-token. Этот маркер можно использовать в качестве временного маркера авторизации для тестирования API. Мы рекомендуем сохранить это в новой переменной среды
Подписка Идентификатор подписки для связанного ресурса Azure OpenAI
resource_group Имя группы ресурсов для ресурса Azure OpenAI
resource_name Имя ресурса Azure OpenAI
model_deployment_name Настраиваемое имя для нового точно настроенного развертывания модели. Это имя, которое будет ссылаться в коде при вызове завершения чата.
fine_tuned_model Получение этого значения из задания точной настройки приводит к предыдущему шагу. Оно выглядит так: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Необходимо добавить это значение в json deploy_data.
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

Развертывание между регионами

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

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

Ниже приведен пример развертывания модели, которая была точно настроена в одной подписке или регионе в другой.

curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>", 
            "version": "1",
            "source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}" 
        }
    }
}'

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

Развертывание модели с помощью Azure CLI

В следующем примере показано, как использовать Azure CLI для развертывания настраиваемой модели. В Azure CLI необходимо указать имя развертывания настраиваемой модели. Дополнительные сведения об использовании Azure CLI для развертывания настраиваемых моделей см. в статье az cognitiveservices account deployment.

Чтобы выполнить эту команду Azure CLI в окне консоли, необходимо заменить следующие <заполнители соответствующими значениями> для настраиваемой модели:

Заполнитель Значение
<YOUR_AZURE_SUBSCRIPTION> Имя или идентификатор подписки Azure.
<YOUR_RESOURCE_GROUP> Имя группы ресурсов Azure.
<YOUR_RESOURCE_NAME> Имя ресурса Azure OpenAI.
<YOUR_DEPLOYMENT_NAME> Имя, которое вы хотите использовать для развертывания модели.
<YOUR_FINE_TUNED_MODEL_ID> Имя настраиваемой модели.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Использование развернутой настраиваемой модели

После развертывания пользовательской модели его можно использовать как любую другую развернутую модель. Вы можете использовать игровые площадки в Azure OpenAI Studio для экспериментов с новым развертыванием. Вы можете продолжать использовать те же параметры с пользовательской моделью, например temperature с max_tokensдругими развернутыми моделями. Для точно настроенных babbage-002 и davinci-002 моделей вы будете использовать игровую площадку завершения и API завершения. Для точно настроенных gpt-35-turbo-0613 моделей вы будете использовать игровую площадку чата и API завершения чата.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

Анализ настраиваемой модели

Azure OpenAI присоединяет файл результатов с именем results.csv к каждому заданию точной настройки после завершения. Вы можете использовать файл результатов для анализа производительности обучения и проверки настраиваемой модели. Идентификатор файла для результирующих файлов указан для каждой настраиваемой модели, и вы можете использовать REST API для получения идентификатора файла и скачивания файла результатов для анализа.

В следующем примере Python используется REST API для получения идентификатора файла первого файла результатов, присоединенного к заданию точной настройки для настраиваемой модели, а затем загружает файл в рабочий каталог для анализа.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

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

Имя столбца Description
step Количество шага обучения. Шаг обучения представляет собой один проход вперед и назад в пакете обучающих данных.
train_loss Потеря для обучаемого пакета.
training_accuracy Процент завершения в пакете обучения, для которого прогнозируемые маркеры модели точно соответствуют истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
train_mean_token_accuracy Процент маркеров в пакете обучения правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].
valid_loss Потеря пакета проверки.
valid_accuracy Процент завершения в пакете проверки, для которого прогнозируемые маркеры модели точно соответствовали истинным маркерам завершения.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,67 (2 из 3), если модель предсказала [[1, 1], [0, 5], [4, 2]].
validation_mean_token_accuracy Процент маркеров в пакете проверки правильно предсказан моделью.
Например, если размер пакета имеет значение 3, а данные содержат завершения [[1, 2], [0, 5], [4, 2]], это значение равно 0,83 (5 из 6), если модель предсказала [[1, 1], [0, 5], [4, 2]].

Вы также можете просмотреть данные в файле results.csv как графики в Azure OpenAI Studio. Выберите ссылку для обученной модели, и вы увидите три диаграммы: потеря, средняя точность маркера и точность маркера. Если вы предоставили данные проверки, оба набора данных будут отображаться на одном графике.

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

Очистка развертываний, настраиваемых моделей и файлов обучения

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

Удаление развертывания модели

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

Удаление настраиваемой модели

Аналогичным образом можно использовать различные методы для удаления настраиваемой модели:

Примечание.

Вы не можете удалить настраиваемую модель, если она имеет существующее развертывание. Прежде чем удалить настраиваемую модель, необходимо сначала удалить развертывание модели.

Удаление файлов обучения

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

Непрерывная настройка

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

Для точной настройки модели, которую вы ранее настроили, можно использовать тот же процесс, что и при создании настраиваемой модели , но вместо указания имени универсальной базовой модели можно указать идентификатор уже точно настроенной модели. Идентификатор точно настроенной модели выглядит следующим образом. gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

Мы также рекомендуем включить suffix параметр, чтобы упростить различие между различными итерациями вашей точно настроенной модели. suffix принимает строку и задает для идентификации точно настроенной модели. Суффикс может содержать до 40 символов (a-z, A-Z, 0-9 и _), которые будут добавлены в имя вашей точной модели.

Если вы не уверены в идентификаторе вашей точно настроенной модели, эти сведения можно найти на странице моделей Azure OpenAI Studio или создать список моделей для определенного ресурса Azure OpenAI с помощью REST API.

Устранение неполадок

Разделы справки включить точную настройку? Создание пользовательской модели неактивно в Azure OpenAI Studio?

Чтобы успешно получить доступ к тонкой настройке, необходимо назначить участника OpenAI Cognitive Services. Даже у кого-то с высоким уровнем разрешений службы Администратор istrator по-прежнему потребуется явно установить эту учетную запись для доступа к тонкой настройке. Дополнительные сведения см. в руководстве по управлению доступом на основе ролей.

Почему сбой отправки?

Если отправка файла завершается ошибкой, вы можете просмотреть сообщение об ошибке в разделе "Файлы данных" в Azure OpenAI Studio. Наведите указатель мыши на сообщение "Ошибка" (в столбце состояния) и будет отображаться объяснение сбоя.

Снимок экрана: сообщение об ошибке тонкой настройки.

Моя точно настроенная модель, кажется, не улучшилась

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

  • Недостаточно данных: хотя 10 является минимальным для запуска конвейера, вам потребуется сотни до тысяч точек данных, чтобы научить модель новому навыку. Слишком мало точек данных рискует переполнение и плохое обобщение. Ваша точно настроенная модель может хорошо работать с данными обучения, но плохо на других данных, так как она замечает примеры обучения вместо шаблонов обучения. Для получения наилучших результатов запланируйте подготовку набора данных с сотнями или тысячами точек данных.

  • Плохие данные: плохо курируемый или нерекоменциативный набор данных создаст модель низкого качества. Модель может изучать неточные или предвзятые шаблоны из набора данных. Например, если вы обучаете чат-бота для обслуживания клиентов, но предоставляете только обучающие данные для одного сценария (например, возвращаемого элементом), он не будет знать, как реагировать на другие сценарии. Или, если данные обучения плохи (содержат неправильные ответы), модель узнает, чтобы предоставить неверные результаты.

Следующие шаги

  • Изучите возможности тонкой настройки в руководстве по настройке Azure OpenAI.
  • Обзор региональной доступности модели точной настройки