Träna om och distribuera en maskininlärningsmodell
GÄLLER FÖR: Machine Learning Studio (klassisk)
Azure Machine Learning
Viktigt!
Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.
Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.
- Se information om hur du flyttar maskininlärningsprojekt från ML Studio (klassisk) till Azure Machine Learning.
- Läs mer om Azure Machine Learning
Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.
Omträning är ett sätt att se till att maskininlärningsmodellerna är korrekta och baseras på de mest relevanta data som finns tillgängliga. Den här artikeln visar hur du tränar om och distribuerar en maskininlärningsmodell som en ny webbtjänst i Studio (klassisk). Om du vill träna om en klassisk webbtjänst kan du läsa den här artikeln.
Den här artikeln förutsätter att du redan har en förutsägande webbtjänst distribuerad. Om du inte redan har en förutsägelsewebbtjänst kan du lära dig hur du distribuerar en Studio-webbtjänst (klassisk) här.
Du följer de här stegen för att träna om och distribuera en ny webbtjänst för maskininlärning:
- Distribuera en omträningswebbtjänst
- Träna en ny modell med hjälp av din omträningswebbtjänst
- Uppdatera ditt befintliga förutsägelseexperiment för att använda den nya modellen
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Distribuera webbtjänsten för omträning
Med en omträningswebbtjänst kan du träna om din modell med en ny uppsättning parametrar, till exempel nya data, och spara den till senare. När du ansluter en webbtjänstutdata till en träningsmodell matar träningsexperimentet ut en ny modell som du kan använda.
Använd följande steg för att distribuera en omträningswebbtjänst:
Anslut en indatamodul för webbtjänsten till dina dataindata. Vanligtvis vill du se till att dina indata bearbetas på samma sätt som dina ursprungliga träningsdata.
Anslut en webbtjänstutdatamodul till utdata från din träningsmodell.
Om du har en utvärderingsmodellmodul kan du ansluta en webbtjänstutdatamodul för att mata ut utvärderingsresultaten
Kör experimentet.
När du har kört experimentet bör det resulterande arbetsflödet likna följande bild:
Nu distribuerar du träningsexperimentet som en omträningswebbtjänst som matar ut en tränad modell och modellutvärderingsresultat.
Längst ned på experimentarbetsytan klickar du på Konfigurera webbtjänst
Välj Distribuera webbtjänst [Ny]. Machine Learning Web Services-portalen öppnas på sidan Distribuera webbtjänst .
Ange ett namn för webbtjänsten och välj en betalningsplan.
Välj distribuera.
Träna om modellen
I det här exemplet använder vi C# för att skapa omträningsprogrammet. Du kan också använda Python- eller R-exempelkod för att utföra den här uppgiften.
Använd följande steg för att anropa API:erna för omträning:
- Skapa ett C#-konsolprogram i Visual Studio: New>Project>Visual C#>Windows Classic Desktop>Console App (.NET Framework).
- Logga in på Machine Learning Web Services-portalen.
- Klicka på den webbtjänst som du arbetar med.
- Klicka på Förbruka.
- Längst ned på sidan Förbruka går du till avsnittet Exempelkod och klickar på Batch.
- Kopiera C#-exempelkoden för batchkörning och klistra in den i filen Program.cs. Kontrollera att namnområdet förblir intakt.
Lägg till NuGet-paketet Microsoft.AspNet.WebApi.Client enligt kommentarerna. Om du vill lägga till referensen till Microsoft.WindowsAzure.Storage.dll kan du behöva installera klientbiblioteket för Azure Storage-tjänster.
Följande skärmbild visar sidan Förbruka i Machine Learning Web Services-portalen.
Uppdatera apikey-deklarationen
Leta upp apikey-deklarationen:
const string apiKey = "abc123"; // Replace this with the API key for the web service
I avsnittet Grundläggande förbrukningsinformation på sidan Förbruka letar du upp den primära nyckeln och kopierar den till apikey-deklarationen.
Uppdatera Azure Storage-informationen
BES-exempelkoden laddar upp en fil från en lokal enhet (till exempel "C:\temp\CensusInput.csv") till Azure Storage, bearbetar den och skriver resultatet tillbaka till Azure Storage.
- Logga in på Azure-portalen
- I den vänstra navigeringskolumnen klickar du på Fler tjänster, söker efter Lagringskonton och väljer det.
- I listan över lagringskonton väljer du ett för att lagra den omtränad modellen.
- I den vänstra navigeringskolumnen klickar du på Åtkomstnycklar.
- Kopiera och spara den primära åtkomstnyckeln.
- I den vänstra navigeringskolumnen klickar du på Blobar.
- Välj en befintlig container eller skapa en ny och spara namnet.
Leta upp deklarationerna StorageAccountName, StorageAccountKey och StorageContainerName och uppdatera de värden som du sparade från portalen.
const string StorageAccountName = "mystorageacct"; // Replace this with your Azure storage account name
const string StorageAccountKey = "a_storage_account_key"; // Replace this with your Azure Storage key
const string StorageContainerName = "mycontainer"; // Replace this with your Azure Storage container name
Du måste också se till att indatafilen är tillgänglig på den plats som du anger i koden.
Ange utdataplatsen
När du anger utdataplatsen i begärandenyttolasten måste filnamnstillägget som anges i RelativeLocation anges som ilearner
.
Outputs = new Dictionary<string, AzureBlobDataReference>() {
{
"output1",
new AzureBlobDataReference()
{
ConnectionString = storageConnectionString,
RelativeLocation = string.Format("{0}/output1results.ilearner", StorageContainerName) /*Replace this with the location you want to use for your output file and a valid file extension (usually .csv for scoring results or .ilearner for trained models)*/
}
},
Här är ett exempel på omträning av utdata:
Utvärdera omträningsresultaten
När du kör programmet innehåller utdata den URL och token för signaturer för delad åtkomst som krävs för att få åtkomst till utvärderingsresultatet.
Du kan se prestandaresultatet för den omtränad modellen genom att kombinera BaseLocation, RelativeLocation och SasBlobToken från utdataresultaten för output2 och klistra in den fullständiga URL:en i webbläsarens adressfält.
Granska resultaten för att avgöra om den nyligen tränade modellen presterar bättre än den befintliga.
Spara BaseLocation, RelativeLocation och SasBlobToken från utdataresultaten.
Uppdatera förutsägelseexperimentet
Logga in på Azure Resource Manager
Logga först in på ditt Azure-konto inifrån PowerShell-miljön med hjälp av cmdleten Connect-AzAccount .
Hämta webbtjänstdefinitionsobjektet
Hämta sedan webbtjänstdefinitionsobjektet genom att anropa cmdleten Get-AzMlWebService .
$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
Om du vill fastställa resursgruppens namn på en befintlig webbtjänst kör du cmdleten Get-AzMlWebService utan några parametrar för att visa webbtjänsterna i din prenumeration. Leta upp webbtjänsten och titta sedan på dess webbtjänst-ID. Namnet på resursgruppen är det fjärde elementet i ID:t strax efter resourceGroups-elementet . I följande exempel är resursgruppens namn Default-MachineLearning-SouthCentralUS.
Properties : Microsoft.Azure.Management.MachineLearning.WebServices.Models.WebServicePropertiesForGraph
Id : /subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Name : RetrainSamplePre.2016.8.17.0.3.51.237
Location : South Central US
Type : Microsoft.MachineLearning/webServices
Tags : {}
Om du vill fastställa resursgruppens namn på en befintlig webbtjänst kan du också logga in på Machine Learning Web Services-portalen. Välj webbtjänsten. Resursgruppens namn är det femte elementet i webbtjänstens URL strax efter elementet resourceGroups . I följande exempel är resursgruppens namn Default-MachineLearning-SouthCentralUS.
https://services.azureml.net/subscriptions/<subscription ID>/resourceGroups/Default-MachineLearning-SouthCentralUS/providers/Microsoft.MachineLearning/webServices/RetrainSamplePre.2016.8.17.0.3.51.237
Exportera webbtjänstdefinitionsobjektet som JSON
Om du vill ändra definitionen av den tränade modellen så att den använder den nyligen tränade modellen måste du först använda cmdleten Export-AzMlWebService för att exportera den till en JSON-formatfil.
Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"
Uppdatera referensen till ilearner-bloben
Leta upp [tränad modell] i tillgångarna och uppdatera URI-värdet i noden locationInfo med URI:n för ilearner-bloben. URI:n genereras genom att kombinera BaseLocation och RelativeLocation från utdata från BES-omträningsanropet.
"asset3": {
"name": "Retrain Sample [trained model]",
"type": "Resource",
"locationInfo": {
"uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
},
"outputPorts": {
"Results dataset": {
"type": "Dataset"
}
}
},
Importera JSON till ett webbtjänstdefinitionsobjekt
Använd cmdleten Import-AzMlWebService för att konvertera den ändrade JSON-filen tillbaka till ett webbtjänstdefinitionsobjekt som du kan använda för att uppdatera det predikaativa experimentet.
$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"
Uppdatera webbtjänsten
Använd slutligen cmdleten Update-AzMlWebService för att uppdatera förutsägelseexperimentet.
Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'
Nästa steg
Mer information om hur du hanterar webbtjänster eller håller reda på flera experimentkörningar finns i följande artiklar: