Создание и настройка всех ресурсов для вывода модели искусственного интеллекта Azure
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как создать ресурсы, необходимые для вывода модели ИИ Azure, и использовать флагманские модели из каталога моделей ИИ Azure.
Необходимые компоненты
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ Azure, если это ваше дело.
Внимание
Портал Azure AI Foundry использует проекты и центры для создания учетных записей служб ИИ Azure и настройки вывода модели ИИ Azure. Если вы не хотите использовать центры и проекты, можно создать ресурсы с помощью Azure CLI, Bicep или создать ресурс служб ИИ Azure с помощью портал Azure.
Создание ресурсов
Чтобы создать проект с учетной записью Служб искусственного интеллекта Azure, выполните следующие действия.
Перейдите на портал Azure AI Foundry.
На целевой странице выберите "Создать проект".
Присвойте проекту имя, например my-project.
В этом руководстве мы создадим новый проект в новом центре искусственного интеллекта, поэтому выберите "Создать концентратор".
Присвойте концентратору имя, например "my-hub" и нажмите кнопку "Далее".
Мастер обновляет сведения о созданных ресурсах. Выберите ресурсы Azure, которые нужно создать , чтобы просмотреть сведения.
Вы увидите, что создаются следующие ресурсы:
Свойство Description Группа ресурсов Основной контейнер для всех ресурсов в Azure. Это помогает получить ресурсы, которые работают вместе. Она также помогает получить область затрат, связанных со всем проектом. Расположение Регион создаваемых ресурсов. Узел Основной контейнер для проектов ИИ в Azure AI Foundry. Центры способствуют совместной работе и позволяют хранить сведения для проектов. Службы искусственного интеллекта Ресурс, обеспечивающий доступ к флагманским моделям в каталоге моделей ИИ Azure. В этом руководстве создается новая учетная запись, но ресурсы служб ИИ Azure можно совместно использовать в нескольких центрах и проектах. Центры используют подключение к ресурсу, чтобы получить доступ к доступным развертываниям модели. Чтобы узнать, как создать подключения между проектами и службами ИИ Azure для использования вывода модели ИИ Azure, можно прочитать проект ИИ. Нажмите кнопку создания. Начинается процесс создания ресурсов.
После завершения проект будет готов к настройке.
Вывод модели искусственного интеллекта Azure — это функция предварительной версии, которая должна быть включена в Azure AI Foundry. В верхней панели навигации в правом углу выберите значок функций предварительного просмотра. Контекстная колонка отображается справа от экрана.
Включите функцию Развертывания моделей в службе вывода модели искусственного интеллекта Azure.
Закройте панель.
Чтобы использовать вывод модели ИИ Azure, необходимо добавить развертывания моделей в учетную запись служб ИИ Azure.
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Вы можете решить и настроить, какие модели доступны для вывода в конечной точке вывода. После настройки данной модели можно создать прогнозы из него, указав его имя модели или имя развертывания в запросах. Дополнительные изменения в коде не требуются.
В этой статье вы узнаете, как добавить новую модель в модель ИИ Azure в Azure AI Foundry.
Необходимые компоненты
Для работы с этой статьей необходимо иметь следующее.
Подписка Azure. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ 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>"
Если у вас еще нет учетной записи Служб искусственного интеллекта Azure, ее можно создать следующим образом:
az cognitiveservices account create -n $accountName -g $resourceGroupName
Давайте посмотрим, какие модели доступны для вас, и под каким номером SKU. Следующая команда содержит список всех доступных определений модели:
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
. Емкость также может потребоваться в зависимости от типа развертывания.Совет
Обратите внимание, что не все модели доступны во всех номерах SKU.
Добавьте развертывание модели в ресурс. В следующем примере добавляется
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
Модель готова к использованию.
Вы можете развернуть одну и ту же модель несколько раз, если это необходимо, если оно находится под другим именем развертывания. Эта возможность может оказаться полезной в случае, если вы хотите протестировать различные конфигурации для данной модели, включая безопасность содержимого.
Управление развертываниями
Вы можете просмотреть все развертывания, доступные с помощью интерфейса командной строки:
Выполните следующую команду, чтобы просмотреть все активные развертывания:
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
Использование модели
Развернутые модели в выводе модели ИИ 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
Внимание
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как создать ресурсы, необходимые для вывода модели ИИ Azure, и использовать флагманские модели из каталога моделей ИИ Azure.
Необходимые компоненты
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете модели GitHub, вы можете обновить интерфейс и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до модели ИИ 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
Общие сведения о ресурсах
В этом руководстве показано, как создать:
- Ресурс Служб искусственного интеллекта Azure.
- Развертывание модели в SKU глобального стандарта для каждой модели, поддерживающей оплату по мере использования.
- (Необязательно) Проект и центр ИИ Azure.
- (Необязательно) Соединение между концентратором и моделями в Службах искусственного интеллекта Azure.
Для создания этих ресурсов используются следующие ресурсы:
Используйте шаблон
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: { publicNetworkAccess: publicNetworkAccess networkAcls: { defaultAction: networkAclsDefaultAction } disableLocalAuth: allowKeys } } output endpointUri string = account.properties.endpoints['Azure AI Model Inference API'] 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' '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-файла. Инфраструктура файла или models.json содержит список объектов JSON с ключами
version
name
,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, которую можно использовать для использования любого созданного развертывания модели.