Руководство по Обучение и развертывание первой модели в R с помощью службы машинного обучения AzureTutorial: Train and deploy your first model in R with Azure Machine Learning

Применимо к: даБазовый выпуск даКорпоративный выпуск                    (Обновление до выпуска "Корпоративный")APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

В рамках этого учебника вы изучите базовые конструктивные шаблоны в службе машинного обучения Azure.In this tutorial, you learn the foundational design patterns in Azure Machine Learning. Также вы выполните обучение и развертывание модели caret, позволяющей спрогнозировать вероятность летального исхода в автомобильной аварии.You'll train and deploy a caret model to predict the likelihood of a fatality in an automobile accident. Завершив этот учебник, вы получите практические знания о пакете SDK R и сможете перейти к более сложным экспериментам и рабочим процессам.After completing this tutorial, you'll have the practical knowledge of the R SDK to scale up to developing more-complex experiments and workflows.

В этом руководстве вы выполнили следующие задачи.In this tutorial, you learn the following tasks:

  • Подключение к рабочей областиConnect your workspace
  • Загрузка данных и подготовка к обучениюLoad data and prepare for training
  • Загрузка данных в хранилище данных для их последующего использования в процессе удаленного обученияUpload data to the datastore so it is available for remote training
  • Создание вычислительного ресурсаCreate a compute resource
  • Обучение модели caret, прогнозирующей вероятность летального исходаTrain a caret model to predict probability of fatality
  • Развертывание конечной точки прогнозированияDeploy a prediction endpoint
  • Тестирование модели из RTest the model from R

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.If you don’t have an Azure subscription, create a free account before you begin. Опробуйте бесплатную или платную версию Машинного обучения Azure уже сегодня.Try the free or paid version of Azure Machine Learning today.

Предварительные требованияPrerequisites

  1. Выполите следующие инструкции по установке, чтобы:Follow the installation instructions to:

    • установить Anaconda;Install Anaconda
    • установить azuremlsdk;Install azuremlsdk
    • установить пакет SDK для Машинного обучения Azure для Python.Install the Azure Machine Learning SDK for Python
  2. Скачайте три файла учебника с сайта GitHub.Get the three tutorial files from GitHub. Сохраните их в каталоге tutorials.Save them into a tutorials directory.

  3. Создайте рабочую область службы машинного обучения Azure и выполните приведенные ниже действия, чтобы скачать ее файл конфигурации.Create an Azure Machine Learning workspace and download its configuration file using the steps below.

Создание рабочей областиCreate a workspace

Рабочая область машинного обучения Azure — это основной ресурс в облаке для экспериментов, обучения и развертывания моделей машинного обучения.An Azure Machine Learning workspace is a foundational resource in the cloud that you use to experiment, train, and deploy machine learning models. Она связывает подписку и группу ресурсов Azure с легко используемым объектом в пакете SDK.It ties your Azure subscription and resource group to an easily consumed object in the SDK. Если у вас уже есть рабочая область службы машинного обучения Azure, перейдите к следующему разделу.If you already have an Azure Machine Learning workspace, skip to the next section. В противном случае создайте ее прямо сейчас.Otherwise, create one now.

  1. Войдите на портал Azure с помощью учетных данных вашей подписки Azure.Sign in to Azure portal by using the credentials for your Azure subscription.

  2. На портале Azure вверху слева щелкните + Создать ресурс.In the upper-left corner of Azure portal, select + Create a resource.

    Создать новый ресурс

  3. С помощью строки поиска выполните поиск по запросу Машинное обучение.Use the search bar to find Machine Learning.

  4. Выберите Машинное обучение.Select Machine Learning.

  5. В области Машинное обучение выберите Создать.In the Machine Learning pane, select Create to begin.

  6. Укажите следующие сведения для настройки новой рабочей области:Provide the following information to configure your new workspace:

    ПолеField ОПИСАНИЕDescription
    имя рабочей области.Workspace name Введите уникальное имя для идентификации рабочей области.Enter a unique name that identifies your workspace. В этом примере мы используем docs-ws.In this example, we use docs-ws. Имена должны быть уникальными в группе ресурсов.Names must be unique across the resource group. Используйте имя, которое позволит легко запомнить рабочую область и отличить ее от областей, созданных другими пользователями.Use a name that's easy to recall and to differentiate from workspaces created by others.
    SubscriptionSubscription Выберите подписку Azure, которую нужно использовать.Select the Azure subscription that you want to use.
    группа ресурсов.Resource group Используйте группу ресурсов, которая уже есть в подписке, или введите имя, чтобы создать группу ресурсов.Use an existing resource group in your subscription or enter a name to create a new resource group. Группа ресурсов содержит связанные ресурсы для решения Azure.A resource group holds related resources for an Azure solution. В этом примере мы используем docs-aml.In this example, we use docs-aml.
    LocationLocation Выберите ближайшее к пользователям и ресурсам данных расположение, чтобы создать рабочую область.Select the location closest to your users and the data resources to create your workspace.
    Выпуск рабочей областиWorkspace edition Выберите Базовый в качестве типа рабочей области для этого учебника.Select Basic as the workspace type for this tutorial. Тип рабочей области ("Базовый" и "Корпоративный") определяет возможности, к которым у вас есть доступ, и цены.The workspace type (Basic & Enterprise) determines the features to which you’ll have access and pricing. Все, что описывается в этом учебнике, можно выполнять с помощью рабочей области как уровня "Базовый", так и уровня "Корпоративный".Everything in this tutorial can be performed with either a Basic or Enterprise workspace.
  7. После окончания настройки рабочей области выберите Просмотр и создание.After you are finished configuring the workspace, select Review + Create.

    Предупреждение

    Создание рабочей области в облаке может занять несколько минут.It can take several minutes to create your workspace in the cloud.

    По завершении процесса появится сообщение об успешном развертывании.When the process is finished, a deployment success message appears.

  8. Чтобы просмотреть новую рабочую область, выберите Перейти к ресурсу.To view the new workspace, select Go to resource.

Скачивание файла config.jsonDownload config.json file

  1. В верхней части страницы рабочей области выберите Скачать config.json.On the top of the workspace page, select Download config.json.

    Скачивание файла config.json

  2. Добавьте этот файл в каталог tutorials.Add this file to your tutorials directory.

Теперь все готово к запуску этого учебника.You are now ready to run the tutorial.

Для работы с этим учебником рекомендуется использовать RStudio.We recommend using RStudio to run this tutorial. В RStudio выберите "Файл > Создать проект > Существующий каталог" и укажите ранее созданный каталог tutorials.In RStudio, choose File > New Project > Existing Directory and select the tutorials directory you created above.

Важно!

Оставшаяся часть этой статьи содержит те же данные, что и файл train-and-deploy-to-aci.Rmd.The rest of this article contains the same content as you see in the train-and-deploy-to-aci.Rmd file.
Если у вас есть опыт работы с RMarkdown, вы можете использовать код из этого файла.If you are experienced with RMarkdown, feel free to use the code from that file. Также можно скопировать и вставить фрагменты кода из этого файла или из этой статьи в скрипт R или в командную строку.Or you can copy/paste the code snippets from there, or from this article into an R script or the command line.

Настройка среды разработкиSet up your development environment

Подготовка к процедуре разработки в рамках этого учебника предусматривает следующие действия.The setup for your development work in this tutorial includes the following actions:

  • Установка необходимых пакетовInstall required packages
  • Подключение к рабочей области, что позволяет локальному компьютеру обмениваться данными с удаленными ресурсамиConnect to a workspace, so that your local computer can communicate with remote resources
  • Создание эксперимента, чтобы отслеживать запускиCreate an experiment to track your runs
  • Создание удаленного целевого объекта вычислений для использования в обученииCreate a remote compute target to use for training

Установка необходимых пакетовInstall required packages

В рамках этого учебника предполагается, что вы уже установили пакет SDK службы машинного обучения Azure.This tutorial assumes you already have the Azure ML SDK installed. Далее установите пакет azuremlsdk.Go ahead and import the azuremlsdk package.

library(azuremlsdk)

В рамках этого учебника используются данные из пакета DAAG.The tutorial uses data from the DAAG package. Если у вас еще нет этого пакета, установите его.Install the package if you don't have it.

install.packages("DAAG")

Скрипты обучения и оценки (accidents.R и accident_predict.R) имеют ряд дополнительных зависимостей.The training and scoring scripts (accidents.R and accident_predict.R) have some additional dependencies. Если вы планируете запускать эти скрипты локально, проверьте наличие всех необходимых пакетов.If you plan on running those scripts locally, make sure you have those required packages as well.

Загрузка рабочей областиLoad your workspace

В существующей рабочей области создайте экземпляр объекта рабочей области.Instantiate a workspace object from your existing workspace. Следующий код загружает сведения о рабочей области из файла config.json.The following code will load the workspace details from the config.json file. Кроме того, для получения рабочей области можно использовать get_workspace().You can also retrieve a workspace using get_workspace().

ws <- load_workspace_from_config()

Создание экспериментаCreate an experiment

Эксперимент службы машинного обучения Azure отслеживает группирование запусков (как правило, из одного скрипта обучения).An Azure ML experiment tracks a grouping of runs, typically from the same training script. Создайте эксперимент, чтобы отслеживать запуски для обучения модели caret на основе данных об автомобильных авариях.Create an experiment to track the runs for training the caret model on the accidents data.

experiment_name <- "accident-logreg"
exp <- experiment(ws, experiment_name)

Создание целевого объекта вычисленийCreate a compute target

Использование Вычислительной среды Машинного обучения Azure (управляемой службы AMLCompute) позволяет специалистам по анализу данных обучать модели машинного обучения в кластерах виртуальных машин Azure.By using Azure Machine Learning Compute (AmlCompute), a managed service, data scientists can train machine learning models on clusters of Azure virtual machines. Часто используются виртуальные машины с поддержкой GPU.Examples include VMs with GPU support. В рамках этого учебника вы создадите кластер AmlCompute с одним узлом, который будет выступать в качестве среды обучения.In this tutorial, you create a single-node AmlCompute cluster as your training environment. Приведенный ниже код создаст вычислительный кластер, если он еще не существует в вашей рабочей области.The code below creates the compute cluster for you if it doesn't already exist in your workspace.

Если вычислительный кластер не был создан ранее, его подготовка может занять несколько минут.You may need to wait a few minutes for your compute cluster to be provisioned if it doesn't already exist.

cluster_name <- "rcluster"
compute_target <- get_compute(ws, cluster_name = cluster_name)
if (is.null(compute_target)) {
  vm_size <- "STANDARD_D2_V2" 
  compute_target <- create_aml_compute(workspace = ws,
                                       cluster_name = cluster_name,
                                       vm_size = vm_size,
                                       max_nodes = 1)
}

wait_for_provisioning_completion(compute_target)

Подготовка данных для обученияPrepare data for training

В рамках этого учебника используются данные из пакета DAAG.This tutorial uses data from the DAAG package. Этот набор данных включает данные по 25 000 автомобильных аварий, произошедших на территории США, и переменные, которые можно использовать для прогнозирования вероятности летального исхода.This dataset includes data from over 25,000 car crashes in the US, with variables you can use to predict the likelihood of a fatality. Сначала импортируйте данные в R и преобразуйте их в новый кадр данных accidents для анализа, а затем экспортируйте их в файл Rdata.First, import the data into R and transform it into a new dataframe accidents for analysis, and export it to an Rdata file.

library(DAAG)
data(nassCDS)

accidents <- na.omit(nassCDS[,c("dead","dvcat","seatbelt","frontal","sex","ageOFocc","yearVeh","airbag","occRole")])
accidents$frontal <- factor(accidents$frontal, labels=c("notfrontal","frontal"))
accidents$occRole <- factor(accidents$occRole)

saveRDS(accidents, file="accidents.Rd")

Загрузка данных в хранилище данныхUpload data to the datastore

Загрузите данные в облако, чтобы обеспечить доступ к ним из удаленной среды обучения.Upload data to the cloud so that it can be access by your remote training environment. В состав каждой рабочей области службы машинного обучения Azure входит хранилище данных по умолчанию, где размещаются сведения о подключении к контейнеру BLOB-объектов Azure, который подготовлен в учетной записи хранения, подключенной к рабочей области.Each Azure ML workspace comes with a default datastore that stores the connection information to the Azure blob container that is provisioned in the storage account attached to the workspace. Следующий код загружает созданные ранее данные по автомобильным авариям в это хранилище данных.The following code will upload the accidents data you created above to that datastore.

ds <- get_default_datastore(ws)

target_path <- "accidentdata"
upload_files_to_datastore(ds,
                          list("./accidents.Rd"),
                          target_path = target_path,
                          overwrite = TRUE)

Обучение моделиTrain a model

В рамках этого учебника необходимо адаптировать модель логистической регрессии для работы с загруженными данными, используя удаленный вычислительный кластер.For this tutorial, fit a logistic regression model on your uploaded data using your remote compute cluster. Чтобы отправить задание, необходимо выполнить следующие действия.To submit a job, you need to:

  • Подготовка скрипта обученияPrepare the training script
  • Создание оценщикаCreate an estimator
  • отправить задание.Submit the job

Подготовка скрипта обученияPrepare the training script

В каталоге, в котором располагается этот учебник, располагается подготовленный скрипт обучения accidents.R.A training script called accidents.R has been provided for you in the same directory as this tutorial. Обратите внимание на следующие детали в скрипте обучения, которые внесены с целью использовать службу машинного обучения Azure для обучения.Notice the following details inside the training script that have been done to leverage the Azure ML service for training:

  • Скрипт обучения считывает аргумент -d, чтобы найти каталог с данными для обучения.The training script takes an argument -d to find the directory that contains the training data. Позднее при определении и отправке задания вы укажете хранилище данных для этого аргумента.When you define and submit your job later, you point to the datastore for this argument. Служба машинного обучения Azure подключит папку хранилища к удаленному кластеру для задания обучения.Azure ML will mount the storage folder to the remote cluster for the training job.
  • Скрипт обучения регистрирует итоговую точность в виде метрики для записи запуска в службе машинного обучения Azure с использованием log_metric_to_run().The training script logs the final accuracy as a metric to the run record in Azure ML using log_metric_to_run(). В составе пакета SDK службы машинного обучения Azure предусмотрен набор API ведения журнала для регистрации различных метрик во время обучающего запуска.The Azure ML SDK provides a set of logging APIs for logging various metrics during training runs. Эти метрики записываются и сохраняются в записи экспериментального запуска.These metrics are recorded and persisted in the experiment run record. Вы можете в любой момент получить доступ к этим метрикам или просмотреть их на странице сведений о запуске в студии машинного обучения Azure.The metrics can then be accessed at any time or viewed in the run details page in Azure Machine Learning studio. Полный набор методов ведения журнала log_*() см. в справочнике.See the reference for the full set of logging methods log_*().
  • Скрипт обучения сохраняет модель в каталог с именем outputs.The training script saves your model into a directory named outputs. Служба машинного обучения Azure работает с папкой ./outputs особым образом.The ./outputs folder receives special treatment by Azure ML. В процессе обучения файлы, записанные в папку ./outputs, автоматически загружаются службой машинного обучения Azure в запись запуска и сохраняются в ней в качестве артефактов.During training, files written to ./outputs are automatically uploaded to your run record by Azure ML and persisted as artifacts. Если сохранить обученную модель в папке ./outputs, вы сможете получать доступ к файлу модели и извлекать его даже после завершения запуска при отсутствии доступа к удаленной среде обучения.By saving the trained model to ./outputs, you'll be able to access and retrieve your model file even after the run is over and you no longer have access to your remote training environment.

Создание оценщикаCreate an estimator

Средство оценки службы машинного обучения Azure инкапсулирует сведения о конфигурации запуска, необходимые для выполнения скрипта обучения в целевом объекте вычислений.An Azure ML estimator encapsulates the run configuration information needed for executing a training script on the compute target. Запуски службы машинного обучения Azure в целевом объекте вычислений осуществляются в рамках контейнерных заданий.Azure ML runs are run as containerized jobs on the specified compute target. По умолчанию образ Docker, созданный для вашего задания обучения, будет включать R, пакет SDK службы машинного обучения и набор часто используемых пакетов R.By default, the Docker image built for your training job will include R, the Azure ML SDK, and a set of commonly used R packages. См. полный список включаемых по умолчанию пакетов.See the full list of default packages included here.

Чтобы создать средство оценки, определите следующее.To create the estimator, define:

  • Каталог, который содержит скрипт для обучения (source_directory).The directory that contains your scripts needed for training (source_directory). Все файлы в этом каталоге передаются в узел или узлы кластера для выполнения.All the files in this directory are uploaded to the cluster node(s) for execution. Этот каталог должен содержать скрипт обучения и все необходимые дополнительные скрипты.The directory must contain your training script and any additional scripts required.
  • Скрипт обучения, который будет выполнен (entry_script).The training script that will be executed (entry_script).
  • Целевой объект вычислений (compute_target), в данном случае ранее созданный кластер AmlCompute.The compute target (compute_target), in this case the AmlCompute cluster you created earlier.
  • Параметры, требуемые от скрипта обучения (script_params).The parameters required from the training script (script_params). Служба машинного обучения Azure будет выполнять ваш скрипт обучения в виде скрипта командной строки с помощью Rscript.Azure ML will run your training script as a command-line script with Rscript. В рамках этого учебника вы указываете один аргумент скрипта: точку подключения к каталогу данных для доступа посредством ds$path(target_path).In this tutorial you specify one argument to the script, the data directory mounting point, which you can access with ds$path(target_path).
  • Все зависимости среды, необходимые для обучения.Any environment dependencies required for training. Образ Docker по умолчанию, создаваемый для обучения, уже содержит три необходимых для скрипта обучения пакета (caret, e1071 и optparse).The default Docker image built for training already contains the three packages (caret, e1071, and optparse) needed in the training script. Поэтому дополнительные сведения указывать не требуется.So you don't need to specify additional information. Если вы используете пакеты R, не включаемые по умолчанию, воспользуйтесь параметром cran_packages средства оценки, чтобы добавить дополнительные пакеты CRAN.If you are using R packages that are not included by default, use the estimator's cran_packages parameter to add additional CRAN packages. См. полный набор настраиваемых параметров в справочнике по estimator().See the estimator() reference for the full set of configurable options.
est <- estimator(source_directory = ".",
                 entry_script = "accidents.R",
                 script_params = list("--data_folder" = ds$path(target_path)),
                 compute_target = compute_target
                 )

Отправка задания на удаленный кластерSubmit the job on the remote cluster

В заключение необходимо отправить задание для запуска в кластер.Finally submit the job to run on your cluster. submit_experiment() возвращает объект Run, который используется для взаимодействия с запуском.submit_experiment() returns a Run object that you then use to interface with the run. Обычно первый запуск занимает около 10 минут.In total, the first run takes about 10 minutes. Но для последующих запусков используется тот же образ Docker, если зависимости скрипта не изменяются.But for later runs, the same Docker image is reused as long as the script dependencies don't change. В этом случае образ кэшируется, в результате чего значительно сокращается время запуска контейнера.In this case, the image is cached and the container startup time is much faster.

run <- submit_experiment(exp, est)

Со сведениями о запуске можно ознакомиться в средстве просмотра RStudio.You can view the run's details in RStudio Viewer. Чтобы отслеживать состояние запуска в пользовательском интерфейсе студии машинного обучения Azure, щелкните предлагаемую ссылку "Веб-представление".Clicking the "Web View" link provided will bring you to Azure Machine Learning studio, where you can monitor the run in the UI.

view_run_details(run)

Обучение модели происходит в фоновом режиме.Model training happens in the background. Прежде, чем выполнять другой код, дождитесь завершения обучения модели.Wait until the model has finished training before you run more code.

wait_for_run_completion(run, show_output = TRUE)

Вы и ваши коллеги с доступом к рабочей области можете отправлять параллельно несколько экспериментов. В таком случае служба машинного обучения Azure будет автоматически планировать выполнение задач в вычислительном кластере.You -- and colleagues with access to the workspace -- can submit multiple experiments in parallel, and Azure ML will take of scheduling the tasks on the compute cluster. При необходимости вы можете настроить автоматическое масштабирование кластера на нескольких узлах и возврат к исходному размеру после того, как в очереди не останется вычислительных задач.You can even configure the cluster to automatically scale up to multiple nodes, and scale back when there are no more compute tasks in the queue. Благодаря такой конфигурации реализуется экономичная среда для совместного использования ресурсов рабочими группами.This configuration is a cost-effective way for teams to share compute resources.

Получение результатов обученияRetrieve training results

После того как обучение модели завершено, вы можете получать доступ к артефактам задания, сохраненным в записи запуска, в том числе ко всем зарегистрированным метрикам и к готовой обученной модели.Once your model has finished training, you can access the artifacts of your job that were persisted to the run record, including any metrics logged and the final trained model.

Получение зарегистрированных метрикGet the logged metrics

В скрипте обучения accidents.R была зарегистрирована метрика модели, описывающая точность прогнозов в обучающих данных.In the training script accidents.R, you logged a metric from your model: the accuracy of the predictions in the training data. Вы можете просмотреть метрики в студии или извлечь их в локальный сеанс в виде списка R следующим образом.You can see metrics in the studio, or extract them to the local session as an R list as follows:

metrics <- get_run_metrics(run)
metrics

Если вы запускали несколько экспериментов (например, с использованием разных значений переменных, алгоритмов или гиперпараметров), вы можете сравнить метрики из каждого запуска и выбрать модель, которая будет использоваться в рабочей среде.If you've run multiple experiments (say, using differing variables, algorithms, or hyperparamers), you can use the metrics from each run to compare and choose the model you'll use in production.

Получение обученной моделиGet the trained model

Вы можете получить обученную модель и просмотреть результаты в локальном сеансе R.You can retrieve the trained model and look at the results in your local R session. Следующий код скачает содержимое каталога ./outputs, в котором также размещается файл модели.The following code will download the contents of the ./outputs directory, which includes the model file.

download_files_from_run(run, prefix="outputs/")
accident_model <- readRDS("outputs/model.rds")
summary(accident_model)

Вы можете выделить некоторые факторы, влияющие на увеличение вероятности летального исхода.You see some factors that contribute to an increase in the estimated probability of death:

  • Более высокая скорость столкновенияhigher impact speed
  • Водитель мужского полаmale driver
  • Водитель или пассажир старшей возрастной группыolder occupant
  • Наличие в автомобиле пассажировpassenger

Вероятность летального исхода снижается в следующих случаях.You see lower probabilities of death with:

  • Наличие подушек безопасности в автомобилеpresence of airbags
  • Использование ремней безопасности водителем и пассажирамиpresence seatbelts
  • Лобовое столкновениеfrontal collision

Год изготовления автомобиля не оказывает существенного влияния.The vehicle year of manufacture does not have a significant effect.

С помощью этой модели можно подготавливать новые прогнозы.You can use this model to make new predictions:

newdata <- data.frame( # valid values shown below
 dvcat="10-24",        # "1-9km/h" "10-24"   "25-39"   "40-54"   "55+"  
 seatbelt="none",      # "none"   "belted"  
 frontal="frontal",    # "notfrontal" "frontal"
 sex="f",              # "f" "m"
 ageOFocc=16,          # age in years, 16-97
 yearVeh=2002,         # year of vehicle, 1955-2003
 airbag="none",        # "none"   "airbag"   
 occRole="pass"        # "driver" "pass"
 )

## predicted probability of death for these variables, as a percentage
as.numeric(predict(accident_model,newdata, type="response")*100)

Развертывание в виде веб-службыDeploy as a web service

Используя эту модель, вы можете прогнозировать вероятность летального исхода в автомобильной аварии.With your model, you can predict the danger of death from a collision. Служба машинного обучения Azure развернет вашу модель в качестве службы прогнозирования.Use Azure ML to deploy your model as a prediction service. В рамках этого учебника вы развернете веб-службу в службе экземпляров контейнеров Azure (ACI).In this tutorial, you will deploy the web service in Azure Container Instances (ACI).

Регистрация моделиRegister the model

Сначала зарегистрируйте скачанную модель в рабочей области с помощью register_model().First, register the model you downloaded to your workspace with register_model(). Зарегистрированная модель может представлять собой любой набор файлов, однако в этом случае объекта модели R будет достаточно.A registered model can be any collection of files, but in this case the R model object is sufficient. Служба машинного обучения Azure будет использовать зарегистрированную модель для развертывания.Azure ML will use the registered model for deployment.

model <- register_model(ws, 
                        model_path = "outputs/model.rds", 
                        model_name = "accidents_model",
                        description = "Predict probablity of auto accident")

Определение зависимостей выводаDefine the inference dependencies

Чтобы создать веб-службу для модели, сначала необходимо создать скрипт оценки (entry_script). Этот скрипт R будет принимать в качестве входных данных значения переменных (в формате JSON) и возвращать прогноз, полученный с использованием вашей модели.To create a web service for your model, you first need to create a scoring script (entry_script), an R script that will take as input variable values (in JSON format) and output a prediction from your model. В рамках этого учебника используется готовый файл оценки accident_predict.R.For this tutorial, use the provided scoring file accident_predict.R. Скрипт оценки должен содержать метод init(), который загружает модель и возвращает функцию, которая использует модель для получения прогноза на основании входных данных.The scoring script must contain an init() method that loads your model and returns a function that uses the model to make a prediction based on the input data. Дополнительные сведения см. в документации.See the documentation for more details.

Далее определите среду службы машинного обучения Azure для зависимостей пакета скрипта.Next, define an Azure ML environment for your script's package dependencies. В среде необходимо указать пакеты R (из CRAN или другого источника), которые требуются для запуска скрипта.With an environment, you specify R packages (from CRAN or elsewhere) that are needed for your script to run. Также вы можете указать значения переменных среды, на которые скрипт будет ссылаться для изменения поведения.You can also provide the values of environment variables that your script can reference to modify its behavior. По умолчанию служба машинного обучения Azure создаст тот же образ Docker по умолчанию, который использовался средством оценки для обучения.By default, Azure ML will build the same default Docker image used with the estimator for training. Поскольку в рамках этого учебника не предъявляются особые требования, вы можете создать среду без специальных атрибутов.Since the tutorial has no special requirements, create an environment with no special attributes.

r_env <- r_environment(name = "basic_env")

Если вы хотите использовать для развертывания собственный образ Docker, укажите параметр custom_docker_image.If you want to use your own Docker image for deployment instead, specify the custom_docker_image parameter. См. полный набор настраиваемых параметров для определения среды в справочнике по r_environment().See the r_environment() reference for the full set of configurable options for defining an environment.

Теперь вы готовы к созданию конфигурации вывода для инкапсуляции скрипта оценки и зависимостей среды.Now you have everything you need to create an inference config for encapsulating your scoring script and environment dependencies.

inference_config <- inference_config(
  entry_script = "accident_predict.R",
  environment = r_env)

Развертывание в ACIDeploy to ACI

В рамках этого учебника вы выполните развертывание своей службы в ACI.In this tutorial, you will deploy your service to ACI. Этот код подготавливает к работе один контейнер для тестирования при небольшой загрузке, который будет отвечать на входящие запросы.This code provisions a single container to respond to inbound requests, which is suitable for testing and light loads. Дополнительные настраиваемые параметры см. в статье aci_webservice_deployment_config().See aci_webservice_deployment_config() for additional configurable options. (Для рабочих развертываний также можно выполнить развертывание Azure Kubernetes Service.)(For production-scale deployments, you can also deploy to Azure Kubernetes Service.)

aci_config <- aci_webservice_deployment_config(cpu_cores = 1, memory_gb = 0.5)

Далее вы развернете модель в качестве веб-службы.Now you deploy your model as a web service. Развертывание может занять несколько минут.Deployment can take several minutes.

aci_service <- deploy_model(ws, 
                            'accident-pred', 
                            list(model), 
                            inference_config, 
                            aci_config)

wait_for_deployment(aci_service, show_output = TRUE)

Тестирование развернутой службыTest the deployed service

После развертывания модели в качестве службы вы можете протестировать эту службу из R с использованием invoke_webservice().Now that your model is deployed as a service, you can test the service from R using invoke_webservice(). Предоставьте новый набор данных, на основе которых будет формироваться прогноз, преобразуйте его в формат JSON и затем передайте в эту службу.Provide a new set of data to predict from, convert it to JSON, and send it to the service.

library(jsonlite)

newdata <- data.frame( # valid values shown below
 dvcat="10-24",        # "1-9km/h" "10-24"   "25-39"   "40-54"   "55+"  
 seatbelt="none",      # "none"   "belted"  
 frontal="frontal",    # "notfrontal" "frontal"
 sex="f",              # "f" "m"
 ageOFocc=22,          # age in years, 16-97
 yearVeh=2002,         # year of vehicle, 1955-2003
 airbag="none",        # "none"   "airbag"   
 occRole="pass"        # "driver" "pass"
 )

prob <- invoke_webservice(aci_service, toJSON(newdata))
prob

Кроме того, вы можете получить конечную точку HTTP веб-службы, которая принимает вызовы клиента REST.You can also get the web service's HTTP endpoint, which accepts REST client calls. К этой конечной точке можно предоставить совместный доступ всем, кто хочет протестировать веб-службу или интегрировать ее в приложение.You can share this endpoint with anyone who wants to test the web service or integrate it into an application.

aci_service$scoring_uri

Очистка ресурсовClean up resources

Удалите ресурсы, которые более не используются.Delete the resources once you no longer need them. Не удаляйте ресурсы, которые планируется использовать в дальнейшем.Don't delete any resource you plan to still use.

Удалите веб-службу:Delete the web service:

delete_webservice(aci_service)

Удалите зарегистрированную модель:Delete the registered model:

delete_model(model)

Удалите вычислительный кластер:Delete the compute cluster:

delete_compute(compute)

Удаление всех ресурсовDelete everything

Важно!

Созданные ресурсы могут использоваться в качестве необходимых компонентов при работе с другими руководствами по Машинному обучению Azure.The resources you created can be used as prerequisites to other Azure Machine Learning tutorials and how-to articles.

Если вы не планируете использовать созданные ресурсы, удалите их, чтобы с вас не взималась плата.If you don't plan to use the resources you created, delete them, so you don't incur any charges:

  1. На портале Azure выберите Группы ресурсов в левой части окна.In the Azure portal, select Resource groups on the far left.

    Удаление ресурсов на портале AzureDelete in the Azure portal

  2. В списке выберите созданную группу ресурсов.From the list, select the resource group you created.

  3. Выберите Удалить группу ресурсов.Select Delete resource group.

  4. Введите имя группы ресурсов.Enter the resource group name. Теперь щелкните Удалить.Then select Delete.

Вы также можете сохранить группу ресурсов, но удалить одну рабочую область.You can also keep the resource group but delete a single workspace. Отобразите свойства рабочей области и нажмите кнопку Удалить.Display the workspace properties and select Delete.

Дополнительная информацияNext steps

После завершения первого эксперимента службы машинного обучения Azure в R вы можете подробнее ознакомиться с пакетом SDK службы машинного обучения Azure для R.Now that you've completed your first Azure Machine Learning experiment in R, learn more about the Azure Machine Learning SDK for R.