Compartir a través de


Especificar el modelo que se va a implementar para su uso en el punto de conexión en línea

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

En este artículo, obtendrá información sobre las distintas formas de especificar modelos que desea usar en implementaciones en línea. Al implementar un modelo en un punto de conexión en línea de Azure Machine Learning, debe especificar el modelo de una de estas dos maneras:

  • Proporcione la ruta de acceso a la ubicación del modelo en el equipo local
  • Proporcione una referencia a un modelo con versiones que ya está registrado en el área de trabajo.

La forma de especificar el modelo para la implementación de un punto de conexión en línea depende de dónde se almacene el modelo. En Azure Machine Learning, después de crear la implementación, la variable de entorno AZUREML_MODEL_DIR apunta a la ubicación de almacenamiento dentro de Azure donde se almacena el modelo.

Implementación de modelos almacenados localmente

En esta sección se usa este ejemplo de una estructura de carpeta local para mostrar cómo puede especificar modelos para su uso en una implementación en línea:

Recorte de pantalla que muestra una estructura de carpeta local que contiene varios modelos.

Implementación de un único modelo local

Para usar un único modelo que tenga en la máquina local en una implementación, especifique el path al model en el archivo de configuración de YAML de implementación. El código siguiente es un ejemplo de YAML de implementación con la ruta de acceso local /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/model_1/v1/sample_m1.pkl 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

En Azure Machine Learning, después de crear la implementación en un punto de conexión en línea, la variable de entorno AZUREML_MODEL_DIR apunta a la ubicación de almacenamiento dentro de Azure donde se almacena el modelo. Por ejemplo, /var/azureml-app/azureml-models/aaa-aaa-aaa-aaa-aaa/1 ahora contiene el modelo sample_m1.pkl.

En el script de puntuación (score.py), puede cargar el modelo (en este ejemplo, sample_m1.pkl) en la función init() del script:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "sample_m1.pkl") 
    model = joblib.load(model_path) 

Implementación para varios modelos locales

Aunque la CLI de Azure, el SDK de Python y otras herramientas de cliente permiten especificar solo un modelo por implementación en la definición de la implementación, puede seguir usando varios modelos en una implementación registrando una carpeta de modelos que contenga todos los modelos como archivos o subdirectorios. Para obtener más información sobre cómo registrar los recursos, como los modelos, para que pueda especificar sus nombres y versiones registrados durante la implementación, consulte Registrar el modelo y el entorno.

En la estructura de carpeta local de ejemplo, observará que hay varios modelos en la carpeta models. Para usar estos modelos, en la implementación de YAML, especifique la ruta de acceso a la carpeta models de la siguiente manera:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: 
  path: /Downloads/multi-models-sample/models/ 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Después de crear la implementación, la variable de entorno AZUREML_MODEL_DIR apunta a la ubicación de almacenamiento dentro de Azure donde se almacenan los modelos. Por ejemplo, /var/azureml-app/azureml-models/bbb-bbb-bbb-bbb-bbb/1 ahora contiene los modelos y la estructura de archivo.

En este ejemplo, el contenido de la carpeta AZUREML_MODEL_DIR tiene este aspecto:

Recorte de pantalla que muestra la estructura de carpeta de la ubicación de almacenamiento para varios modelos.

En el script de puntuación (score.py), puede cargar los modelos en la función init(). El código siguiente carga el modelo sample_m1.pkl:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR")), "models","model_1","v1", "sample_m1.pkl ") 
    model = joblib.load(model_path) 

Para ver un ejemplo de cómo implementar varios modelos en una implementación, consulte Implementación de varios modelos en una implementación (ejemplo de la CLI) e Implementación de varios modelos en una implementación (ejemplo del SDK).

Sugerencia

Si tiene más de 1500 archivos para registrar, considere la posibilidad de comprimir los archivos o subdirectorios como .tar.gz al registrar el modelo. Para consumir los modelos, puede desempaquetar los archivos o subdirectorios en la función init() del script de puntuación. Como alternativa, al registrar los modelos, establezca la propiedad azureml.unpack en True, para desempaquetar automáticamente los archivos o subdirectorios. En cualquier caso, el desempaquetado de los archivos se produce una vez en la fase de inicialización.

Implementar modelos registrados en el área de trabajo

Puede usar modelos registrados en la definición de implementación haciendo referencia a sus nombres en el YAML de implementación. Por ejemplo, la siguiente configuración de YAML de implementación especifica el nombre registrado model como azureml:local-multimodel:3:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json 
name: blue 
endpoint_name: my-endpoint 
model: azureml:local-multimodel:3 
code_configuration: 
  code: ../../model-1/onlinescoring/ 
  scoring_script: score.py 
environment:  
  conda_file: ../../model-1/environment/conda.yml 
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest 
instance_type: Standard_DS3_v2 
instance_count: 1 

Para este ejemplo, considere que local-multimodel:3 contiene los siguientes artefactos de modelo, que se pueden ver desde la pestaña Modelos en el Estudio de Azure Machine Learning:

Recorte de pantalla de una estructura de carpeta que muestra los artefactos de modelo de un modelo registrado.

Después de crear la implementación, la variable de entorno AZUREML_MODEL_DIR apunta a la ubicación de almacenamiento dentro de Azure donde se almacenan los modelos. Por ejemplo, /var/azureml-app/azureml-models/local-multimodel/3 contiene los modelos y la estructura de archivo. AZUREML_MODEL_DIR apunta a la carpeta que contiene la raíz de los artefactos del modelo. En función de este ejemplo, el contenido de la carpeta AZUREML_MODEL_DIR tiene este aspecto:

Captura de pantalla de la estructura de carpetas que muestra varios modelos.

En el script de puntuación (score.py), puede cargar los modelos en la función init(). Por ejemplo, cargue el modelo diabetes.sav:

def init(): 
    model_path = os.path.join(str(os.getenv("AZUREML_MODEL_DIR"), "models", "diabetes", "1", "diabetes.sav") 
    model = joblib.load(model_path) 

Implementar modelos disponibles en el catálogo de modelo

Para cualquier modelo del catálogo de modelo, excepto para los modelos que se encuentran en la colección de Azure OpenAI, puede usar el id. de modelo que se muestra en la tarjeta del modelo para la implementación. Los id. de modelo tienen el formato azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. Por ejemplo, un id. de modelo para el modelo Meta Llama 3-8 B Instruct es azureml://registries/azureml-meta/models/Meta-Llama-3-8B-Instruct/versions/2. Algunas tarjetas de modelo incluyen cuadernos de ejemplo que muestran cómo usar el id. de modelo para la implementación.

Implementar modelos que están disponibles en el registro de la organización

Cada modelo del registro de una organización tiene un id. de modelo del formulario azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}. También puede optar por usar entornos registrados en el mismo registro.