Inicio rápido: Creación de una instancia de Data Science Virtual Machine de Ubuntu mediante una plantilla de Resource Manager
En este inicio rápido se muestra cómo crear una instancia de Data Science Virtual Machine (DSVM) de Ubuntu mediante una plantilla de Azure Resource Manager (plantilla de ARM). Data Science Virtual Machines es un recurso basado en la nube precargado con un conjunto de herramientas y marcos de ciencia de datos y aprendizaje automático. Cuando se implementan en recursos de proceso con tecnología GPU, todas las herramientas y bibliotecas se configuran para usar este tipo de procesador.
Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.
Si su entorno cumple los requisitos previos y sabe cómo usar las plantillas de ARM, seleccione el botón Implementar en Azure. La plantilla se abre en Azure Portal.
Requisitos previos
Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Necesita CLI de Azure para utilizar los comandos CLI de este documento desde su entorno local.
Revisión de la plantilla
Puede buscar la plantilla utilizada en esta guía de inicio rápido en el recurso de plantillas de inicio rápido de Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.8.9.13224",
"templateHash": "4895680407304578048"
}
},
"parameters": {
"adminUsername": {
"type": "string",
"metadata": {
"description": "Username for Administrator Account"
}
},
"vmName": {
"type": "string",
"defaultValue": "vmName",
"metadata": {
"description": "The name of you Virtual Machine."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"cpu_gpu": {
"type": "string",
"defaultValue": "CPU-4GB",
"allowedValues": [
"CPU-4GB",
"CPU-7GB",
"CPU-8GB",
"CPU-14GB",
"CPU-16GB",
"GPU-56GB"
],
"metadata": {
"description": "Choose between CPU or GPU processing"
}
},
"virtualNetworkName": {
"type": "string",
"defaultValue": "vNet",
"metadata": {
"description": "Name of the VNET"
}
},
"subnetName": {
"type": "string",
"defaultValue": "subnet",
"metadata": {
"description": "Name of the subnet in the virtual network"
}
},
"networkSecurityGroupName": {
"type": "string",
"defaultValue": "SecGroupNet",
"metadata": {
"description": "Name of the Network Security Group"
}
},
"authenticationType": {
"type": "string",
"defaultValue": "sshPublicKey",
"allowedValues": [
"sshPublicKey",
"password"
],
"metadata": {
"description": "Type of authentication to use on the Virtual Machine. SSH key is recommended."
}
},
"adminPasswordOrKey": {
"type": "secureString",
"metadata": {
"description": "SSH Key or password for the Virtual Machine. SSH key is recommended."
}
}
},
"variables": {
"networkInterfaceName": "[format('{0}NetInt', parameters('vmName'))]",
"virtualMachineName": "[parameters('vmName')]",
"publicIpAddressName": "[format('{0}PublicIP', parameters('vmName'))]",
"subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",
"nsgId": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]",
"osDiskType": "StandardSSD_LRS",
"storageAccountName": "[format('storage{0}', uniqueString(resourceGroup().id))]",
"storageAccountType": "Standard_LRS",
"storageAccountKind": "Storage",
"vmSize": {
"CPU-4GB": "Standard_B2s",
"CPU-7GB": "Standard_D2s_v3",
"CPU-8GB": "Standard_D2s_v3",
"CPU-14GB": "Standard_D4s_v3",
"CPU-16GB": "Standard_D4s_v3",
"GPU-56GB": "Standard_NC6_Promo"
},
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]",
"keyData": "[parameters('adminPasswordOrKey')]"
}
]
}
}
},
"resources": [
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2021-05-01",
"name": "[variables('networkInterfaceName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]"
}
}
}
],
"networkSecurityGroup": {
"id": "[variables('nsgId')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]",
"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIpAddressName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2021-05-01",
"name": "[parameters('networkSecurityGroupName')]",
"location": "[parameters('location')]",
"properties": {
"securityRules": [
{
"name": "JupyterHub",
"properties": {
"priority": 1010,
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "*",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "8000"
}
},
{
"name": "RStudioServer",
"properties": {
"priority": 1020,
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "*",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "8787"
}
},
{
"name": "SSH",
"properties": {
"priority": 1030,
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "*",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "22"
}
}
]
}
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-05-01",
"name": "[parameters('virtualNetworkName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"10.0.0.0/24"
]
},
"subnets": [
{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "10.0.0.0/24",
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2021-05-01",
"name": "[variables('publicIpAddressName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic",
"tier": "Regional"
},
"properties": {
"publicIPAllocationMethod": "Dynamic"
}
},
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-08-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('storageAccountType')]"
},
"kind": "[variables('storageAccountKind')]"
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2021-11-01",
"name": "[format('{0}-{1}', variables('virtualMachineName'), parameters('cpu_gpu'))]",
"location": "[parameters('location')]",
"properties": {
"hardwareProfile": {
"vmSize": "[variables('vmSize')[parameters('cpu_gpu')]]"
},
"storageProfile": {
"osDisk": {
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
}
},
"imageReference": {
"publisher": "microsoft-dsvm",
"offer": "ubuntu-1804",
"sku": "1804-gen2",
"version": "latest"
}
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
}
]
},
"osProfile": {
"computerName": "[variables('virtualMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPasswordOrKey')]",
"linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), json('null'), variables('linuxConfiguration'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
]
}
],
"outputs": {
"adminUsername": {
"type": "string",
"value": "[parameters('adminUsername')]"
}
}
}
La plantilla define estos recursos:
- Microsoft.Network/networkInterfaces
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/virtualNetworks
- Microsoft.Network/publicIPAddresses
- Microsoft.Storage/storageAccounts
- Microsoft.Compute/virtualMachines: Cree una máquina virtual basada en la nube. En esta plantilla, la máquina virtual está configurada como una instancia de Data Science Virtual Machine que ejecuta Ubuntu.
Implementación de la plantilla
Para usar la plantilla de la CLI de Azure, inicie sesión y elija la suscripción. Visite Inicio de sesión con la CLI de Azure para más información. A continuación, ejecute:
read -p "Enter the name of the resource group to create:" resourceGroupName &&
read -p "Enter the Azure location (e.g., centralus):" location &&
read -p "Enter the authentication type (must be 'password' or 'sshPublicKey') :" authenticationType &&
read -p "Enter the login name for the administrator account (may not be 'admin'):" adminUsername &&
read -p "Enter administrator account secure string (value of password or ssh public key):" adminPasswordOrKey &&
templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/application-workloads/datascience/vm-ubuntu-DSVM-GPU-or-CPU/azuredeploy.json" &&
az group create --name $resourceGroupName --location "$location" &&
az deployment group create --resource-group $resourceGroupName --template-uri $templateUri --parameters adminUsername=$adminUsername authenticationType=$authenticationType adminPasswordOrKey=$adminPasswordOrKey &&
echo "Press [ENTER] to continue ..." &&
read
Al ejecutar este código, escriba:
- El nombre del grupo de recursos para que contenga la instancia de DSVM y los recursos asociados que desea crear
- La ubicación de Azure en la que quiere realizar la implementación
- El tipo de autenticación que desea usar (especifique la cadena
password
osshPublicKey
) - El nombre de inicio de sesión de la cuenta de administrador (puede que este valor no sea
admin
) - El valor de la contraseña o la clave pública SSH de la cuenta
Revisión de los recursos implementados
Para mostrar la instancia de Data Science Virtual Machine:
- Vaya a Azure Portal.
- Iniciar sesión
- Elija el grupo de recursos que acaba de crear.
Esto muestra la información del grupo de recursos:
Seleccione el recurso de máquina virtual para ir a su página de información. Aquí, puede encontrar información sobre la máquina virtual, incluidos los detalles de conexión.
Limpieza de recursos
Si no desea usar esta máquina virtual, debe eliminarla. Dado que la instancia de DSVM está asociada a otros recursos, como una cuenta de almacenamiento, es probable que desee eliminar todo el grupo de recursos que ha creado. Puedes eliminar el grupo de recursos mediante el portal. Seleccione el botón Eliminar y confirme su elección. También puede eliminar el grupo de recursos desde la CLI, como se muestra aquí:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Pasos siguientes
En este inicio rápido, ha creado una instancia de Data Science Virtual Machine a partir de una plantilla de Resource Manager.