Delen via


Een machine learning-model opnieuw trainen en implementeren

VAN TOEPASSING OP:Van toepassing op.Machine Learning Studio (klassiek) Is niet van toepassing op.Azure Machine Learning

Belangrijk

De ondersteuning voor Azure Machine Learning-studio (klassiek) eindigt op 31 augustus 2024. U wordt aangeraden om vóór die datum over te stappen naar Azure Machine Learning.

Vanaf 1 december 2021 kunt u geen nieuwe resources voor Azure Machine Learning-studio (klassiek) meer maken. Tot en met 31 augustus 2024 kunt u de bestaande resources van Azure Machine Learning-studio (klassiek) blijven gebruiken.

De documentatie van ML-studio (klassiek) wordt buiten gebruik gesteld en wordt in de toekomst mogelijk niet meer bijgewerkt.

Opnieuw trainen is één manier om ervoor te zorgen dat machine learning-modellen nauwkeurig blijven en gebaseerd blijven op de meest relevante gegevens die beschikbaar zijn. In dit artikel wordt beschreven hoe u een machine learning-model opnieuw kunt trainen en implementeren als een nieuwe webservice in Studio (klassiek). Als u een klassieke webservice opnieuw wilt trainen, bekijkt u dit instructieartikel.

In dit artikel wordt ervan uitgegaan dat u al een voorspellende webservice hebt geïmplementeerd. Als u nog geen voorspellende webservice hebt, leest u hier hoe u een Studio-webservice (klassiek) implementeert.

Volg deze stappen om een nieuwe machine learning-webservice opnieuw te trainen en te implementeren:

  1. Een webservice opnieuw trainen implementeren
  2. Een nieuw model trainen met behulp van uw webservice voor opnieuw trainen
  3. Uw bestaande voorspellende experiment bijwerken om het nieuwe model te gebruiken

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

De webservice opnieuw trainen implementeren

Met een webservice voor opnieuw trainen kunt u uw model opnieuw trainen met een nieuwe set parameters, zoals nieuwe gegevens, en deze opslaan voor later gebruik. Wanneer u een webservice-uitvoer verbindt met een trainmodel, voert het trainingsexperiment een nieuw model uit dat u kunt gebruiken.

Gebruik de volgende stappen om een webservice opnieuw te trainen:

  1. Koppel een webserviceinvoermodule aan uw gegevensinvoer. Normaal gesproken wilt u ervoor zorgen dat uw invoergegevens op dezelfde manier worden verwerkt als uw oorspronkelijke trainingsgegevens.

  2. Koppel een webservice-uitvoermodule aan de uitvoer van uw trainmodel.

  3. Als u een module Evaluate Model hebt, kunt u een webservice-uitvoermodule verbinden om de evaluatieresultaten uit te voeren

  4. Voer uw experiment uit.

    Nadat u het experiment hebt uitgevoerd, moet de resulterende werkstroom er ongeveer uitzien als in de volgende afbeelding:

    Resulterende werkstroom

    Nu implementeert u het trainingsexperiment als een hertrainingswebservice die een getraind model en modelevaluatieresultaten uitvoert.

  5. Klik onder aan het experimentcanvas op Webservice instellen

  6. Selecteer Webservice implementeren [nieuw]. De Portal voor Machine Learning-webservices wordt geopend op de pagina Webservice implementeren .

  7. Typ een naam voor uw webservice en kies een betalingsplan.

  8. Selecteer Implementeren.

Het model opnieuw trainen

In dit voorbeeld gebruiken we C# om de toepassing voor opnieuw trainen te maken. U kunt ook Python- of R-voorbeeldcode gebruiken om deze taak uit te voeren.

Gebruik de volgende stappen om de API's voor opnieuw trainen aan te roepen:

  1. Een C#-consoletoepassing maken in Visual Studio: New>Project>Visual C#>Windows Classic Desktop>Console App (.NET Framework).
  2. Meld u aan bij de Machine Learning Web Services-portal.
  3. Klik op de webservice waarmee u werkt.
  4. Klik op Verbruiken.
  5. Klik onder aan de pagina Verbruiken in de sectie Voorbeeldcode op Batch.
  6. Kopieer de C#-voorbeeldcode voor batchuitvoering en plak deze in het Program.cs-bestand. Zorg ervoor dat de naamruimte intact blijft.

Voeg het NuGet-pakket Microsoft.AspNet.WebApi.Client toe, zoals opgegeven in de opmerkingen. Als u de verwijzing naar Microsoft.WindowsAzure.Storage.dll wilt toevoegen, moet u mogelijk de clientbibliotheek voor Azure Storage-services installeren.

In de volgende schermopname ziet u de pagina Verbruiken in de Portal voor Machine Learning-webservices.

Pagina Verbruiken

De apikey-declaratie bijwerken

Zoek de declaratie apikey :

const string apiKey = "abc123"; // Replace this with the API key for the web service

Zoek in de sectie Basisverbruiksgegevens van de pagina Verbruik de primaire sleutel en kopieer deze naar de declaratie apikey .

De Azure Storage-gegevens bijwerken

De BES-voorbeeldcode uploadt een bestand van een lokaal station (bijvoorbeeld 'C:\temp\CensusInput.csv') naar Azure Storage, verwerkt het en schrijft de resultaten terug naar Azure Storage.

  1. Aanmelden bij Azure Portal
  2. Klik in de linkernavigatiekolom op Meer services, zoek naar Opslagaccounts en selecteer deze.
  3. Selecteer in de lijst met opslagaccounts een account om het opnieuw getrainde model op te slaan.
  4. Klik in de linkernavigatiekolom op Toegangstoetsen.
  5. Kopieer de primaire toegangssleutel en sla deze op.
  6. Klik in de linkernavigatiekolom op Blobs.
  7. Selecteer een bestaande container of maak een nieuwe en sla de naam op.

Zoek de declaraties StorageAccountName, StorageAccountKey en StorageContainerName en werk de waarden bij die u in de portal hebt opgeslagen.

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

U moet er ook voor zorgen dat het invoerbestand beschikbaar is op de locatie die u in de code opgeeft.

De uitvoerlocatie opgeven

Wanneer u de uitvoerlocatie opgeeft in de nettolading van de aanvraag, moet de extensie van het bestand dat is opgegeven in RelativeLocation worden opgegeven als 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)*/
        }
    },

Hier volgt een voorbeeld van het opnieuw trainen van uitvoer:

Uitvoer opnieuw trainen

De resultaten van de hertraining evalueren

Wanneer u de toepassing uitvoert, bevat de uitvoer de URL en het shared access signatures-token die nodig zijn voor toegang tot de evaluatieresultaten.

U kunt de prestatieresultaten van het opnieuw getrainde model bekijken door BaseLocation, RelativeLocation en SasBlobToken te combineren vanuit de uitvoerresultaten voor output2 en de volledige URL in de adresbalk van de browser te plakken.

Bekijk de resultaten om te bepalen of het zojuist getrainde model beter presteert dan het bestaande.

Sla de BaseLocation, RelativeLocation en SasBlobToken op uit de uitvoerresultaten.

Het voorspellende experiment bijwerken

Aanmelden bij Azure Resource Manager

Meld u eerst aan bij uw Azure-account vanuit de PowerShell-omgeving met behulp van de cmdlet Connect-AzAccount .

Het webservicedefinitieobject ophalen

Haal vervolgens het webservicedefinitieobject op door de cmdlet Get-AzMlWebService aan te roepen.

$wsd = Get-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Als u de naam van de resourcegroep van een bestaande webservice wilt bepalen, voert u de cmdlet Get-AzMlWebService uit zonder parameters om de webservices in uw abonnement weer te geven. Zoek de webservice en bekijk de bijbehorende webservice-id. De naam van de resourcegroep is het vierde element in de id, net na het element resourceGroups . In het volgende voorbeeld is de naam van de resourcegroep 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 : {}

U kunt ook de naam van de resourcegroep van een bestaande webservice bepalen door u aan te melden bij de Machine Learning-webservices-portal. Selecteer de webservice. De naam van de resourcegroep is het vijfde element van de URL van de webservice, net na het element resourceGroups . In het volgende voorbeeld is de naam van de resourcegroep 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

Het webservicedefinitieobject exporteren als JSON

Als u de definitie van het getrainde model wilt wijzigen om het zojuist getrainde model te gebruiken, moet u eerst de cmdlet Export-AzMlWebService gebruiken om het te exporteren naar een JSON-bestand.

Export-AzMlWebService -WebService $wsd -OutputFile "C:\temp\mlservice_export.json"

De verwijzing naar de ilearner-blob bijwerken

Zoek in de assets het [getrainde model], werk de URI-waarde in het knooppunt locationInfo bij met de URI van de ilearner-blob. De URI wordt gegenereerd door de BaseLocation en de RelativeLocation te combineren op basis van de uitvoer van de BES-aanroep voor opnieuw trainen.

"asset3": {
    "name": "Retrain Sample [trained model]",
    "type": "Resource",
    "locationInfo": {
        "uri": "https://mltestaccount.blob.core.windows.net/azuremlassetscontainer/baca7bca650f46218633552c0bcbba0e.ilearner"
    },
    "outputPorts": {
        "Results dataset": {
            "type": "Dataset"
        }
    }
},

De JSON importeren in een webservicedefinitieobject

Gebruik de cmdlet Import-AzMlWebService om het gewijzigde JSON-bestand weer te converteren naar een webservicedefinitieobject dat u kunt gebruiken om het predicatieve experiment bij te werken.

$wsd = Import-AzMlWebService -InputFile "C:\temp\mlservice_export.json"

De webservice bijwerken

Gebruik ten slotte de cmdlet Update-AzMlWebService om het voorspellende experiment bij te werken.

Update-AzMlWebService -Name 'RetrainSamplePre.2016.8.17.0.3.51.237' -ResourceGroupName 'Default-MachineLearning-SouthCentralUS'

Volgende stappen

Zie de volgende artikelen voor meer informatie over het beheren van webservices of het bijhouden van uitvoeringen van meerdere experimenten: