Udostępnij za pośrednictwem


Ponowne trenowanie i wdrażanie modelu uczenia maszynowego

DOTYCZY: Dotyczy.Machine Learning Studio (wersja klasyczna) Nie dotyczy.Azure Machine Learning

Ważne

Obsługa programu Machine Learning Studio (wersja klasyczna) zakończy się 31 sierpnia 2024 r. Zalecamy przejście do usługi Azure Machine Learning przed tym terminem.

Od 1 grudnia 2021 r. nie będzie można tworzyć nowych zasobów programu Machine Learning Studio (wersja klasyczna). Do 31 sierpnia 2024 r. można będzie nadal korzystać z istniejących zasobów programu Machine Learning Studio (wersja klasyczna).

Dokumentacja programu ML Studio (wersja klasyczna) jest wycofywana i może nie być aktualizowana w przyszłości.

Ponowne trenowanie to jeden ze sposobów zapewnienia, że modele uczenia maszynowego pozostają dokładne i oparte na najbardziej odpowiednich dostępnych danych. W tym artykule pokazano, jak ponownie trenować i wdrażać model uczenia maszynowego jako nową usługę internetową w programie Studio (wersja klasyczna). Jeśli chcesz ponownie wytrenować klasyczną usługę internetową, zapoznaj się z tym artykułem z instrukcjami.

W tym artykule założono, że masz już wdrożona predykcyjna usługa internetowa. Jeśli nie masz jeszcze predykcyjnej usługi internetowej, dowiedz się, jak wdrożyć usługę internetową Studio (klasyczną) tutaj.

Wykonaj następujące kroki, aby ponownie wytrenować i wdrożyć nową usługę internetową uczenia maszynowego:

  1. Wdrażanie ponownego trenowania usługi internetowej
  2. Trenowanie nowego modelu przy użyciu ponownego trenowania usługi internetowej
  3. Aktualizowanie istniejącego eksperymentu predykcyjnego w celu użycia nowego modelu

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wdrażanie ponownego trenowania usługi internetowej

Ponowne trenowanie usługi internetowej umożliwia ponowne trenowanie modelu przy użyciu nowego zestawu parametrów, takich jak nowe dane, i zapisywanie go na później. Po połączeniu danych wyjściowych usługi internetowej z modelem trenowania eksperyment generuje nowy model do użycia.

Aby wdrożyć ponownie trenowaną usługę internetową, wykonaj następujące kroki:

  1. Połącz moduł Web Service Input z danymi wejściowymi danych. Zazwyczaj chcesz mieć pewność, że dane wejściowe są przetwarzane w taki sam sposób, jak oryginalne dane szkoleniowe.

  2. Połącz moduł Danych wyjściowych usługi internetowej z danymi wyjściowymi trenowania modelu.

  3. Jeśli masz moduł Evaluate Model (Ocena modelu ), możesz połączyć moduł Danych wyjściowych usługi internetowej, aby uzyskać wyniki oceny

  4. Uruchom eksperyment.

    Po uruchomieniu eksperymentu wynikowy przepływ pracy powinien być podobny do poniższego obrazu:

    Wynikowy przepływ pracy

    Teraz wdrożysz eksperyment trenowania jako usługę internetową ponownego trenowania, która generuje wytrenowany model i wyniki oceny modelu.

  5. W dolnej części kanwy eksperymentu kliknij pozycję Skonfiguruj usługę internetową

  6. Wybierz pozycję Wdróż usługę internetową [nowy]. Portal usług sieci Web usługi Machine Learning zostanie otwarty na stronie Wdrażanie usługi sieci Web.

  7. Wpisz nazwę usługi internetowej i wybierz plan płatności.

  8. Wybierz Wdróż.

Ponowne trenowanie modelu

W tym przykładzie używamy języka C# do utworzenia aplikacji ponownego trenowania. Do wykonania tego zadania można również użyć przykładowego kodu w języku Python lub R.

Aby wywołać interfejsy API ponownego trenowania, wykonaj następujące czynności:

  1. Utwórz aplikację konsolową języka C# w programie Visual Studio: nowy>projekt>Visual C#>Klasyczna aplikacja konsolowa systemu Windows>(.NET Framework).
  2. Zaloguj się do portalu usług sieci Web Machine Learning.
  3. Kliknij usługę internetową, z którą pracujesz.
  4. Kliknij pozycję Zużyj.
  5. W dolnej części strony Korzystanie w sekcji Przykładowy kod kliknij pozycję Batch.
  6. Skopiuj przykładowy kod C# na potrzeby wykonywania wsadowego i wklej go do pliku Program.cs. Upewnij się, że przestrzeń nazw pozostaje nienaruszona.

Dodaj pakiet NuGet Microsoft.AspNet.WebApi.Client, jak określono w komentarzach. Aby dodać odwołanie do Microsoft.WindowsAzure.Storage.dll, może być konieczne zainstalowanie biblioteki klienta dla usług Azure Storage.

Poniższy zrzut ekranu przedstawia stronę Korzystanie w portalu usług sieci Web Machine Learning.

Korzystanie ze strony

Aktualizowanie deklaracji apikey

Znajdź deklarację apikey :

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

W sekcji Informacje o użyciu podstawowe na stronie Użycie znajdź klucz podstawowy i skopiuj go do deklaracji apikey.

Aktualizowanie informacji o usłudze Azure Storage

Przykładowy kod usługi BES przekazuje plik z dysku lokalnego (na przykład "C:\temp\CensusInput.csv") do usługi Azure Storage, przetwarza go i zapisuje wyniki z powrotem do usługi Azure Storage.

  1. Logowanie do witryny Azure Portal
  2. W lewej kolumnie nawigacji kliknij pozycję Więcej usług, wyszukaj pozycję Konta magazynu i wybierz je.
  3. Z listy kont magazynu wybierz jeden, aby zapisać ponownie trenowany model.
  4. W lewej kolumnie nawigacji kliknij pozycję Klucze dostępu.
  5. Skopiuj i zapisz klucz dostępu podstawowego.
  6. W lewej kolumnie nawigacji kliknij pozycję Obiekty blob.
  7. Wybierz istniejący kontener lub utwórz nowy i zapisz nazwę.

Znajdź deklaracje StorageAccountName, StorageAccountKey i StorageContainerName i zaktualizuj wartości zapisane w portalu.

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

Należy również upewnić się, że plik wejściowy jest dostępny w lokalizacji określonej w kodzie.

Określanie lokalizacji wyjściowej

Po określeniu lokalizacji wyjściowej w ładunku żądania rozszerzenie pliku określonego w względnej lokalizacji musi być określone jako 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)*/
        }
    },

Oto przykład ponownego trenowania danych wyjściowych:

Ponowne trenowanie danych wyjściowych

Ocena wyników ponownego trenowania

Po uruchomieniu aplikacji dane wyjściowe zawierają adres URL i token sygnatur dostępu współdzielonego, które są niezbędne do uzyskania dostępu do wyników oceny.

Wyniki wydajności modelu ponownego trenowania można wyświetlić, łącząc element BaseLocation, RelativeLocation i SasBlobToken z wyników wyjściowych dla danych wyjściowych2 i wklejając pełny adres URL na pasku adresu przeglądarki.

Sprawdź wyniki, aby ustalić, czy nowo wytrenowany model działa lepiej niż istniejący.

Zapisz wartości BaseLocation, RelativeLocation i SasBlobToken z wyników wyjściowych.

Aktualizowanie eksperymentu predykcyjnego

Logowanie się do usługi Azure Resource Manager

Najpierw zaloguj się do konta platformy Azure z poziomu środowiska programu PowerShell przy użyciu polecenia cmdlet Connect-AzAccount .

Pobieranie obiektu definicji usługi sieci Web

Następnie pobierz obiekt Definicji usługi internetowej, wywołując polecenie cmdlet Get-AzMlWebService .

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

Aby określić nazwę grupy zasobów istniejącej usługi internetowej, uruchom polecenie cmdlet Get-AzMlWebService bez żadnych parametrów, aby wyświetlić usługi internetowe w ramach subskrypcji. Znajdź usługę internetową, a następnie sprawdź jej identyfikator usługi internetowej. Nazwa grupy zasobów jest czwartym elementem w identyfikatorze tuż po elemecie resourceGroups . W poniższym przykładzie nazwa grupy zasobów to 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 : {}

Alternatywnie, aby określić nazwę grupy zasobów istniejącej usługi internetowej, zaloguj się do portalu usług sieci Web Machine Learning. Wybierz usługę internetową. Nazwa grupy zasobów jest piątym elementem adresu URL usługi internetowej tuż po elemecie resourceGroups . W poniższym przykładzie nazwa grupy zasobów to 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

Eksportowanie obiektu definicji usługi sieci Web jako formatu JSON

Aby zmodyfikować definicję wytrenowanego modelu do używania nowo wytrenowanego modelu, należy najpierw użyć polecenia cmdlet Export-AzMlWebService , aby wyeksportować go do pliku w formacie JSON.

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

Aktualizowanie odwołania do obiektu blob ilearner

W zasobach znajdź [wytrenowany model], zaktualizuj wartość identyfikatora URI w węźle locationInfo za pomocą identyfikatora URI obiektu blob ilearner. Identyfikator URI jest generowany przez połączenie wartości BaseLocation i RelativeLocation z danych wyjściowych wywołania ponownego trenowania USŁUGI BES.

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

Importowanie kodu JSON do obiektu definicji usługi sieci Web

Użyj polecenia cmdlet Import-AzMlWebService, aby przekonwertować zmodyfikowany plik JSON z powrotem na obiekt definicji usługi sieci Web, którego można użyć do zaktualizowania eksperymentu predykacyjnego.

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

Aktualizowanie usługi internetowej

Na koniec użyj polecenia cmdlet Update-AzMlWebService , aby zaktualizować eksperyment predykcyjny.

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

Następne kroki

Aby dowiedzieć się więcej na temat zarządzania usługami internetowymi lub śledzenia wielu przebiegów eksperymentów, zobacz następujące artykuły: