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

El tipo de máquina predeterminado, mls1-c1-m2, generalmente está 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á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 (predeterminado) Disponible de manera general 1 2 No Todos los tipos de artefactos del modelo que admite AI Platform Prediction 500 MB
mls1-c4-m2 Versión Beta 4 2 No Todos los tipos de artefactos del modelo que admite AI Platform Prediction 500 MB
n1-standard-2 Versión Beta 2 7.5 Solo el modelo guardado de TensorFlow 2 GB
n1-standard-4 Versión Beta 4 15 Solo el modelo guardado de TensorFlow 2 GB
n1-standard-8 Versión Beta 8 30 Solo el modelo guardado de TensorFlow 2 GB
n1-standard-16 Versión Beta 16 60 Solo el modelo guardado de TensorFlow 2 GB
n1-standard-32 Versión Beta 32 120 Solo el modelo guardado de TensorFlow 2 GB
n1-highmem-2 Versión Beta 2 13 Solo el modelo guardado de TensorFlow 2 GB
n1-highmem-4 Versión Beta 4 26 Solo el modelo guardado de TensorFlow 2 GB
n1-highmem-8 Versión Beta 8 52 Solo el modelo guardado de TensorFlow 2 GB
n1-highmem-16 Versión Beta 16 104 Solo el modelo guardado de TensorFlow 2 GB
n1-highmem-32 Versión Beta 32 208 Solo el modelo guardado de TensorFlow 2 GB
n1-highcpu-2 Versión Beta 2 1.8 Solo el modelo guardado de TensorFlow 2 GB
n1-highcpu-4 Versión Beta 4 3.6 Solo el modelo guardado de TensorFlow 2 GB
n1-highcpu-8 Versión Beta 8 7.2 Solo el modelo guardado de TensorFlow 2 GB
n1-highcpu-16 Versión Beta 16 14.4 Solo el modelo guardado de TensorFlow 2 GB
n1-highcpu-32 Versión Beta 32 28.8 Solo el modelo guardado de TensorFlow 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.

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

GCP Console

En la página Crear versión, abre la lista desplegable Tipo de máquina y selecciona Tipos de máquina con AI Platform > CPU de cuatro núcleos (BETA).

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 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 1.14 \
  --python-version 3.5 \
  --framework ml-framework-name \
  --machine-type mls1-c4-m2

Python

En este ejemplo, se utiliza 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 tus artefactos del modelo a Cloud Storage y crear un recurso del modelo, envía una solicitud al método projects.models.versions.create de tu modelo y especifica el campo machineType en el cuerpo de tu solicitud:

from googleapiclient import discovery

ml = discovery.build('ml', 'v1')
request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '1.14',
    'pythonVersion': '3.5',
    '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

Si usas uno de los tipos de máquina (N1) de Compute Engine para la versión de tu modelo, puedes agregar GPU de manera opcional a fin de acelerar cada nodo de predicción. Solo puedes usar un tipo de GPU para tu versión de 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 muestran las GPU disponibles para la predicción en línea y cuántos de cada tipo de GPU puedes usar con cada tipo de máquina 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. Los tipos de máquina heredados (MLS1) no son compatibles con las GPU.

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 un tipo de máquina n1-highmem-32 con 4 GPU NVIDIA Tesla K80 para cada uno de los nodos de predicción de la versión del modelo:

GCP Console

En la página Crear versión, abre la lista desplegable Tipo de máquina y selecciona Memoria alta > n1-highmem-32. En el campo Tipo de acelerador, selecciona NVIDIA_TESLA_K80. En el campo Recuento de aceleradores, seleccione 4.

gcloud

Después de subir el modelo guardado de TensorFlow a Cloud Storage y crear un recurso del modelo en la región us-central1, crea una versión con el componente Beta de la herramienta de línea de comandos gcloud y especifica el marcador --accelerator:

gcloud beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 1.14 \
  --python-version 3.5 \
  --framework tensorflow \
  --machine-type n1-highmem-32 \
  --accelerator 4,nvidia-tesla-k80

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

Python

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

Una vez que subiste tu modelo guardado de TensorFlow a Cloud Storage y creaste un recurso del modelo en la región us-central1, envía una solicitud al método projects.models.versions.create de tu modelo y especifica los campos machineType y acceleratorConfig en el cuerpo de tu solicitud:

from googleapiclient import discovery

ml = discovery.build('ml', 'v1')
request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '1.14',
    'pythonVersion': '3.5',
    'framework': 'TENSORFLOW',
    'machineType': 'mls1-c4-m2',
    'acceleratorConfig': {
      'count': 4,
      'type': 'NVIDIA_TESLA_K80'
    }
}
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áquina

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áquina (N1) y heredados (MLS1) de Compute Engine:

Tipos de máquina (N1) de Compute Engine Tipos de máquina heredados (MLS1)
Regiones us-central1 Todas las regiones de AI Platform Prediction
Tipos de artefactos del AA Modelos guardados de TensorFlowTodos los artefactos del modelo de AI Platform
Versiones del entorno de ejecución 1.11 o posterior Todas las versiones de entorno de ejecución de AI Platform disponibles
Tamaño máximo del modelo 2 GB 500 MB
Registros 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

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

Disponibilidad regional

Actualmente, los tipos de máquina (N1) de Compute Engine solo están disponibles cuando implementas tu modelo en la región us-central1.

Puedes usar tipos de máquina heredados (MLS1) en todas las regiones disponibles para la predicción en línea.

Soporte de predicción por lotes

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

Asistencia de marco de trabajo del AA

Si utilizas uno de los tipos de máquina (N1) de Compute Engine, debes crear tu versión del modelo con un modelo guardado de TensorFlow y especificar TENSORFLOW para el campo framework.

Para los tipos de máquina heredados (MLS1), puedes usar cualquier tipo de máquina de modelo de aprendizaje automático exportado compatible con AI Platform Prediction.

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

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áquina (N1) de Compute Engine no admiten un registro de transmisión de los nodos stderr y 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.

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 utilizas un tipo de máquina (N1) o un tipo de máquina heredado (MLS1) de Compute Engine.

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 de tu 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 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 borrar la cantidad de nodos, debes eliminar la versión y crear una nueva.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.