Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry.
Дополнительные сведения о новом портале.
Примечание
Содержание в новой документации Microsoft Foundry может открываться по ссылкам в этой статье вместо документации Foundry (классической версии), которую вы просматриваете сейчас.
Важно
Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
Узнайте, как развертывать точно настроенные модели с помощью бессерверных развертываний API в Microsoft Foundry. В этом комплексном руководстве показано, как точно настроить большие языковые модели (LLM) для определенных наборов данных и развернуть их с бессерверной инфраструктурой, предлагая улучшенную производительность, экономичность, снижение задержки и адаптированные выходные данные.
Экономичность: тонкая настройка в Foundry может быть более выгодной, особенно для крупномасштабных развертываний, благодаря модели оплаты по мере использования.
Разнообразие моделей: Тонкая настройка развертывания бессерверного API Foundry обеспечивает поддержку как собственных, так и моделей с открытым исходным кодом, предоставляя пользователям гибкость при выборе наиболее подходящих для их потребностей моделей, не ограничиваясь одним типом.
Настройка и управление: Foundry обеспечивает большую настройку и контроль над процессом тонкой настройки, что позволяет пользователям более точно настраивать модели в соответствии с конкретными требованиями.
В этой статье объясняется, как настроить модели, развернутые с помощью бессерверных развертываний API в Foundry.
Необходимые условия
Azure управления доступом на основе ролей (Azure RBAC) используются для предоставления доступа к операциям на портале Foundry. Чтобы выполнить действия, описанные в этой статье, учетная запись пользователя должна быть назначена роль Owner или Contributor для подписки Azure. Дополнительные сведения о разрешениях см. в разделе управления доступом на основе ролей на портале Foundry.
Проверка регистрации поставщика подписок
Убедитесь, что ваша подписка зарегистрирована у поставщика ресурсов Microsoft.Network.
- Войдите на портал Azure.
- Выберите подписку, которую вы хотите использовать.
- В разделе "Параметры " в боковом меню выберите "Поставщики ресурсов".
- Выберите Microsoft. Network и выберите Register если он не зарегистрирован.
Поиск моделей с поддержкой точной настройки
Каталог моделей Foundry предлагает поддержку точной настройки для нескольких типов моделей, включая завершение чата и создание текста. Список моделей и регионов, которые поддерживают точную настройку, см. в разделе о доступности регионов для моделей в бессерверных API.
Задачи точной настройки доступны только пользователям, чья подписка на Azure связана с учетной записью выставления счетов в регионе, где поставщик модели предлагает этот сервис. Если предложение доступно в соответствующем регионе, пользователь должен иметь ресурс проекта в регионе Azure, где модель доступна для развертывания или тонкой настройки, как применимо.
Перейдите на портал Foundry, чтобы просмотреть все модели, содержащие поддержку тонкой настройки:
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти шаги относятся к Foundry (classic).
Если вы еще не находитесь в проекте, выберите его.
Перейдите в каталог моделей.
Выберите фильтр задач точной настройки .
Выберите все или выберите определенную задачу.
Подготовка данных для точной настройки
Подготовьте данные обучения и проверки для точной настройки модели. Данные обучения и проверки состоят из примеров входных и выходных данных для того, чтобы показать, как должна работать модель.
Убедитесь, что все примеры обучения соответствуют ожидаемому формату вывода. Для эффективной настройки моделей обеспечьте разнообразный набор данных, поддерживая баланс данных, включая различные сценарии, и периодически уточняя обучающие данные для соответствия реальным ожиданиям. Эти действия в конечном итоге приводят к более точным и сбалансированным ответам модели.
Совет
Для различных типов моделей требуются обучающие данные в разных форматах.
Пример формата файла
Поддерживаемый тип файла — JSON Lines (JSONL). Файлы отправляются в хранилище данных по умолчанию и становятся доступными в проекте.
{"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?"}]}
Использование мастера точной настройки модели
Портал Foundry предоставляет пользовательский мастер модели для интерактивного обучения и создания модели с точной настройкой для вашего ресурса Azure.
Выбор базовой модели
- Выберите «Тонкая настройка» в боковом меню, затем выберите «Создать точную настройку модели».
- Выберите модель, которую вы хотите точно настроить из списка в разделе "Базовые модели", а затем нажмите кнопку "Далее".
Выбор обучающих данных
Следующим шагом является выбор существующих подготовленных обучающих данных или отправка новых подготовленных обучающих данных для использования при настройке модели. В области данных обучения отображаются все существующие ранее загруженные наборы данных, а также предоставляются параметры для отправки новых обучающих данных.
Выберите +Добавить обучающие данные.
- Если данные обучения уже отправлены в службу, выберите существующие файлы на этом ресурсе.
- Выберите файл из раскрывающегося списка.
- Чтобы отправить новые обучающие данные, используйте один из следующих вариантов:
- Выберите " Отправить файлы " для отправки обучающих данных из локального файла.
- Выберите Azure BLOB-объект или другие общие веб-расположения для импорта обучающих данных из Azure BLOB-объектов или другого общего веб-расположения.
- Чтобы использовать готовый к использованию набор данных для быстрой тонкой настройки, выберите из списка в разделе Выбор данных.
Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Дополнительные сведения о Хранилище BLOB-объектов Azure см. статью Что такое Хранилище BLOB-объектов Azure?
Выбор данных проверки
Следующий шаг позволяет настроить модель для использования данных проверки в процессе обучения. Если вы не хотите использовать данные проверки, нажмите кнопку "Отправить ", чтобы продолжить работу с дополнительными параметрами модели. В противном случае, если у вас есть набор данных проверки, выберите существующие подготовленные данные проверки или отправьте новые подготовленные данные проверки для использования при настройке модели.
Выберите +Добавить данные проверки. В области данных проверки отображаются все существующие ранее загруженные наборы данных для обучения и проверки и предоставляются параметры, с помощью которых можно отправить новые данные проверки.
- Если данные проверки уже отправлены в службу, выберите существующие файлы на этом ресурсе.
- Выберите файл из списка, показанного в области данных проверки .
- Чтобы отправить новые данные проверки, используйте один из следующих вариантов:
- Выберите " Отправить файлы ", чтобы отправить данные проверки из локального файла.
- Выберите Azure BLOB-объект или другие общие веб-расположения для импорта данных проверки из Azure BLOB-объектов или другого общего веб-расположения.
Для больших файлов данных рекомендуется импортировать из хранилища BLOB-объектов Azure. Большие файлы могут стать нестабильными при отправке через мультипартные формы, так как запросы являются атомарными и не могут быть повторены или возобновлены.
Примечание
- Как и для обучающих файлов данных, файлы данных проверки должны быть отформатированы как JSONL-файлы, закодированные в UTF-8 с меткой порядка байтов (BOM). Файл должен быть меньше 512 МБ.
Настройка параметров задачи
Мастер точной настройки модели отображает параметры для обучения вашей отрегулированной модели на панели параметров задачи. Доступны следующие параметры:
| Имя | Тип | Описание |
|---|---|---|
| Размер пакета (1–32) | Целое число | Размер пакета, используемый для обучения. Размер пакета — это количество примеров обучения, используемых для обучения одного и обратного прохода. Как правило, большие размеры пакетов работают лучше для больших наборов данных. Значение по умолчанию и максимальное значение этого свойства относятся к базовой модели. Более крупный размер пакета означает, что параметры модели обновляются реже, но с более низкой дисперсией. |
| Умножение скорости обучения (0.0-10.0) | Номер | Коэффициент для скорости обучения, используемый при тренировке. Скорость обучения тонкой настройки — это исходная скорость обучения, используемая для предварительного обучения, умноженная на это значение. Более высокие скорости обучения, как правило, лучше работают с большими размерами батчей. Мы рекомендуем поэкспериментировать со значениями в диапазоне от 0,02 до 0,2, чтобы увидеть, что дает лучшие результаты. Меньший уровень обучения может оказаться полезным, чтобы избежать переполнения. |
| Число эпох (1–10) | Целое число | Количество эпох для обучения модели. Эпоха – это один полный проход через обучающий набор данных. |
Выберите Default, чтобы использовать значения по умолчанию для процесса тонкой настройки, или выберите Custom, чтобы отобразить и изменить значения гиперпараметров. При выборе по умолчанию мы определяем правильное значение алгоритмически на основе обучающих данных.
После настройки дополнительных параметров нажмите кнопку "Отправить".
Проверка состояния пользовательской модели
На вкладке "Точное настройка" отображаются сведения о пользовательской модели. Вкладка содержит сведения о состоянии и идентификаторе задания на доработку для вашей настраиваемой модели. После завершения задания на вкладке отображается идентификатор результирующего файла. Чтобы просмотреть обновленное состояние задания обучения модели, может потребоваться выбрать "Обновить ".
После запуска задания тонкой настройки до его завершения может потребоваться некоторое время. В системе ваше задание может находиться в очереди за другими заданиями. Обучение модели может занять несколько минут или часов в зависимости от размера модели и набора данных. Ниже приведены некоторые задачи, выполняемые на вкладке "Модели" :
- Проверьте состояние задания тонкой настройки для пользовательской модели в столбце "Состояние " вкладки "Настраиваемые модели ".
- В столбце имени модели выберите имя модели, чтобы просмотреть дополнительные сведения о пользовательской модели. Вы можете видеть состояние задания точной настройки, результаты обучения, события обучения и гиперпараметры, используемые в задании.
- Выберите "Обновить" , чтобы обновить сведения на странице.
Поддерживаемые корпоративные сценарии для точной настройки
Для точной настройки развертывания бессерверных API поддерживаются несколько корпоративных сценариев. В следующей таблице описаны поддерживаемые конфигурации для сети хранения пользователей и проверки подлинности для обеспечения плавной работы в корпоративных сценариях:
Примечание
- Проверка подлинности подключений к данным может быть изменена с помощью Foundry: выберите соединение с хранилищем данных, где хранится ваш набор данных, и перейдите к настройке Подробности доступа>Метод аутентификации.
- Проверка подлинности хранилища может быть изменена на странице служба хранилища Azure >Параметры>Конфигурация, > позволяя доступ по ключу учетной записи хранилища .
- Сеть хранения можно изменить на странице служба хранилища Azure >Networking.
| Сеть хранилища | Аутентификация хранилища | Проверка подлинности подключения к данным | Поддержка |
|---|---|---|---|
| Доступ к общедоступной сети = включен | Ключ учетной записи включен | Ключ SAS/Account | Да, UX и SDK |
| Доступ к общедоступной сети = включен | Ключ учетной записи отключен | Аутентификация без учетных данных на основе Entra | Да, UX и SDK Примечание. Для пользовательского интерфейса может потребоваться добавить роль чтения данных BLOB-объектов хранилища или роль участника данных BLOB-объектов хранилища для вашего идентификатора пользователя в учетной записи хранения, или изменить аутентификацию подключения, чтобы использовать ключ учетной записи/SAS-токен. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ доступа к учетной записи включен | Ключ учетной записи | Да, UX и SDK Примечание. Для пользовательского интерфейса IP-адрес вычислений, работающих в браузере, должен находиться в выбранном списке. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ учетной записи включен | SAS | Да, UX и SDK Примечание. Для пользовательского интерфейса IP-адрес вычислений, работающих в браузере, должен находиться в выбранном списке. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ учетной записи отключен | Аутентификация на основе Entra (без использования учетных данных) | Да, UX и SDK. Примечание: для UX, возможно, потребуется добавить роли Storage Blob Data Reader или Storage Blob Data Contributor для вашего идентификатора пользователя в учетной записи хранилища или изменить способ аутентификации подключения, использовав ключ учетной записи или SAS-токен. Кроме того, убедитесь, что IP-адрес вычислительных ресурсов, работающих в браузере, должен находиться в выбранном списке. |
| Доступ к общедоступной сети = отключен | Ключ учетной записи включен | Ключ SAS/Account | Да, UX и SDK. Примечание: для загрузки и отправки данных пользовательского опыта необходимо иметь доступ к рабочей области из виртуальной сети, которая имеет соответствующий доступ к хранилищу. |
| Доступ к общедоступной сети = отключен | Ключ учетной записи отключен | Аутентификация на основе Entra (без учетных данных) | Да, UX и SDK. Примечание. Для загрузки и отправки данных пользовательского опыта необходимо, чтобы рабочая область была доступна из виртуальной сети, имеющей соответствующий доступ к хранилищу. |
В рабочей области управляемой виртуальной сети предыдущие сценарии также должны работать. Сведения о настройке управляемого концентратора виртуальной сети Foundry см. в статье " Настройка управляемой сети для центров Foundry".
Использование ключей, управляемых клиентом (CMKs), не является поддерживаемым корпоративным сценарием с точной настройкой развертывания бессерверных API.
Проблемы с точной настройкой уникальных сетевых настроек в рабочей области и хранилище обычно указывают на проблему настройки сети.
Развертывание точно настроенной модели
После успешного выполнения задания тонкой настройки разверните пользовательскую модель на вкладке Тонкая настройка. Необходимо развернуть настраиваемую модель, чтобы сделать ее доступной для использования с вызовами автозавершения.
Важно
После развертывания настраиваемой модели и завершения работы с конечной точкой не забудьте очистить все неактивные конечные точки. Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах Foundry, каждая настраиваемая (точно настроенная) модель имеет почасовую стоимость размещения, независимо от того, выполняются ли вызовы для завершений или завершений чата в модель.
Дополнительные сведения о планировании и управлении затратами с помощью Foundry см. в руководстве по планированию и управлению затратами на службу Foundry.
Примечание
Для пользовательской модели разрешено только одно развертывание. При выборе уже развернутой пользовательской модели отображается сообщение об ошибке. Чтобы развернуть пользовательскую модель, выберите пользовательскую модель для развертывания и выберите команду "Развернуть модель".
Откроется диалоговое окно "Развертывание модели ". В диалоговом окне введите имя развертывания и выберите "Развернуть ", чтобы начать развертывание пользовательской модели.
Вы также можете развернуть точно настроенную модель на вкладке "Модели и конечные точки" , нажав кнопку "Развернуть модель ", а затем выбрав " Развернуть точно настроенную модель " в раскрывающемся списке
Затем выберите настраиваемую модель, которую вы хотите развернуть, и нажмите кнопку "Развернуть".
Развертывание между регионами
Точная настройка поддерживает развертывание точно настроенной модели в другом регионе, отличном от того, где модель была изначально настроена. Вы также можете развернуть в другой подписке или регионе.
Единственными ограничениями являются то, что новый регион также обязан поддерживать настройку параметров, а при развертывании между различными подписками учетная запись, создающая маркер авторизации для развертывания, должна иметь доступ как к исходным, так и к целевым подпискам.
Развертывание между подписками или регионами можно выполнить с помощью Python.
Используйте развернутую пользовательскую модель
После развертывания пользовательской модели, её можно использовать как любую другую развернутую модель. Для экспериментов с новым развертыванием можно использовать игровые площадки на портале Foundry . Вы можете продолжать использовать те же параметры с пользовательской моделью, например температурой и max_tokens, как и с другими развернутыми моделями.
Очистка настроенных моделей
Вы можете удалить точно настроенную модель из списка моделей тонкой настройки в Foundry или на странице сведений о модели. Чтобы удалить модель с тонкой настройкой на странице Тонкая настройка, выполните следующие действия.
- Выберите Точная настройка в меню боковой панели в проекте Foundry.
- Нажмите кнопку "Удалить ", чтобы удалить настраиваемую модель.
Примечание
Вы не можете удалить пользовательскую модель, если она имеет существующее развертывание. Перед удалением пользовательской модели вы должны сначала удалить развертывание этой модели.
Создание клиента для использования модели
В следующих разделах описано, как настроить модель в Python. Чтобы найти пример ноутбука этого кода, см. Тонкая настройка LLM с использованием модели как услуги.
- Установите зависимости, чтобы начать настройку модели.
%pip install azure-ai-ml
%pip install azure-identity
%pip install mlflow
%pip install azureml-mlflow
- Создайте клиент для использования модели. В следующем коде используется URL-адрес конечной точки и ключ, хранящиеся в переменных среды. Замените <SUBSCRIPTION_ID>, <RESOURCE_GROUP_NAME> и <WORKSPACE_NAME> собственными значениями.
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<SUBSCRIPTION_ID>",
resource_group_name="<RESOURCE_GROUP_NAME>",
workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
)
# The models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")
# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id
Поиск моделей с поддержкой точной настройки
Каталог моделей Foundry предлагает поддержку точной настройки для нескольких типов моделей, включая завершение чата и создание текста. Список моделей и регионов, которые поддерживают точную настройку, см. в разделе "Доступность регионов" для моделей в бессерверных API.
Задачи точной настройки доступны только пользователям, чья подписка на Azure связана с учетной записью выставления счетов в регионе, где поставщик модели предлагает этот сервис. Если предложение доступно в соответствующем регионе, пользователь должен иметь ресурс проекта в регионе Azure, где модель доступна для развертывания или тонкой настройки, как применимо.
В этом примере используется модель Phi-4-mini-instruct. В этом фрагменте кода свойство идентификатора модели передается в качестве входных данных в задание тонкой настройки. Это также доступно в качестве поля идентификатора ресурса на странице сведений о модели в каталоге моделей Foundry.
model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
"\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
)
)
Подготовка данных для точной настройки
Подготовьте данные обучения и проверки для точной настройки модели. Данные обучения и проверки состоят из примеров входных и выходных данных для того, чтобы показать, как должна работать модель.
Убедитесь, что все примеры обучения соответствуют ожидаемому формату вывода. Для эффективной настройки моделей обеспечьте разнообразный набор данных, поддерживая баланс данных, включая различные сценарии, и периодически уточняя обучающие данные для соответствия реальным ожиданиям. Эти действия в конечном итоге приводят к более точным и сбалансированным ответам модели.
Совет
Для различных типов моделей требуется другой формат обучающих данных.
Пример формата файла
Поддерживаемый тип файла — JSON Lines (JSONL). Файлы отправляются в хранилище данных по умолчанию и становятся доступными в проекте.
{"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?"}]}
Создание входных данных для обучения
В этом фрагменте кода показано, как определить обучающий набор данных.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data
dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
train_data_asset = workspace_ml_client.data.get(
train_dataset_name, version=dataset_version
)
print(f"Dataset {train_dataset_name} already exists")
except:
print("creating dataset")
train_data = Data(
path=f"./train.jsonl",
type=AssetTypes.URI_FILE,
description="Training dataset",
name=train_dataset_name,
version="1",
)
train_data_asset = workspace_ml_client.data.create_or_update(train_data)
Создание данных проверки
Следующий шаг позволяет настроить модель для использования данных проверки в процессе обучения. Если вы не хотите использовать данные проверки, можно пропустить этот шаг и перейти к следующему разделу. В противном случае, если у вас есть набор данных проверки, можно выбрать существующие подготовленные данные проверки или отправить новые подготовленные данные проверки для использования при настройке модели.
from azure.ai.ml.entities import Data
dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
validation_data_asset = workspace_ml_client.data.get(
validation_dataset_name, version=dataset_version
)
print(f"Dataset {validation_dataset_name} already exists")
except:
print("creating dataset")
validation_data = Data(
path=f"./validation.jsonl",
type=AssetTypes.URI_FILE,
description="Validation dataset",
name=validation_dataset_name,
version="1",
)
validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)
Создание подписки Маркетплейс для моделей партнёров
Этот шаг необходим для всех моделей, отличных от Microsoft. Примером модели Microsoft является семейство моделей Phi.
model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)
normalized_model_name = model_name.replace(".", "-")
from azure.ai.ml.entities import MarketplaceSubscription
subscription_name = f"{normalized_model_name}-sub"
marketplace_subscription = MarketplaceSubscription(
model_id=model_id_to_subscribe,
name=subscription_name,
)
# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
marketplace_subscription = (
workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
marketplace_subscription
).result()
)
except Exception as ex:
print(ex)
Отправьте задание на тонкую настройку, используя модель и данные в качестве входных данных.
Для точной настройки модели требуется следующий набор параметров.
-
model: базовая модель для точной настройки -
training_data: учебные данные для тонкой настройки базовой модели -
validation_data: проверка данных для точной настройки базовой модели -
task: задача тонкой настройки для выполнения, например, CHAT_COMPLETION для заданий тонкой настройки завершения чата -
outputs: имя зарегистрированной модели выходных данных
Следующие параметры являются необязательными:
-
hyperparameters: параметры, управляющие процессом тонкой настройки во время выполнения -
name: имя задания тонкой настройки -
experiment_name: имя эксперимента для задачи тонкой настройки -
display_name: отображаемое имя задания тонкой настройки
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid
guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"
finetuning_job = create_finetuning_job(
task=FineTuningTaskType.CHAT_COMPLETION,
training_data=train_data_asset.id,
validation_data=validation_data_asset.id,
hyperparameters={
"per_device_train_batch_size": "1",
"learning_rate": "0.00002",
"num_train_epochs": "1",
},
model=model_to_finetune.id,
display_name=display_name,
name=name,
experiment_name=experiment_name,
tags={"foo_tag": "bar"},
properties={"my_property": "my_value"},
output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)
status = workspace_ml_client.jobs.get(created_job.name).status
import time
while True:
status = workspace_ml_client.jobs.get(created_job.name).status
print(f"Current job status: {status}")
if status in ["Failed", "Completed", "Canceled"]:
print("Job has finished with status: {0}".format(status))
break
else:
print("Job is still running. Checking again in 30 seconds.")
time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name
Развертывание точно настроенной модели
После успешного завершения процесса тонкой настройки можно развернуть пользовательскую модель.
Важно
После развертывания настраиваемой модели и завершения работы с конечной точкой не забудьте очистить все неактивные конечные точки. Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время. Как описано в ценах Foundry, каждая настраиваемая (точно настроенная) модель имеет почасовую стоимость размещения, независимо от того, выполняются ли вызовы для завершений или завершений чата в модель.
Дополнительные сведения о планировании и управлении затратами с помощью Foundry см. в руководстве по планированию и управлению затратами на центры Foundry.
# Deploy the model as a serverless endpoint
endpoint_name = f"{normalized_model_name}-ft-{short_guid}" # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"
Поддерживаемые корпоративные сценарии для точной настройки
Для точной настройки развертывания бессерверных API поддерживаются несколько корпоративных сценариев. В следующей таблице описаны поддерживаемые конфигурации для сети хранения пользователей и проверки подлинности для обеспечения плавной работы в корпоративных сценариях:
Примечание
- Проверка подлинности подключений к данным может быть изменена с помощью Foundry, выбрав подключение хранилища данных, в котором хранится набор данных, и перейти к параметру Access details>метода проверки подлинности.
- Проверка подлинности хранилища может быть изменена на странице настроек и конфигураций служба хранилища Azure, разрешающих доступ по ключу учетной записи хранилища.
- Сеть хранения можно изменить на странице служба хранилища Azure >Networking.
| Сеть хранилища | Аутентификация хранилища | Проверка подлинности подключения к данным | Поддержка |
|---|---|---|---|
| Доступ к общедоступной сети = включен | Ключ учетной записи включен | ключ учетной записи SAS | Да, UX и SDK |
| Доступ к общедоступной сети = включен | Ключ учетной записи отключен | Аутентификация на основе Entra (без credential) | Да, UX и SDK Примечание. Для пользовательского интерфейса может понадобиться добавить роль "Читатель данных Blob-хранилища" или "Участник данных Blob-хранилища" для идентификатора пользователя в учетной записи хранения, или изменить метод аутентификации подключения, чтобы использовать учетный ключ или токен SAS. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ учетной записи включен | Ключ учетной записи | Да, UX и SDK Примечание. Для пользовательского интерфейса IP-адрес вычислений, работающих в браузере, должен находиться в выбранном списке. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ учетной записи включен | SAS | Да, UX и SDK Примечание. Для пользовательского интерфейса IP-адрес вычислений, работающих в браузере, должен находиться в выбранном списке. |
| Включено из выбранных виртуальных сетей и IP-адресов | Ключ учетной записи отключен | Аутентификация на основе Entra (безкредитный) | Да, UX и SDK. Примечание: Для пользовательского интерфейса, возможно, потребуется добавить роли "Читатель данных Blob-хранилища" или "Участник данных Blob-хранилища" для вашего идентификатора пользователя в хранилище, или изменить метод проверки подлинности подключения, чтобы использовать ключ учетной записи/SAS-токен. Кроме того, убедитесь, что IP-адрес вычислительных ресурсов, работающих в браузере, должен находиться в выбранном списке. |
| Доступ к общедоступной сети = отключен | Ключ учетной записи включен | Ключ SAS/Account | Да, UX и SDK. Примечание. Чтобы отправка данных UX работала, необходимо осуществлять доступ к рабочей области из виртуальной сети с соответствующими правами доступа к хранилищу. |
| Доступ к общедоступной сети = отключен | Ключ учетной записи отключен | Проверка подлинности на основе Entra (без использования учетных данных) | Да, UX и SDK. Примечание. Для загрузки и отправки данных UX рабочее пространство должно быть доступно из виртуальной сети с соответствующим доступом к хранилищу. |
Предыдущие сценарии также должны работать в рабочей области управляемой виртуальной сети. Сведения о настройке управляемой виртуальной сети Foundry Hub см. в статье " Настройка управляемой сети для центров Foundry".
Использование ключей, управляемых клиентом (CMKs), не является поддерживаемым корпоративным сценарием с точной настройкой развертывания бессерверных API.
Проблемы с точной настройкой уникальных сетевых настроек в рабочей области и хранилище обычно указывают на проблему настройки сети.
Развертывание между регионами
Точная настройка поддерживает развертывание точно настроенной модели в другом регионе, отличном от того, где модель была изначально настроена. Вы также можете развернуть в другой подписке или регионе.
Единственными ограничениями являются то, что новый регион также обязан поддерживать настройку параметров, а при развертывании между различными подписками учетная запись, создающая маркер авторизации для развертывания, должна иметь доступ как к исходным, так и к целевым подпискам.
Развертывание между подписками или регионами можно выполнить с помощью Python.
# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<TARGET_SUBSCRIPTION_ID>",
resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
workspace_name="<TARGET_PROJECT_NAME>",
)
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
print(f"Creating endpoint in the region:{workspace_region}")
serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
serverless_endpoint
).result()
else:
raise ValueError(
f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
)
Использование развернутой пользовательской модели
После развертывания пользовательской модели, её можно использовать как любую другую развернутую модель. Вы можете продолжать использовать те же параметры для своей пользовательской модели, например temperature и max_tokens, как и с другими развернутыми моделями.
endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key
import requests
url = f"{endpoint.scoring_uri}/v1/chat/completions"
payload = {
"max_tokens": 1024,
"messages": [
{
"content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
"role": "user",
}
],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}
response = requests.post(url, json=payload, headers=headers)
response.json()
Очистите тонко настроенные модели
Завершив работу с моделью, запустите следующий код, чтобы очистить настроенную модель.
workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()
Рекомендации по затратам и квотам для моделей, развернутых в качестве бессерверного развертывания API
Квота управляется для каждого развертывания. Каждое развертывание имеет ограничение скорости в 200 000 токенов в минуту и 1000 запросов API в минуту. Однако в настоящее время мы ограничиваем одно развертывание для каждой модели для каждого проекта. Обратитесь в службу поддержки Microsoft Azure, если текущие ограничения скорости недостаточно для ваших сценариев.
Стоимость моделей Microsoft
Сведения о ценах можно найти на вкладке Цены и условия мастера установки при развертывании моделей Microsoft (например, моделей Phi-3) в качестве бессерверного API-развертывания.
Затраты на модели, отличные от Microsoft
Модели, не принадлежащие Microsoft, развернутые в качестве бессерверного API-развертывания, предлагаются через Azure Marketplace и интегрированы с Foundry для использования. Вы можете узнать цены на Azure Marketplace при развертывании или тонкой настройке этих моделей.
Каждый раз, когда проект подписывается на данное предложение из Azure Marketplace, создается новый ресурс для отслеживания затрат, связанных с его потреблением. Тот же ресурс используется для отслеживания затрат, связанных с выводом и точной настройкой; однако для отслеживания каждого сценария можно отслеживать несколько метров независимо.
Дополнительные сведения о том, как отслеживать затраты, см. в разделе Отслеживание стоимости моделей, предлагаемых через Azure Marketplace.
Пример записной книжки
Вы можете использовать эту техническую записную книжку для создания автономного задания точной настройки, чтобы улучшить способность модели к суммированию диалогов между двумя людьми с помощью набора данных Samsum.
Обучающие данные — это набор данных ultrachat_200k, который разделен на четыре разбиения, подходящие для защищенной точной настройки (sft) и ранжирования поколений (gen). Записная книжка использует доступные модели Azure ИИ для задачи завершения чата (если вы хотите использовать модель, отличную от используемой в записной книжке, можно заменить имя модели).
Ноутбук включает настройку необходимых предварительных условий, выбор модели для дообучения, создание наборов данных для обучения и проверки, настройку и отправку задания дообучения и, наконец, создание бессерверного развертывания с использованием дообученной модели для вывода результатов.
Пример интерфейса командной строки
Кроме того, вы можете использовать этот пример интерфейса командной строки для создания автономного задания на дообучение для улучшения способности модели суммировать диалоги между двумя людьми с помощью набора данных.
type: finetuning
name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model:
path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
type: mlflow_model
training_data: train.jsonl
validation_data:
path: validation.jsonl
type: uri_file
hyperparameters:
num_train_epochs: "1"
per_device_train_batch_size: "1"
learning_rate: "0.00002"
properties:
my_property: "my_value"
tags:
foo_tag: "bar"
outputs:
registered_model:
name: "Phi-3-mini-4k-instruct-finetuned-model"
type: mlflow_model
Используемые обучающие данные такие же, как в записной книжке SDK. Интерфейс командной строки использует доступные модели Azure ИИ для задачи завершения чата. Если вы предпочитаете использовать другую модель, отличную от модели в примере ИНТЕРФЕЙСА командной строки, можно обновить аргументы, например model pathсоответствующим образом.
Фильтрация содержимого
Модели развертывания бессерверных API защищены Безопасность содержимого ИИ Azure. При развертывании в конечных точках в режиме реального времени вы можете отказаться от этой возможности.
Если включена Безопасность содержимого ИИ Azure, запрос и завершение проходят через ансамбль моделей классификации, направленных на обнаружение и предотвращение выходных данных вредного содержимого. Система фильтрации содержимого обнаруживает и принимает меры по определенным категориям потенциально вредного содержимого как в запросах ввода, так и в завершении выходных данных.
Дополнительные сведения о Безопасность содержимого ИИ Azure см. в статье Content filtering на портале Foundry.