Implementación de un modelo en un clúster de Azure Kubernetes ServiceDeploy a model to an Azure Kubernetes Service cluster

Se aplica a: síBasic Edition síEnterprise Edition                    (Actualización a Enterprise Edition)APPLIES TO: yesBasic edition yesEnterprise edition                    (Upgrade to Enterprise edition)

Aprenda a usar Azure Machine Learning para implementar un modelo como un servicio web en Azure Kubernetes Service (AKS).Learn how to use Azure Machine Learning to deploy a model as a web service on Azure Kubernetes Service (AKS). Azure Kubernetes Service se recomienda para implementaciones de producción a gran escala.Azure Kubernetes Service is good for high-scale production deployments. Úselo si necesita una o varias de las siguientes funcionalidades:Use Azure Kubernetes service if you need one or more of the following capabilities:

  • Tiempo de respuesta rápido.Fast response time.
  • Escalado automático del servicio implementado.Autoscaling of the deployed service.
  • Opciones de aceleración de hardware, como GPU y matrices de puertas programables (FPGA).Hardware acceleration options such as GPU and field-programmable gate arrays (FPGA).

Importante

El escalado de clústeres no se proporciona a través del SDK de Azure Machine Learning.Cluster scaling is not provided through the Azure Machine Learning SDK. Para más información acerca del escalado de nodos en un clúster de Azure Kubernetes Service, consulte Escalado del número de nodos en un clúster de Azure Kubernetes Service.For more information on scaling the nodes in an AKS cluster, see Scale the node count in an AKS cluster.

En Azure Kubernetes Service, la implementación se realiza en un clúster de AKS que está conectado a su área de trabajo.When deploying to Azure Kubernetes Service, you deploy to an AKS cluster that is connected to your workspace. Hay dos formas de conectar un clúster de AKS a un área de trabajo:There are two ways to connect an AKS cluster to your workspace:

  • Cree el clúster de AKS mediante el SDK de Azure Machine Learning, la CLI de Machine Learning o Azure Machine Learning Studio.Create the AKS cluster using the Azure Machine Learning SDK, the Machine Learning CLI, or Azure Machine Learning studio. Este proceso conecta automáticamente el clúster al área de trabajo.This process automatically connects the cluster to the workspace.
  • Conecte el clúster de AKS existente a un área de trabajo de Azure Machine Learning.Attach an existing AKS cluster to your Azure Machine Learning workspace. Un clúster se puede conectar mediante el SDK de Azure Machine Learning, la CLI de Machine Learning o Azure Machine Learning Studio.A cluster can be attached using the Azure Machine Learning SDK, Machine Learning CLI, or Azure Machine Learning studio.

Importante

El proceso de creación o de conexión es una tarea que se realiza una sola vez.The creation or attachment process is a one time task. Una vez que un clúster de AKS está conectado al área de trabajo, puede usarlo para las implementaciones.Once an AKS cluster is connected to the workspace, you can use it for deployments. Cuando deje de necesitar el clúster de AKS puede desasociarlo o eliminarlo.You can detach or delete the AKS cluster if you no longer need it. Una vez que lo haga, ya no podrá implementar realizar ninguna implementación en el clúster.Once detatched or deleted, you will no longer be able to deploy to the cluster.

Requisitos previosPrerequisites

Creación de un clúster de AKSCreate a new AKS cluster

Tiempo estimado: aproximadamente 20 minutos.Time estimate: Approximately 20 minutes.

Crear o asociar un clúster de AKS es un proceso único en el área de trabajo.Creating or attaching an AKS cluster is a one time process for your workspace. Puede volver a usar este clúster con diferentes implementaciones.You can reuse this cluster for multiple deployments. Si elimina el clúster o el grupo de recursos que lo contiene, tendrá que crear un nuevo clúster la próxima vez que tenga que realizar una implementación.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. Puede tener varios clústeres de AKS asociados al área de trabajo.You can have multiple AKS clusters attached to your workspace.

Sugerencia

Si quiere proteger el clúster de AKS mediante una instancia de Azure Virtual Network, primero debe crear la red virtual.If you want to secure your AKS cluster using an Azure Virtual Network, you must create the virtual network first. Para más información, consulte Protección de los trabajos de experimentación e inferencia con Azure Virtual Network.For more information, see Secure experimentation and inference with Azure Virtual Network.

Si desea crear un clúster de AKS para desarrollo, __validación__y pruebas, en lugar de producción, en cluster purpose puede especificar dev test.If you want to create an AKS cluster for development, validation, and testing instead of production, you can specify the cluster purpose to dev test.

Advertencia

Si establece cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, el clúster que se crea no es adecuado para un tráfico de nivel de producción y puede aumentar los tiempos de inferencia.If you set cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, the cluster that is created is not suitable for production level traffic and may increase inference times. Los clústeres de desarrollo y pruebas tampoco garantizan la tolerancia a errores.Dev/test clusters also do not guarantee fault tolerance. Se recomiendan al menos dos CPU virtuales para los clústeres de desarrollo y pruebas.We recommend at least 2 virtual CPUs for dev/test clusters.

En los siguientes ejemplos se muestra cómo crear un clúster de AKS mediante el SDK y la CLI:The following examples demonstrate how to create a new AKS cluster using the SDK and CLI:

Uso del SDKUsing the SDK

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 = AksCompute.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)

Importante

Para provisioning_configuration(), si elige valores personalizados para agent_count y vm_size, y cluster_purpose no es DEV_TEST, deberá asegurarse de que agent_count multiplicado por vm_size sea mayor o igual que 12 CPU virtuales.For provisioning_configuration(), if you pick custom values for agent_count and vm_size, and cluster_purpose is not DEV_TEST, then you need to make sure agent_count multiplied by vm_size is greater than or equal to 12 virtual CPUs. Por ejemplo, si usa un valor de vm_size de "Standard_D3_v2", que tiene cuatro CPU virtuales, debe elegir un valor de agent_count de 3 o mayor.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.

El SDK de Azure Machine Learning no admite escalar un clúster de AKS.The Azure Machine Learning SDK does not provide support scaling an AKS cluster. Para escalar los nodos en el clúster, use la interfaz de usuario para el clúster de AKS en Azure Machine Learning Studio.To scale the nodes in the cluster, use the UI for your AKS cluster in the Azure Machine Learning studio. Solo puede cambiar el número de nodos, no el tamaño de máquina virtual del clúster.You can only change the node count, not the VM size of the cluster.

Para más información acerca de las clases, los métodos y los parámetros que se usan en este ejemplo, consulte los siguientes documentos de referencia:For more information on the classes, methods, and parameters used in this example, see the following reference documents:

Uso de la CLIUsing the CLI

az ml computetarget create aks -n myaks

Para más información, consulte la referencia de az ml computetarget create ask.For more information, see the az ml computetarget create ask reference.

Asociación de un clúster de AKS ya existenteAttach an existing AKS cluster

Tiempo estimado: Aproximadamente 5 minutos.Time estimate: Approximately 5 minutes.

Si ya tiene un clúster de AKS en su suscripción a Azure y es de una versión anterior a la 1.15, puede usarlo para implementar la imagen.If you already have AKS cluster in your Azure subscription, and it is lower than version 1.15, you can use it to deploy your image.

Sugerencia

El clúster de AKS existente puede estar en una región de Azure diferente que su área de trabajo de Azure Machine Learning.The existing AKS cluster can be in a Azure region other than your Azure Machine Learning workspace.

Si quiere proteger el clúster de AKS mediante una instancia de Azure Virtual Network, primero debe crear la red virtual.If you want to secure your AKS cluster using an Azure Virtual Network, you must create the virtual network first. Para más información, consulte Protección de los trabajos de experimentación e inferencia con Azure Virtual Network.For more information, see Secure experimentation and inference with Azure Virtual Network.

Cuando se asocia un clúster de AKS a un área de trabajo, puede definir cómo utilizará el clúster estableciendo el parámetro 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.

Si no establece el parámetro cluster_purpose, o establece cluster_purpose = AksCompute.ClusterPurpose.FAST_PROD, el clúster deberá tener al menos 12 CPU virtuales disponibles.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.

Si establece cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, el clúster no necesitará tener 12 CPU virtuales.If you set cluster_purpose = AksCompute.ClusterPurpose.DEV_TEST, then the cluster does not need to have 12 virtual CPUs. Se recomiendan al menos dos CPU virtuales para desarrollo y pruebas.We recommend at least 2 virtual CPUs for dev/test. No obstante, un clúster que está configurado para desarrollo y pruebas no es adecuado para un tráfico de nivel de producción y puede aumentar los tiempos de inferencia.However a cluster that is configured for dev/test is not suitable for production level traffic and may increase inference times. Los clústeres de desarrollo y pruebas tampoco garantizan la tolerancia a errores.Dev/test clusters also do not guarantee fault tolerance.

Advertencia

No cree varios datos adjuntos simultáneos en el mismo clúster de AKS desde su área de trabajo.Do not create multiple, simultaneous attachments to the same AKS cluster from your workspace. Por ejemplo, adjuntar un clúster de AKS a un área de trabajo con dos nombres diferentes.For example, attaching one AKS cluster to a workspace using two different names. Cada adjunto nuevo interrumpirá los adjuntos anteriores existentes.Each new attachment will break the previous existing attachment(s).

Si desea volver a conectar un clúster de AKS, por ejemplo, para cambiar la configuración de SSL u otra configuración del clúster, primero debe quitar los adjuntos existentes mediante AksCompute.detach().If you want to re-attach an AKS cluster, for example to change SSL or other cluster configuration setting, you must first remove the existing attachment by using AksCompute.detach().

Para más información acerca de cómo crear un clúster de AKS mediante la CLI de Azure o Azure Portal, consulte los artículos siguientes:For more information on creating an AKS cluster using the Azure CLI or portal, see the following articles:

En los ejemplos siguientes se muestra cómo asociar un clúster de AKS existente a un área de trabajo:The following examples demonstrate how to attach an existing AKS cluster to your workspace:

Uso del SDKUsing the SDK

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 = 'myexistingcluster'

# 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, 'myaks', attach_config)

Para más información acerca de las clases, los métodos y los parámetros que se usan en este ejemplo, consulte los siguientes documentos de referencia:For more information on the classes, methods, and parameters used in this example, see the following reference documents:

Uso de la CLIUsing the CLI

Para asociar un clúster existente mediante la CLI, es preciso obtener el identificador de recurso del clúster existente.To attach an existing cluster using the CLI, you need to get the resource ID of the existing cluster. Para obtener este valor, use el comando siguiente.To get this value, use the following command. Reemplace myexistingcluster por el nombre del clúster de AKS.Replace myexistingcluster with the name of your AKS cluster. Reemplace myresourcegroup por el grupo de recursos que contiene el clúster:Replace myresourcegroup with the resource group that contains the cluster:

az aks show -n myexistingcluster -g myresourcegroup --query id

Este comando devuelve un valor similar al siguiente texto:This command returns a value similar to the following text:

/subscriptions/{GUID}/resourcegroups/{myresourcegroup}/providers/Microsoft.ContainerService/managedClusters/{myexistingcluster}

Para conectar el clúster existente a un área de trabajo, use el siguiente comando.To attach the existing cluster to your workspace, use the following command. Reemplace aksresourceid por el valor devuelto por el comando anterior.Replace aksresourceid with the value returned by the previous command. Reemplace myresourcegroup por el grupo de recursos que contiene el área de trabajo.Replace myresourcegroup with the resource group that contains your workspace. Reemplace myworkspace por el nombre del área de trabajo.Replace myworkspace with your workspace name.

az ml computetarget attach aks -n myaks -i aksresourceid -g myresourcegroup -w myworkspace

Para más información, consulte la referencia de az ml computetarget attach aks.For more information, see the az ml computetarget attach aks reference.

Implementación en AKSDeploy to AKS

Para implementar un modelo en Azure Kubernetes Service, cree una configuración de implementación que describa los recursos de proceso necesarios.To deploy a model to Azure Kubernetes Service, create a deployment configuration that describes the compute resources needed. Por ejemplo, el número de núcleos y la memoria.For example, number of cores and memory. También necesita una configuración de inferencia, que describe el entorno necesario para hospedar el modelo y el servicio web.You also need an inference configuration, which describes the environment needed to host the model and web service. Para más información sobre cómo crear la configuración de inferencia, consulte Cómo y dónde implementar modelos.For more information on creating the inference configuration, see How and where to deploy models.

Uso del SDKUsing the SDK

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

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, "myservice", [model], inference_config, deployment_config, aks_target)
service.wait_for_deployment(show_output = True)
print(service.state)
print(service.get_logs())

Para más información acerca de las clases, los métodos y los parámetros que se usan en este ejemplo, consulte los siguientes documentos de referencia:For more information on the classes, methods, and parameters used in this example, see the following reference documents:

Uso de la CLIUsing the CLI

Para realizar una implementación con la CLI, use el siguiente comando.To deploy using the CLI, use the following command. Reemplace myaks por el nombre del destino de proceso de AKS.Replace myaks with the name of the AKS compute target. Reemplace mymodel:1 por el nombre y la versión del modelo registrado.Replace mymodel:1 with the name and version of the registered model. Reemplace myservice por el nombre que quiere asignar a este servicio:Replace myservice with the name to give this service:

az ml model deploy -ct myaks -m mymodel:1 -n myservice -ic inferenceconfig.json -dc deploymentconfig.json

Las entradas del documento deploymentconfig.json se asignan a los parámetros de AksWebservice.deploy_configuration.The entries in the deploymentconfig.json document map to the parameters for AksWebservice.deploy_configuration. En la tabla siguiente se describe la asignación entre las entidades del documento JSON y los parámetros del método:The following table describes the mapping between the entities in the JSON document and the parameters for the method:

Entidad JSONJSON entity Parámetro del métodoMethod parameter DESCRIPCIÓNDescription
computeType N/DNA El destino de proceso.The compute target. Para AKS, el valor debe ser aks.For AKS, the value must be aks.
autoScaler N/DNA Contiene elementos de configuración para la escalabilidad automática.Contains configuration elements for autoscale. Consulte la tabla del escalador automático.See the autoscaler table.
  autoscaleEnabled autoscale_enabled Indica si se debe habilitar la escalabilidad automática para el servicio web.Whether to enable autoscaling for the web service. Si numReplicas = 0, True; de lo contrario, False.If numReplicas = 0, True; otherwise, False.
  minReplicas autoscale_min_replicas Número mínimo de contenedores que se van a usar al escalar automáticamente este servicio web.The minimum number of containers to use when autoscaling this web service. El valor predeterminado es 1.Default, 1.
  maxReplicas autoscale_max_replicas Número máximo de contenedores que se van a usar al escalar automáticamente este servicio web.The maximum number of containers to use when autoscaling this web service. El valor predeterminado es 10.Default, 10.
  refreshPeriodInSeconds autoscale_refresh_seconds Frecuencia con la que el escalador automático intenta escalar este servicio web.How often the autoscaler attempts to scale this web service. El valor predeterminado es 1.Default, 1.
  targetUtilization autoscale_target_utilization Uso objetivo (en un porcentaje de 100) que el escalador automático debe intentar mantener para este servicio web.The target utilization (in percent out of 100) that the autoscaler should attempt to maintain for this web service. El valor predeterminado es 70.Default, 70.
dataCollection N/DNA Contiene elementos de configuración para la colección de datos.Contains configuration elements for data collection.
  storageEnabled collect_model_data Indica si se debe habilitar la recopilación de datos del modelo para el servicio web.Whether to enable model data collection for the web service. El valor predeterminado es False.Default, False.
authEnabled auth_enabled Indica si se debe habilitar o no la autenticación mediante clave para el servicio web.Whether or not to enable key authentication for the web service. tokenAuthEnabled y authEnabled no pueden ser True.Both tokenAuthEnabled and authEnabled cannot be True. El valor predeterminado es True.Default, True.
tokenAuthEnabled token_auth_enabled Indica si se debe habilitar o no la autenticación por tokens para el servicio web.Whether or not to enable token authentication for the web service. tokenAuthEnabled y authEnabled no pueden ser True.Both tokenAuthEnabled and authEnabled cannot be True. El valor predeterminado es False.Default, False.
containerResourceRequirements N/DNA Contenedor de las entidades de CPU y memoria.Container for the CPU and memory entities.
  cpu cpu_cores Número de núcleos de CPU que se asigna a este servicio web.The number of CPU cores to allocate for this web service. El valor predeterminado es 0.1.Defaults, 0.1
  memoryInGB memory_gb Cantidad de memoria (en GB) que se va a asignar a este servicio web.The amount of memory (in GB) to allocate for this web service. El valor predeterminado es 0.5.Default, 0.5
appInsightsEnabled enable_app_insights Indica si se debe habilitar el registro de Application Insights para el servicio web.Whether to enable Application Insights logging for the web service. El valor predeterminado es False.Default, False.
scoringTimeoutMs scoring_timeout_ms Tiempo de espera que se aplicará a las llamadas de puntuación al servicio web.A timeout to enforce for scoring calls to the web service. El valor predeterminado es 60000.Default, 60000.
maxConcurrentRequestsPerContainer replica_max_concurrent_requests Número máximo de solicitudes simultáneas por nodo para este servicio web.The maximum concurrent requests per node for this web service. El valor predeterminado es 1.Default, 1.
maxQueueWaitMs max_request_wait_time Tiempo máximo que permanecerá en la cola una solicitud (en milisegundos) antes de que se devuelva un error 503.The maximum time a request will stay in thee queue (in milliseconds) before a 503 error is returned. El valor predeterminado es 500.Default, 500.
numReplicas num_replicas Número de contenedores que se asignarán a este servicio web.The number of containers to allocate for this web service. No hay ningún valor predeterminado.No default value. Si no se establece este parámetro, el escalador automático se habilita de forma predeterminada.If this parameter is not set, the autoscaler is enabled by default.
keys N/DNA Contiene elementos de configuración para las claves.Contains configuration elements for keys.
  primaryKey primary_key Clave de autenticación principal que se usará para este servicio webA primary auth key to use for this Webservice
  secondaryKey secondary_key Clave de autenticación secundaria que se usará para este servicio webA secondary auth key to use for this Webservice
gpuCores gpu_cores Número de núcleos de GPU que se asignará a este servicio web.The number of GPU cores to allocate for this Webservice. El valor predeterminado es 1.Default is 1. Solo admite valores de números enteros.Only supports whole number values.
livenessProbeRequirements N/DNA Contiene elementos de configuración para los requisitos del sondeo de ejecución.Contains configuration elements for liveness probe requirements.
  periodSeconds period_seconds Frecuencia (en segundos) en que se ejecutará el sondeo de ejecución.How often (in seconds) to perform the liveness probe. El valor predeterminado es de 10 segundos.Default to 10 seconds. El valor mínimo es 1.Minimum value is 1.
  initialDelaySeconds initial_delay_seconds Número de segundos después de que se haya iniciado el contenedor antes de que se inicien los sondeos de ejecución.Number of seconds after the container has started before liveness probes are initiated. El valor predeterminado es 310Defaults to 310
  timeoutSeconds timeout_seconds Número de segundos tras los cuales el sondeo de ejecución agota el tiempo de espera. El valor predeterminado es de 2 segundos.Number of seconds after which the liveness probe times out. Defaults to 2 seconds. El valor mínimo es 1Minimum value is 1
  successThreshold success_threshold Número mínimo de valores correctos consecutivos para que el sondeo de ejecución se considere correcto después de que se haya producido un error.Minimum consecutive successes for the liveness probe to be considered successful after having failed. De manera predeterminada, su valor es 1.Defaults to 1. El valor mínimo es 1.Minimum value is 1.
  failureThreshold failure_threshold Cuando se inicie un pod y se produzca un error en el sondeo de ejecución, Kubernetes probará las veces especificadas en failureThreshold antes de abandonarlo.When a Pod starts and the liveness probe fails, Kubernetes will try failureThreshold times before giving up. El valor predeterminado es 3.Defaults to 3. El valor mínimo es 1.Minimum value is 1.
namespace namespace Espacio de nombres de Kubernetes en el que está implementado el servicio web.The Kubernetes namespace that the webservice is deployed into. Hasta 63 caracteres alfanuméricos en minúsculas (de la "a" a la "z" y de "0" a "9") y guiones ("-").Up to 63 lowercase alphanumeric ('a'-'z', '0'-'9') and hyphen ('-') characters. El primer y el último carácter no pueden ser un guion.The first and last characters can't be hyphens.

El siguiente elemento JSON es un ejemplo de la configuración de implementación que se puede usar con la CLI:The following JSON is an example deployment configuration for use with the CLI:

{
    "computeType": "aks",
    "autoScaler":
    {
        "autoscaleEnabled": true,
        "minReplicas": 1,
        "maxReplicas": 3,
        "refreshPeriodInSeconds": 1,
        "targetUtilization": 70
    },
    "dataCollection":
    {
        "storageEnabled": true
    },
    "authEnabled": true,
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    }
}

Para obtener más información, consulte la referencia az ml model deploy.For more information, see the az ml model deploy reference.

Uso de Visual Studio CodeUsing VS Code

Para obtener información acerca del uso de Visual Studio Code, consulte cómo se realiza la implementación en AKS a través de la extensión de Visual Studio Code.For information on using VS Code, see deploy to AKS via the VS Code extension.

Importante

La implementación a través de Visual Studio Code requiere que el clúster de AKS se cree o se adjunte al área de trabajo de antemano.Deploying through VS Code requires the AKS cluster to be created or attached to your workspace in advance.

Implementación de modelos en AKS mediante el lanzamiento controlado (versión preliminar)Deploy models to AKS using controlled rollout (preview)

Analice y promocione las versiones del modelo de un modo controlado mediante puntos de conexión.Analyze and promote model versions in a controlled fashion using endpoints. Implemente hasta 6 versiones detrás de un solo punto de conexión y configure el porcentaje de tráfico de puntuación para cada versión implementada.Deploy up to 6 versions behind a single endpoint and configure the % of scoring traffic to each deployed version. Puede habilitar App Insights para ver las métricas operativas de los puntos de conexión y las versiones implementadas.You can enable app insights to view operational metrics of endpoints and deployed versions.

Creación de un extremoCreate an endpoint

Cuando esté listo para implementar los modelos, cree un punto de conexión de puntuación e implemente la primera versión.Once you are ready to deploy your models, create a scoring endpoint and deploy your first version. En el paso siguiente se muestra cómo implementar y crear el punto de conexión mediante el SDK.The step below shows you how to deploy and create the endpoint using the SDK. La primera implementación se definirá como la versión predeterminada, lo que significa que el percentil de tráfico sin especificar en todas las versiones irá a la versión predeterminada.The first deployment will be defined as the default version which means that unspecified traffic percentile across all versions will go to the default version.

import azureml.core,
from azureml.core.webservice import AksEndpoint
from azureml.core.compute import AksCompute
from azureml.core.compute import ComputeTarget
# select a created compute
compute = ComputeTarget(ws, 'myaks')
namespace_name= endpointnamespace 
# define the endpoint and version name
endpoint_name = "mynewendpoint",
version_name= "versiona",
# create the deployment config and define the scoring traffic percentile for the first deployment
endpoint_deployment_config = AksEndpoint.deploy_configuration(cpu_cores = 0.1, memory_gb = 0.2,
                                                              enable_app_insights = true, 
                                                              tags = {'sckitlearn':'demo'},
                                                              decription = testing versions,
                                                              version_name = version_name,
                                                              traffic_percentile = 20)
 # deploy the model and endpoint
 endpoint = Model.deploy(ws, endpoint_name, [model], inference_config, endpoint_deployment_config, compute)

Actualizar y agregar versiones a un punto de conexiónUpdate and add versions to an endpoint

Agregue otra versión al punto de conexión y configure el percentil de tráfico de puntuación que va a la versión.Add another version to your endpoint and configure the scoring traffic percentile going to the version. Hay dos tipos de versiones, una versión control y otra de tratamiento.There are two types of versions, a control and a treatment version. Pueden haber varias versiones de tratamiento para ayudar a comparar con una versión de control única.There can be multiple treatment version to help compare against a single control version.

from azureml.core.webservice import AksEndpoint

# add another model deployment to the same endpoint as above
version_name_add = "versionb" 
endpoint.create_version(version_name = version_name_add, 
                       inference_config=inference_config,
                       models=[model], 
                       tags = {'modelVersion':'b'}, 
                       description = "my second version", 
                       traffic_percentile = 10)

Actualice las versiones existentes o elimínelas en un punto de conexión.Update existing versions or delete them in an endpoint. Puede cambiar el tipo predeterminado de la versión, el tipo de control y el percentil de tráfico.You can change the version's default type, control type, and the traffic percentile.

from azureml.core.webservice import AksEndpoint

# update the version's scoring traffic percentage and if it is a default or control type 
endpoint.update_version(version_name=endpoint.versions["versionb"].name, 
                       description="my second version update", 
                       traffic_percentile=40,
                       is_default=True,
                       is_control_version_type=True)

# delete a version in an endpoint 
endpoint.delete_version(version_name="versionb")

Autenticación de servicio webWeb service authentication

Cuando se implementa en Azure Kubernetes Service, la autenticación basada en claves se habilita de manera predeterminada.When deploying to Azure Kubernetes Service, key-based authentication is enabled by default. También puede habilitar la autenticación basada en tokens.You can also enable token-based authentication. Para la autenticación basada en tokens, los clientes deben usar una cuenta de Azure Active Directory para solicitar un token de autenticación, que se usa para hacer solicitudes al servicio implementado.Token-based authentication requires clients to use an Azure Active Directory account to request an authentication token, which is used to make requests to the deployed service.

Para deshabilitar la autenticación, establezca el parámetro auth_enabled=False al crear la configuración de implementación.To disable authentication, set the auth_enabled=False parameter when creating the deployment configuration. En el siguiente ejemplo se deshabilita la autenticación mediante el SDK:The following example disables authentication using the SDK:

deployment_config = AksWebservice.deploy_configuration(cpu_cores=1, memory_gb=1, auth_enabled=False)

Para obtener información sobre la autenticación desde una aplicación cliente, consulte Consumir un modelo de Azure Machine Learning que está implementado como un servicio web.For information on authenticating from a client application, see the Consume an Azure Machine Learning model deployed as a web service.

Autenticación con clavesAuthentication with keys

Si la autenticación con claves está habilitada, puede usar el método get_keys para recuperar una clave de autenticación primaria y secundaria:If key authentication is enabled, you can use the get_keys method to retrieve a primary and secondary authentication key:

primary, secondary = service.get_keys()
print(primary)

Importante

Si necesita regenerar una clave, use service.regen_key.If you need to regenerate a key, use service.regen_key

Autenticación con tokensAuthentication with tokens

Para habilitar la autenticación por tokens, establezca el parámetro token_auth_enabled=True cuando cree o actualice una implementación.To enable token authentication, set the token_auth_enabled=True parameter when you are creating or updating a deployment. En el ejemplo siguiente se habilita la autenticación por tokens con el SDK:The following example enables token authentication using the SDK:

deployment_config = AksWebservice.deploy_configuration(cpu_cores=1, memory_gb=1, token_auth_enabled=True)

Si la autenticación por tokens está habilitada, puede usar el método get_token para recuperar un token JWT y la hora de expiración de los tokens:If token authentication is enabled, you can use the get_token method to retrieve a JWT token and that token's expiration time:

token, refresh_by = service.get_token()
print(token)

Importante

Tendrá que solicitar un nuevo token después de la hora del token refresh_by.You will need to request a new token after the token's refresh_by time.

Microsoft recomienda crear el área de trabajo de Azure Machine Learning en la misma región que el clúster de Azure Kubernetes Service.Microsoft strongly recommends that you create your Azure Machine Learning workspace in the same region as your Azure Kubernetes Service cluster. Para autenticarse con un token, el servicio web hará una llamada a la región en la que se crea el área de trabajo de Azure Machine Learning.To authenticate with a token, the web service will make a call to the region in which your Azure Machine Learning workspace is created. Si la región del área de trabajo no está disponible, no se podrá capturar un token para el servicio web, incluso si el clúster está en una región distinta del área de trabajo.If your workspace's region is unavailable, then you will not be able to fetch a token for your web service even, if your cluster is in a different region than your workspace. Esto produce que la autenticación basada en tokens no esté disponible hasta que la región del área de trabajo vuelva a estar disponible.This effectively results in Token-based Authentication being unavailable until your workspace's region is available again. Además, cuanto mayor sea la distancia entre la región del clúster y la región del área de trabajo, más tiempo tardará la captura de un token.In addition, the greater the distance between your cluster's region and your workspace's region, the longer it will take to fetch a token.

Actualizar el servicio webUpdate the web service

Para actualizar un servicio web, utilice el método update.To update a web service, use the update method. Puede actualizar el servicio web para que use un nuevo modelo, un nuevo script de entrada o nuevas dependencias que se pueden especificar en una configuración de inferencia.You can update the web service to use a new model, a new entry script, or new dependencies that can be specified in an inference configuration. Para más información, consulte la documentación de Webservice.update.For more information, see the documentation for Webservice.update.

Importante

Cuando crea una nueva versión del modelo, debe actualizar manualmente cada servicio que quiera que la use.When you create a new version of a model, you must manually update each service that you want to use it.

Uso del SDKUsing the SDK

El código siguiente muestra cómo usar el SDK para actualizar el modelo, entorno y script de entrada para un servicio web:The following code shows how to use the SDK to update the model, environment, and entry script for a web service:

from azureml.core import Environment
from azureml.core.webservice import Webservice
from azureml.core.model import Model, InferenceConfig

# 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)

# Use version 3 of the environment.
deploy_env = Environment.get(workspace=ws,name="myenv",version="3")
inference_config = InferenceConfig(entry_script="score.py",
                                   environment=deploy_env)

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



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

Uso de la CLIUsing the CLI

También puede actualizar un servicio Web con la CLI de ML.You can also update a web service by using the ML CLI. En el ejemplo siguiente se muestra cómo registrar un nuevo modelo y luego actualizar el servicio web para usarlo:The following example demonstrates registering a new model and then updating a web service to use the new model:

az ml model register -n sklearn_mnist  --asset-path outputs/sklearn_mnist_model.pkl  --experiment-name myexperiment --output-metadata-file modelinfo.json
az ml service update -n myservice --model-metadata-file modelinfo.json

Sugerencia

En este ejemplo, se usa un documento JSON para pasar la información del modelo del comando de registro al comando de actualización.In this example, a JSON document is used to pass the model information from the registration command into the update command.

Para actualizar el servicio de modo que use un nuevo entorno o script de entrada, cree un archivo de configuración de inferencia y especifíquelo con el parámetro ic.To update the service to use a new entry script or environment, create an inference configuration file and specify it with the ic parameter.

Para más información, consulte la documentación de az ml service update.For more information, see the az ml service update documentation.

Pasos siguientesNext steps