Elige un tipo de máquina para la predicción en línea

AI Platform Prediction asigna nodos para manejar las solicitudes de predicción en línea enviadas a una versión del modelo. Cuando implementas una versión del modelo, puedes personalizar el tipo de máquina virtual que utiliza AI Platform Prediction para estos nodos.

Los tipos de máquinas se diferencian de varias maneras:

Cuando seleccionas un tipo de máquina con más recursos de procesamiento, puedes entregar predicciones con menor latencia o manejar más solicitudes de predicción al mismo tiempo.

Tipos de máquina disponibles

Los tipos de máquina (N1) de Compute Engine y el tipo de máquina mls1-c1-m2 suelen estar disponibles para la predicción en línea. El tipo de máquina mls1-c4-m2 está disponible en versión Beta.

En la siguiente tabla, se comparan los tipos de máquina disponibles:

Nombre Disponibilidad CPU virtuales Memoria (GB) ¿Es compatible con GPU? Asistencia de marco de trabajo del AA Tamaño máximo del modelo
mls1-c1-m2 (predeterminada) Disponible de manera general 1 2 No TensorFlow, XGBoost, scikit-learn (incluidas las canalizaciones con código personalizado), rutinas de predicción personalizadas 500 MB
mls1-c4-m2 Beta 4 2 No TensorFlow, XGBoost, scikit-learn (incluidas las canalizaciones con código personalizado), rutinas de predicción personalizadas 500 MB
n1-standard-2 Disponible de manera general 2 7.5 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-4 Disponible de manera general 4 15 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-8 Disponible de manera general 8 30 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-16 Disponible de manera general 16 60 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-32 Disponible de manera general 32 120 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-2 Disponible de manera general 2 13 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-4 Disponible de manera general 4 26 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-8 Disponible de manera general 8 52 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-16 Disponible de manera general 16 104 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-32 Disponible de manera general 32 208 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-2 Disponible de manera general 2 1.8 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-4 Disponible de manera general 4 3.6 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-8 Disponible de manera general 8 7.2 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-16 Disponible de manera general 16 14.4 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-32 Disponible de manera general 32 28.8 TensorFlow, XGBoost y scikit-learn 2 GB

Obtén información sobre los precios para cada tipo de máquina. Obtén más información acerca de las especificaciones detalladas de los tipos de máquina (N1) de Compute Engine en la documentación de Compute Engine.

Especifica un tipo de máquina

Puedes especificar una opción de tipo de máquina cuando creas una versión del modelo. Si no especificas un tipo de máquina, la versión de tu modelo usará mls1-c1-m2 de forma predeterminada para sus nodos.

En las siguientes instrucciones, se resalta cómo especificar un tipo de máquina cuando creas una versión del modelo. Utilizan el tipo de máquina n1-standard-4 como ejemplo. Para obtener información sobre el proceso completo de creación de una versión del modelo, lee la guía para implementar modelos.

Cloud Console

En la página Crear versión, abre la lista desplegable Tipo de máquina y selecciona Estándar > n1-standard-4.

gcloud

Después de subir tus artefactos del modelo en Cloud Storage y crear un recurso del modelo, puedes crear una versión del modelo que use el tipo de máquina n1-standard-4:

gcloud ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.2 \
  --python-version 3.7 \
  --framework ml-framework-name \
  --machine-type n1-standard-4

Python

En este ejemplo, se usa la biblioteca cliente de las API de Google para Python. Antes de ejecutar la siguiente muestra de código, debes configurar la autenticación.

Después de subir los artefactos del modelo a Cloud Storage y crear un recurso del modelo, envía una solicitud al método projects.models.versions.create del modelo y especifica el campo machineType en el cuerpo de la solicitud:

from googleapiclient import discovery

ml = discovery.build('ml', 'v1')
request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.2',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
    parent='projects/project-name/models/model_name',
    body=request_dict
)
response = request.execute()

Usa GPU para la predicción en línea

Para algunas opciones de configuración, puedes agregar GPU de manera opcional a fin de acelerar cada nodo de predicción. Si quieres usar las GPU, debes tener en cuenta varios requisitos:

  • Solo puedes usar las GPU con tipos de máquinas (N1) de Compute Engine. Los tipos de máquinas heredados (MLS1) no son compatibles con las GPU.
  • Solo puedes usar las GPU cuando implementas un modelo guardado de TensorFlow. No puedes usar las GPU para los modelos XGBoost o scikit-learn.
  • La disponibilidad de cada tipo de GPU varía según la región que uses para el modelo. Obtén más información sobre qué tipos de GPU están disponibles en qué regiones.
  • Solo puedes usar un tipo de GPU para la versión del modelo, y existen limitaciones en la cantidad de GPU que puedes agregar según el tipo de máquina que uses. En la siguiente tabla, se describen estas limitaciones.

En la siguiente tabla, se muestran las GPU disponibles para la predicción en línea y cuántas GPU de cada tipo puedes usar con cada tipo de máquina de Compute Engine:

Números válidos de GPU para cada tipo de máquina
Tipo de máquina NVIDIA Tesla K80 NVIDIA Tesla P4 NVIDIA Tesla P100 NVIDIA Tesla T4 NVIDIA Tesla V100
n1-standard-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highmem-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highcpu-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 4, 8 2, 4 2, 4 2, 4 4, 8

Las GPU son opcionales y también incurren en costos adicionales.

Especifica las GPU

Especifica las GPU cuando crees una versión del modelo. AI Platform Prediction asigna el número y el tipo de GPU que especifiques para cada nodo de predicción. Debes escalar de forma manual los nodos de predicción para tu versión cuando uses GPU. Luego, puedes cambiar cuántos nodos se ejecutan, pero actualmente no puedes usar el ajuste de escala automático con GPU.

En las siguientes instrucciones, se muestra cómo especificar GPU para la predicción en línea mediante la creación de una versión del modelo que se ejecuta en dos nodos de predicción. El nodo usa el tipo de máquina n1-standard-4 con una GPU NVIDIA Tesla T4.

En los ejemplos, se supone que ya subiste un modelo guardado de TensorFlow a Cloud Storage y que creaste un recurso de modelo en una región que admite GPU.

Cloud Console

Sigue la guía para crear una versión del modelo. En la página Crear versión, especifica las siguientes opciones:

  1. En la lista desplegable Tipo de máquina, selecciona Estándar > n1-standard-4.
  2. En la lista desplegable Tipo de acelerador, selecciona NVIDIA_TESLA_T4.
  3. En la lista desplegable Recuento de aceleradores, selecciona 1.
  4. En la lista desplegable Escalamiento, selecciona Ajuste de escala manual.
  5. En el campo Cantidad de nodos, ingresa 2.

gcloud

Primero, crea un archivo de configuración YAML (llamado config.yaml de forma convencional) a fin de configurar el ajuste de escala manual para la versión. AI Platform Prediction usa el ajuste de escala automático de forma predeterminada, lo cual no se puede anular con marcas de línea de comandos. En el siguiente archivo de configuración de ejemplo, se especifica que deseas que la versión del modelo use dos nodos de predicción:

config.yaml

manualScaling:
  nodes: 2

De forma opcional, puedes proporcionar parámetros de versión adicionales en el archivo de configuración, pero debes tener en cuenta que cualquier marca de línea de comandos que proporciones a la herramienta de gcloud anulará los parámetros del archivo.

A continuación, usa la herramienta de gcloud y el archivo de configuración para crear una versión del modelo. En este ejemplo, la versión se ejecuta en un nodo de predicción n1-standard-4 que usa una GPU NVIDIA Tesla T4. En el ejemplo, se usa el extremo regional us-central1:

gcloud ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.2 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --config config.yaml

Ten en cuenta que el nombre del acelerador se especifica en minúsculas con guiones entre las palabras.

Python

En este ejemplo, se usa la biblioteca cliente de las API de Google para Python. Antes de ejecutar la siguiente muestra de código, debes configurar la autenticación.

En el ejemplo, se usa el extremo regional us-central1.

Envía una solicitud al método projects.models.versions.create del modelo y especifica los campos machineType, acceleratorConfig y manualScaling en el cuerpo de la solicitud:

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.2',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'manualScaling': {
      'nodes': 2
    }
}
request = ml.projects().models().versions().create(
    parent='projects/project-name/models/model_name',
    body=request_dict
)
response = request.execute()

Ten en cuenta que el nombre del acelerador se especifica en mayúscula con guiones bajos entre las palabras.

Diferencias entre los tipos de máquinas

Además de proporcionar diferentes cantidades de recursos de procesamiento, los tipos de máquina también varían en su compatibilidad con ciertas funciones de AI Platform Prediction. En la siguiente tabla, se proporciona una descripción general de las diferencias entre los tipos de máquinas (N1) y heredados (MLS1) de Compute Engine:

Tipos de máquinas (N1) de Compute Engine Tipos de máquina heredados (MLS1)
Regiones Todas las regiones de extremos regionales Todas las regiones de extremos globales
Tipos de artefactos del AA
Versiones del entorno de ejecución 1.11 o posterior Todas las versiones de entorno de ejecución de AI Platform disponibles
Compatibilidad con contenedores personalizados No
Tamaño máximo del modelo 2 GB 500 MB
Ajuste de escala automático Cantidad mínima de nodos = 1 Cantidad mínima de nodos = 0
Ajuste de escala manual Se puede actualizar la cantidad de nodos No se puede actualizar la cantidad de nodos después de crear la versión del modelo
Asistencia de GPU Sí (solo en TensorFlow) No
Compatibilidad con explicaciones de IA Sí (solo en TensorFlow) No
Compatibilidad con los Controles del servicio de VPC No
Cobertura del ANS para los tipos de máquinas de disponibilidad general Sí, en algunos casos.

En las siguientes secciones, se proporcionan explicaciones detalladas sobre las diferencias entre los tipos de máquina.

Disponibilidad regional

Los tipos de máquinas (N1) de Compute Engine están disponibles cuando implementas un modelo en un extremo regional. En la actualidad, están disponibles en los extremos regionales us-central1, europe-west4 y asia-east1. Cuando usas un tipo de máquina (N1) de Compute Engine, no puedes implementar tu modelo en el extremo global.

Cuando escalas una versión de modelo que usa tipos de máquina (N1) de Compute Engine a dos o más nodos de predicción, los nodos se ejecutan en varias zonas dentro de la misma región. Esto garantiza una disponibilidad continua si hay una interrupción en una de las zonas. Obtén más información en la sección de escalamiento de este documento.

Ten en cuenta que la disponibilidad de GPU para los tipos de máquinas (N1) de Compute Engine también varía según la región.

Los tipos de máquinas heredados (MLS1) están disponibles en el extremo global en muchas regiones. Los tipos de máquina heredados (MLS1) no están disponibles en extremos regionales.

Compatibilidad con la predicción por lotes

Las versiones del modelo que usan el tipo de máquina mls1-c1-m2 admiten la predicción por lotes. Las versiones del modelo que usan otros tipos de máquinas no admiten la predicción por lotes.

Asistencia del framework de AA

Si usas uno de los tipos de máquinas (N1) de Compute Engine, puedes crear una versión del modelo con todos los artefactos del modelo descritos en la guía de exportación de modelos de predicción, excepto dos:

Para tipos de máquinas heredados (MLS1), puedes usar cualquier tipo de artefacto de modelo compatible con AI Platform Prediction, incluida una canalización de scikit-learn con código personalizado o una rutina de predicción personalizada.

Compatibilidad con la versión del entorno de ejecución

Si usas un tipo de máquina (N1) de Compute Engine, debes usar la versión 1.11 o posterior del entorno de ejecución para la versión de tu modelo.

Si usas un tipo de máquina heredado (MLS1), puedes usar cualquier versión disponible del entorno de ejecución de AI Platform.

Compatibilidad con contenedores personalizados

Para usar un contenedor personalizado a fin de entregar predicciones en línea, debes usar un tipo de máquina (N1) de Compute Engine.

Tamaño máximo del modelo

Los artefactos del modelo que proporciones cuando crees una versión del modelo deben tener un tamaño de archivo total inferior a 500 MB si usas un tipo de máquina heredado (MLS1). El tamaño total del archivo puede ser de hasta 2 GB si utilizas un tipo de máquina (N1) de Compute Engine.

Predicciones de registro

Para los tipos de máquina (N1) de Compute Engine, el registro de la consola está en versión Beta. Para los tipos de máquina heredados (MLS1), el registro en la consola suele estar disponible.

Escala nodos de predicción

El ajuste de escala automático y manual de los nodos de predicción tienen restricciones diferentes en función de si usas un tipo de máquina (N1) de Compute Engine o un tipo de máquina heredado (MLS1).

Ajuste de escala automático

Si usas un tipo de máquina (N1) de Compute Engine con ajuste de escala automático, la versión del modelo siempre debe tener al menos un nodo en ejecución. En otras palabras, el campo autoScaling.minNodes de la versión tiene como valor predeterminado 1 y no puede ser menor que 1. Si configuras autoScaling.minNodes en 2 o más, los nodos de predicción se ejecutan en varias zonas dentro de la misma región. Esto garantiza una disponibilidad continua si hay una interrupción en una de las zonas.

Ten en cuenta que si asignas más CPU virtuales o RAM que las que necesita el modelo de aprendizaje automático, es posible que el ajuste de escala automático no funcione de forma adecuada. Esto puede causar problemas con el rendimiento del modelo. Experimenta con diferentes tipos de máquinas para el modelo a fin de asegurarte de no proporcionar demasiados recursos de procesamiento.

Si usas GPU para la versión de tu modelo , no puedes usar el ajuste de escala automático. Debes usar el ajuste de escala manual.

Si utilizas un tipo de máquina heredado (MLS1), la versión de tu modelo puede escalar a cero nodos cuando no reciba tráfico. (autoScaling.minNodes se puede establecer en 0, y encuentra en ese valor de forma predeterminada).

Ajuste de escala manual

Si usas un tipo de máquina (N1) de Compute Engine con ajuste de escala manual, puedes actualizar la cantidad de nodos de predicción que se ejecutan en cualquier momento mediante el método projects.models.versions.patch de la API. Si configuras el campo manualScaling.nodes en 2 o más, los nodos de predicción se ejecutan en varias zonas dentro de la misma región. Esto garantiza una disponibilidad continua si hay una interrupción en una de las zonas.

Si usas un tipo de máquina heredado (MLS1) con ajuste de escala manual, no podrás actualizar la cantidad de nodos de predicción después de crear la versión del modelo. Si deseas cambiar la cantidad de nodos, debes borrar la versión y crear una nueva.

Asistencia para los Controles del servicio de VPC

Si usas los Controles del servicio de VPC para proteger AI Platform Prediction, no puedes crear versiones que usen tipos de máquinas (MLS1) heredadas. Debes usar los tipos de máquina (N1) de Compute Engine.