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


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

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft 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. Вы увидите, что создаются следующие ресурсы:

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

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

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

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

    Анимация, показывающая, как включить функцию развертывания моделей модели искусственного интеллекта 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>"
    
  4. Если у вас еще нет учетной записи Служб искусственного интеллекта Azure, ее можно создать следующим образом:

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

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

    Совет

    Обратите внимание, что не все модели доступны во всех номерах SKU.

  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. Модель готова к использованию.

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

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

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

  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
    

Использование модели

Развернутые модели в выводе модели ИИ 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-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.

Для создания этих ресурсов используются следующие ресурсы:

  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: {
        publicNetworkAccess: publicNetworkAccess
        networkAcls: {
          defaultAction: networkAclsDefaultAction
        }
        disableLocalAuth: allowKeys
      }
    }
    
    output endpointUri string = account.properties.endpoints['Azure AI Model Inference API']
    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'
      '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-файла. Инфраструктура файла или models.json содержит список объектов JSON с ключамиversionname, 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
        }
      }
    }
    

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

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

  1. Определите основное развертывание:

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

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

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

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

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

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