Installera & använd CLI (v1)

GÄLLER FÖR:Azure CLI ml-tillägg v1

Viktigt

Azure CLI-kommandona i den här artikeln kräverazure-cli-mltillägget , eller v1, för Azure Machine Learning. Vi rekommenderar att du väljer v2 (aktuell) för det förbättrade v2 CLI med hjälp av ml tillägget. Mer information finns i Machine Learning CLI (v1).

Azure Machine Learning CLI är ett tillägg till Azure CLI, ett plattformsoberoende kommandoradsgränssnitt för Azure-plattformen. Det här tillägget innehåller kommandon för att arbeta med Azure Machine Learning. Det gör att du kan automatisera dina maskininlärningsaktiviteter. Följande lista innehåller några exempelåtgärder som du kan utföra med CLI-tillägget:

  • Köra experiment för att skapa maskininlärningsmodeller

  • Registrera maskininlärningsmodeller för kundanvändning

  • Paketera, distribuera och spåra livscykeln för dina maskininlärningsmodeller

CLI ersätter inte Azure Machine Learning SDK. Det är ett kompletterande verktyg som är optimerat för att hantera mycket parametriserade uppgifter som passar sig bra för automatisering.

Förutsättningar

Fullständiga referensdokument

Hitta de fullständiga referensdokumenten för azure-cli-ml-tillägget för Azure CLI.

Anslut CLI till din Azure-prenumeration

Viktigt

Om du använder Azure Cloud Shell kan du hoppa över det här avsnittet. Cloud Shell autentiserar dig automatiskt med det konto som du loggar in på din Azure-prenumeration.

Det finns flera sätt att autentisera till din Azure-prenumeration från CLI. Det mest grundläggande är att interaktivt autentisera med hjälp av en webbläsare. Om du vill autentisera interaktivt öppnar du en kommandorad eller terminal och använder följande kommando:

az login

Om CLI kan öppna din standardwebbläsare så sker det och en inloggningssida läses in. Annars måste du öppna en webbläsare och följa anvisningarna på kommandoraden. Anvisningarna omfattar att bläddra till https://aka.ms/devicelogin och ange en auktoriseringskod.

Tips

När du har loggat in visas en lista över prenumerationer som är associerade med ditt Azure-konto. Prenumerationsinformationen med isDefault: true är den för närvarande aktiverade prenumerationen för Azure CLI-kommandon. Den här prenumerationen måste vara samma som innehåller din Azure Machine Learning arbetsyta. Du hittar prenumerations-ID:t från Azure Portal genom att gå till översiktssidan för din arbetsyta. Du kan också använda SDK:t för att hämta prenumerations-ID:t från arbetsyteobjektet. Till exempel Workspace.from_config().subscription_id.

Om du vill välja en annan prenumeration använder du az account set -s <subscription name or ID> kommandot och anger prenumerationsnamnet eller ID:t att växla till. Mer information om val av prenumeration finns i Använda flera Azure-prenumerationer.

Andra metoder för autentisering finns i Logga in med Azure CLI.

Installera tillägget

Så här installerar du CLI-tillägget (v1):

az extension add -n azure-cli-ml

Uppdatera tillägget

Om du vill uppdatera Machine Learning CLI-tillägget använder du följande kommando:

az extension update -n azure-cli-ml

Ta bort tillägget

Om du vill ta bort CLI-tillägget använder du följande kommando:

az extension remove -n azure-cli-ml

Resurshantering

Följande kommandon visar hur du använder CLI för att hantera resurser som används av Azure Machine Learning.

  • Om du inte redan har en skapar du en resursgrupp:

    az group create -n myresourcegroup -l westus2
    
  • Skapa en Azure Machine Learning arbetsyta:

    az ml workspace create -w myworkspace -g myresourcegroup
    

    Mer information finns i az ml workspace create.

  • Koppla en konfiguration av arbetsytan till en mapp för att aktivera CLI-kontextmedvetenhet.

    az ml folder attach -w myworkspace -g myresourcegroup
    

    Det här kommandot skapar en .azureml underkatalog som innehåller exempel på runconfig- och conda-miljöfiler. Den innehåller också en config.json fil som används för att kommunicera med din Azure Machine Learning arbetsyta.

    Mer information finns i az ml folder attach.

  • Bifoga en Azure-blobcontainer som ett datalager.

    az ml datastore attach-blob  -n datastorename -a accountname -c containername
    

    Mer information finns i az ml datastore attach-blob.

  • Upload filer till ett datalager.

    az ml datastore upload  -n datastorename -p sourcepath
    

    Mer information finns i az ml datastore upload ( az ml datastore upload).

  • Koppla ett AKS-kluster som beräkningsmål.

    az ml computetarget attach aks -n myaks -i myaksresourceid -g myresourcegroup -w myworkspace
    

    Mer information finns i az ml computetarget attach aks

Beräkningskluster

  • Skapa ett nytt hanterat beräkningskluster.

    az ml computetarget create amlcompute -n cpu --min-nodes 1 --max-nodes 1 -s STANDARD_D3_V2
    
  • Skapa ett nytt hanterat beräkningskluster med hanterad identitet

    • Användartilldelad hanterad identitet

      az ml computetarget create amlcompute --name cpu-cluster --vm-size Standard_NC6 --max-nodes 5 --assign-identity '/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'
      
    • Systemtilldelad hanterad identitet

      az ml computetarget create amlcompute --name cpu-cluster --vm-size Standard_NC6 --max-nodes 5 --assign-identity '[system]'
      
  • Lägg till en hanterad identitet i ett befintligt kluster:

    • Användartilldelad hanterad identitet

      az ml computetarget amlcompute identity assign --name cpu-cluster '/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'
      
    • Systemtilldelad hanterad identitet

      az ml computetarget amlcompute identity assign --name cpu-cluster '[system]'
      

Mer information finns i az ml computetarget create amlcompute.

Anteckning

Azure Machine Learning beräkningskluster stöder endast en systemtilldelad identitet eller flera användartilldelade identiteter, inte båda samtidigt.

Beräkninsinstans

Hantera beräkningsinstanser. I alla exempel nedan är namnet på beräkningsinstansen cpu

Köra experiment

  • Starta en körning av experimentet. När du använder det här kommandot anger du namnet på runconfig-filen (texten före *.runconfig om du tittar på filsystemet) mot parametern -c.

    az ml run submit-script -c sklearn -e testexperiment train.py
    

    Tips

    Kommandot az ml folder attach skapar en .azureml underkatalog som innehåller två exempel på runconfig-filer.

    Om du har ett Python skript som skapar ett körningskonfigurationsobjekt programmatiskt kan du använda RunConfig.save() för att spara det som en runconfig-fil.

    Det fullständiga runconfig-schemat finns i den här JSON-filen. Schemat dokumenterar själv genom nyckeln för description varje objekt. Dessutom finns det uppräkningar för möjliga värden och ett mallfragment i slutet.

    Mer information finns i az ml run submit-script.

  • Visa en lista över experiment:

    az ml experiment list
    

    Mer information finns i az ml experiment list.

HyperDrive-körning

Du kan använda HyperDrive med Azure CLI för att utföra parameterjusteringskörningar. Skapa först en HyperDrive-konfigurationsfil i följande format. Mer information om justeringsparametrar för hyperparametrar finns i Artikeln om att finjustera hyperparametrar för din modell .

# hdconfig.yml
sampling: 
    type: random # Supported options: Random, Grid, Bayesian
    parameter_space: # specify a name|expression|values tuple for each parameter.
    - name: --penalty # The name of a script parameter to generate values for.
      expression: choice # supported options: choice, randint, uniform, quniform, loguniform, qloguniform, normal, qnormal, lognormal, qlognormal
      values: [0.5, 1, 1.5] # The list of values, the number of values is dependent on the expression specified.
policy: 
    type: BanditPolicy # Supported options: BanditPolicy, MedianStoppingPolicy, TruncationSelectionPolicy, NoTerminationPolicy
    evaluation_interval: 1 # Policy properties are policy specific. See the above link for policy specific parameter details.
    slack_factor: 0.2
primary_metric_name: Accuracy # The metric used when evaluating the policy
primary_metric_goal: Maximize # Maximize|Minimize
max_total_runs: 8 # The maximum number of runs to generate
max_concurrent_runs: 2 # The number of runs that can run concurrently.
max_duration_minutes: 100 # The maximum length of time to run the experiment before cancelling.

Lägg till den här filen tillsammans med körningskonfigurationsfilerna. Skicka sedan en HyperDrive-körning med hjälp av:

az ml run submit-hyperdrive -e <experiment> -c <runconfig> --hyperdrive-configuration-name <hdconfig> my_train.py

Observera argumentavsnittet i runconfig och parameterutrymmet i HyperDrive-konfigurationen. De innehåller kommandoradsargumenten som ska skickas till träningsskriptet. Värdet i runconfig förblir detsamma för varje iteration, medan intervallet i HyperDrive-konfigurationen itereras över. Ange inte samma argument i båda filerna.

Hantering av datauppsättningar

Följande kommandon visar hur du arbetar med datauppsättningar i Azure Machine Learning:

  • Registrera en datauppsättning:

    az ml dataset register -f mydataset.json
    

    Information om formatet för JSON-filen som används för att definiera datauppsättningen finns az ml dataset register --show-templatei .

    Mer information finns i az ml dataset register.

  • Visa en lista över alla datauppsättningar på en arbetsyta:

    az ml dataset list
    

    Mer information finns i az ml datauppsättningslista.

  • Hämta information om en datauppsättning:

    az ml dataset show -n dataset-name
    

    Mer information finns i az ml dataset show.

  • Avregistrera en datauppsättning:

    az ml dataset unregister -n dataset-name
    

    Mer information finns i az ml dataset unregister( az ml dataset unregister).

Miljöhantering

Följande kommandon visar hur du skapar, registrerar och listar Azure Machine Learning miljöer för din arbetsyta:

Schema för miljökonfiguration

Om du använde az ml environment scaffold kommandot genererar det en mallfil azureml_environment.json som kan ändras och användas för att skapa anpassade miljökonfigurationer med CLI. Objektet på översta nivån mappar löst till Environment klassen i Python SDK.

{
    "name": "testenv",
    "version": null,
    "environmentVariables": {
        "EXAMPLE_ENV_VAR": "EXAMPLE_VALUE"
    },
    "python": {
        "userManagedDependencies": false,
        "interpreterPath": "python",
        "condaDependenciesFile": null,
        "baseCondaEnvironment": null
    },
    "docker": {
        "enabled": false,
        "baseImage": "mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210615.v1",
        "baseDockerfile": null,
        "sharedVolumes": true,
        "shmSize": "2g",
        "arguments": [],
        "baseImageRegistry": {
            "address": null,
            "username": null,
            "password": null
        }
    },
    "spark": {
        "repositories": [],
        "packages": [],
        "precachePackages": true
    },
    "databricks": {
        "mavenLibraries": [],
        "pypiLibraries": [],
        "rcranLibraries": [],
        "jarLibraries": [],
        "eggLibraries": []
    },
    "inferencingStackVersion": null
}

Följande tabell beskriver varje fält på toppnivå i JSON-filen, dess typ och en beskrivning. Om en objekttyp är länkad till en klass från Python SDK finns det en lös 1:1-matchning mellan varje JSON-fält och det offentliga variabelnamnet i klassen Python. I vissa fall kan fältet mappas till ett konstruktorargument i stället för en klassvariabel. Till exempel mappar fältet environmentVariables till variabeln environment_variablesEnvironment i klassen.

JSON-fält Typ Description
name string Namnet på miljön. Starta inte namnet med Microsoft eller AzureML.
version string Version av miljön.
environmentVariables {string: string} En hash-karta över miljövariabelnamn och värden.
python PythonSectionhat definierar den Python miljö och tolk som ska användas på målberäkningsresursen.
docker DockerSection Definierar inställningar för att anpassa Docker-avbildningen som skapats enligt miljöns specifikationer.
spark SparkSection Avsnittet konfigurerar Spark-inställningar. Det används bara när ramverket är inställt på PySpark.
databricks DatabricksSection Konfigurerar Databricks biblioteksberoenden.
inferencingStackVersion string Anger den slutsatsdragningsstackversion som lagts till i avbildningen. Lämna fältet nullför att undvika att lägga till en slutsatsdragningsstack. Giltigt värde: "senaste".

ML pipelinehantering

Följande kommandon visar hur du arbetar med maskininlärningspipelines:

Modellregistrering, profilering, distribution

Följande kommandon visar hur du registrerar en tränad modell och sedan distribuerar den som en produktionstjänst:

  • Registrera en modell med Azure Machine Learning:

    az ml model register -n mymodel -p sklearn_regression_model.pkl
    

    Mer information finns i az ml model register.

  • VALFRI Profilera din modell för att få optimala CPU- och minnesvärden för distribution.

    az ml model profile -n myprofile -m mymodel:1 --ic inferenceconfig.json -d "{\"data\": [[1,2,3,4,5,6,7,8,9,10],[10,9,8,7,6,5,4,3,2,1]]}" -t myprofileresult.json
    

    Mer information finns i az ml model profile (az ml model profile).

  • Distribuera din modell till AKS

    az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json --ct akscomputetarget
    

    Mer information om inferenskonfigurationsfilschemat finns i Schema för inferenskonfiguration.

    Mer information om distributionskonfigurationsfilschemat finns i Distributionskonfigurationsschema.

    Mer information finns i az ml model deploy ( az ml model deploy).

Konfigurationsschema för slutsatsdragning

Posterna i inferenceconfig.json dokumentet mappar till parametrarna för klassen InferenceConfig . I följande tabell beskrivs mappningen mellan entiteter i JSON-dokumentet och parametrarna för metoden:

JSON-entitet Metodparameter Description
entryScript entry_script Sökväg till en lokal fil som innehåller koden som ska köras för avbildningen.
sourceDirectory source_directory Valfritt. Sökväg till mappar som innehåller alla filer för att skapa avbildningen, vilket gör det enkelt att komma åt filer i den här mappen eller undermappen. Du kan ladda upp en hel mapp från den lokala datorn som beroenden för webbtjänsten. Obs! sökvägarna entry_script, conda_file och extra_docker_file_steps är relativa sökvägar till source_directory sökvägen.
environment environment Valfritt. Azure Machine Learning miljö.

Du kan inkludera fullständiga specifikationer för en Azure Machine Learning miljö i inferenskonfigurationsfilen. Om den här miljön inte finns på arbetsytan skapar Azure Machine Learning den. Annars uppdaterar Azure Machine Learning miljön om det behövs. Följande JSON är ett exempel:

{
    "entryScript": "score.py",
    "environment": {
        "docker": {
            "arguments": [],
            "baseDockerfile": null,
            "baseImage": "mcr.microsoft.com/azureml/intelmpi2018.3-ubuntu18.04",
            "enabled": false,
            "sharedVolumes": true,
            "shmSize": null
        },
        "environmentVariables": {
            "EXAMPLE_ENV_VAR": "EXAMPLE_VALUE"
        },
        "name": "my-deploy-env",
        "python": {
            "baseCondaEnvironment": null,
            "condaDependencies": {
                "channels": [
                    "conda-forge"
                ],
                "dependencies": [
                    "python=3.6.2",
                    {
                        "pip": [
                            "azureml-defaults",
                            "azureml-telemetry",
                            "scikit-learn==0.22.1",
                            "inference-schema[numpy-support]"
                        ]
                    }
                ],
                "name": "project_environment"
            },
            "condaDependenciesFile": null,
            "interpreterPath": "python",
            "userManagedDependencies": false
        },
        "version": "1"
    }
}

Du kan också använda en befintlig Azure Machine Learning miljö i avgränsade CLI-parametrar och ta bort "miljönyckeln" från inferenskonfigurationsfilen. Använd -e för miljönamnet och --ev för miljöversionen. Om du inte anger --ev används den senaste versionen. Här är ett exempel på en inferenskonfigurationsfil:

{
    "entryScript": "score.py",
    "sourceDirectory": null
}

Följande kommando visar hur du distribuerar en modell med hjälp av den tidigare inferenskonfigurationsfilen (med namnet myInferenceConfig.json).

Den använder också den senaste versionen av en befintlig Azure Machine Learning miljö (med namnet AzureML-Minimal).

az ml model deploy -m mymodel:1 --ic myInferenceConfig.json -e AzureML-Minimal --dc deploymentconfig.json

Konfigurationsschema för distribution

Konfigurationsschema för lokal distribution

Posterna i deploymentconfig.json dokumentet mappar till parametrarna för LocalWebservice.deploy_configuration. I följande tabell beskrivs mappningen mellan entiteterna i JSON-dokumentet och parametrarna för metoden:

JSON-entitet Metodparameter Description
computeType NA Beräkningsmålet. För lokala mål måste värdet vara local.
port port Den lokala port där tjänstens HTTP-slutpunkt ska exponeras.

Denna JSON är ett exempel på distributionskonfiguration för användning med CLI:

{
    "computeType": "local",
    "port": 32267
}

Spara den här JSON-filen som heter deploymentconfig.json.

Konfigurationsschema för Azure Container Instance-distribution

Posterna i deploymentconfig.json dokumentet mappar till parametrarna för AciWebservice.deploy_configuration. I följande tabell beskrivs mappningen mellan entiteterna i JSON-dokumentet och parametrarna för metoden:

JSON-entitet Metodparameter Description
computeType NA Beräkningsmålet. För ACI måste värdet vara ACI.
containerResourceRequirements NA Container för CPU- och minnesentiteterna.
  cpu cpu_cores Antalet CPU-kärnor som ska allokeras. Standardvärden 0.1
  memoryInGB memory_gb Mängden minne (i GB) som ska allokeras för den här webbtjänsten. Standard 0.5
location location Den Azure-region som webbtjänsten ska distribueras till. Om inte anges används arbetsytans plats. Mer information om tillgängliga regioner finns här: ACI-regioner
authEnabled auth_enabled Om du vill aktivera autentisering för den här webbtjänsten. Standardvärdet är Falskt
sslEnabled ssl_enabled Om du vill aktivera SSL för den här webbtjänsten. Standardvärdet är Falskt.
appInsightsEnabled enable_app_insights Om appinsights ska aktiveras för den här webbtjänsten. Standardvärdet är Falskt
sslCertificate ssl_cert_pem_file Certifikatfilen som behövs om SSL är aktiverat
sslKey ssl_key_pem_file Nyckelfilen som behövs om SSL är aktiverat
cname ssl_cname Cname för om SSL är aktiverat
dnsNameLabel dns_name_label Dns-namnetiketten för bedömningsslutpunkten. Om inget anges genereras en unik dns-namnetikett för bedömningsslutpunkten.

Följande JSON är ett exempel på distributionskonfiguration för användning med CLI:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

Azure Kubernetes Service konfigurationsschema för distribution

Posterna i deploymentconfig.json dokumentet mappar till parametrarna för AksWebservice.deploy_configuration. I följande tabell beskrivs mappningen mellan entiteterna i JSON-dokumentet och parametrarna för metoden:

JSON-entitet Metodparameter Description
computeType NA Beräkningsmålet. För AKS måste värdet vara aks.
autoScaler NA Innehåller konfigurationselement för autoskalning. Se autoskalningstabellen.
  autoscaleEnabled autoscale_enabled Om du vill aktivera automatisk skalning för webbtjänsten. Om numReplicas = 0, True; annars . False
  minReplicas autoscale_min_replicas Det minsta antalet containrar som ska användas vid automatisk skalning av den här webbtjänsten. Standard, 1.
  maxReplicas autoscale_max_replicas Det maximala antalet containrar som ska användas vid automatisk skalning av den här webbtjänsten. Standard, 10.
  refreshPeriodInSeconds autoscale_refresh_seconds Hur ofta autoskalningstjänsten försöker skala den här webbtjänsten. Standard, 1.
  targetUtilization autoscale_target_utilization Målanvändningen (i procent av 100) som autoskalning ska försöka underhålla för den här webbtjänsten. Standard, 70.
dataCollection NA Innehåller konfigurationselement för datainsamling.
  storageEnabled collect_model_data Om du vill aktivera modelldatainsamling för webbtjänsten. Standard, False.
authEnabled auth_enabled Om du vill aktivera nyckelautentisering för webbtjänsten eller inte. Både tokenAuthEnabled och authEnabled kan inte vara True. Standard, True.
tokenAuthEnabled token_auth_enabled Om du vill aktivera tokenautentisering för webbtjänsten eller inte. Både tokenAuthEnabled och authEnabled kan inte vara True. Standard, False.
containerResourceRequirements NA Container för CPU- och minnesentiteterna.
  cpu cpu_cores Antalet CPU-kärnor som ska allokeras för den här webbtjänsten. Standardvärden 0.1
  memoryInGB memory_gb Mängden minne (i GB) som ska allokeras för den här webbtjänsten. Standard 0.5
appInsightsEnabled enable_app_insights Om du vill aktivera program Insights loggning för webbtjänsten. Standard, False.
scoringTimeoutMs scoring_timeout_ms En timeout för att framtvinga för bedömning av anrop till webbtjänsten. Standard, 60000.
maxConcurrentRequestsPerContainer replica_max_concurrent_requests Maximalt antal samtidiga begäranden per nod för den här webbtjänsten. Standard, 1.
maxQueueWaitMs max_request_wait_time Den maximala tid som en begäran stannar i kön (i millisekunder) innan ett 503-fel returneras. Standard, 500.
numReplicas num_replicas Antalet containrar som ska allokeras för den här webbtjänsten. Inget standardvärde. Om den här parametern inte har angetts aktiveras autoskalningsfunktionen som standard.
keys NA Innehåller konfigurationselement för nycklar.
  primaryKey primary_key En primär autentiseringsnyckel som ska användas för den här webbtjänsten
  secondaryKey secondary_key En sekundär autentiseringsnyckel som ska användas för den här webbtjänsten
gpuCores gpu_cores Antalet GPU-kärnor (per containerreplik) som ska allokeras för den här webbtjänsten. Standardvärdet är 1. Stöder endast heltalsvärden.
livenessProbeRequirements NA Innehåller konfigurationselement för krav på live-avsökning.
  periodSeconds period_seconds Hur ofta (i sekunder) live-avsökningen ska utföras. Standardvärdet är 10 sekunder. Minsta värde är 1.
  initialDelaySeconds initial_delay_seconds Antal sekunder efter att containern har startats innan liveness-avsökningar initieras. Standardvärdet är 310
  timeoutSeconds timeout_seconds Antal sekunder efter vilket livenessavsökningen överskrider tidsgränsen. Standardvärdet är 2 sekunder. Minsta värde är 1
  successThreshold success_threshold Minsta lyckade resultat i följd för att liveness-avsökningen ska anses vara lyckad efter att ha misslyckats. Standardvärdet är 1. Minsta värde är 1.
  failureThreshold failure_threshold När en podd startar och live-avsökningen misslyckas, försöker Kubernetes feldådd gånger innan de ger upp. Standardvärdet är 3. Minsta värde är 1.
namespace namespace Kubernetes-namnområdet som webbtjänsten distribueras till. Upp till 63 alfanumeriska gemener ('a'-'z', '0'-'9') och bindestreck ('-') tecken. Det första och sista tecknen får inte vara bindestreck.

Följande JSON är ett exempel på distributionskonfiguration för användning med CLI:

{
    "computeType": "aks",
    "autoScaler":
    {
        "autoscaleEnabled": true,
        "minReplicas": 1,
        "maxReplicas": 3,
        "refreshPeriodInSeconds": 1,
        "targetUtilization": 70
    },
    "dataCollection":
    {
        "storageEnabled": true
    },
    "authEnabled": true,
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    }
}

Nästa steg