Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как создать ресурсы, необходимые для вывода модели ИИ Azure, и использовать флагманские модели из каталога моделей ИИ Azure.
Общие сведения о ресурсах
Вывод модели искусственного интеллекта Azure — это возможность в ресурсах Служб искусственного интеллекта Azure в Azure. Вы можете создать развертывания моделей под ресурсом для использования их прогнозов. Вы также можете подключить ресурс к Центрам ИИ Azure и проектам в Azure AI Foundry, чтобы создать интеллектуальные приложения при необходимости. На следующем рисунке показана архитектура высокого уровня.
Диаграмма, демонстрирующая высокоуровневую архитектуру ресурсов, созданных в обучающем материале.
Ресурсы служб искусственного интеллекта Azure не требуют работы проектов ИИ или центров ИИ, и их можно создать для использования флагманских моделей из приложений. Однако дополнительные возможности доступны при развертывании проекта и хаба ИИ Azure, включая песочницу или агентов.
В этом руководстве показано, как создать:
- Ресурс Служб искусственного интеллекта Azure.
- Развертывание каждой из моделей, поддерживаемой по модели оплаты по мере использования.
- (Необязательно) Проект и центр ИИ Azure.
- (Необязательно) Соединение между концентратором и моделями в Службах искусственного интеллекта Azure.
Требования
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с материалом «Переход от моделей GitHub к моделям предсказания AI Azure», если вам это необходимо.
Внимание
Портал Azure AI Foundry использует проекты и центры для создания учетных записей служб ИИ Azure и настройки вывода модели ИИ Azure. Если вы не хотите использовать центры и проекты, можно создать ресурсы с помощью Azure CLI, Bicep или создать ресурс служб ИИ Azure с помощью портал Azure.
Создание ресурсов
Чтобы создать проект с учетной записью Служб искусственного интеллекта Azure, выполните следующие действия.
Перейдите на портал Azure AI Foundry.
На целевой странице выберите "Создать проект".
Присвойте проекту имя, например my-project.
В этом руководстве мы создадим новый проект в новом хабе искусственного интеллекта, поэтому выберите Создать концентратор.
Присвойте концентратору имя, например "my-hub" и нажмите кнопку "Далее".
Мастер обновляет сведения о созданных ресурсах. Выберите ресурсы Azure, которые нужно создать , чтобы просмотреть сведения.
Вы увидите, что создаются следующие ресурсы:
Свойство Описание Группа ресурсов Основной контейнер для всех ресурсов в Azure. Это помогает организовать ресурсы для совместной работы. Также помогает получить оценку затрат, связанных со всем проектом. Расположение Регион, в котором вы создаете ресурсы. Узел Основной контейнер для проектов ИИ в Azure AI Foundry. Центры способствуют совместной работе и позволяют хранить сведения для проектов. Службы искусственного интеллекта Ресурс, обеспечивающий доступ к флагманским моделям в каталоге моделей ИИ Azure. В этом руководстве создается новая учетная запись, но ресурсы служб ИИ Azure можно совместно использовать в нескольких центрах и проектах. Центры используют подключение к ресурсу, чтобы получить доступ к развертываниям моделей, доступным там. Чтобы узнать, как создать подключения между проектами и службами ИИ Azure для использования инференса модели ИИ Azure, можно прочитать Подключите ваш проект ИИ. Нажмите кнопку создания. Начинается процесс создания ресурсов.
После завершения проект будет готов к настройке.
Вывод модели искусственного интеллекта Azure — это функция предварительной версии, которая должна быть включена в Azure AI Foundry. В верхней панели навигации в правом углу выберите значок функций предварительного просмотра. Контекстная панель отображается справа от экрана.
Включите функцию Развертывание моделей в службе вывода моделей Azure AI.
Закройте панель.
Чтобы использовать выводы модели ИИ Azure, необходимо добавить развертывание моделей в учетную запись служб ИИ Azure.
Следующие шаги
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Вы можете решить и настроить, какие модели доступны для вывода в конечной точке вывода. После настройки модели можно получать прогнозы от неё, указав её название модели или название развертывания в запросах. В вашем коде больше никаких изменений не требуется для его использования.
В этой статье вы узнаете, как добавить новую модель в процесс вывода модели ИИ Azure в Azure AI Foundry.
Требования
Для работы с этой статьей необходимо иметь следующее.
Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с материалом «Переход от моделей GitHub к моделям предсказания AI Azure», если вам это необходимо.
Ресурс служб ИИ Azure.
Установите Azure CLI и
cognitiveservices
расширение для служб ИИ Azure:az extension add -n cognitiveservices
Некоторые команды, приведенные в этом руководстве, используют
jq
средство, которое может не быть установлено в вашей системе. Инструкции по установке см. в разделе "Скачатьjq
".Определите следующие сведения:
Идентификатор вашей подписки Azure.
Имя ресурса Служб искусственного интеллекта Azure.
Группа ресурсов, в которой развернут ресурс Служб искусственного интеллекта Azure.
Добавление моделей
Чтобы добавить модель, сначала необходимо определить модель, которую хотите развернуть. Вы можете запросить доступные модели следующим образом:
Войдите в подписку Azure:
az login
Если у вас более 1 подписки, выберите подписку, в которой находится ваш ресурс:
az account set --subscription $subscriptionId
Задайте следующие переменные среды с именем ресурса Служб искусственного интеллекта Azure, который вы планируете использовать и группу ресурсов.
accountName="<ai-services-resource-name>" resourceGroupName="<resource-group>" location="eastus2"
Если у вас еще нет учетной записи Служб искусственного интеллекта Azure, ее можно создать следующим образом:
az cognitiveservices account create -n $accountName -g $resourceGroupName --custom-domain $accountName --location $location --kind AIServices --sku S0
Давайте посмотрим, какие модели доступны для вас, и под каким номером SKU. Номера SKU, также известные как типы развертывания, определяют, как инфраструктура Azure используется для обработки запросов. Модели могут предлагать различные типы развертывания. Следующая команда содержит список всех доступных определений модели:
az cognitiveservices account list-models \ -n $accountName \ -g $resourceGroupName \ | jq '.[] | { name: .name, format: .format, version: .version, sku: .skus[0].name, capacity: .skus[0].capacity.default }'
Выходные данные выглядят следующим образом:
{ "name": "Phi-3.5-vision-instruct", "format": "Microsoft", "version": "2", "sku": "GlobalStandard", "capacity": 1 }
Определите модель, которую необходимо развернуть. Вам нужны свойства
name
,format
иversion
sku
. Свойствоformat
указывает поставщику, предлагающего модель. Емкость также может потребоваться в зависимости от типа развертывания.Добавьте развертывание модели в ресурс. В следующем примере добавляется
Phi-3.5-vision-instruct
:az cognitiveservices account deployment create \ -n $accountName \ -g $resourceGroupName \ --deployment-name Phi-3.5-vision-instruct \ --model-name Phi-3.5-vision-instruct \ --model-version 2 \ --model-format Microsoft \ --sku-capacity 1 \ --sku-name GlobalStandard
Модель готова к эксплуатации.
Вы можете развернуть одну и ту же модель несколько раз, если это необходимо, но под другим именем развертывания. Эта возможность может оказаться полезной в случае, если вы хотите протестировать различные конфигурации для данной модели, включая безопасность содержимого.
Используйте модель
Развернутые модели можно использовать в Azure для вывода модели ИИ с помощью конечной точки вывода модели ИИ Azure для данного ресурса. При создании запроса укажите параметр model
и вставьте созданное вами имя развертывания модели. Вы можете программно получить универсальный код ресурса (URI) для инференсной конечной точки с помощью следующего кода:
Конечная точка вывода
az cognitiveservices account show -n $accountName -g $resourceGroupName | jq '.properties.endpoints["Azure AI Model Inference API"]'
Чтобы отправить запросы к конечной точке вывода модели ИИ Azure, добавьте маршрут models
, например https://<resource>.services.ai.azure.com/models
. Вы можете ознакомиться со справочной информацией по API для конечной точки на странице справочника API прогнозирования моделей Azure ИИ.
Ключи инференции
az cognitiveservices account keys list -n $accountName -g $resourceGroupName
Управление развертываниями
Вы можете просмотреть все развертывания, доступные с помощью интерфейса командной строки:
Выполните следующую команду, чтобы просмотреть все активные развертывания:
az cognitiveservices account deployment list -n $accountName -g $resourceGroupName
Подробные сведения о данном развертывании можно просмотреть:
az cognitiveservices account deployment show \ --deployment-name "Phi-3.5-vision-instruct" \ -n $accountName \ -g $resourceGroupName
Вы можете удалить данное развертывание следующим образом:
az cognitiveservices account deployment delete \ --deployment-name "Phi-3.5-vision-instruct" \ -n $accountName \ -g $resourceGroupName
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как создать ресурсы, необходимые для вывода модели ИИ Azure, и использовать флагманские модели из каталога моделей ИИ Azure.
Общие сведения о ресурсах
Вывод модели искусственного интеллекта Azure — это возможность в ресурсах Служб искусственного интеллекта Azure в Azure. Вы можете создать развертывания моделей под ресурсом для использования их прогнозов. Вы также можете подключить ресурс к Центрам ИИ Azure и проектам в Azure AI Foundry, чтобы создать интеллектуальные приложения при необходимости. На следующем рисунке показана архитектура высокого уровня.
Диаграмма, демонстрирующая высокоуровневую архитектуру ресурсов, созданных в обучающем материале.
Ресурсы служб искусственного интеллекта Azure не требуют работы проектов ИИ или центров ИИ, и их можно создать для использования флагманских моделей из приложений. Однако дополнительные возможности доступны при развертывании проекта и хаба ИИ Azure, включая песочницу или агентов.
В этом руководстве показано, как создать:
- Ресурс Служб искусственного интеллекта Azure.
- Развертывание каждой из моделей, поддерживаемой по модели оплаты по мере использования.
- (Необязательно) Проект и центр ИИ Azure.
- (Необязательно) Соединение между концентратором и моделями в Службах искусственного интеллекта Azure.
Требования
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с материалом «Переход от моделей GitHub к моделям предсказания AI Azure», если вам это необходимо.
Установите интерфейс командной строки Azure.
Определите следующие сведения:
- Идентификатор вашей подписки Azure.
О данном учебнике
Пример в этой статье основан на примерах кода, содержащихся в репозитории Azure-Samples/azureai-model-inference-bicep . Чтобы выполнить команды локально, не копируя или вставляя содержимое файла, используйте следующие команды, чтобы клонировать репозиторий и перейти в папку для языка программирования:
git clone https://github.com/Azure-Samples/azureai-model-inference-bicep
Файлы для этого примера находятся в следующих файлах:
cd azureai-model-inference-bicep/infra
Создание ресурсов
Выполните следующие действия.
Используйте шаблон
modules/ai-services-template.bicep
для описания ресурса Служб искусственного интеллекта Azure:modules/ai-services-template.bicep
@description('Location of the resource.') param location string = resourceGroup().location @description('Name of the Azure AI Services account.') param accountName string @description('The resource model definition representing SKU') param sku string = 'S0' @description('Whether or not to allow keys for this account.') param allowKeys bool = true @allowed([ 'Enabled' 'Disabled' ]) @description('Whether or not public endpoint access is allowed for this account.') param publicNetworkAccess string = 'Enabled' @allowed([ 'Allow' 'Deny' ]) @description('The default action for network ACLs.') param networkAclsDefaultAction string = 'Allow' resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' = { name: accountName location: location identity: { type: 'SystemAssigned' } sku: { name: sku } kind: 'AIServices' properties: { customSubDomainName: accountName publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = 'https://${account.outputs.name}.services.ai.azure.com/models' output id string = account.id
Используйте шаблон
modules/ai-services-deployment-template.bicep
для описания развертываний моделей:modules/ai-services-deployment-template.bicep
@description('Name of the Azure AI services account') param accountName string @description('Name of the model to deploy') param modelName string @description('Version of the model to deploy') param modelVersion string @allowed([ 'AI21 Labs' 'Cohere' 'Core42' 'DeepSeek' 'Meta' 'Microsoft' 'Mistral AI' 'OpenAI' ]) @description('Model provider') param modelPublisherFormat string @allowed([ 'GlobalStandard' 'Standard' 'GlobalProvisioned' 'Provisioned' ]) @description('Model deployment SKU name') param skuName string = 'GlobalStandard' @description('Content filter policy name') param contentFilterPolicyName string = 'Microsoft.DefaultV2' @description('Model deployment capacity') param capacity int = 1 resource modelDeployment 'Microsoft.CognitiveServices/accounts/deployments@2024-04-01-preview' = { name: '${accountName}/${modelName}' sku: { name: skuName capacity: capacity } properties: { model: { format: modelPublisherFormat name: modelName version: modelVersion } raiPolicyName: contentFilterPolicyName == null ? 'Microsoft.Nill' : contentFilterPolicyName } }
Для удобства мы определяем модель, доступную в службе с помощью JSON-файла. Файл infra/models.json содержит список объектов JSON с ключами
name
,version
,provider
иsku
, которые определяют, какие модели будут подготовлены для развертывания. Так как модели поддерживают оплату по мере использования, развертывание моделей не влечет за собой дополнительные затраты. Измените файл, удалив или добавив записи модели, которые вы хотите сделать доступными. В следующем примере показаны только первые 7 строк JSON-файла:models.json
[ { "name": "AI21-Jamba-1.5-Large", "version": "1", "provider": "AI21 Labs", "sku": "GlobalStandard" },
Если вы планируете использовать проекты (рекомендуется), вам потребуются шаблоны для создания проекта, концентратора и подключения к ресурсу Служб искусственного интеллекта Azure:
modules/project-hub-template.bicep
param location string = resourceGroup().location @description('Name of the Azure AI hub') param hubName string = 'hub-dev' @description('Name of the Azure AI project') param projectName string = 'intelligent-apps' @description('Name of the storage account used for the workspace.') param storageAccountName string = replace(hubName, '-', '') param keyVaultName string = replace(hubName, 'hub', 'kv') param applicationInsightsName string = replace(hubName, 'hub', 'log') @description('The container registry resource id if you want to create a link to the workspace.') param containerRegistryName string = replace(hubName, '-', '') @description('The tags for the resources') param tagValues object = { owner: 'santiagxf' project: 'intelligent-apps' environment: 'dev' } var tenantId = subscription().tenantId var resourceGroupName = resourceGroup().name var storageAccountId = resourceId(resourceGroupName, 'Microsoft.Storage/storageAccounts', storageAccountName) var keyVaultId = resourceId(resourceGroupName, 'Microsoft.KeyVault/vaults', keyVaultName) var applicationInsightsId = resourceId(resourceGroupName, 'Microsoft.Insights/components', applicationInsightsName) var containerRegistryId = resourceId( resourceGroupName, 'Microsoft.ContainerRegistry/registries', containerRegistryName ) resource storageAccount 'Microsoft.Storage/storageAccounts@2019-04-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { encryption: { services: { blob: { enabled: true } file: { enabled: true } } keySource: 'Microsoft.Storage' } supportsHttpsTrafficOnly: true } tags: tagValues } resource keyVault 'Microsoft.KeyVault/vaults@2019-09-01' = { name: keyVaultName location: location properties: { tenantId: tenantId sku: { name: 'standard' family: 'A' } enableRbacAuthorization: true accessPolicies: [] } tags: tagValues } resource applicationInsights 'Microsoft.Insights/components@2018-05-01-preview' = { name: applicationInsightsName location: location kind: 'web' properties: { Application_Type: 'web' } tags: tagValues } resource containerRegistry 'Microsoft.ContainerRegistry/registries@2019-05-01' = { name: containerRegistryName location: location sku: { name: 'Standard' } properties: { adminUserEnabled: true } tags: tagValues } resource hub 'Microsoft.MachineLearningServices/workspaces@2024-07-01-preview' = { name: hubName kind: 'Hub' location: location identity: { type: 'systemAssigned' } sku: { tier: 'Standard' name: 'standard' } properties: { description: 'Azure AI hub' friendlyName: hubName storageAccount: storageAccountId keyVault: keyVaultId applicationInsights: applicationInsightsId containerRegistry: (empty(containerRegistryName) ? null : containerRegistryId) encryption: { status: 'Disabled' keyVaultProperties: { keyVaultArmId: keyVaultId keyIdentifier: '' } } hbiWorkspace: false } tags: tagValues } resource project 'Microsoft.MachineLearningServices/workspaces@2024-07-01-preview' = { name: projectName kind: 'Project' location: location identity: { type: 'systemAssigned' } sku: { tier: 'Standard' name: 'standard' } properties: { description: 'Azure AI project' friendlyName: projectName hbiWorkspace: false hubResourceId: hub.id } tags: tagValues }
modules/ai-services-connection-template.bicep
@description('Name of the hub where the connection will be created') param hubName string @description('Name of the connection') param name string @description('Category of the connection') param category string = 'AIServices' @allowed(['AAD', 'ApiKey', 'ManagedIdentity', 'None']) param authType string = 'AAD' @description('The endpoint URI of the connected service') param endpointUri string @description('The resource ID of the connected service') param resourceId string = '' @secure() param key string = '' resource connection 'Microsoft.MachineLearningServices/workspaces/connections@2024-04-01-preview' = { name: '${hubName}/${name}' properties: { category: category target: endpointUri authType: authType isSharedToAll: true credentials: authType == 'ApiKey' ? { key: key } : null metadata: { ApiType: 'Azure' ResourceId: resourceId } } }
Определите основное развертывание:
deploy-with-project.bicep
@description('Location to create the resources in') param location string = resourceGroup().location @description('Name of the resource group to create the resources in') param resourceGroupName string = resourceGroup().name @description('Name of the AI Services account to create') param accountName string = 'azurei-models-dev' @description('Name of the project hub to create') param hubName string = 'hub-azurei-dev' @description('Name of the project to create in the project hub') param projectName string = 'intelligent-apps' @description('Path to a JSON file with the list of models to deploy. Each model is a JSON object with the following properties: name, version, provider') var models = json(loadTextContent('models.json')) module aiServicesAccount 'modules/ai-services-template.bicep' = { name: 'aiServicesAccount' scope: resourceGroup(resourceGroupName) params: { accountName: accountName location: location } } module projectHub 'modules/project-hub-template.bicep' = { name: 'projectHub' scope: resourceGroup(resourceGroupName) params: { hubName: hubName projectName: projectName } } module aiServicesConnection 'modules/ai-services-connection-template.bicep' = { name: 'aiServicesConnection' scope: resourceGroup(resourceGroupName) params: { name: accountName authType: 'AAD' endpointUri: aiServicesAccount.outputs.endpointUri resourceId: aiServicesAccount.outputs.id hubName: hubName } dependsOn: [ projectHub ] } @batchSize(1) module modelDeployments 'modules/ai-services-deployment-template.bicep' = [ for (item, i) in models: { name: 'deployment-${item.name}' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: item.name modelVersion: item.version modelPublisherFormat: item.provider skuName: item.sku } dependsOn: [ aiServicesAccount ] } ] output endpoint string = aiServicesAccount.outputs.endpointUri
Войдите в Azure:
az login
Убедитесь, что вы находитесь в правильной подписке:
az account set --subscription "<subscription-id>"
Запустите развертывание:
RESOURCE_GROUP="<resource-group-name>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy-with-project.bicep
Если вы хотите развернуть только ресурс Служб искусственного интеллекта Azure и развертывания моделей, используйте следующий файл развертывания:
deploy.bicep
@description('Location to create the resources in') param location string = resourceGroup().location @description('Name of the resource group to create the resources in') param resourceGroupName string = resourceGroup().name @description('Name of the AI Services account to create') param accountName string = 'azurei-models-dev' @description('Path to a JSON file with the list of models to deploy. Each model is a JSON object with the following properties: name, version, provider') var models = json(loadTextContent('models.json')) module aiServicesAccount 'modules/ai-services-template.bicep' = { name: 'aiServicesAccount' scope: resourceGroup(resourceGroupName) params: { accountName: accountName location: location } } @batchSize(1) module modelDeployments 'modules/ai-services-deployment-template.bicep' = [ for (item, i) in models: { name: 'deployment-${item.name}' scope: resourceGroup(resourceGroupName) params: { accountName: accountName modelName: item.name modelVersion: item.version modelPublisherFormat: item.provider skuName: item.sku } dependsOn: [ aiServicesAccount ] } ] output endpoint string = aiServicesAccount.outputs.endpointUri
Запустите развертывание:
RESOURCE_GROUP="<resource-group-name>" az deployment group create \ --resource-group $RESOURCE_GROUP \ --template-file deploy.bicep
Шаблон выводит конечную точку вывода модели ИИ Azure, которую можно применить для работы с любой из созданных вами разверток модели.