Uso de una plantilla de Azure Resource Manager para crear un área de trabajo para Azure Machine Learning

En este artículo aprenderá varias formas de crear un área de trabajo de Azure Machine Learning mediante plantillas de Azure Resource Manager. Una plantilla de Resource Manager facilita la creación de recursos en una única operación coordinada. Una plantilla es un documento JSON que define los recursos que son necesarios para una implementación. También puede especificar los parámetros de implementación. Los parámetros se emplean para proporcionar valores de entrada cuando se usa la plantilla.

Para obtener más información, consulte Implementación de una aplicación con la plantilla de Azure Resource Manager.

Requisitos previos

Limitaciones

  • Al crear una nueva área de trabajo, puede crear automáticamente los servicios necesarios para esa área de trabajo o usar los servicios ya existentes. Si quiere usar los servicios ya existentes de una suscripción de Azure diferente al área de trabajo, debe registrar el espacio de nombres de Azure Machine Learning en la suscripción que contiene esos servicios. Por ejemplo, al crear un área de trabajo en la suscripción A que usa una cuenta de almacenamiento de la suscripción B, el espacio de nombres de Azure Machine Learning debe estar registrado en la suscripción B para poder usar la cuenta de almacenamiento con el área de trabajo.

    El proveedor de recursos para Azure Machine Learning es Microsoft.MachineLearningService. Para obtener información sobre cómo comprobar si está registrado y cómo realizar el registro, vea el artículo Tipos y proveedores de recursos de Azure.

    Importante

    Esta opción solo se aplica a los recursos proporcionados durante la creación del área de trabajo para cuentas de Azure Storage, el registro de contenedores de Azure, Azure Key Vault y Application Insights.

  • Es posible que la plantilla de ejemplo no siempre use la versión más reciente de la API para Azure Machine Learning. Antes de usar la plantilla, se recomienda modificarla para que use las versiones más recientes de la API. Para obtener más información sobre las versiones más recientes de la API para Azure Machine Learning, consulte la API REST de Azure Machine Learning.

    Sugerencia

    Cada servicio de Azure tiene su propio conjunto de versiones de API. Para obtener información sobre la API de un servicio específico, compruebe la información del servicio en la referencia de la API REST de Azure.

    Para actualizar la versión de la API, busque la entrada "apiVersion": "YYYY-MM-DD" del tipo de recurso y actualícela a la versión más reciente. El ejemplo siguiente es una entrada para Azure Machine Learning:

    "type": "Microsoft.MachineLearningServices/workspaces",
    "apiVersion": "2023-10-01",
    

Varias áreas de trabajo en la misma red virtual

La plantilla no admite varias áreas de trabajo de Azure Machine Learning implementadas en la misma red virtual. Esto se debe a que la plantilla crea nuevas zonas DNS durante la implementación.

Si desea crear una plantilla que implemente varias áreas de trabajo en la misma red virtual, configure esta plantilla manualmente (mediante Azure Portal o la CLI) y, después, use Azure Portal para generar una plantilla.

Plantilla de Resource Manager de área de trabajo

La plantilla de Azure Resource Manager usada en este documento se encuentra en el directorio microsoft.machineleaerningservices/machine-learning-workspace-vnet del repositorio de GitHub de plantillas de inicio rápido de Azure.

Esta plantilla crea los siguientes servicios de Azure:

  • Cuenta de Azure Storage
  • Azure Key Vault
  • Azure Application Insights
  • Azure Container Registry
  • Área de trabajo de Azure Machine Learning

El grupo de recursos es el contenedor que contiene los servicios. El área de trabajo de Azure Machine Learning requiere los diversos servicios.

La plantilla de ejemplo tiene dos parámetros necesarios:

  • La ubicación en la que se crearán los recursos.

    La plantilla utilizará la ubicación que seleccione para la mayoría de los recursos. La excepción es el servicio Application Insights que no está disponible en todas las ubicaciones en las que están los demás servicios. Si selecciona una ubicación donde no está disponible, el servicio se creará en la ubicación Centro-sur de EE. UU.

  • El nombre del área de trabajo, que es el nombre descriptivo del área de trabajo de Azure Machine Learning.

    Nota

    El nombre del área de trabajo no distingue mayúsculas de minúsculas.

    Los nombres de los demás servicios se generan aleatoriamente.

Sugerencia

Aunque la plantilla asociada a este documento crea un nuevo registro de contenedor de Azure, también puede crear una nueva área de trabajo sin necesidad de generar un registro de contenedor. Se creará uno cuando se realice una operación que lo requiera. Por ejemplo, al entrenar o implementar un modelo.

También se puede hacer referencia a un registro de contenedor o una cuenta de almacenamiento existentes en la plantilla de Azure Resource Manager, en lugar de crear otros nuevos. Al hacerlo, debe usar una identidad administrada (versión preliminar) o habilitar la cuenta de administrador para el registro de contenedor.

Advertencia

Cuando se ha creado una instancia de Azure Container Registry para un área de trabajo, no la elimine. Si lo hace, se interrumpirá el área de trabajo de Azure Machine Learning.

Para más información sobre las plantillas, consulte los siguientes artículos:

Implementar plantilla

Para implementar la plantilla, debe crear un grupo de recursos.

Vea la sección Azure Portal si prefiere usar la interfaz gráfica de usuario.

az group create --name "examplegroup" --location "eastus"

Una vez creado correctamente el grupo de recursos, implemente la plantilla con el siguiente comando:

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" location="eastus"

De forma predeterminada, todos los recursos creados como parte de la plantilla son nuevos. Sin embargo, también tiene la opción de usar los recursos existentes. Si proporciona parámetros adicionales a la plantilla, puede usar los recursos existentes. Por ejemplo, si desea usar una cuenta de almacenamiento existente, establezca el valor storageAccountOption en existing y proporcione el nombre de la cuenta de almacenamiento en el parámetro storageAccountName.

Importante

Si quiere usar una cuenta de Azure Storage existente, no puede ser una cuenta Premium (Premium_LRS y Premium_GRS). Tampoco puede tener un espacio de nombres jerárquico (se usa con Azure Data Lake Storage Gen2). No se admite Premium Storage ni el espacio de nombres jerárquico con la cuenta de almacenamiento predeterminada del área de trabajo. No se admite Premium Storage ni el espacio de nombres jerárquico con la cuenta de almacenamiento predeterminada del área de trabajo. Puede usar Premium Storage o el espacio de nombres jerárquico con cuentas de almacenamiento no predeterminadas.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      storageAccountOption="existing" \
      storageAccountName="existingstorageaccountname"

Implementación y cifrado del área de trabajo

En la plantilla de ejemplo siguiente se muestra cómo crear un área de trabajo con tres configuraciones:

  • Habilitar la configuración de alta confidencialidad para el área de trabajo. Se crea una instancia de Azure Cosmos DB.
  • Habilitar el cifrado para el área de trabajo.
  • Se usa una instancia de Azure Key Vault existente para recuperar las claves administradas por el cliente. Las claves administradas por el cliente se utilizan para crear una instancia de Azure Cosmos DB para el área de trabajo.

Importante

Una vez que se ha creado un área de trabajo, no se puede cambiar la configuración de datos confidenciales, cifrado, identificador de almacén de claves o identificadores de claves. Para cambiar estos valores, debe crear una nueva área de trabajo con los nuevos valores.

Para obtener más información, consulte Claves administradas por el cliente.

Importante

Hay algunos requisitos específicos que la suscripción debe cumplir antes de usar esta plantilla:

  • Debe tener un almacén Azure Key Vault existente que contenga una clave de cifrado.
  • El almacén Azure Key Vault debe estar en la misma región en la que se planea crear el área de trabajo de Azure Machine Learning.
  • Tienen que especificar el identificador de Azure Key Vault y el URI de la clave de cifrado.

Para ver los pasos para crear el almacén y la clave, consulte Configuración de claves administradas por el cliente.

A fin de obtener los valores para cmk_keyvault (id. de Key Vault) y los parámetros de resource_cmk_uri (URI de clave) necesarios para esta plantilla, siga los pasos siguientes:

  1. Para obtener el id. de Key Vault, use el comando siguiente:

    az keyvault show --name <keyvault-name> --query 'id' --output tsv    
    

    Este comando devuelve un valor similar a /subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>.

  2. Para obtener el valor del URI de la clave administrada por el cliente, use el comando siguiente:

    az keyvault key show --vault-name <keyvault-name> --name <key-name> --query 'key.kid' --output tsv    
    

Este comando devuelve un valor similar a https://mykeyvault.vault.azure.net/keys/mykey/{guid}.

Importante

Una vez que se ha creado un área de trabajo, no se puede cambiar la configuración de datos confidenciales, cifrado, identificador de almacén de claves o identificadores de claves. Para cambiar estos valores, debe crear una nueva área de trabajo con los nuevos valores.

Para habilitar el uso de claves administradas por el cliente, establezca los parámetros siguientes al implementar la plantilla:

  • encryption_status en Enabled.
  • cmk_keyvault en el valor cmk_keyvault obtenido en los pasos anteriores.
  • resource_cmk_uri en el valor resource_cmk_uri obtenido en los pasos anteriores.
az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      encryption_status="Enabled" \
      cmk_keyvault="/subscriptions/{subscription-guid}/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>" \
      resource_cmk_uri="https://mykeyvault.vault.azure.net/keys/mykey/{guid}" \

Cuando se usa una clave administrada por el cliente, Azure Machine Learning crea un grupo de recursos secundario que contiene la instancia de Azure Cosmos DB. Para más información, consulte Cifrado en reposo: Azure Cosmos DB.

Una configuración adicional que puede proporcionar para los datos es establecer el parámetro confidential_data en true. Con ello, hace lo siguiente:

  • Inicia el cifrado del disco temporal local para los clústeres de proceso de Azure Machine Learning, siempre que no haya creado ningún clúster anterior en la suscripción. Si ha creado previamente un clúster en la suscripción, abra una incidencia de soporte técnico para habilitar el cifrado del disco temporal para los clústeres de proceso.

  • Limpia el disco temporal local entre trabajos.

  • Pasa de forma segura las credenciales de la cuenta de almacenamiento, el registro de contenedor y la cuenta SSH desde la capa de ejecución a los clústeres de proceso mediante el almacén de claves.

  • Habilita el filtrado de IP para asegurarse de que los servicios externos que no sean AzureMachineLearningService no puedan llamar a los grupos de lotes subyacentes.

    Importante

    Una vez que se ha creado un área de trabajo, no se puede cambiar la configuración de datos confidenciales, cifrado, identificador de almacén de claves o identificadores de claves. Para cambiar estos valores, debe crear una nueva área de trabajo con los nuevos valores.

    Para obtener más información, consulte Cifrado en reposo.

Implementación del área de trabajo detrás de una red virtual

Al establecer el valor del parámetro vnetOption en new o existing, podrá crear los recursos usados por un área de trabajo detrás de una red virtual.

Importante

En el caso del registro de contenedor, solo se admite la SKU "Premium".

Importante

Application Insights no admite la implementación detrás de una red virtual.

Implementación del área de trabajo solo detrás de un punto de conexión privado

Si los recursos asociados no están detrás de una red virtual, puede establecer el parámetro privateEndpointType en AutoAproval o ManualApproval para implementar el área de trabajo detrás de un punto de conexión privado. Esto puede hacerse tanto en áreas de trabajo nuevas como existentes. Al actualizar un área de trabajo existente, rellene los parámetros de la plantilla con la información del área de trabajo existente.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      privateEndpointType="AutoApproval"

Uso de una nueva red virtual

Para implementar un recurso detrás de una nueva red virtual, establezca vnetOption en new junto con la configuración de red virtual para el recurso correspondiente. En la implementación siguiente se muestra cómo implementar un área de trabajo con el recurso de la cuenta de almacenamiento detrás de una nueva red virtual.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="new" \
      vnetName="examplevnet" \
      storageAccountBehindVNet="true"
      privateEndpointType="AutoApproval"

Como alternativa, puede implementar varios o todos los recursos dependientes detrás de una red virtual.

az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="new" \
      vnetName="examplevnet" \
      storageAccountBehindVNet="true" \
      keyVaultBehindVNet="true" \
      containerRegistryBehindVNet="true" \
      containerRegistryOption="new" \
      containerRegistrySku="Premium"
      privateEndpointType="AutoApproval"

Uso de una red virtual y recursos existentes

Para implementar un área de trabajo con recursos asociados existentes, debe establecer el parámetro vnetOption en existing junto con los parámetros de subred. Sin embargo, debe crear puntos de conexión de servicio en la red virtual para cada uno de los recursos antes de la implementación. Al igual que con las implementaciones de nueva red virtual, puede tener uno o todos los recursos detrás de una red virtual.

Importante

La subred debe tener el punto de conexión de servicio Microsoft.Storage.

Importante

Las subredes no permiten la creación de puntos de conexión privados. Deshabilite el punto de conexión privado para habilitar la subred.

  1. Habilite los puntos de conexión de servicio para los recursos.

    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.Storage"
    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.KeyVault"
    az network vnet subnet update --resource-group "examplegroup" --vnet-name "examplevnet" --name "examplesubnet" --service-endpoints "Microsoft.ContainerRegistry"
    
  2. Implemente el área de trabajo.

    az deployment group create \
    --name "exampledeployment" \
    --resource-group "examplegroup" \
    --template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.machinelearningservices/machine-learning-workspace-vnet/azuredeploy.json" \
    --parameters workspaceName="exampleworkspace" \
      location="eastus" \
      vnetOption="existing" \
      vnetName="examplevnet" \
      vnetResourceGroupName="examplegroup" \
      storageAccountBehindVNet="true" \
      keyVaultBehindVNet="true" \
      containerRegistryBehindVNet="true" \
      containerRegistryOption="new" \
      containerRegistrySku="Premium" \
      subnetName="examplesubnet" \
      subnetOption="existing"
      privateEndpointType="AutoApproval"
    

Uso de Azure Portal

  1. Siga los pasos que se indican en Implementación de recursos desde plantilla personalizada. Cuando llegue a la pantalla Seleccionar una plantilla, elija la entrada quickstarts. Cuando aparezca, seleccione el vínculo "Haga clic aquí para abrir el repositorio de plantillas". Este vínculo le lleva al directorio quickstarts del repositorio de plantillas de inicio rápido de Azure.

  2. En la lista de plantillas de inicio rápido, seleccione microsoft.machinelearningservices. Por último, seleccione Deploy to Azure.

  3. Cuando aparezca la plantilla, proporcione la siguiente información necesaria y cualquier otro parámetro en función del escenario de implementación.

    • Suscripción: Seleccione la suscripción de Azure que va a usar para estos recursos.
    • Grupo de recursos: Seleccione o cree un grupo de recursos que contenga los servicios.
    • Región: Seleccione la región de Azure en la que se crearán los recursos.
    • Nombre del área de trabajo: El nombre que se usará para el área de trabajo de Azure Machine Learning que se va a crear. El nombre del área de trabajo debe tener entre 3 y 33 caracteres. Solo puede contener caracteres alfanuméricos y "-".
    • Ubicación: Seleccione la ubicación en la que se crearán los recursos.
  4. Seleccione Revisar + crear.

  5. En la pantalla Revisar y crear, acepte los términos y condiciones de la lista y seleccione Crear.

Para más información, vea Implementación de recursos desde plantilla personalizada.

Solución de problemas

Errores del proveedor de recursos

Al crear un área de trabajo de Azure Machine Learning o un recurso usado por el área de trabajo, puede recibir un mensaje de error similar a los siguientes:

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

Muchos proveedores de recursos se registran automáticamente, aunque no todos. Si recibe este mensaje, debe registrar el proveedor mencionado.

En la tabla siguiente se muestra una lista de los proveedores de recursos requeridos por Azure Machine Learning:

Proveedor de recursos Por qué se necesita
Microsoft.MachineLearningServices Creación del área de trabajo de Azure Machine Learning.
Microsoft.Storage La cuenta de Azure Storage se usa como el almacenamiento predeterminado del área de trabajo.
Microsoft.ContainerRegistry Azure Container Registry usa el área de trabajo para crear imágenes de Docker.
Microsoft.KeyVault El área de trabajo usa Azure Key Vault para almacenar secretos.
Microsoft.Notebooks Cuadernos integrados en la instancia de proceso de Azure Machine Learning.
Microsoft.ContainerService Si planea implementar modelos entrenados en Azure Kubernetes Services.

Si planea usar una clave administrada por el cliente con Azure Machine Learning, se deben registrar estos proveedores de servicios:

Proveedor de recursos Por qué se necesita
Microsoft.DocumentDB Instancia de Azure Cosmos DB que registra los metadatos del área de trabajo.
Microsoft.Search Azure Search proporciona funcionalidades de indexación para el área de trabajo.

Si planea usar una red virtual administrada con Azure Machine Learning, el proveedor de recursos de Microsoft.Network debe registrarse. El área de trabajo usa este proveedor de recursos al crear puntos de conexión privados para la red virtual administrada.

Para obtener más información sobre cómo registrar un proveedor de recursos, consulte Registro del proveedor de recursos.

Directiva de acceso de Azure Key Vault y plantillas de Azure Resource Manager

Una plantilla de Azure Resource Manager se usa para crear el área de trabajo y los recursos asociados (incluido Azure Key Vault) varias veces. Por ejemplo, con el uso de la plantilla varias veces con los mismos parámetros como parte de una canalización de implementación e integración continuas.

La mayoría de las operaciones de creación de recursos mediante plantillas son idempotentes, pero Key Vault borra las directivas de acceso cada vez que se usa la plantilla. Al borrar las directivas de acceso, se interrumpe el acceso al almacén de claves para las áreas de trabajo existentes que lo estén usando. Por ejemplo, las funcionalidades de detección y creación de Azure Notebooks pueden producir un error.

Para evitar este problema, se recomienda uno de los siguientes enfoques:

  • No implemente la plantilla de más de una vez con los mismos parámetros. O bien, elimine los recursos existentes antes de usar la plantilla para volver a crearlos.

  • Examine las directivas de acceso de Key Vault y, luego, use estas directivas para establecer la propiedad accessPolicies de la plantilla. Para ver las directivas de acceso, use el siguiente comando de CLI de Azure:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query properties.accessPolicies
    

    Para más información sobre el uso de la accessPolicies sección de la plantilla, consulte la referencia del objeto AccessPolicyEntry.

  • Compruebe si ya existe el recurso de Key Vault. Si es así, no lo vuelva a crear con la plantilla. Por ejemplo, para usar el Key Vault existente en lugar de crear uno nuevo, realice los siguientes cambios en la plantilla:

    • Agregue un parámetro que acepte el identificador de un recurso de Key Vault existente:

      "keyVaultId":{
        "type": "string",
        "metadata": {
          "description": "Specify the existing Key Vault ID."
        }
      }
      
    • Elimine la sección que crea un recurso de Key Vault:

      {
        "type": "Microsoft.KeyVault/vaults",
        "apiVersion": "2018-02-14",
        "name": "[variables('keyVaultName')]",
        "location": "[parameters('location')]",
        "properties": {
          "tenantId": "[variables('tenantId')]",
          "sku": {
            "name": "standard",
            "family": "A"
          },
          "accessPolicies": [
          ]
        }
      },
      
    • Elimine la línea de la "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]", sección dependsOn del área de trabajo. También cambie la keyVault entrada en la sección properties del área de trabajo para hacer referencia al keyVaultId parámetro:

      {
        "type": "Microsoft.MachineLearningServices/workspaces",
        "apiVersion": "2019-11-01",
        "name": "[parameters('workspaceName')]",
        "location": "[parameters('location')]",
        "dependsOn": [
          "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
          "[resourceId('Microsoft.Insights/components', variables('applicationInsightsName'))]"
        ],
        "identity": {
          "type": "systemAssigned"
        },
        "sku": {
          "tier": "[parameters('sku')]",
          "name": "[parameters('sku')]"
        },
        "properties": {
          "friendlyName": "[parameters('workspaceName')]",
          "keyVault": "[parameters('keyVaultId')]",
          "applicationInsights": "[resourceId('Microsoft.Insights/components',variables('applicationInsightsName'))]",
          "storageAccount": "[resourceId('Microsoft.Storage/storageAccounts/',variables('storageAccountName'))]"
        }
      }
      

    Después de estos cambios, puede especificar el identificador del recurso de Key Vault existente al ejecutar la plantilla. La plantilla establecerá entonces la propiedad keyVault del área de trabajo en su identificador para reutilizar el almacén de claves.

    Para obtener el identificador de la Key Vault, puede hacer referencia a la salida del trabajo de la plantilla original o usar el CLI de Azure. El siguiente comando es un ejemplo de uso de la CLI de Azure para obtener el identificador de recurso de Key Vault:

    az keyvault show --name mykeyvault --resource-group myresourcegroup --query id
    

    Este comando devuelve un valor similar al siguiente texto:

    /subscriptions/{subscription-guid}/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mykeyvault
    

Pasos siguientes