Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A:Extensión de ML de la CLI de Azure v1
Azure ML del SDK de Python v1
Importante
En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. EL SDK v1 está en desuso a partir del 31 de marzo de 2025. El soporte técnico finalizará el 30 de junio de 2026. Puede instalar y usar SDK v1 hasta esa fecha.
Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre SDK v2, consulte ¿Qué es la CLI de Azure Machine Learning y el SDK de Python v2? y la referencia del SDK v2.
En este artículo se muestra cómo generar perfiles de aprendizaje automático para modelar para determinar la cantidad de CPU y memoria que necesita asignar para el modelo al implementarlo como un servicio web.
Importante
Este artículo se aplica a la CLI versión 1 y al SDK versión 1. Esta técnica de generación de perfiles no está disponible para la versión 2 de la CLI o del SDK.
Importante
Algunos de los comandos de la CLI de Azure de este artículo usan la extensión azure-cli-ml
o v1 para Azure Machine Learning. La compatibilidad con la extensión v1 finalizará el 30 de septiembre de 2025. Puede instalar y usar la extensión v1 hasta esa fecha.
Se recomienda pasar a la extensión ml
, o v2, antes del 30 de septiembre de 2025. Para obtener más información sobre la extensión v2, consulte Extensión de la CLI de Azure Machine Learning y SDK de Python v2.
Requisitos previos
En este artículo se da por supuesto que entrena y registra un modelo con Azure Machine Learning. Vea este tutorial de muestra para obtener un ejemplo de entrenamiento y registro de un modelo scikit-learn con Azure Machine Learning.
Limitaciones
- La generación de perfiles no funciona cuando el Registro de Contenedores de Azure (ACR) para su área de trabajo está detrás de una red virtual.
Ejecución del generador de perfiles
Una vez registrado el modelo y preparados los demás componentes necesarios para su implementación, puede determinar la CPU y la memoria que necesita el servicio implementado. La generación de perfiles prueba el servicio que ejecuta el modelo y devuelve información como el uso de la CPU, el uso de memoria y la latencia de respuesta. También proporciona una recomendación para la CPU y la memoria en función del uso de recursos.
Para crear un perfil de su modelo, usted necesita lo siguiente:
- Un modelo registrado.
- Una configuración de inferencia basada en el script de entrada y en la definición de entorno de inferencia.
- Un conjunto de datos tabular de una sola columna, donde cada fila contiene una cadena que representa datos de solicitud de ejemplo.
Importante
Azure Machine Learning solo admite la generación de perfiles de servicios que esperan que sus datos de solicitud sean una cadena, por ejemplo: cadena serializada json, texto, imagen serializada de cadena, etc. El contenido de cada fila del conjunto de datos (cadena) se coloca en el cuerpo de la solicitud HTTP y se envía al servicio encapsulando el modelo para la puntuación.
Importante
Solo se admite la generación de perfiles de 2 CPU como máximo en la región USGovArizona y ChinaEast2.
A continuación se muestra un ejemplo de cómo puede construir un conjunto de datos de entrada para generar perfiles de un servicio que espera que sus datos de solicitud entrantes contengan json serializado. En este caso, creamos un conjunto de datos basado en 100 instancias del mismo contenido de datos de la solicitud. En escenarios reales, se recomienda usar conjuntos de datos más grandes que contengan varias entradas, especialmente si el comportamiento o el uso de recursos del modelo depende de la entrada.
SE APLICA A:SDK de Azure Machine Learning v1 para Python
import json
from azureml.core import Datastore
from azureml.core.dataset import Dataset
from azureml.data import dataset_type_definitions
input_json = {'data': [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]]}
# create a string that can be utf-8 encoded and
# put in the body of the request
serialized_input_json = json.dumps(input_json)
dataset_content = []
for i in range(100):
dataset_content.append(serialized_input_json)
dataset_content = '\n'.join(dataset_content)
file_name = 'sample_request_data.txt'
f = open(file_name, 'w')
f.write(dataset_content)
f.close()
# upload the txt file created above to the Datastore and create a dataset from it
data_store = Datastore.get_default(ws)
data_store.upload_files(['./' + file_name], target_path='sample_request_data')
datastore_path = [(data_store, 'sample_request_data' +'/' + file_name)]
sample_request_data = Dataset.Tabular.from_delimited_files(
datastore_path, separator='\n',
infer_column_types=True,
header=dataset_type_definitions.PromoteHeadersBehavior.NO_HEADERS)
sample_request_data = sample_request_data.register(workspace=ws,
name='sample_request_data',
create_new_version=True)
Una vez que tenga listo el conjunto de datos que contiene los datos de solicitud de ejemplo, cree una configuración de inferencia. La configuración de inferencia se basa en score.py y en la definición de entorno. En el siguiente ejemplo le indicaremos cómo crear una configuración de inferencia y ejecutar la generación de perfiles:
from azureml.core.model import InferenceConfig, Model
from azureml.core.dataset import Dataset
model = Model(ws, id=model_id)
inference_config = InferenceConfig(entry_script='path-to-score.py',
environment=myenv)
input_dataset = Dataset.get_by_name(workspace=ws, name='sample_request_data')
profile = Model.profile(ws,
'unique_name',
[model],
inference_config,
input_dataset=input_dataset)
profile.wait_for_completion(True)
# see the result
details = profile.get_details()
SE APLICA A:Extensión de ML de la CLI de Azure v1
El comando siguiente muestra cómo generar el perfil de un modelo mediante la CLI:
az ml model profile -g <resource-group-name> -w <workspace-name> --inference-config-file <path-to-inf-config.json> -m <model-id> --idi <input-dataset-id> -n <unique-name>
Sugerencia
Para conservar la información que devuelve la generación de perfiles, use las etiquetas o las propiedades del modelo. El uso de etiquetas o propiedades almacena los datos con el modelo en el registro del modelo. En los siguientes ejemplos se muestra cómo agregar una nueva etiqueta que contiene la información de requestedCpu
y requestedMemoryInGb
:
model.add_tags({'requestedCpu': details['requestedCpu'],
'requestedMemoryInGb': details['requestedMemoryInGb']})
az ml model profile -g <resource-group-name> -w <workspace-name> --i <model-id> --add-tag requestedCpu=1 --add-tag requestedMemoryInGb=0.5
Pasos siguientes
- Solución de problemas de implementaciones con errores
- Implementación en Azure Kubernetes Service
- Creación de aplicaciones cliente para consumir servicios web
- Actualización de servicios web
- Cómo implementar un modelo con una imagen personalizada de Docker
- Uso de TLS para proteger un servicio web con Azure Machine Learning
- Supervisión de los modelos de Azure Machine Learning con Application Insights
- Recopilar datos de modelos en producción
- Creación de flujos de trabajo de aprendizaje automático controlados por eventos (versión preliminar)