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 (valor predeterminado en el extremo global) 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 (valor predeterminado en los extremos regionales) Disponible de manera general 2 7.5 TensorFlow, XGBoost y scikit-learn 10 GB
n1-standard-4 Disponible de manera general 4 15 TensorFlow, XGBoost y scikit-learn 10 GB
n1-standard-8 Disponible de manera general 8 30 TensorFlow, XGBoost y scikit-learn 10 GB
n1-standard-16 Disponible de manera general 16 60 TensorFlow, XGBoost y scikit-learn 10 GB
n1-standard-32 Disponible de manera general 32 120 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highmem-2 Disponible de manera general 2 13 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highmem-4 Disponible de manera general 4 26 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highmem-8 Disponible de manera general 8 52 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highmem-16 Disponible de manera general 16 104 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highmem-32 Disponible de manera general 32 208 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highcpu-2 Disponible de manera general 2 1.8 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highcpu-4 Disponible de manera general 4 3.6 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highcpu-8 Disponible de manera general 8 7.2 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highcpu-16 Disponible de manera general 16 14.4 TensorFlow, XGBoost y scikit-learn 10 GB
n1-highcpu-32 Disponible de manera general 32 28.8 TensorFlow, XGBoost y scikit-learn 10 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á n1-standard-2 de forma predeterminada si utilizas un extremo regional y mls1-c1-m2, si estás usando el extremo global.

Las siguientes instrucciones resaltan 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.

Consola de Google Cloud

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.11 \
  --python-version 3.7 \
  --framework ML_FRAMEWORK_NAME \
  --region us-central1 \
  --machine-type n1-standard-4

Python

En este ejemplo, se usa la biblioteca cliente de la 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 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.11',
    '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. Puedes escalar de forma automática (vista previa) o escalar de forma manual (GA) los nodos de predicción, pero la cantidad de GPU que usa cada nodo se fija cuando creas la versión del modelo. A menos que tengas un caso de uso avanzado, te recomendamos configurar una GPU en cada nodo de predicción. En otras palabras, establece el recuento de aceleradores en 1.

En las siguientes instrucciones, se muestra cómo especificar las GPU para la predicción en línea mediante la creación de una versión del modelo que se ejecute en al menos dos nodos de predicción en cualquier momento. Cada nodo usa el tipo de máquina n1-standard-4 y 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.

Consola de Google Cloud

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 Escalamiento, selecciona Ajuste de escala automático.
  2. En el campo Cantidad mínima de nodos, ingresa 2.
  3. En la lista desplegable Tipo de máquina, selecciona Estándar > n1-standard-4.
  4. En la lista desplegable Tipo de acelerador, selecciona NVIDIA_TESLA_T4.
  5. En la lista desplegable Recuento de aceleradores, selecciona 1.

gcloud

Usa la CLI de gcloud para crear una versión del modelo. En este ejemplo, la versión se ejecuta en nodos de predicción n1-standard-4, y cada uno usa una GPU NVIDIA Tesla T4. AI Platform Prediction escala automáticamente la cantidad de nodos de predicción a un número entre 2 y 4, según el uso de la GPU en cualquier momento dado. En el ejemplo, se usa el extremo regional us-central1.

gcloud beta ai-platform versions create VERSION_NAME \
  --model MODEL_NAME \
  --origin gs://model-directory-uri \
  --runtime-version 2.11 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --min-nodes 2 \
  --max-nodes 4 \
  --metric-targets gpu-duty-cycle=60

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 la 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.11',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'autoScaling': {
      'minNodes': 2,
      'maxNodes': 4,
      'metrics': [
        {
          'name': 'GPU_DUTY_CYCLE',
          'target': 60
        }
      ]
    }
}
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 de 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 10 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. 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 del 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.

Soporte de 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 de entorno de ejecución

Si usas un tipo de máquina (N1) de Compute Engine, debes usar la versión 1.11 o versiones posteriores del entorno de ejecución para la versión del 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 10 GB si utilizas un tipo de máquina (N1) de Compute Engine.

Predicciones de registro

En el caso de los tipos de máquina (N1) de Compute Engine, el registro de la consola se encuentra en vista previa. En el caso de los tipos de máquina heredadas (MLS1), el registro de la consola está en fase de disponibilidad general.

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 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 se establece en 0 en predeterminado. El escalamiento a cero puede reducir los costos cuando la versión del modelo no recibe solicitudes de predicción. Sin embargo, también puede generar latencia o errores durante cualquier período en el que AI Platform Prediction asigne un nodo nuevo para controlar las solicitudes después de un período sin nodos. Obtén más información sobre el escalamiento a cero.

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.