Развертывание моделей с помощью Службы машинного обучения AzureDeploy models with the Azure Machine Learning service

Узнайте, как развернуть модель машинного обучения как веб-службы в облаке Azure или на устройствах IoT Edge.Learn how to deploy your machine learning model as a web service in the Azure cloud, or to IoT Edge devices.

Рабочий процесс аналогичен вне зависимости от где развернуть модели:The workflow is similar regardless of where you deploy your model:

  1. Регистрация модели.Register the model.
  2. Подготовка к развертыванию (Указание целевого объекта вычислений активы, использования,)Prepare to deploy (specify assets, usage, compute target)
  3. Развертывание модели для целевого объекта вычислений.Deploy the model to the compute target.
  4. Тестирование развернутого модели, также называемый веб-службы.Test the deployed model, also called web service.

Дополнительные сведения об основных понятиях, связанных с рабочим процессом развертывания, см. в статье Администрирование, развертывание и мониторинг моделей с помощью службы "Машинное обучение Azure".For more information on the concepts involved in the deployment workflow, see Manage, deploy, and monitor models with Azure Machine Learning Service.

Технические условияPrerequisites

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

Регистрация для машинного обучения моделей в рабочей области машинного обучения Azure.Register your machine learning models in your Azure Machine Learning workspace. Модели могут поступать из машинного обучения Azure или поступать из другого места.The model can come from Azure Machine Learning or can come from somewhere else. Следующие примеры демонстрируют, как для регистрации модели из файла:The following examples demonstrate how to register a model from file:

Регистрация модели из на выполнение экспериментаRegister a model from an Experiment Run

  • Пример Scikit-Learn, с помощью пакета SDKScikit-Learn example using the SDK

    model = run.register_model(model_name='sklearn_mnist', model_path='outputs/sklearn_mnist_model.pkl')
    print(model.name, model.id, model.version, sep='\t')
    
  • С помощью интерфейса командной строкиUsing the CLI

    az ml model register -n sklearn_mnist  --asset-path outputs/sklearn_mnist_model.pkl  --experiment-name myexperiment
    
  • С помощью VS CodeUsing VS Code

    Регистрация моделей с помощью любой модели файлы или папки с VS Code расширения.Register models using any model files or folders with the VS Code extension.

Зарегистрируйте модель, созданные извнеRegister an externally created model

Важно!

Следует использовать только модели, которые создают или получить из надежного источника.You should only use models that you create or obtain from a trusted source. Сериализованные модели должны рассматриваться как код, как обнаружения уязвимостей системы безопасности в нескольких популярных форматах.Serialized models should be treated as code, as security vulnerabilities have been discovered in a number of popular formats. Кроме того модели можно намеренно обучать злоумышленниками для представления смещенной или быть неточной.Further, models may be intentionally trained with malicious intent to provide biased or inaccurate output.

Вы можете зарегистрировать модель, созданные извне, предоставляя локальный путь в модель.You can register an externally created model by providing a local path to the model. Можно предоставить одного файла или папки.You can provide either a folder or a single file.

  • Пример ONNX с помощью пакета SDK для Python.ONNX example with the Python SDK:

    onnx_model_url = "https://www.cntk.ai/OnnxModels/mnist/opset_7/mnist.tar.gz"
    urllib.request.urlretrieve(onnx_model_url, filename="mnist.tar.gz")
    !tar xvzf mnist.tar.gz
    
    model = Model.register(workspace = ws,
                           model_path ="mnist/model.onnx",
                           model_name = "onnx_mnist",
                           tags = {"onnx": "demo"},
                           description = "MNIST image classification CNN from ONNX Model Zoo",)
    
  • С помощью интерфейса командной строкиUsing the CLI

    az ml model register -n onnx_mnist -p mnist/model.onnx
    

Оценка времени. Примерно 10 секунд.Time estimate: Approximately 10 seconds.

Дополнительные сведения см. в справочной документации по классу Model.For more information, see the reference documentation for the Model class.

Выберите целевой объект вычисленийChoose a compute target

Следующие целевые объекты, вычислений или вычислительных ресурсов, можно использовать для размещения вашего развертывания веб-службы.The following compute targets, or compute resources, can be used to host your web service deployment.

Целевой объект вычисленияCompute target ИспользованиеUsage Поддержка GPUGPU support Поддержка FPGAFPGA support ОписаниеDescription
Локальный web службыLocal web service Тестирование и отладкаTesting/debug Возможноmaybe   Такие ограниченные возможности для тестирования и устранения неполадок.Good for limited testing and troubleshooting. Аппаратное ускорение зависит от того, с помощью библиотек в локальной системе.Hardware acceleration depends on using libraries in the local system.
Служба Azure Kubernetes (AKS)Azure Kubernetes Service (AKS) Вывод в режиме реального времениReal-time inference Даyes Даyes Подходит для крупномасштабных рабочих развертываний.Good for high-scale production deployments. Обеспечивает автоматическое масштабирование и малое время отклика.Provides autoscaling and fast response times. AKS является единственным доступным для визуального интерфейса.AKS is the only option available for the visual interface.
Экземпляры контейнеров Azure (ACI)Azure Container Instances (ACI) Тестирования или разработкиTesting or dev     Хорошо подходит для низкой масштаб рабочих нагрузок на основе использования ресурсов ЦП требующих < 48 ГБ ОЗУGood for low scale, CPU-based workloads requiring <48-GB RAM
Вычислительная среда Машинного обучения AzureAzure Machine Learning Compute (Предварительная версия) Пакет вывод(Preview) Batch inference Даyes   Запустите пакетной оценки на бессерверных вычислений.Run batch scoring on serverless compute. Поддерживает нормальные и низкоприоритетные виртуальные машины.Supports normal and low-priority VMs.
Edge Интернета вещей AzureAzure IoT Edge (Предварительная версия) IoT модуля(Preview) IoT module     Развертывание и обслуживать моделей машинного Обучения на устройствах Интернета вещей.Deploy & serve ML models on IoT devices.
Что представляет собой Azure Data Box Edge (ознакомительная версия)?Azure Data Box Edge с помощью Edge Интернета вещейvia IoT Edge   Даyes Развертывание и обслуживать моделей машинного Обучения на устройствах Интернета вещей.Deploy & serve ML models on IoT devices.

Подготовка к развертываниюPrepare to deploy

Чтобы развернуть веб-службы, необходимо создать определение конфигурации (InferenceConfig) и конфигурации развертывания.To deploy as a web service, you must create an inference configuration (InferenceConfig) and a deployment configuration. Определение или модель оценки, — это этап, где используется развернутой модели для прогнозирования, чаще всего для производственных данных.Inference, or model scoring, is the phase where the deployed model is used for prediction, most commonly on production data. В файле конфигурации вывод указать скрипты и зависимости, необходимые для использования в модели.In the inference config, you specify the scripts and dependencies needed to serve your model. В файл конфигурации развертывания можно указать подробные сведения для обслуживания модели в целевой объект вычислений.In the deployment config you specify details of how to serve the model on the compute target.

1. Определите сценарий входа & зависимости1. Define your entry script & dependencies

Сценарий входа получает данные, отправленные для развернутой веб-службы и передает его в модель.The entry script receives data submitted to a deployed web service, and passes it to the model. Затем он принимает ответ, возвращенный моделью, и возвращает его клиенту.It then takes the response returned by the model and returns that to the client. Сценарий относится только к модели; его необходимо понимать, модель ожидает и возвращает данные.The script is specific to your model; it must understand the data that the model expects and returns.

Сценарий содержит две функции, которые загружают и запустить модель:The script contains two functions that load and run the model:

  • init(): Обычно эта функция загружает модель в глобальный объект.init(): Typically this function loads the model into a global object. Эта функция выполняется только один раз, когда запускается контейнер Docker для веб-службы.This function is run only once when the Docker container for your web service is started.

  • run(input_data): Эта функция использует модель для прогнозирования значения на основе входных данных.run(input_data): This function uses the model to predict a value based on the input data. Ко входным и выходным данным для запуска обычно применяется формат JSON для сериализации и десериализации.Inputs and outputs to the run typically use JSON for serialization and de-serialization. Вы также можете работать с необработанными двоичными данными.You can also work with raw binary data. Вы можете преобразовать данные, прежде чем отправлять их в модель или возвращать клиенту.You can transform the data before sending to the model, or before returning to the client.

Что такое get_model_path?What is get_model_path?

При регистрации модели, можно предоставить имя модели, используемые для управления моделью в реестре.When you register a model, you provide a model name used for managing the model in the registry. Это имя используется в get_model_path API, который возвращает путь к модели файлов в локальной файловой системе.You use this name in the get_model_path API which returns the path of the model file(s) on the local file system. Если зарегистрировать папку или коллекцию файлов, этот API возвращает путь к каталогу, который содержит файлы.If you register a folder or a collection of files, this API returns the path to the directory which contains those files.

При регистрации модель, задается имя, соответствующее место размещения модели, либо локально, либо во время развертывания службы.When you register a model, you give it a name which corresponds to where the model is placed, either locally or during service deployment.

Пример ниже возвращает путь в единственном файле «sklearn_mnist_model.pkl» (который был зарегистрирован с именем «sklearn_mnist»)The below example will return a path to a single file called 'sklearn_mnist_model.pkl' (which was registered with the name 'sklearn_mnist')

model_path = Model.get_model_path('sklearn_mnist')

(Необязательно) Автоматическое создание схемы Swagger(Optional) Automatic Swagger schema generation

Чтобы автоматически создавать схему для веб-службы, обеспечения выборки входных данных и/или выходных данных в конструктор для одного из объектов определенного типа, тип и образец используются для автоматического создания схемы.To automatically generate a schema for your web service, provide a sample of the input and/or output in the constructor for one of the defined type objects, and the type and sample are used to automatically create the schema. Служба машинного обучения Azure создает OpenAPI спецификации (Swagger) для веб-службы во время развертывания.Azure Machine Learning service then creates an OpenAPI (Swagger) specification for the web service during deployment.

В настоящее время поддерживаются следующие типы:The following types are currently supported:

  • pandas
  • numpy
  • pyspark
  • стандартный объект Pythonstandard Python object

Чтобы использовать Создание схем, включите inference-schema пакета в файле среды conda.To use schema generation, include the inference-schema package in your conda environment file. В следующем примере используется [numpy-support] так, как тип параметра numpy использует сценарий входа:The following example uses [numpy-support] since the entry script uses a numpy parameter type:

Пример файла зависимостейExample dependencies file

Следующий yaml-ФАЙЛ является примером файл зависимостей Conda для вывода.The following YAML is an example of a Conda dependencies file for inference.

name: project_environment
dependencies:
  - python=3.6.2
  - pip:
    - azureml-defaults
    - scikit-learn==0.20.0
    - inference-schema[numpy-support]

Если вы хотите использовать создание автоматического схемы, ваш сценарий входа необходимо импорта inference-schema пакетов.If you want to use automatic schema generation, your entry script must import the inference-schema packages.

Определите входные и выходные форматы образец в input_sample и output_sample переменные, которые представляют параметры запроса и ответа для веб-службы.Define the input and output sample formats in the input_sample and output_sample variables, which represent the request and response formats for the web service. Используйте эти примеры во входных данных и вывода декораторы функция на run() функции.Use these samples in the input and output function decorators on the run() function. Scikit-Дополнительные сведения в следующем примере используется Создание схемы.The scikit-learn example below uses schema generation.

Совет

После развертывания службы, используйте swagger_uri свойство для извлечения документа схемы JSON.After deploying the service, use the swagger_uri property to retrieve the schema JSON document.

Пример сценария входаExample entry script

Следующий пример демонстрирует принимают и возвращают данные JSON:The following example demonstrates how to accept and return JSON data:

#example: scikit-learn and Swagger
import json
import numpy as np
from sklearn.externals import joblib
from sklearn.linear_model import Ridge
from azureml.core.model import Model

from inference_schema.schema_decorators import input_schema, output_schema
from inference_schema.parameter_types.numpy_parameter_type import NumpyParameterType

def init():
    global model
    # note here "sklearn_regression_model.pkl" is the name of the model registered under
    # this is a different behavior than before when the code is run locally, even though the code is the same.
    model_path = Model.get_model_path('sklearn_regression_model.pkl')
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)

input_sample = np.array([[10,9,8,7,6,5,4,3,2,1]])
output_sample = np.array([3726.995])

@input_schema('data', NumpyParameterType(input_sample))
@output_schema(NumpyParameterType(output_sample))
def run(data):
    try:
        result = model.predict(data)
        # you can return any datatype as long as it is JSON-serializable
        return result.tolist()
    except Exception as e:
        error = str(e)
        return error

Пример сценария с входными данными словаря (поддержка потребление из Power BI)Example script with dictionary input (Support consumption from Power BI)

В следующем примере демонстрируется определение входных данных как < ключ: значение > словарь, используя кадр данных.The following example demonstrates how to define input data as <key: value> dictionary, using Dataframe. Этот метод поддерживается для использования развернутой веб-службы из Power BI (Дополнительные сведения о том, как использовать веб-службу из Power BI):This method is supported for consuming the deployed web service from Power BI (learn more on how to consume the web service from Power BI):

import json
import pickle
import numpy as np
import pandas as pd
import azureml.train.automl
from sklearn.externals import joblib
from azureml.core.model import Model

from inference_schema.schema_decorators import input_schema, output_schema
from inference_schema.parameter_types.numpy_parameter_type import NumpyParameterType
from inference_schema.parameter_types.pandas_parameter_type import PandasParameterType

def init():
    global model
    model_path = Model.get_model_path('model_name')   # replace model_name with your actual model name, if needed
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)

input_sample = pd.DataFrame(data=[{
              "input_name_1": 5.1,         # This is a decimal type sample. Use the data type that reflects this column in your data
              "input_name_2": "value2",    # This is a string type sample. Use the data type that reflects this column in your data
              "input_name_3": 3            # This is a integer type sample. Use the data type that reflects this column in your data
            }])

output_sample = np.array([0])              # This is a integer type sample. Use the data type that reflects the expected result

@input_schema('data', PandasParameterType(input_sample))
@output_schema(NumpyParameterType(output_sample))
def run(data):
    try:
        result = model.predict(data)
        # you can return any datatype as long as it is JSON-serializable
        return result.tolist()
    except Exception as e:
        error = str(e)
        return error

Дополнительные примеры скриптов см. в следующих примерах:For more example scripts, see the following examples:

2. Определение вашего InferenceConfig2. Define your InferenceConfig

Определение конфигурации описывается, как настроить модель для прогнозирования.The inference configuration describes how to configure the model to make predictions. Следующий пример демонстрирует создание конфигурации вывод:The following example demonstrates how to create an inference configuration:

inference_config = InferenceConfig(source_directory="C:/abc",
                                   runtime= "python",
                                   entry_script="x/y/score.py",
                                   conda_file="env/myenv.yml")

Пример CLI InferenceConfigCLI example of InferenceConfig

{
   "entryScript": "x/y/score.py",
   "runtime": "python",
   "condaFile": "env/myenv.yml",
   "sourceDirectory":"C:/abc",
}
az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json

В этом примере конфигурации содержит следующие элементы:In this example, the configuration contains the following items:

  • Каталог, содержащий ресурсы, необходимые для выводаA directory that contains assets needed to inference
  • Что эта модель требует PythonThat this model requires Python
  • Сценарий входа, который используется для обработки веб-запросы, отправляемые развернутой службыThe entry script, which is used to handle web requests sent to the deployed service
  • Файл conda, который описывает пакеты Python, необходимые для выводаThe conda file that describes the Python packages needed to inference

Сведения о функциях InferenceConfig см. в разделе InferenceConfig класса ссылки.For information on InferenceConfig functionality, see the InferenceConfig class reference.

Сведения об использовании пользовательского образа Docker с конфигурацией вывод, см. в разделе развертывание модели с помощью пользовательского образа Docker.For information on using a custom Docker image with inference configuration, see How to deploy a model using a custom Docker image.

3. Определение конфигурации развертывания3. Define your Deployment configuration

Перед развертыванием, необходимо определить конфигурацию развертывания.Before deploying, you must define the deployment configuration. Конфигурация развертывания относится только к целевого объекта вычислений, где будет размещаться веб-службы.The deployment configuration is specific to the compute target that will host the web service. Например при развертывании локально необходимо указать порт, где служба принимает запросы.For example, when deploying locally you must specify the port where the service accepts requests.

Кроме того, может потребоваться создать вычислительный ресурс.You may also need to create the compute resource. Например если вы еще не службе Kubernetes Azure связаны с рабочей областью.For example, if you do not already have an Azure Kubernetes Service associated with your workspace.

Ниже приведен пример создания конфигурации развертывания для каждого целевого объекта вычислений.The following table provides an example of creating a deployment configuration for each compute target:

Целевой объект вычисленияCompute target Пример конфигурации развертыванияDeployment configuration example
LocalLocal deployment_config = LocalWebservice.deploy_configuration(port=8890)
Экземпляр контейнера AzureAzure Container Instance deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
Служба Azure KubernetesAzure Kubernetes Service deployment_config = AksWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)

Ниже показано, как создать конфигурацию развертывания, а затем использовать его для развертывания веб-службы.The following sections demonstrate how to create the deployment configuration, and then use it to deploy the web service.

Необязательно: Профилирование моделиOptional: Profile your model

Перед развертыванием модели в качестве службы, может потребоваться его для определения оптимальной ЦП и требования к памяти.Prior to deploying your model as a service, you may want to profile it to determine optimal CPU and memory requirements. Это можно сделать с помощью пакета SDK или CLI.You can do this via the SDK or CLI.

Дополнительные сведения можно извлечь документации пакета SDK: https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.model?view=azure-ml-py#profile-workspace--profile-name--models--inference-config--input-data-For more information, you can check out our SDK documentation here: https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.model?view=azure-ml-py#profile-workspace--profile-name--models--inference-config--input-data-

Модель результатов профилирования передаются в рамках объекта Run.Model profiling results are emitted as a Run object. Особенности схемы профиль модели можно найти здесь: https://docs.microsoft.com/python/api/azureml-core/azureml.core.profile.modelprofile?view=azure-ml-pySpecifics on the Model Profile schema can be found here: https://docs.microsoft.com/python/api/azureml-core/azureml.core.profile.modelprofile?view=azure-ml-py

Развертывание в целевой объектDeploy to target

Локальное развертываниеLocal deployment

Чтобы развернуть локально, необходимо иметь установленный Docker на локальном компьютере.To deploy locally, you need to have Docker installed on your local machine.

  • С помощью пакета SDKUsing the SDK

    deployment_config = LocalWebservice.deploy_configuration(port=8890)
    service = Model.deploy(ws, "myservice", [model], inference_config, deployment_config)
    service.wait_for_deployment(show_output = True)
    print(service.state)
    
  • С помощью интерфейса командной строкиUsing the CLI

    az ml model deploy -m sklearn_mnist:1 -ic inferenceconfig.json -dc deploymentconfig.json
    

Экземпляры контейнеров Azure (DEVTEST)Azure Container Instances (DEVTEST)

Экземпляры контейнеров Azure (ACI) можно использовать для развертывания моделей в качестве веб-службы, если выполняется одно или несколько из следующих условий:Use Azure Container Instances for deploying your models as a web service if one or more of the following conditions is true:

  • вам важно быстро выполнять развертывание и проверку модели.You need to quickly deploy and validate your model.
  • вы тестируете модель, которая находится в стадии разработки.You are testing a model that is under development.

Квоты и доступности по регионам для ACI см. в разделе квоты и доступность по регионам для экземпляры контейнеров Azure статьи.To see quota and region availability for ACI, see the Quotas and region availability for Azure Container Instances article.

  • С помощью пакета SDKUsing the SDK

    deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
    service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
    service.wait_for_deployment(show_output = True)
    print(service.state)
    
  • С помощью интерфейса командной строкиUsing the CLI

    az ml model deploy -m sklearn_mnist:1 -n aciservice -ic inferenceconfig.json -dc deploymentconfig.json
    
  • С помощью VS CodeUsing VS Code

    Чтобы развертывания моделей с помощью VS Code не требуется для создания контейнера ACI для заранее, тестирования, из-за создания контейнеров ACI в режиме реального времени.To deploy your models with VS Code you don't need to create an ACI container to test in advance, because ACI containers are created on the fly.

Дополнительные сведения см. в справочной документации по классам AciWebservice и Webservice.For more information, see the reference documentation for the AciWebservice and Webservice classes.

Служба Azure Kubernetes (DEVTEST & производства)Azure Kubernetes Service (DEVTEST & PRODUCTION)

Можно использовать существующий кластер AKS или создать его с помощью пакета SDK для службы "Машинное обучение Azure", CLI или портала Azure.You can use an existing AKS cluster or create a new one using the Azure Machine Learning SDK, CLI, or the Azure portal.

При наличии подключенных кластера AKS, можно развернуть его.If you already have an AKS cluster attached, you can deploy to it. Если вы еще не создали или подключен кластер AKS, выполните процедуру создать кластер AKS.If you haven't created or attached an AKS cluster, follow the process to create a new AKS cluster.

  • С помощью пакета SDKUsing the SDK

    aks_target = AksCompute(ws,"myaks")
    # If deploying to a cluster configured for dev/test, ensure that it was created with enough
    # cores and memory to handle this deployment configuration. Note that memory is also used by
    # things such as dependencies and AML components.
    deployment_config = AksWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
    service = Model.deploy(ws, "aksservice", [model], inference_config, deployment_config, aks_target)
    service.wait_for_deployment(show_output = True)
    print(service.state)
    print(service.get_logs())
    
  • С помощью интерфейса командной строкиUsing the CLI

    az ml model deploy -ct myaks -m mymodel:1 -n aksservice -ic inferenceconfig.json -dc deploymentconfig.json
    
  • С помощью VS CodeUsing VS Code

    Вы также можете развертывание AKS с помощью расширения VS Code, но она понадобится для настройки кластеров AKS заранее.You can also deploy to AKS via the VS Code extension, but you'll need to configure AKS clusters in advance.

Дополнительные сведения о развертывании AKS и автоматического масштабирования в AksWebservice.deploy_configuration ссылки.Learn more about AKS deployment and autoscale in the AksWebservice.deploy_configuration reference.

Создание нового кластера AKSCreate a new AKS cluster

Оценка времени: Примерно через 5 минут.Time estimate: Approximately 5 minutes.

Создание или присоединение кластера AKS находится один раз обработать для рабочей области.Creating or attaching an AKS cluster is a one time process for your workspace. Один кластер можно использовать для нескольких развертываний.You can reuse this cluster for multiple deployments. При удалении кластера или содержащую его группу ресурсов, необходимо создать новый кластер в следующий раз необходимо выполнить развертывание.If you delete the cluster or the resource group that contains it, you must create a new cluster the next time you need to deploy. Может иметь несколько кластеров AKS, подключенный к рабочей области.You can have multiple AKS clusters attached to your workspace.

Если вы хотите создать кластер службы контейнеров AZURE для разработки, проверки и тестирования, задайте cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST при использовании provisioning_configuration() .If you want to create an AKS cluster for development, validation, and testing, you set cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST when using provisioning_configuration(). Кластера, созданного с помощью этого параметра будет иметь только один узел.A cluster created with this setting will only have one node.

Важно!

Параметр cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST создает кластер AKS, который не подходит для обработки трафика в рабочей среде.Setting cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST creates an AKS cluster that is not suitable for handling production traffic. Время вывода может быть дольше, чем для кластера, созданного для рабочей среды.Inference times may be longer than on a cluster created for production. Для кластеров разработки и тестирования также не гарантируется устойчивость к сбоям.Fault tolerance is also not guaranteed for dev/test clusters.

Мы рекомендуем, кластеры, созданные для разработки и тестирования использовать по крайней мере два виртуальных ЦП.We recommend that clusters created for dev/test use at least two virtual CPUs.

Следующий пример демонстрирует создание нового кластера Azure Kubernetes Service:The following example demonstrates how to create a new Azure Kubernetes Service cluster:

from azureml.core.compute import AksCompute, ComputeTarget

# Use the default configuration (you can also provide parameters to customize this).
# For example, to create a dev/test cluster, use:
# prov_config = AksCompute.provisioning_configuration(cluster_purpose = AksComputee.ClusterPurpose.DEV_TEST)
prov_config = AksCompute.provisioning_configuration()

aks_name = 'myaks'
# Create the cluster
aks_target = ComputeTarget.create(workspace = ws,
                                    name = aks_name,
                                    provisioning_configuration = prov_config)

# Wait for the create process to complete
aks_target.wait_for_completion(show_output = True)

Дополнительные сведения о создании кластера AKS за пределами пакета SDK для Azure Machine Learning см. в разделе со следующими статьями:For more information on creating an AKS cluster outside of the Azure Machine Learning SDK, see the following articles:

Дополнительные сведения о cluster_purpose параметр, см. в разделе AksCompute.ClusterPurpose ссылки.For more information on the cluster_purpose parameter, see the AksCompute.ClusterPurpose reference.

Важно!

Если вы выберете пользовательские значения agent_count и vm_size для provisioning_configuration(), необходимо убедиться, что произведение agent_count и vm_size больше или равно 12 виртуальным ЦП.For provisioning_configuration(), if you pick custom values for agent_count and vm_size, then you need to make sure agent_count multiplied by vm_size is greater than or equal to 12 virtual CPUs. Например, если вы используете для vm_size значение "Standard_D3_v2", которое соответствует 4 виртуальным ЦП, для agent_count необходимо выбрать значение 3 или больше.For example, if you use a vm_size of "Standard_D3_v2", which has 4 virtual CPUs, then you should pick an agent_count of 3 or greater.

Примерное время: приблизительно 20 минут.Time estimate: Approximately 20 minutes.

Присоединение существующего кластера AKSAttach an existing AKS cluster

Если вас уже есть кластер AKS в подписке Azure, и это версии 1.12. ##, его можно использовать для развертывания образа.If you already have AKS cluster in your Azure subscription, and it is version 1.12.##, you can use it to deploy your image.

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

При присоединении кластера AKS в рабочую область, можно определить, как кластер будет использовать, задав cluster_purpose параметра.When attaching an AKS cluster to a workspace, you can define how you will use the cluster by setting the cluster_purpose parameter.

Если вы не установите cluster_purpose параметра или набора cluster_purpose = AksCompute.ClusterPurpose.FAST_PROD, а затем кластер должен иметь по крайней мере 12 виртуальных процессоров, доступных.If you do not set the cluster_purpose parameter, or set cluster_purpose = AksCompute.ClusterPurpose.FAST_PROD, then the cluster must have at least 12 virtual CPUs available.

Если задать cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, а затем кластера не требуется 12 виртуальных ЦП.If you set cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, then the cluster does not need to have 12 virtual CPUs. Тем не менее кластер, настроенный для разработки и тестирования не подойти для трафика на уровне рабочей среде и может увеличить время вывода.However a cluster that is configured for dev/test will not be suitable for production level traffic and may increase inference times.

Приведенный ниже показано, как подключить существующий 1.12 AKS. ## кластера к рабочей области:The following code demonstrates how to attach an existing AKS 1.12.## cluster to your workspace:

from azureml.core.compute import AksCompute, ComputeTarget
# Set the resource group that contains the AKS cluster and the cluster name
resource_group = 'myresourcegroup'
cluster_name = 'mycluster'

# Attach the cluster to your workgroup. If the cluster has less than 12 virtual CPUs, use the following instead:
# attach_config = AksCompute.attach_configuration(resource_group = resource_group,
#                                         cluster_name = cluster_name,
#                                         cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST)
attach_config = AksCompute.attach_configuration(resource_group = resource_group,
                                         cluster_name = cluster_name)
aks_target = ComputeTarget.attach(ws, 'mycompute', attach_config)

Дополнительные сведения о attack_configuration(), см. в разделе AksCompute.attach_configuration() ссылки.For more information on attack_configuration(), see the AksCompute.attach_configuration() reference.

Дополнительные сведения о cluster_purpose параметр, см. в разделе AksCompute.ClusterPurpose ссылки.For more information on the cluster_purpose parameter, see the AksCompute.ClusterPurpose reference.

Использование веб-службConsume web services

Каждый развернутой веб-службы предоставляет REST API, чтобы вы могли создавать клиентские приложения в различных языках программирования.Every deployed web service provides a REST API, so you can create client applications in a variety of programming languages. Если вы включили проверку подлинности для службы, необходимо предоставить ключ службы как токен в заголовке запроса.If you have enabled authentication for your service, you need to provide a service key as a token in your request header.

Запрос ответ потребленияRequest-response consumption

Вот пример того, как вызвать службу на языке Python:Here is an example of how to invoke your service in Python:

import requests
import json

headers = {'Content-Type':'application/json'}

if service.auth_enabled:
    headers['Authorization'] = 'Bearer '+service.get_keys()[0]

print(headers)
    
test_sample = json.dumps({'data': [
    [1,2,3,4,5,6,7,8,9,10], 
    [10,9,8,7,6,5,4,3,2,1]
]})

response = requests.post(service.scoring_uri, data=test_sample, headers=headers)
print(response.status_code)
print(response.elapsed)
print(response.json())

Дополнительные сведения см. в статье Использование модели Машинного обучения Azure, развернутой в качестве веб-службы.For more information, see Create client applications to consume webservices.

Определение пакетаBatch inference

Целевые объекты вычислений для машинного обучения Azure создаются и управляются службой машинного обучения Azure.Azure Machine Learning Compute targets are created and managed by the Azure Machine Learning service. Они могут использоваться для прогноза пакетной службы на основе конвейеры машинного обучения Azure.They can be used for batch prediction from Azure Machine Learning Pipelines.

Пошаговое руководство, вывода пакетной службы с помощью вычислений машинного обучения Azure, в статье как выполнить пакетные прогнозы статьи.For a walkthrough of batch inference with Azure Machine Learning Compute, read the How to Run Batch Predictions article.

Вывод IoT EdgeIoT Edge inference

Для поддержки развертывания на периферии доступна Предварительная версия.Support for deploying to the edge is in preview. Дополнительные сведения см. в разделе развертывание машинного обучения Azure, как модуль IoT Edge статьи.For more information, see the Deploy Azure Machine Learning as an IoT Edge module article.

Обновите веб-службыUpdate web services

При создании новой модели, необходимо вручную обновить каждую службу, вы хотите использовать новую модель.When you create a new model, you must manually update each service that you want to use the new model. Чтобы обновить веб-службу, используйте метод update.To update the web service, use the update method. Следующий код демонстрирует способы обновления веб-службы для использования новой модели:The following code demonstrates how to update the web service to use a new model:

from azureml.core.webservice import Webservice
from azureml.core.model import Model

# register new model
new_model = Model.register(model_path = "outputs/sklearn_mnist_model.pkl",
                       model_name = "sklearn_mnist",
                       tags = {"key": "0.1"},
                       description = "test",
                       workspace = ws)

service_name = 'myservice'
# Retrieve existing service
service = Webservice(name = service_name, workspace = ws)

# Update to new model(s)
service.update(models = [new_model])
print(service.state)
print(service.get_logs())

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

Для удаления развернутой веб-службы используйте service.delete().To delete a deployed web service, use service.delete(). Чтобы удалить зарегистрированную модель, используйте model.delete().To delete a registered model, use model.delete().

Дополнительные сведения см. в справочной документации по WebService.delete(), и Model.delete().For more information, see the reference documentation for WebService.delete(), and Model.delete().

Дальнейшие действияNext steps