Повторное обучение и развертывание модели машинного обучения
ОБЛАСТЬ ПРИМЕНЕНИЯ К:Машинное обучение Studio (классическая) Машинное обучение Azure
Внимание
Поддержка Студии машинного обучения (классической) будет прекращена 31 августа 2024 г. До этой даты рекомендуется перейти на Машинное обучение Azure.
Начиная с 1 декабря 2021 года вы не сможете создавать новые ресурсы Студии машинного обучения (классической). Существующие ресурсы Студии машинного обучения (классической) можно будет использовать до 31 августа 2024 г.
- См. сведения о переносе проектов машинного обучения из Студии машинного обучения (классическая версия) в Машинное обучение Azure.
- См. дополнительные сведения о Машинном обучении Azure.
Прекращается поддержка документации по Студии машинного обучения (классической). В будущем она может не обновляться.
Повторное обучение — один из способов поддерживать точность моделей машинного обучения и учитывать самые актуальные доступные данные. В данной статье показано, как переобучить и развернуть модель машинного обучения как новую веб-службу в Studio (классический вариант). Если вас интересует повторное обучение для классической веб-службы, изучите это практическое руководство.
Для работы с этой статьей требуется развернутая прогнозная веб-служба. Если у вас еще нет прогнозирующей веб-службы, узнайте, как развернуть веб-службу Studio (классический вариант) здесь.
Для повторного обучения и развертывания новой веб-службы машинного обучения вам потребуется выполнить следующие задачи:
- Развертывание переобучающей веб-службы.
- Обучение новой модели с помощью этой переобучающей веб-службы.
- Обновление существующего прогнозного эксперимента для использования новой модели.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
Разверните переобучающую веб-службу.
Переобучающая веб-служба позволяет повторно обучать модели с новым набором параметров, например с новыми данными, и сохранить ее для последующего использования. Вы подключаете модуль Web Service Output (Выходные данные веб-службы) к модулю Train Model (Обучение модели), и обучающий эксперимент создает новую модель для использования.
Следуйте приведенным ниже инструкциям, чтобы развернуть переобучающую веб-службу:
Подключите модуль Web Service Input (Входные данные веб-службы) к нужному источнику данных. Вы, естественно, захотите убедиться, что входные данные будут обработаны так же, как исходный набор обучающих данных.
Подключите модуль Web Service Output (Выходные данные веб-службы) к выходу Train Model (Обучение модели).
Если у вас есть модуль Evaluate Model (Оценка модели), вы можете присоединить к нему Web Service Output (Выходные данные веб-службы), чтобы получить результаты оценки.
Запустите эксперимент.
После запуска эксперимента рабочий процесс должен выглядеть примерно так:
Теперь разверните обучающий эксперимент в качестве обучающей веб-службы, которая выводит обученную модель и результаты ее оценки.
В нижней части холста эксперимента щелкните Set Up Web Service (Настроить веб-службу).
Выберите Deploy Web Service [New] (Развернуть веб-службу (новую)). Портал веб-служб Машинного обучения откроется на странице Развертывание веб-службы.
Введите имя веб-службы и выберите план платежей.
Выберите Развернуть.
Повторное обучение модели
В этом примере для создания приложения переобучения используется код на языке C#. Кроме того, для этого можно использовать образцы кода на языке R или Python.
Следуйте приведенным ниже инструкциям, чтобы вызвать API переобучения:
- Создайте консольное приложение C# в Visual Studio (Создать>Проект>Visual C#>Классический рабочий стол Windows>Консольное приложение (.NET Framework).
- Войдите на портал веб-служб Машинного обучения.
- Щелкните веб-службу, с которой работаете.
- Щелкните Consume(Использование).
- В нижней части страницы Consume (Использование) в разделе Sample Code (Пример кода) щелкните Batch (Пакет).
- Скопируйте пример кода на C# для пакетного выполнения и вставьте его в файл Program.cs. Убедитесь, что пространство имен не изменено.
Добавьте пакет NuGet Microsoft.AspNet.WebApi.Client, как указано в комментариях. Чтобы добавить ссылку на файл Microsoft.WindowsAzure.Storage.dll, возможно, потребуется установить клиентскую библиотеку для служб хранилища Azure.
На следующем снимке экрана показана станица Использование на портале веб-служб Машинного обучения.
Обновление объявления 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.
- Войдите на портал Azure.
- В столбце слева щелкните More services (Дополнительные службы), найдите параметр Учетные записи хранения и выберите его.
- Выберите в списке учетную запись хранения, которая будет использоваться для хранения переобученной модели.
- В левой области навигации щелкните Ключи доступа.
- Скопируйте и сохраните первичный ключ доступа.
- В левом столбце навигации нажмите Большие двоичные объекты.
- Выберите существующий контейнер или создайте другой, а затем сохраните его имя.
Найдите объявления 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'
Следующие шаги
Дополнительные сведения о том, как управлять веб-службами или отслеживать несколько экспериментов, см. в следующих статьях: