Поделиться через


Создание и настройка всех ресурсов для вывода модели искусственного интеллекта Azure

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

В этой статье вы узнаете, как создать ресурсы, необходимые для вывода модели ИИ Azure, и использовать флагманские модели из каталога моделей ИИ Azure.

Общие сведения о ресурсах

Вывод модели искусственного интеллекта Azure — это возможность в ресурсах Служб искусственного интеллекта Azure в Azure. Вы можете создать развертывания моделей под ресурсом для использования их прогнозов. Вы также можете подключить ресурс к Центрам ИИ Azure и проектам в Azure AI Foundry, чтобы создать интеллектуальные приложения при необходимости. На следующем рисунке показана архитектура высокого уровня.

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

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

В этом руководстве показано, как создать:

  • Ресурс Служб искусственного интеллекта Azure.
  • Развертывание каждой из моделей, поддерживаемой по модели оплаты по мере использования.
  • (Необязательно) Проект и центр ИИ Azure.
  • (Необязательно) Соединение между концентратором и моделями в Службах искусственного интеллекта Azure.

Требования

Для работы с этой статьей необходимо иметь следующее.

Внимание

Портал Azure AI Foundry использует проекты и центры для создания учетных записей служб ИИ Azure и настройки вывода модели ИИ Azure. Если вы не хотите использовать центры и проекты, можно создать ресурсы с помощью Azure CLI, Bicep или создать ресурс служб ИИ Azure с помощью портал Azure.

Создание ресурсов

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

  1. Перейдите на портал Azure AI Foundry.

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

  3. Присвойте проекту имя, например my-project.

  4. В этом руководстве мы создадим новый проект в новом хабе искусственного интеллекта, поэтому выберите Создать концентратор.

  5. Присвойте концентратору имя, например "my-hub" и нажмите кнопку "Далее".

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

    Снимок экрана: сведения о проекте и центре, которые необходимо создать.

  7. Вы увидите, что создаются следующие ресурсы:

    Свойство Описание
    Группа ресурсов Основной контейнер для всех ресурсов в Azure. Это помогает организовать ресурсы для совместной работы. Также помогает получить оценку затрат, связанных со всем проектом.
    Расположение Регион, в котором вы создаете ресурсы.
    Узел Основной контейнер для проектов ИИ в Azure AI Foundry. Центры способствуют совместной работе и позволяют хранить сведения для проектов.
    Службы искусственного интеллекта Ресурс, обеспечивающий доступ к флагманским моделям в каталоге моделей ИИ Azure. В этом руководстве создается новая учетная запись, но ресурсы служб ИИ Azure можно совместно использовать в нескольких центрах и проектах. Центры используют подключение к ресурсу, чтобы получить доступ к развертываниям моделей, доступным там. Чтобы узнать, как создать подключения между проектами и службами ИИ Azure для использования инференса модели ИИ Azure, можно прочитать Подключите ваш проект ИИ.
  8. Нажмите кнопку создания. Начинается процесс создания ресурсов.

  9. После завершения проект будет готов к настройке.

  10. Вывод модели искусственного интеллекта Azure — это функция предварительной версии, которая должна быть включена в Azure AI Foundry. В верхней панели навигации в правом углу выберите значок функций предварительного просмотра. Контекстная панель отображается справа от экрана.

  11. Включите функцию Развертывание моделей в службе вывода моделей Azure AI.

    Анимация, показывающая, как включить функцию развертывания моделей модели искусственного интеллекта Azure на портале Azure AI Foundry.

  12. Закройте панель.

  13. Чтобы использовать выводы модели ИИ Azure, необходимо добавить развертывание моделей в учетную запись служб ИИ Azure.

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

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

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

В этой статье вы узнаете, как добавить новую модель в процесс вывода модели ИИ Azure в Azure AI Foundry.

Требования

Для работы с этой статьей необходимо иметь следующее.

  • Установите Azure CLI и cognitiveservices расширение для служб ИИ Azure:

    az extension add -n cognitiveservices
    
  • Некоторые команды, приведенные в этом руководстве, используют jq средство, которое может не быть установлено в вашей системе. Инструкции по установке см. в разделе "Скачать jq".

  • Определите следующие сведения:

    • Идентификатор вашей подписки Azure.

    • Имя ресурса Служб искусственного интеллекта Azure.

    • Группа ресурсов, в которой развернут ресурс Служб искусственного интеллекта Azure.

Добавление моделей

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

  1. Войдите в подписку Azure:

    az login
    
  2. Если у вас более 1 подписки, выберите подписку, в которой находится ваш ресурс:

    az account set --subscription $subscriptionId
    
  3. Задайте следующие переменные среды с именем ресурса Служб искусственного интеллекта Azure, который вы планируете использовать и группу ресурсов.

    accountName="<ai-services-resource-name>"
    resourceGroupName="<resource-group>"
    location="eastus2"
    
  4. Если у вас еще нет учетной записи Служб искусственного интеллекта Azure, ее можно создать следующим образом:

    az cognitiveservices account create -n $accountName -g $resourceGroupName --custom-domain $accountName --location $location --kind AIServices --sku S0
    
  5. Давайте посмотрим, какие модели доступны для вас, и под каким номером 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 }'
    
  6. Выходные данные выглядят следующим образом:

    {
      "name": "Phi-3.5-vision-instruct",
      "format": "Microsoft",
      "version": "2",
      "sku": "GlobalStandard",
      "capacity": 1
    }
    
  7. Определите модель, которую необходимо развернуть. Вам нужны свойства name, formatи versionsku. Свойство format указывает поставщику, предлагающего модель. Емкость также может потребоваться в зависимости от типа развертывания.

  8. Добавьте развертывание модели в ресурс. В следующем примере добавляется 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
    
  9. Модель готова к эксплуатации.

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

Используйте модель

Развернутые модели можно использовать в 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

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

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

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

    az cognitiveservices account deployment list -n $accountName -g $resourceGroupName
    
  2. Подробные сведения о данном развертывании можно просмотреть:

    az cognitiveservices account deployment show \
        --deployment-name "Phi-3.5-vision-instruct" \
        -n $accountName \
        -g $resourceGroupName
    
  3. Вы можете удалить данное развертывание следующим образом:

    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-Samples/azureai-model-inference-bicep . Чтобы выполнить команды локально, не копируя или вставляя содержимое файла, используйте следующие команды, чтобы клонировать репозиторий и перейти в папку для языка программирования:

git clone https://github.com/Azure-Samples/azureai-model-inference-bicep

Файлы для этого примера находятся в следующих файлах:

cd azureai-model-inference-bicep/infra

Создание ресурсов

Выполните следующие действия.

  1. Используйте шаблон 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
    
  2. Используйте шаблон 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
      }
    }
    
  3. Для удобства мы определяем модель, доступную в службе с помощью 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"
      },
    
  4. Если вы планируете использовать проекты (рекомендуется), вам потребуются шаблоны для создания проекта, концентратора и подключения к ресурсу Служб искусственного интеллекта 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
        }
      }
    }
    
  5. Определите основное развертывание:

    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
    
  6. Войдите в Azure:

    az login
    
  7. Убедитесь, что вы находитесь в правильной подписке:

    az account set --subscription "<subscription-id>"
    
  8. Запустите развертывание:

    RESOURCE_GROUP="<resource-group-name>"
    
    az deployment group create \
      --resource-group $RESOURCE_GROUP \
      --template-file deploy-with-project.bicep
    
  9. Если вы хотите развернуть только ресурс Служб искусственного интеллекта 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
    
  10. Запустите развертывание:

    RESOURCE_GROUP="<resource-group-name>"
    
    az deployment group create \
      --resource-group $RESOURCE_GROUP \
      --template-file deploy.bicep
    
  11. Шаблон выводит конечную точку вывода модели ИИ Azure, которую можно применить для работы с любой из созданных вами разверток модели.

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