Поделиться через


Повторное обучение и развертывание модели машинного обучения

ОБЛАСТЬ ПРИМЕНЕНИЯ К:Применимо к.Машинное обучение Studio (классическая) Не применяется к.Машинное обучение Azure

Внимание

Поддержка Студии машинного обучения (классической) будет прекращена 31 августа 2024 г. До этой даты рекомендуется перейти на Машинное обучение Azure.

Начиная с 1 декабря 2021 года вы не сможете создавать новые ресурсы Студии машинного обучения (классической). Существующие ресурсы Студии машинного обучения (классической) можно будет использовать до 31 августа 2024 г.

Прекращается поддержка документации по Студии машинного обучения (классической). В будущем она может не обновляться.

Повторное обучение — один из способов поддерживать точность моделей машинного обучения и учитывать самые актуальные доступные данные. В данной статье показано, как переобучить и развернуть модель машинного обучения как новую веб-службу в Studio (классический вариант). Если вас интересует повторное обучение для классической веб-службы, изучите это практическое руководство.

Для работы с этой статьей требуется развернутая прогнозная веб-служба. Если у вас еще нет прогнозирующей веб-службы, узнайте, как развернуть веб-службу Studio (классический вариант) здесь.

Для повторного обучения и развертывания новой веб-службы машинного обучения вам потребуется выполнить следующие задачи:

  1. Развертывание переобучающей веб-службы.
  2. Обучение новой модели с помощью этой переобучающей веб-службы.
  3. Обновление существующего прогнозного эксперимента для использования новой модели.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Разверните переобучающую веб-службу.

Переобучающая веб-служба позволяет повторно обучать модели с новым набором параметров, например с новыми данными, и сохранить ее для последующего использования. Вы подключаете модуль Web Service Output (Выходные данные веб-службы) к модулю Train Model (Обучение модели), и обучающий эксперимент создает новую модель для использования.

Следуйте приведенным ниже инструкциям, чтобы развернуть переобучающую веб-службу:

  1. Подключите модуль Web Service Input (Входные данные веб-службы) к нужному источнику данных. Вы, естественно, захотите убедиться, что входные данные будут обработаны так же, как исходный набор обучающих данных.

  2. Подключите модуль Web Service Output (Выходные данные веб-службы) к выходу Train Model (Обучение модели).

  3. Если у вас есть модуль Evaluate Model (Оценка модели), вы можете присоединить к нему Web Service Output (Выходные данные веб-службы), чтобы получить результаты оценки.

  4. Запустите эксперимент.

    После запуска эксперимента рабочий процесс должен выглядеть примерно так:

    Итоговый рабочий процесс

    Теперь разверните обучающий эксперимент в качестве обучающей веб-службы, которая выводит обученную модель и результаты ее оценки.

  5. В нижней части холста эксперимента щелкните Set Up Web Service (Настроить веб-службу).

  6. Выберите Deploy Web Service [New] (Развернуть веб-службу (новую)). Портал веб-служб Машинного обучения откроется на странице Развертывание веб-службы.

  7. Введите имя веб-службы и выберите план платежей.

  8. Выберите Развернуть.

Повторное обучение модели

В этом примере для создания приложения переобучения используется код на языке C#. Кроме того, для этого можно использовать образцы кода на языке R или Python.

Следуйте приведенным ниже инструкциям, чтобы вызвать API переобучения:

  1. Создайте консольное приложение C# в Visual Studio (Создать>Проект>Visual C#>Классический рабочий стол Windows>Консольное приложение (.NET Framework).
  2. Войдите на портал веб-служб Машинного обучения.
  3. Щелкните веб-службу, с которой работаете.
  4. Щелкните Consume(Использование).
  5. В нижней части страницы Consume (Использование) в разделе Sample Code (Пример кода) щелкните Batch (Пакет).
  6. Скопируйте пример кода на C# для пакетного выполнения и вставьте его в файл Program.cs. Убедитесь, что пространство имен не изменено.

Добавьте пакет NuGet Microsoft.AspNet.WebApi.Client, как указано в комментариях. Чтобы добавить ссылку на файл Microsoft.WindowsAzure.Storage.dll, возможно, потребуется установить клиентскую библиотеку для служб хранилища Azure.

На следующем снимке экрана показана станица Использование на портале веб-служб Машинного обучения.

Страница Consume (Использование)

Обновление объявления apiKey

Найдите объявление apiKey:

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

В разделе Basic consumption info (Основные сведения об использовании) на странице Consume (Использование) найдите первичный ключ и скопируйте его в объявление apiKey.

Обновление сведений о службе хранилища Azure

В этом примере кода BES файл с локального диска (например, C:\temp\CensusIpnput.csv) отправляется в службу хранилища Azure, где он обрабатывается. Затем результаты записываются обратно в службу хранилища Azure.

  1. Войдите на портал Azure.
  2. В столбце слева щелкните More services (Дополнительные службы), найдите параметр Учетные записи хранения и выберите его.
  3. Выберите в списке учетную запись хранения, которая будет использоваться для хранения переобученной модели.
  4. В левой области навигации щелкните Ключи доступа.
  5. Скопируйте и сохраните первичный ключ доступа.
  6. В левом столбце навигации нажмите Большие двоичные объекты.
  7. Выберите существующий контейнер или создайте другой, а затем сохраните его имя.

Найдите объявления StorageAccountName, StorageAccountKey и StorageContainerName, а затем обновите их, используя значения с портала.

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

Кроме того, необходимо обеспечить доступность файла входных данных в расположении, указанном в коде.

Указание расположения выходных данных

Указывая расположение выходных данных для полезных данных запроса, измените расширение файла, заданное в RelativeLocation, на 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)*/
        }
    },

Ниже приведен пример выходных данных переобучения:

Выходные данные переобучения

Оценка результатов переобучения

При выполнении приложения выходные данные содержат URL-адрес и подписанные URL-адреса, необходимые для доступа к результатам оценки.

Чтобы увидеть результаты работы переобученной модели, введите в адресную строку браузера полный URL-адрес, составив его из значений параметров BaseLocation, RelativeLocaiton и SasBlobToken, содержащихся в выходных данных output2.

Проанализируйте результаты и определите, можно ли только что обученную модель считать лучше предыдущей.

Сохраните значения BaseLocation, RelativeLocation и SasBlobToken из полученных результатов.

Обновление прогнозного эксперимента

Вход в Azure Resource Manager

Сперва войдите в свою учетную запись Azure из среды PowerShell с помощью командлета Connect-AzAccount.

Получение объекта определения веб-службы

После этого получите объект определения веб-службы, вызвав командлет Get-AzMlWebService.

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

Чтобы определить имя группы ресурсов существующей веб-службы, запустите командлет Get-AzMlWebService без каких-либо параметров для отображения веб-служб в вашей подписке. Найдите необходимую веб-службу и посмотрите ее идентификатор. Имя группы ресурсов — это четвертый элемент в идентификаторе, который следует сразу за элементом resourceGroups . В следующем примере имя группы ресурсов — 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 : {}

Чтобы определить имя группы ресурсов существующей веб-службы, войдите на портал веб-служб Машинного обучения. Затем выбрать веб-службу. Имя группы ресурсов — это пятый элемент в URL-адресе веб-службы, который следует сразу за элементом resourceGroups . В следующем примере имя группы ресурсов — 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

Экспорт объекта определения веб-службы в формате JSON

Чтобы изменить определение обученной модели для использования только что обученной модели, необходимо сначала использовать командлет Export-AzMlWebService, чтобы экспортировать его в файл формата JSON.

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

Обновление ссылки на большой двоичный объект ilearner

В ресурсах-контейнерах найдите элемент [trained model], обновите значение uri в узле locationInfo, заменив его универсальным кодом ресурса (URI) BLOB-объекта ilearner. URI формируется в результате объединения параметров BaseLocation и RelativeLocation из выходных данных вызова переобучения 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"
        }
    }
},

Импорт JSON-файла в объект определения веб-службы

Используйте командлет Import-AzMlWebService, чтобы преобразовать измененный файл JSON обратно в объект определения веб-службы, который можно использовать для обновления предикативного эксперимента.

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

Обновление веб-службы

Наконец, воспользуйтесь командлетом Update-AzMlWebService, чтобы обновить прогнозный эксперимент.

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

Следующие шаги

Дополнительные сведения о том, как управлять веб-службами или отслеживать несколько экспериментов, см. в следующих статьях: