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:
- Cantidad de CPU virtual por nodo
- Cantidad de memoria por nodo
- Compatibilidad con GPU, que puedes agregar a algunos tipos de máquinas
- Asistencia para ciertas funciones de AI Platform Prediction
- Precios
- Cobertura del Acuerdo de Nivel de Servicio (ANS)
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 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-standard-4 |
Disponible de manera general | 4 | 15 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-standard-8 |
Disponible de manera general | 8 | 30 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-standard-16 |
Disponible de manera general | 16 | 60 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-standard-32 |
Disponible de manera general | 32 | 120 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highmem-2 |
Disponible de manera general | 2 | 13 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highmem-4 |
Disponible de manera general | 4 | 26 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highmem-8 |
Disponible de manera general | 8 | 52 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highmem-16 |
Disponible de manera general | 16 | 104 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highmem-32 |
Disponible de manera general | 32 | 208 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highcpu-2 |
Disponible de manera general | 2 | 1.8 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highcpu-4 |
Disponible de manera general | 4 | 3.6 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highcpu-8 |
Disponible de manera general | 8 | 7.2 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highcpu-16 |
Disponible de manera general | 16 | 14.4 | Sí | TensorFlow, XGBoost y scikit-learn | 10 GB |
n1-highcpu-32 |
Disponible de manera general | 32 | 28.8 | Sí | 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:
- En la lista desplegable Escalamiento, selecciona Ajuste de escala automático.
- En el campo Cantidad mínima de nodos, ingresa
2
. - En la lista desplegable Tipo de máquina, selecciona Estándar > n1-standard-4.
- En la lista desplegable Tipo de acelerador, selecciona NVIDIA_TESLA_T4.
- 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 | Sí | 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 | Sí | No |
Cobertura del ANS para los tipos de máquinas de disponibilidad general | Sí, en algunos casos. | Sí |
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:
- No puedes usar una canalización de scikit-learn con código personalizado.
- No puedes usar una rutina de predicción personalizada.
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.