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áquinas disponibles

El tipo de máquina predeterminado, mls1-c1-m2, suele estar disponible para la predicción en línea. Como alternativa, puedes implementar una versión del modelo con uno de los demás tipos de máquina, que están disponibles en versión Beta.

En la siguiente tabla, se comparan los tipos de máquinas 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 Beta 2 7.5 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-4 Beta 4 15 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-8 Beta 8 30 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-16 Beta 16 60 TensorFlow, XGBoost y scikit-learn 2 GB
n1-standard-32 Beta 32 120 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-2 Beta 2 13 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-4 Beta 4 26 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-8 Beta 8 52 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-16 Beta 16 104 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highmem-32 Beta 32 208 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-2 Beta 2 1.8 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-4 Beta 4 3.6 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-8 Beta 8 7.2 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-16 Beta 16 14.4 TensorFlow, XGBoost y scikit-learn 2 GB
n1-highcpu-32 Beta 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 mls1-c4-m2 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 Tipos de máquinas con AI Platform > CPU de cuatro núcleos (BETA).

gcloud

Después de subir los 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 mls1-c4-m2 mediante el uso del componente Beta de la herramienta de línea de comandos de gcloud:

gcloud beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.1 \
  --python-version 3.7 \
  --framework ml-framework-name \
  --machine-type mls1-c4-m2

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.1',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'mls1-c4-m2'
}
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. Más adelante, puedes cambiar cuántos nodos se ejecutan; sin embargo, por el momento, no puedes usar el ajuste de escala automático con GPU.

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 ejecuta en un solo nodo 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 1.

gcloud

Crea una versión mediante el componente Beta de la herramienta de línea de comandos 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 un solo nodo de predicción:

config.yaml

manualScaling:
  nodes: 1

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 beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.1 \
  --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.1',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'manualScaling': {
      'nodes': 1
    }
}
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 del entorno de ejecución de AI Platform disponibles
Tamaño máximo del modelo 2 GB 500 MB
Logging No hay registros de transmisión Todos los tipos de registro
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

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

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.

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 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.

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

Los tipos de máquinas (N1) de Compute Engine no admiten un registro de transmisión de los nodos stderr ni transmisiones stdout de la predicción.

Los tipos de máquina heredados (MLS1) admiten todos los tipos de registro de predicción en línea.

Escalamiento de 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.

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 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.