Een reken-Azure Machine Learning maken en beheren

Meer informatie over het maken en beheren van een reken-exemplaar in Azure Machine Learning werkruimte.

Gebruik een rekenomgeving als uw volledig geconfigureerde en beheerde ontwikkelomgeving in de cloud. Voor ontwikkeling en testen kunt u het exemplaar ook gebruiken als een rekendoel voor training of voor een deferentiedoel. Een reken-exemplaar kan meerdere taken parallel uitvoeren en heeft een taakwachtrij. Als ontwikkelomgeving kan een reken-exemplaar niet worden gedeeld met andere gebruikers in uw werkruimte.

In dit artikel leert u het volgende:

Reken-exemplaren kunnen taken veilig uitvoeren in een omgeving met een virtueel netwerk,zonder dat ondernemingen SSH-poorten moeten openen. De taak wordt uitgevoerd in een containeromgeving en verpakt uw modelafhankelijkheden in een Docker-container.

Vereisten

Maken

Belangrijk

Items die zijn gemarkeerd (preview) hieronder, zijn momenteel beschikbaar als openbare preview. De preview-versie wordt aangeboden zonder Service Level Agreement en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Supplemental Terms of Use for Microsoft Azure Previews (Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews) voor meer informatie.

Geschatte tijd: ongeveer 5 minuten.

Het maken van een rekenproces is een een enkel proces voor uw werkruimte. U kunt de rekenkracht hergebruiken als ontwikkelwerkstation of als rekendoel voor training. U kunt meerdere reken-exemplaren koppelen aan uw werkruimte.

De toegewezen kernen per regio per VM-familiequotum en het totale regionale quotum, dat van toepassing is op het maken van een rekenproces, worden samengevoegd en gedeeld met Azure Machine Learning training van het rekenclusterquotum. Als u de reken-instantie stopt, wordt er geen quotum uitgebracht om ervoor te zorgen dat u de reken-instantie opnieuw kunt opstarten. Het is niet mogelijk om de grootte van de virtuele machine van het rekenin exemplaar te wijzigen zodra deze is gemaakt.

In het volgende voorbeeld wordt gedemonstreerd hoe u een reken-exemplaar maakt:

import datetime
import time

from azureml.core.compute import ComputeTarget, ComputeInstance
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your instance
# Compute instance name should be unique across the azure region
compute_name = "ci{}".format(ws._workspace_id)[:10]

# Verify that instance does not exist already
try:
    instance = ComputeInstance(workspace=ws, name=compute_name)
    print('Found existing instance, use it.')
except ComputeTargetException:
    compute_config = ComputeInstance.provisioning_configuration(
        vm_size='STANDARD_D3_V2',
        ssh_public_access=False,
        # vnet_resourcegroup_name='<my-resource-group>',
        # vnet_name='<my-vnet-name>',
        # subnet_name='default',
        # admin_user_ssh_public_key='<my-sshkey>'
    )
    instance = ComputeInstance.create(ws, compute_name, compute_config)
    instance.wait_for_completion(show_output=True)

Zie de volgende referentiedocumenten voor meer informatie over de klassen, methoden en parameters die in dit voorbeeld worden gebruikt:

U kunt ook een reken-exemplaar maken met een Azure Resource Manager sjabloon.

SSH-toegang inschakelen

SSH-toegang is standaard uitgeschakeld. SSH-toegang kan niet worden gewijzigd na het maken. Zorg ervoor dat u toegang inschakelen als u van plan bent interactief fouten op te sporen met VS Code Remote.

Nadat u Volgende hebt geselecteerd: Geavanceerde Instellingen:

  1. Schakel SSH-toegang inschakelen in.
  2. Selecteer in de openbare SSH-sleutelbron een van de opties in de vervolgkeuzekeuze:
    • Als u een nieuw sleutelpaar genereert:
      1. Voer een naam in voor de sleutel in Sleutelpaarnaam.
      2. Selecteer Maken.
      3. Selecteer Persoonlijke sleutel downloaden en rekencapaciteit maken. De sleutel wordt meestal gedownload naar de map Downloads.
    • Als u Bestaande openbare sleutel gebruiken die is opgeslagen in Azure selecteert, zoekt en selecteert u de sleutel in Opgeslagen sleutel.
    • Als u Bestaande openbare sleutel gebruiken selecteert, geeft u een openbare RSA-sleutel op in de indeling met één regel (beginnend met 'ssh-rsa') of de PEM-indeling met meerdere regels. U kunt SSH-sleutels genereren met behulp van ssh-keygen in Linux en OS X of PuTTYGen op Windows.

Zodra het reken exemplaar is gemaakt en wordt uitgevoerd, zie Verbinding maken met SSH-toegang.

Maken namens (preview)

Als beheerder kunt u namens een data scientist een reken-exemplaar maken en het exemplaar aan hen toewijzen met:

De data scientist voor wie u het reken-exemplaar maakt, heeft de volgende machtigingen voor op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) nodig:

  • Microsoft.MachineLearningServices/workspaces/computes/start/action
  • Microsoft.MachineLearningServices/workspaces/computes/stop/action
  • Microsoft.MachineLearningServices/workspaces/computes/restart/action
  • Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action
  • Microsoft.MachineLearningServices/workspaces/computes/updateSchedules/action

De data scientist kan de reken-instantie starten, stoppen en opnieuw starten. Ze kunnen de reken-instantie gebruiken voor:

  • Jupyter
  • JupyterLab
  • RStudio
  • Geïntegreerde notebooks

Automatisch starten en stoppen plannen (preview)

Definieer meerdere schema's voor automatisch afsluiten en automatisch starten. Maak bijvoorbeeld een planning om te beginnen om 9:00 uur en stop om 18:00 uur van maandag tot donderdag, en een tweede planning om te beginnen om 9:00 uur en stop om 16:00 uur voor vrijdag. U kunt in totaal vier schema's per reken-exemplaar maken.

Schema's kunnen ook worden gedefinieerd voor het maken namens reken-exemplaren. U kunt een planning maken om een reken-exemplaar met de status Gestopt te maken. Dit is vooral handig wanneer een gebruiker een reken-exemplaar namens een andere gebruiker maakt.

Een schema maken in Studio

  1. Vul het formulier in.

  2. Open op de tweede pagina van het formulier Geavanceerde instellingen tonen.

  3. Selecteer Schema toevoegen om een nieuw schema toe te voegen.

    Schermopname: Schema toevoegen in geavanceerde instellingen.

  4. Selecteer Reken-exemplaar starten of Reken-exemplaar stoppen.

  5. Selecteer de tijdzone.

  6. Selecteer de Opstarttijd of Afsluittijd.

  7. Selecteer de dagen waarop deze planning actief is.

    Schermopname: een reken-exemplaar plannen om af te sluiten.

  8. Selecteer nogmaals Planning toevoegen als u een andere planning wilt maken.

Zodra de reken-instantie is gemaakt, kunt u nieuwe schema's bekijken, bewerken of toevoegen vanuit de sectie details van het reken exemplaar. Houd er rekening mee dat tijdzonelabels geen rekening houden met besparingen op de dag. Bijvoorbeeld: (UTC+01:00) Amsterdam, Amsterdam, Parijs, Bern, Keer, Vandaag, Is eigenlijk UTC+02:00 tijdens de lichte besparingen op de dag.

Een planning maken met een Resource Manager sjabloon

U kunt het automatisch starten en stoppen van een reken-exemplaar plannen met behulp van een Resource Manager sjabloon.

Voeg in Resource Manager sjabloon het volgende toe:

"schedules": "[parameters('schedules')]"

Gebruik vervolgens cron- of LogicApps-expressies om het schema te definiëren dat het exemplaar in het parameterbestand start of stopt:

        "schedules": {
        "value": {
        "computeStartStop": [
          {
            "triggerType": "Cron",
            "cron": {              
              "timeZone": "UTC",
              "expression": "0 18 * * *"
            },
            "action": "Stop",
            "status": "Enabled"
          },
          {
            "triggerType": "Cron",
            "cron": {              
              "timeZone": "UTC",
              "expression": "0 8 * * *"
            },
            "action": "Start",
            "status": "Enabled"
          },
          { 
            "triggerType": "Recurrence", 
            "recurrence": { 
              "frequency": "Day", 
              "interval": 1, 
              "timeZone": "UTC", 
              "schedule": { 
                "hours": [17], 
                "minutes": [0]
              } 
            }, 
            "action": "Stop", 
            "status": "Enabled" 
          } 
        ]
      }
    }
  • Actie kan de waarde Start of Stoppen hebben.

  • Gebruik voor het triggertype Recurrence dezelfde syntaxis als de logische app, met dit terugkeerschema.

  • Gebruik voor het triggertype cron standaard cron-syntaxis:

    // Crontab expression format: 
    // 
    // * * * * * 
    // - - - - - 
    // | | | | | 
    // | | | | +----- day of week (0 - 6) (Sunday=0) 
    // | | | +------- month (1 - 12) 
    // | | +--------- day of month (1 - 31) 
    // | +----------- hour (0 - 23) 
    // +------------- min (0 - 59) 
    // 
    // Star (*) in the value field above means all legal values as in 
    // braces for that column. The value column can have a * or a list 
    // of elements separated by commas. An element is either a number in 
    // the ranges shown above or two numbers in the range separated by a 
    // hyphen (meaning an inclusive range). 
    

Azure Policy ondersteuning voor standaardplanning

Gebruik Azure Policy om een afsluitschema af te dwingen voor elk reken exemplaar in een abonnement of standaard op een planning als er niets bestaat. Hieronder volgt een voorbeeldbeleid om standaard een afsluitschema om 22:00 pst.

{
    "mode": "All",
    "policyRule": {
     "if": {
      "allOf": [
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
        "equals": "ComputeInstance"
       },
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
        "exists": "false"
       }
      ]
     },
     "then": {
      "effect": "append",
      "details": [
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
        "value": {
         "computeStartStop": [
          {
           "triggerType": "Cron",
           "cron": {
            "startTime": "2021-03-10T21:21:07",
            "timeZone": "Pacific Standard Time",
            "expression": "0 22 * * *"
           },
           "action": "Stop",
           "status": "Enabled"
          }
         ]
        }
       }
      ]
     }
    }
}    

De reken-instantie aanpassen met een script (preview)

Gebruik een installatiescript voor een geautomatiseerde manier om de reken-instantie tijdens het inrichten aan te passen en te configureren. Als beheerder kunt u een aanpassingsscript schrijven dat moet worden gebruikt voor het inrichten van alle reken-exemplaren in de werkruimte op basis van uw vereisten.

Enkele voorbeelden van wat u kunt doen in een installatiescript:

  • Pakketten, hulpprogramma's en software installeren
  • Gegevens mounten
  • Aangepaste Conda-omgeving en Jupyter-kernels maken
  • Git-opslagplaatsen klonen en git-configuratie instellen
  • Netwerk-proxies instellen
  • Omgevingsvariabelen instellen
  • JupyterLab-extensies installeren

Het installatiescript maken

Het installatiescript is een shellscript, dat wordt uitgevoerd als rootuser. Maak het script of upload het naar uw Notebooks-bestanden:

  1. Meld u aan bij de studio en selecteer uw werkruimte.
  2. Selecteer aan de linkerkant Notebooks
  3. Gebruik het hulpprogramma Bestanden toevoegen om uw installatieshellscript te maken of te uploaden. Zorg ervoor dat de bestandsnaam van het script eindigt op .sh. Wanneer u een nieuw bestand maakt, wijzigt u ook het bestandstype in bash(.sh).

Uw installatiescript maken of uploaden naar een Notebooks-bestand in Studio

Wanneer het script wordt uitgevoerd, is de huidige werkmap van het script de map waarin het is geüpload. Als u het script bijvoorbeeld uploadt naar Gebruikers>-beheerder, is /home/azureuser/cloudfiles/code/Users/admin de locatie van het script op het rekenin exemplaar en de huidige werkmap wanneer het script wordt uitgevoerd. Hiermee kunt u relatieve paden in het script gebruiken.

Scriptargumenten kunnen in het script worden aangeduid als $1, $2, enzovoort.

Als uw script iets specifieks deed voor azureuser, zoals het installeren van de Conda-omgeving of jupyter-kernel, moet u het als dit in het sudo -u azureuser-blok plaatsen

#!/bin/bash

set -e

# This script installs a pip package in compute instance azureml_py38 environment.

sudo -u azureuser -i <<'EOF'

PACKAGE=numpy
ENVIRONMENT=azureml_py38 
conda activate "$ENVIRONMENT"
pip install "$PACKAGE"
conda deactivate
EOF

Met de opdracht sudo -u azureuser wordt de huidige werkmap gewijzigd in /home/azureuser. U hebt ook geen toegang tot de scriptargumenten in dit blok.

Zie azureml-examplesvoor andere voorbeeldscripts.

U kunt ook de volgende omgevingsvariabelen in uw script gebruiken:

  1. CI_RESOURCE_GROUP
  2. CI_WORKSPACE
  3. CI_NAME
  4. CI_LOCAL_UBUNTU_USER. Dit wijst naar azureuser

U kunt het installatiescript gebruiken in combinatie met Azure Policy om een installatiescript af te dwingen of standaard af te dwingen voor elke rekenproces die wordt gemaakt. De standaardwaarde voor de time-out van het installatiescript is 15 minuten. Dit kan worden gewijzigd via De gebruikersinterface van Studio of via ARM-sjablonen met behulp van de parameter DURATION. DURATION is een drijvende-komgetal met een optioneel achtervoegsel: 's' voor seconden (de standaardinstelling), 'm' voor minuten, 'h' voor uren of 'd' voor dagen.

Het script in de studio gebruiken

Zodra u het script hebt opgeslagen, geeft u het op tijdens het maken van uw rekenproces:

  1. Meld u aan bij de studio en selecteer uw werkruimte.
  2. Selecteer aan de linkerkant Compute.
  3. Selecteer +Nieuw om een nieuw reken-exemplaar te maken.
  4. Vul het formulier in.
  5. Open op de tweede pagina van het formulier Geavanceerde instellingen tonen.
  6. Schakel Inrichten met installatiescript in.
  7. Blader naar het shellscript dat u hebt opgeslagen. Of upload een script vanaf uw computer.
  8. Voeg zo nodig opdrachtargumenten toe.

Een reken-exemplaar inrichten met een installatiescript in de studio.

Als werkruimteopslag is gekoppeld aan een virtueel netwerk, hebt u mogelijk geen toegang tot het installatiescriptbestand, tenzij u studio vanuit het virtuele netwerk gebruikt.

Script gebruiken in een Resource Manager sjabloon

Voeg in Resource Manager toe omhet installatiescript aan setupScripts te roepen wanneer het reken exemplaar wordt ingericht. Bijvoorbeeld:

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"workspaceStorage",
        "scriptData":"[parameters('creationScript.location')]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

scriptData hierboven geeft de locatie van het aanmaakscript op in de bestands share notebooks, zoals Users/admin/testscript.sh. scriptArguments is hierboven optioneel en geeft de argumenten voor het aanmaakscript op.

U kunt in plaats daarvan het script inline voor een Resource Manager leveren. De shell-opdracht kan verwijzen naar afhankelijkheden die zijn geüpload naar de bestands share notebooks. Wanneer u een inline tekenreeks gebruikt, is de adreslijst voor het script /mnt/batch/tasks/shared/LS_root/mounts/clusters/ciname/code/Users.

Geef bijvoorbeeld een met Base64 gecodeerde opdrachtreeks op voor scriptData :

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"inline",
        "scriptData":"[base64(parameters('inlineCommand'))]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

Scriptlogboeken instellen

Logboeken van de uitvoering van het installatiescript worden weergegeven in de map met logboeken op de pagina met details van het reken exemplaar. Logboeken worden opgeslagen terug naar de bestands share notebooks onder de map <compute instance name> Logboeken. Scriptbestands- en opdrachtargumenten voor een bepaald reken exemplaar worden weergegeven op de detailpagina.

Beheren

Een reken-exemplaar starten, stoppen, opnieuw starten en verwijderen. Een rekenresource wordt niet automatisch omlaag geschaald, dus zorg ervoor dat u de resource stopt om doorlopende kosten te voorkomen. Als u een reken-exemplaar stopt, wordt de toewijzing ervan weer in de weg gerekend. Start het vervolgens opnieuw wanneer u het nodig hebt. Tijdens het stoppen van de reken-instantie wordt de facturering voor rekenuren gestopt, maar worden er nog steeds kosten in rekening voor de schijf, het openbare IP-adres en de load balancer.

U kunt een planning maken voor het reken exemplaar om automatisch te starten en te stoppen op basis van een tijdstip en dag van de week.

Tip

Het reken exemplaar heeft een besturingssysteemschijf van 120 GB. Als u geen schijfruimte meer hebt, gebruikt u de terminal om ten minste 1-2 GB te leeg te maken voordat u de reken-instantie stopt of opnieuw start. Stop het reken-exemplaar niet door sudo uit te sluiten vanuit de terminal. De grootte van de tijdelijke schijf op het reken exemplaar is afhankelijk van de gekozen VM-grootte en wordt aan /mnt bevestigd.

In de onderstaande voorbeelden is de naam van het reken exemplaar instance

  • Status op halen

    # get_status() gets the latest status of the ComputeInstance target
    instance.get_status()
    
  • Stoppen

    # stop() is used to stop the ComputeInstance
    # Stopping ComputeInstance will stop the billing meter and persist the state on the disk.
    # Available Quota will not be changed with this operation.
    instance.stop(wait_for_completion=True, show_output=True)
    
  • Starten

    # start() is used to start the ComputeInstance if it is in stopped state
    instance.start(wait_for_completion=True, show_output=True)
    
  • Opnieuw starten

    # restart() is used to restart the ComputeInstance
    instance.restart(wait_for_completion=True, show_output=True)
    
  • Verwijderen

    # delete() is used to delete the ComputeInstance target. Useful if you want to re-use the compute name
    instance.delete(wait_for_completion=True, show_output=True)
    

Met Azure RBAC kunt u bepalen welke gebruikers in de werkruimte een reken-exemplaar kunnen maken, verwijderen, starten, stoppen en opnieuw starten. Alle gebruikers met de rol Inzender en Eigenaar van de werkruimte kunnen reken-instanties in de werkruimte maken, verwijderen, starten, stoppen en opnieuw starten. Alleen de maker van een specifiek reken exemplaar, of de gebruiker die is toegewezen als deze namens hen is gemaakt, mag echter toegang krijgen tot Jupyter, JupyterLab en RStudio op dat reken exemplaar. Een reken-exemplaar is toegewezen aan één gebruiker met hoofdtoegang en kan worden geterminal via Jupyter/JupyterLab/RStudio. Het rekenproces heeft een aanmeldgegevens voor één gebruiker en alle acties gebruiken de identiteit van die gebruiker voor Azure RBAC en de toewijzing van experiment runs. SSH-toegang wordt beheerd via een mechanisme voor openbare/persoonlijke sleutels.

Deze acties kunnen worden beheerd door Azure RBAC:

  • Microsoft.MachineLearningServices/workspaces/computes/read
  • Microsoft.MachineLearningServices/workspaces/computes/write
  • Microsoft.MachineLearningServices/workspaces/computes/delete
  • Microsoft.MachineLearningServices/workspaces/computes/start/action
  • Microsoft.MachineLearningServices/workspaces/computes/stop/action
  • Microsoft.MachineLearningServices/workspaces/computes/restart/action
  • Microsoft.MachineLearningServices/workspaces/computes/updateSchedules/action

Als u een reken-exemplaar wilt maken, hebt u machtigingen nodig voor de volgende acties:

  • Microsoft.MachineLearningServices/workspaces/computes/write
  • Microsoft.MachineLearningServices/workspaces/checkComputeNameAvailability/action

Volgende stappen