Recurso de REST: projects.models.versions

Recurso: Version

Representa una versión del modelo.

Cada versión es un modelo entrenado implementado en la nube, listo para manejar las solicitudes de predicción. Un modelo puede tener varias versiones. Puedes obtener información sobre todas las versiones de un modelo determinado si llamas a projects.models.versions.list.

Representación JSON

{
  "name": string,
  "description": string,
  "isDefault": boolean,
  "deploymentUri": string,
  "createTime": string,
  "lastUseTime": string,
  "runtimeVersion": string,
  "machineType": string,
  "state": enum (State),
  "errorMessage": string,
  "packageUris": [
    string
  ],
  "labels": {
    string: string,
    ...
  },
  "etag": string,
  "framework": enum (Framework),
  "pythonVersion": string,
  "acceleratorConfig": {
    object (AcceleratorConfig)
  },
  "serviceAccount": string,
  "requestLoggingConfig": {
    object (RequestLoggingConfig)
  },
  "explanationConfig": {
    object (ExplanationConfig)
  },

  // Union field scaling can be only one of the following:
  "autoScaling": {
    object (AutoScaling)
  },
  "manualScaling": {
    object (ManualScaling)
  }
  // End of list of possible types for union field scaling.
  "predictionClass": string
}
Campos
name

string

Obligatorio. El nombre que se especificó para la versión cuando se creó.

El nombre de la versión debe ser único dentro del modelo en el que se creó.

description

string

Opcional. La descripción que se especificó para la versión cuando se creó.

isDefault

boolean

Solo salida. Si es verdadero, esta versión se usará para controlar las solicitudes de predicción que no especifican una versión.

Puedes cambiar la versión predeterminada mediante una llamada a projects.methods.versions.setDefault.

deploymentUri

string

Obligatorio. La ubicación de Cloud Storage del modelo entrenado que se usó para crear la versión. Consulta la guía de implementación de modelos para obtener más información.

Cuando pasas el recurso Version a projects.models.versions.create, el servicio del modelo usa la ubicación especificada como la fuente del modelo. Una vez implementada, la versión del modelo se aloja en el servicio de predicción, por lo que esta ubicación es útil solo como un registro histórico. La cantidad total de archivos de modelo no puede exceder los 1000.

createTime

string (Timestamp format)

Solo salida. La hora en la que se creó la versión.

lastUseTime

string (Timestamp format)

Solo salida. La hora en la que se usó la versión por última vez para la predicción.

runtimeVersion

string

Obligatorio. La versión del entorno de ejecución de AI Platform que se debe usar en esta implementación.

Para obtener más información, consulta la lista de versiones del entorno de ejecución y cómo administrar las versiones del entorno de ejecución.

machineType

string

Opcional. El tipo de máquina en la que se entregará el modelo. Por el momento, solo se aplica al servicio de predicción en línea. Si no se especifica este campo, el valor predeterminado es mls1-c1-m2.

La predicción en línea admite los siguientes tipos de máquinas:

  • mls1-c1-m2
  • mls1-c4-m2
  • n1-standard-2
  • n1-standard-4
  • n1-standard-8
  • n1-standard-16
  • n1-standard-32
  • n1-highmem-2
  • n1-highmem-4
  • n1-highmem-8
  • n1-highmem-16
  • n1-highmem-32
  • n1-highcpu-2
  • n1-highcpu-4
  • n1-highcpu-8
  • n1-highcpu-16
  • n1-highcpu-32

mls1-c1-m2 está disponible de forma general. Todos los demás tipos de máquinas están disponibles en versión Beta. Obtén más información sobre las diferencias entre los tipos de máquinas.

state

enum (State)

Solo salida. El estado de una versión.

errorMessage

string

Solo salida. Los detalles de una falla o una cancelación.

packageUris[]

string

Opcional. Rutas de Cloud Storage (gs://…) de paquetes para rutinas de predicción personalizadas o canalizaciones de scikit-learn con código personalizado.

Para una rutina de predicción personalizada, uno de estos paquetes debe contener la clase Predictor (consulta predictionClass). Además, incluye cualquier dependencia que se use para la canalización de scikit-learn o de Predictor que no se incluya en la versión del entorno de ejecución seleccionada.

Si especificas este campo, también debes establecer runtimeVersion en 1.4 o superior.

labels

map (key: string, value: string)

Opcional. Una o más etiquetas que puedes agregar para organizar las versiones de los modelos. Cada etiqueta es un par clave-valor, en el que la clave y el valor son strings arbitrarias que suministras. Para obtener más información, consulta la documentación sobre el uso de etiquetas.

Un objeto que contiene una lista de pares "key": value. Ejemplo: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

etag

string (bytes format)

etag se usa para el control de simultaneidad optimista a fin de evitar que las actualizaciones simultáneas de un modelo se reemplacen entre sí. Se recomienda de manera encarecida que los sistemas usen una etag en el ciclo de lectura, modificación y escritura para realizar actualizaciones de modelos a fin de evitar condiciones de carrera. Se muestra una etag en la respuesta a versions.get. Se espera que los sistemas incluyan esa etag en la solicitud a versions.patch para garantizar que el cambio se aplique al modelo como está previsto.

String codificada en base64.

framework

enum (Framework)

Opcional. El framework de aprendizaje automático que AI Platform usa para entrenar esta versión del modelo. Los valores posibles son TENSORFLOW, SCIKIT_LEARN y XGBOOST. Si no especificas un framework, AI Platform analizará los archivos de deploymentUri para determinar un framework. Si eliges SCIKIT_LEARN o XGBOOST, también debes establecer la versión del entorno de ejecución del modelo en 1.4 o superior.

No especifiques un framework si estás implementando una rutina de predicción personalizada.

Si especificas un tipo de máquina (N1) de Compute Engine en el campo machineType, debes especificar TENSORFLOW para el framework.

pythonVersion

string

Obligatorio. La versión de Python que se usa en la predicción.

Las siguientes versiones de Python están disponibles:

  • Python 3.7 está disponible cuando runtimeVersion se establece en “1.15” o posterior.
  • Python 3.5 está disponible cuando runtimeVersion se establece en una versión de “1.4” a “1.14”.
  • Python 2.7 está disponible cuando runtimeVersion se establece en “1.15” o anterior.

Obtén más información sobre las versiones de Python disponibles para cada versión del entorno de ejecución.

acceleratorConfig

object (AcceleratorConfig)

Opcional. Configuración del acelerador a fin de usar GPU para la predicción en línea (Beta) Especifica este campo solo si indicaste un tipo de máquina (N1) de Compute Engine en el campo machineType. Obtén más información sobre cómo usar GPU para la predicción en línea.

serviceAccount

string

Opcional. Especifica la cuenta de servicio para el control de acceso a los recursos.

requestLoggingConfig

object (RequestLoggingConfig)

Opcional. Solo especifica este campo en una solicitud projects.models.versions.patch. Especificarlo en una solicitud projects.models.versions.create no tiene ningún efecto.

Configura el registro del par de solicitud-respuesta de las predicciones de este recurso Version.

explanationConfig

object (ExplanationConfig)

Opcional. Configura las funciones de explicación en la versión del modelo. Algunas funciones de explicación requieren que se carguen metadatos adicionales como parte de la carga útil del modelo.

Campo de unión scaling. Opcional. Configura las opciones de escalamiento. Si no se especifica, el valor predeterminado es auto_scaling con min_nodes de 0 (consulta el documento de AutoScaling.min_nodes). scaling puede ser solo una de las siguientes opciones:
autoScaling

object (AutoScaling)

Escala de manera automática la cantidad de nodos que se usan para entregar el modelo en función de los aumentos y las disminuciones en el tráfico. Se debe tener cuidado para aumentar el tráfico de acuerdo con la capacidad de escalamiento del modelo o, de lo contrario, comenzarán a surgir aumentos en la latencia y códigos de respuesta 429.

Ten en cuenta que no puedes usar AutoScaling si en tu versión usas GPU. En su lugar, debes especificar manualScaling.

manualScaling

object (ManualScaling)

Selecciona de forma manual la cantidad de nodos que se usarán para entregar el modelo. Por lo general, debes usar autoScaling con un minNodes adecuado, pero esta opción está disponible si deseas obtener una facturación más predecible. Ten en cuenta que las tasas de error y la latencia aumentarán si el tráfico excede esa capacidad del sistema para entregarlo según la cantidad de nodos seleccionados.

predictionClass

string

Opcional. El nombre completamente calificado (module_name.class_name) de una clase que implementa la interfaz de Predictor descrita en este campo de referencia. El módulo que contiene esta clase debe incluirse en un paquete proporcionado en el campo packageUris.

Especifica este campo solo si implementas una rutina de predicción personalizada (Beta). Si especificas este campo, debes establecer runtimeVersion en 1.4 o superior y machineType en un tipo de máquina (MLS1) heredado.

En el siguiente ejemplo de código, se proporciona la interfaz de Predictor:


class Predictor(object):
"""Interface for constructing custom predictors."""

def predict(self, instances, **kwargs):
    """Performs custom prediction.

    Instances are the decoded values from the request. They have already
    been deserialized from JSON.

    Args:
        instances: A list of prediction input instances.
        **kwargs: A dictionary of keyword args provided as additional
            fields on the predict request body.

    Returns:
        A list of outputs containing the prediction results. This list must
        be JSON serializable.
    """
    raise NotImplementedError()

@classmethod
def from_path(cls, model_dir):
    """Creates an instance of Predictor using the given path.

    Loading of the predictor should be done in this method.

    Args:
        model_dir: The local directory that contains the exported model
            file along with any additional files uploaded when creating the
            version resource.

    Returns:
        An instance implementing this Predictor class.
    """
    raise NotImplementedError()

Obtén más información sobre la interfaz de Predictor y las rutinas de predicción personalizadas.

AutoScaling

Opciones para escalar de manera automática un modelo.

Representación JSON

{
  "minNodes": integer
}
Campos
minNodes

integer

Opcional. La cantidad mínima de nodos para asignar a este modelo. Estos nodos siempre están activos, a partir del momento en el que se implementa el modelo. Por lo tanto, el costo de operar este modelo será de al menos rate * minNodes * horas desde el último ciclo de facturación, en el que rate es el costo por hora de procesamiento de nodo como se documenta en la guía de precios, incluso si no se realizan predicciones. Hay un costo adicional por cada predicción realizada.

A diferencia del ajuste de escala manual, si la carga se vuelve demasiado grande para los nodos que están activos, el servicio agregará nodos de forma automática a fin de controlar la carga aumentada y reducirá la escala cuando disminuya el tráfico, a la vez que mantendrá un mínimo de minNodes. Se te cobrará por el tiempo en el que se usen nodos adicionales.

Si no se especifica minNodes y se usa AutoScaling con un tipo de máquina (MLS1) heredado, minNodes se establece de forma predeterminada en 0; en ese caso, cuando se detiene el tráfico a un modelo (y luego de un período de inactividad), los nodos se cerrarán y no se generará ningún cargo hasta que se reanude el tráfico al modelo.

Si no se especifica minNodes y AutoScaling se usa con un tipo de máquina (N1) de Compute Engine, minNodes se establece de forma predeterminada en 1. minNodes debe ser de al menos 1 para que se pueda usar con un tipo de máquina de Compute Engine.

Ten en cuenta que no puedes usar AutoScaling si en tu versión usas GPU. En su lugar, debes usar ManualScaling.

Puedes configurar minNodes cuando crees la versión del modelo y también puedes actualizar minNodes para una versión existente:


update_body.json:
{
  'autoScaling': {
    'minNodes': 5
  }
}

Solicitud HTTP:


PATCH
https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?updateMask=autoScaling.minNodes
-d @./update_body.json

ManualScaling

Opciones para escalar de forma manual un modelo.

Representación JSON

{
  "nodes": integer
}
Campos
nodes

integer

La cantidad de nodos que se asignarán a este modelo. Estos nodos siempre están activos, a partir del momento en el que se implementa el modelo; por lo tanto, el costo de operar este modelo será proporcional a nodes * número de horas desde el último ciclo de facturación más el costo de cada predicción realizada.

State

Describe el estado de la versión.

Enums
UNKNOWN El estado de la versión no está especificado.
READY La versión está lista para la predicción.
CREATING Se está creando la versión. Las solicitudes nuevas versions.patch y versions.delete fallarán si una versión tiene el estado CREATING.
FAILED No se pudo crear la versión; posiblemente se la canceló. errorMessage debe contener los detalles de la falla.
DELETING Se está borrando la versión. Las solicitudes nuevas versions.patch y versions.delete fallarán si una versión tiene el estado DELETING.
UPDATING La versión se está actualizando. Las solicitudes nuevas versions.patch y versions.delete fallarán si una versión tiene el estado UPDATING.

Framework

Los frameworks disponibles para la predicción.

Enums
FRAMEWORK_UNSPECIFIED Framework no especificado. Asigna un valor basado en el sufijo del archivo.
TENSORFLOW Framework de Tensorflow.
SCIKIT_LEARN Framework de scikit-learn.
XGBOOST El framework de XGBoost.

RequestLoggingConfig

Configuración para registrar pares de solicitud-respuesta en una tabla de BigQuery. Las solicitudes de predicción en línea a una versión del modelo y las respuestas a estas solicitudes se convierten en strings sin procesar y se guardan en la tabla de BigQuery especificada. Los límites y las cuotas de BigQuery restringen el registro. Si tu proyecto excede los límites o las cuotas de BigQuery, AI Platform Prediction no registrará pares de solicitud-respuesta, pero entregará predicciones.

Si usas la evaluación continua, no es necesario que especifiques esta configuración de forma manual. Si configuras la evaluación continua, se habilita de manera automática el registro de los pares de solicitud-respuesta.

Representación JSON

{
  "samplingPercentage": number,
  "bigqueryTableName": string
}
Campos
samplingPercentage

number

Porcentaje de solicitudes que se registran, expresado como una fracción de 0 a 1. Por ejemplo, si deseas registrar el 10% de las solicitudes, ingresa 0.1. La ventana de muestreo es la vida útil de la versión del modelo. La configuración predeterminada es 0.

bigqueryTableName

string

Obligatorio. Nombre completamente calificado de la tabla de BigQuery en el siguiente formato: “projectId.dataset_name.table_name

La tabla especificada ya debe existir y el “Agente de servicios de Cloud ML” de tu proyecto debe tener permiso para escribir en ella. La tabla debe tener el siguiente esquema:

Nombre del campoTipo Modo
modelSTRINGOBLIGATORIO
model_versionSTRINGOBLIGATORIO
timeMARCA DE TIEMPOOBLIGATORIO
raw_dataSTRINGOBLIGATORIO
raw_predictionSTRINGACEPTA VALOR NULL
groundtruthSTRINGACEPTA VALOR NULL

ExplanationConfig

Mensaje que contiene opciones de configuración para explicar las predicciones del modelo. Hay dos métodos de atribución de atributos compatibles con los modelos de TensorFlow: gradientes integrados y Shapley de muestra. Obtén más información sobre las atribuciones de atributos.

Representación JSON

{

  // Union field attribution_method can be only one of the following:
  "integratedGradientsAttribution": {
    object (IntegratedGradientsAttribution)
  },
  "sampledShapleyAttribution": {
    object (SampledShapleyAttribution)
  },
  "xraiAttribution": {
    object (XraiAttribution)
  }
  // End of list of possible types for union field attribution_method.
}
Campos
Campo de unión attribution_method. El método de atribución que permite explicar las predicciones del modelo. attribution_method puede ser solo uno de los siguientes:
integratedGradientsAttribution

object (IntegratedGradientsAttribution)

Atribuye el crédito mediante el cálculo del valor de Aumann-Shapley, ya que se aprovecha la estructura completamente diferenciable del modelo. Consulta este documento para obtener más detalles: http://proceedings.mlr.press/v70/sundararajan17a.html.

sampledShapleyAttribution

object (SampledShapleyAttribution)

Un método de atribución que aproxima los valores de Shapley para los atributos que contribuyen a la etiqueta que se predice. Se usa una estrategia de muestreo para calcular el valor en lugar de considerar todos los subconjuntos de atributos.

xraiAttribution

object (XraiAttribution)

Atribuye el crédito mediante el cálculo de XRAI, ya que se aprovecha la estructura completamente diferenciable del modelo. Consulta este documento para obtener más detalles: https://arxiv.org/abs/1906.02825. Por el momento, solo se implementa para modelos con entradas de imágenes naturales.

IntegratedGradientsAttribution

Atribuye el crédito mediante el cálculo del valor de Aumann-Shapley, ya que se aprovecha la estructura completamente diferenciable del modelo. Consulta este documento para obtener más detalles: http://proceedings.mlr.press/v70/sundararajan17a.html.

Representación JSON

{
  "numIntegralSteps": integer
}
Campos
numIntegralSteps

integer

Cantidad de pasos para calcular la integral de la ruta. Un buen valor para comenzar es 50 y, luego, aumentar de manera gradual hasta que la suma de la propiedad diferencial se cumpla dentro del rango de error deseado.

SampledShapleyAttribution

Un método de atribución que aproxima los valores de Shapley para los atributos que contribuyen a la etiqueta que se predice. Se usa una estrategia de muestreo para calcular el valor en lugar de considerar todos los subconjuntos de atributos.

Representación JSON

{
  "numPaths": integer
}
Campos
numPaths

integer

La cantidad de permutaciones de atributos que se deben tener en cuenta cuando se calculan los valores de Shapley.

XraiAttribution

Atribuye el crédito mediante el cálculo de XRAI, ya que se aprovecha la estructura completamente diferenciable del modelo. Consulta este documento para obtener más detalles: https://arxiv.org/abs/1906.02825. Por el momento, solo se implementa para modelos con entradas de imágenes naturales.

Representación JSON

{
  "numIntegralSteps": integer
}
Campos
numIntegralSteps

integer

Cantidad de pasos para calcular la integral de la ruta. Un buen valor para comenzar es 50 y, luego, aumentar de manera gradual hasta que la suma de la propiedad diferencial se cumpla dentro del rango de error deseado.

Métodos

create

Crea una versión nueva de un modelo a partir de un modelo entrenado de TensorFlow.

delete

Borra una versión de modelo.

get

Obtiene información sobre una versión del modelo.

list

Obtiene información básica sobre todas las versiones de un modelo.

patch

Actualiza el recurso Version especificado.

setDefault

Designa una versión para que sea la predeterminada del modelo.