Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Важно!
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
В этой статье вы узнаете, как создать ресурсы, необходимые для использования моделей Azure AI Foundry в проектах.
Модели Azure AI Foundry — это функционал в службах Azure AI Foundry Services (ранее известных как Azure AI Services). Вы можете создать развертывания моделей под ресурсом для использования их прогнозов. Вы также можете подключить ресурс к Центрам ИИ Azure и проектам в Azure AI Foundry, чтобы создать интеллектуальные приложения при необходимости. На следующем рисунке показана архитектура высокого уровня.
Диаграмма, демонстрирующая высокоуровневую архитектуру ресурсов, созданных в обучающем материале.
Услуги Azure AI Foundry не требуют наличия проектов ИИ или центров ИИ для функционирования, и их можно создать для использования моделей флагманского уровня из ваших приложений. Однако дополнительные возможности доступны при развертывании проекта и хаба ИИ Azure, включая песочницу или агентов.
В этом руководстве показано, как создать:
- Ресурс Azure AI Foundry.
- Развертывание модели для каждой модели, поддерживаемой стандартными развертываниями.
- (Необязательно) Проект и центр ИИ Azure.
- (Необязательно) Соединение между центром и моделями в Azure AI Foundry.
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с обновлением от моделей GitHub до Azure AI Foundry, если это вас касается.
Чтобы создать проект с ресурсом Azure AI Foundry (ранее известные службы ИИ Azure), выполните следующие действия.
Перейдите на портал Azure AI Foundry.
На целевой странице выберите "Создать проект".
Присвойте проекту имя, например my-project.
В этом руководстве мы создадим новый проект в новом хабе искусственного интеллекта, поэтому выберите Создать концентратор.
Присвойте концентратору имя, например "my-hub" и нажмите кнопку "Далее".
Мастер обновляет сведения о созданных ресурсах. Выберите ресурсы Azure, которые нужно создать , чтобы просмотреть сведения.
Вы увидите, что создаются следующие ресурсы:
Свойство Описание Группа ресурсов Основной контейнер для всех ресурсов в Azure. Это помогает организовать ресурсы для совместной работы. Также помогает получить оценку затрат, связанных со всем проектом. Расположение Регион, в котором вы создаете ресурсы. Узел Основной контейнер для проектов ИИ в Azure AI Foundry. Центры способствуют совместной работе и позволяют хранить сведения для проектов. AI Foundry В этом руководстве создается новая учетная запись, но службы Azure AI Foundry можно совместно использовать в нескольких центрах и проектах. Центры используют подключение к ресурсу, чтобы получить доступ к развертываниям моделей, доступным там. Чтобы узнать, как создать подключения между проектами и Azure AI Foundry для использования моделей Azure AI Foundry, вы можете прочитать Подключите свой проект ИИ. Нажмите кнопку создания. Начинается процесс создания ресурсов.
После завершения проект будет готов к настройке.
Чтобы использовать модели Azure AI Foundry, необходимо добавить развертывания моделей.
Вы можете решить и настроить, какие модели доступны для вывода в ресурсе Azure AI Foundry. После настройки модели можно получать прогнозы от неё, указав её название модели или название развертывания в запросах. В вашем коде больше никаких изменений не требуется для его использования.
В этой статье вы узнаете, как добавить новую модель в Azure AI Foundry.
Для работы с этой статьей необходимо иметь следующее.
Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с обновлением моделей GitHub до моделей Azure AI Foundry, если это относится к вам.
Ресурс Azure AI Foundry (ранее известный как Службы ИИ Azure). Дополнительные сведения см. в статье "Создание и настройка всех ресурсов для моделей Azure AI Foundry".
Для моделей от партнеров и сообщества требуется доступ к Azure Marketplace. Убедитесь, что у вас есть разрешения, необходимые для подписки на предложения моделей. Модели, проданные непосредственно в 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 в рамках ресурса. При создании запроса укажите параметр model
и вставьте созданное вами имя развертывания модели. Вы можете программно получить универсальный код ресурса (URI) для инференсной конечной точки с помощью следующего кода:
Конечная точка вывода
az cognitiveservices account show -n $accountName -g $resourceGroupName | jq '.properties.endpoints["Azure AI Model Inference API"]'
Чтобы выполнить запросы к конечной точке Модели Azure AI Foundry, добавьте маршрут 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 AI Foundry в проектах.
Модели Azure AI Foundry — это возможность в службах Azure AI Foundry Services (ранее известных как службы ИИ Azure). Вы можете создать развертывания моделей под ресурсом для использования их прогнозов. Вы также можете подключить ресурс к Центрам ИИ Azure и проектам в Azure AI Foundry, чтобы создать интеллектуальные приложения при необходимости. На следующем рисунке показана архитектура высокого уровня.
Диаграмма, демонстрирующая высокоуровневую архитектуру ресурсов, созданных в обучающем материале.
Службы Azure AI Foundry не требуют проектов ИИ или центров ИИ для работы, и их можно создать для использования флагманских моделей из приложений. Однако дополнительные возможности доступны при развертывании проекта и хаба ИИ Azure, включая песочницу или агентов.
В этом руководстве показано, как создать:
- Ресурс Azure AI Foundry.
- Развертывание модели для каждой модели, поддерживаемой стандартными развертываниями.
- (Необязательно) Проект и центр ИИ Azure.
- (Необязательно) Соединение между центром и моделями в Azure AI Foundry.
Для работы с этой статьей необходимо иметь следующее.
- Подписка Azure. Если вы используете GitHub Models, вы можете улучшить свой опыт и создать подписку Azure в процессе. Ознакомьтесь с материалом "Переход от моделей GitHub к Azure AI Foundry", если это применимо к вам.
Установите интерфейс командной строки 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
Модели от партнеров и сообщества , доступные для развертывания (например, модели Cohere), требуют Azure Marketplace. Поставщики моделей определяют условия лицензии и устанавливают цену на использование своих моделей с помощью Azure Marketplace.
При развертывании сторонних моделей убедитесь, что у вас есть следующие разрешения в вашей учетной записи:
- В подписке Azure:
Microsoft.MarketplaceOrdering/agreements/offers/plans/read
Microsoft.MarketplaceOrdering/agreements/offers/plans/sign/action
Microsoft.MarketplaceOrdering/offerTypes/publishers/offers/plans/agreements/read
Microsoft.Marketplace/offerTypes/publishers/offers/plans/agreements/read
Microsoft.SaaS/register/action
- Для создания и использования ресурса SaaS на группе ресурсов выполните следующие действия.
Microsoft.SaaS/resources/read
Microsoft.SaaS/resources/write
Выполните следующие действия.
Используйте шаблон
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 AI Foundry Models, которую можно использовать для использования любого из созданных развертываний модели.