Узнайте, как использовать инфраструктуру как код с помощью шаблона Bicep для создания вычислительного экземпляра службы машинного обучения Azure.

Azure Machine Learning – это облачная служба для ускорения и управления жизненным циклом проектов машинного обучения.

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

На изображении ниже показана высокоуровневая архитектура Машинного обучения Azure и компоненты, включенные в рабочую область.

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

Вычислительные экземпляры машинного обучения Azure.

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

Вычислительный экземпляр будет интегрирован поверх Workspace и Azure Machine Learning Studio. Вы можете создавать и развертывать модели с помощью интегрированных блокнотов и таких инструментов, как Jupyter, JupyterLab, Visual Studio Code и RStudio.

Создание вычислительного экземпляра

Вычислительные экземпляры можно создавать по запросу с помощью рабочей области в Azure Machine Learning Studio. Вы можете создавать вычислительные экземпляры с помощью портала Azure, шаблонов ARM, SDF машинного обучения Azure, расширения CLI для AML и Bicep.

Теперь давайте посмотрим, как создать вычислительный экземпляр машинного обучения Azure с помощью Azure Bicep.

Создание вычислительного экземпляра машинного обучения Azure с помощью Azure Bicep

1. Предпосылки

Есть два обязательных условия:

  • Создайте группу ресурсов.
  • Прежде чем создавать, вычислять экземпляры, убедитесь, что у вас есть рабочая область. Вы можете обратиться к этой статье, чтобы создать рабочее пространство с помощью Bicep.

Получив рабочую область машинного обучения Azure, получите следующую информацию:

  • Имя рабочей области: имя рабочей области Машинного обучения Azure, в которой будет развернут вычислительный экземпляр.
  • Идентификатор объекта: идентификатор объекта Azure AD пользователя, которому назначен вычислительный экземпляр. Вы можете получить эту информацию из развернутой вами рабочей области машинного обучения Azure. Затем перейдите к опции идентификации и получите идентификатор объекта, как показано ниже:

2. Разверните файл Bicep, чтобы создать экземпляр Azure Machine Learning Compute.

В коде показано определение файла Bifep для создания вычислительного экземпляра машинного обучения Azure:

@description('Specifies the name of the Azure Machine Learning workspace to which compute instance will be deployed')
param workspaceName string
@description('Specifies the name of the Azure Machine Learning compute instance to be deployed')
param computeName string
@description('Location of the Azure Machine Learning workspace.')
param location string = resourceGroup().location
@description('The VM size for compute instance')
param vmSize string = 'Standard_DS3_v2'
@description('Name of the resource group which holds the VNET to which you want to inject your compute instance in.')
param vnetResourceGroupName string = ''
@description('Name of the vnet which you want to inject your compute instance in.')
param vnetName string = ''
@description('Name of the subnet inside the VNET which you want to inject your compute instance in.')
param subnetName string = ''
@description('AAD tenant id of the user to which compute instance is assigned to')
param tenantId string = subscription().tenantId
@description('AAD object id of the user to which compute instance is assigned to')
param objectId string
@description('inline command')
param inlineCommand string = 'ls'
@description('Specifies the cmd arguments of the creation script in the storage volume of the Compute Instance.')
param creationScript_cmdArguments string = ''
var subnet = {
  id: resourceId(vnetResourceGroupName, 'Microsoft.Network/virtualNetworks/subnets', vnetName, subnetName)
}
resource workspaceName_computeName 'Microsoft.MachineLearningServices/workspaces/computes@2021-07-01' = {
  name: '${workspaceName}/${computeName}'
  location: location
  properties: {
    computeType: 'ComputeInstance'
    properties: {
      vmSize: vmSize
      subnet: (((!empty(vnetResourceGroupName)) && (!empty(vnetName)) && (!empty(subnetName))) ? subnet : json('null'))
      personalComputeInstanceSettings: {
        assignedUser: {
          objectId: objectId
          tenantId: tenantId
        }
      }
      setupScripts: {
        scripts: {
          creationScript: {
            scriptSource: 'inline'
            scriptData: base64(inlineCommand)
            scriptArguments: creationScript_cmdArguments
          }
        }
      }
      
    }
  }
}

Теперь мы определим файл параметров.

3. Файл параметров.

Код ниже показывает определение трех параметров, которые мы будем передавать во время развертывания:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaceName": {
            "value": "YOUR-WORKSPACE-NAME"
        },
        "computeName": {
            "value": "YOUR-COMPUTE-NAME"
        },
        "objectId": {
            "value": "YOUR-WORKSPACE-OBJECT-ID"
        }
    }
}

Теперь, когда у нас есть оба файла, файл Bicep, который создает вычислительный экземпляр машинного обучения Azure, и файл параметров, мы выполним развертывание с помощью приведенной ниже команды:

$date = Get-Date -Format "MM-dd-yyyy"
$deploymentName = "AzInsiderDeployment"+"$date"
New-AzResourceGroupDeployment -Name $deploymentName -ResourceGroupName AzInsiderML -TemplateFile .\main.bicep -TemplateParameterFile .\azuredeploy.parameters.json -c

Обратите внимание, что мы добавляем флаг -c в конце, чтобы иметь предварительный просмотр развертывания, как показано ниже:

После завершения проверки давайте выполним развертывание. На рисунке ниже показан результат этого развертывания.

Чтобы проверить развертывание, вы можете перейти на портал Azure, затем выбрать свою рабочую область и выбрать параметр Launch Studio, как показано ниже:

Вы будете перенаправлены на портал Microsoft Azure Machine Learning Studio и увидите уведомление о предоставлении нового вычислительного ресурса, как показано ниже:

Эти вычислительные ресурсы могут безопасно выполнять задания внутри виртуальной сети без необходимости открытия портов SSH.

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

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

Я рекомендую вам следующие ресурсы:





Присоединяйтесь к списку рассылки AzInsider здесь.

-Дэйв Р.