Administrar modelos

You create a custom model by training it using a prepared dataset. AutoML Natural Language uses the items from the dataset to train the model, test it, and evaluate its performance. You review the results, adjust the training dataset as needed and train a new model using the improved dataset.

Training a model can take several hours to complete. The API de AutoML enables you to check the status of training.

Since AutoML Natural Language creates a new model each time you start training, your project may include numerous models. You can get a list of the models in your project and can delete models that you no longer need.

Unless otherwise specified in applicable terms of service or documentation, custom models created in Cloud AutoML products cannot be exported.

La vida útil máxima de un modelo personalizado es de seis meses. Debes crear y entrenar un modelo nuevo para continuar clasificando contenido después de ese período.

A partir del 22 de enero de 2019, los modelos inactivos estarán sujetos a desimplementaciones automáticas. Un modelo inactivo es un modelo que no se ha utilizado para la predicción en 60 días. Un modelo desimplementado no está disponible para su uso hasta que lo vuelvas a implementar explícitamente con un método que estará disponible antes de cualquier desimplementación.

Modelos de entrenamiento

Cuando tienes un conjunto de datos con un conjunto sólido de elementos de entrenamiento etiquetados, estás listo para crear y entrenar el modelo personalizado.

IU web

  1. Abre la IU de AutoML Natural Language.

    La página Datasets (Conjuntos de datos) muestra los conjuntos de datos disponibles para el proyecto actual.

    Página de lista de conjuntos de datos

  2. Selecciona el conjunto de datos que quieres usar para entrenar el modelo personalizado.

    El nombre comercial del conjunto de datos seleccionado aparece en la barra de título y la página enumera sus elementos individuales junto con las etiquetas de cada uno.

    Página de elementos de texto

  3. Cuando hayas terminado de revisar el conjunto de datos, haz clic en la pestaña Train (Entrenar) justo debajo de la barra de título.

    La página de entrenamiento proporciona un análisis básico de tu conjunto de datos y determina si es adecuado para el entrenamiento. Si AutoML Natural Language sugiere cambios, considera volver a la página Text items (Elementos de texto) y agregar elementos o etiquetas.

  4. Cuando el conjunto de datos esté listo, haz clic en Start Training (Comenzar entrenamiento).

  5. Ingresa un nombre para el modelo.

    El nombre del modelo puede tener hasta 32 caracteres y contener solo letras, números y guiones bajos. El primer carácter debe ser una letra.

El entrenamiento de un modelo puede tardar varias horas en completarse. Una vez que el modelo se entrenó con éxito, recibirás un mensaje en la dirección de correo electrónico que usaste para registrarte en el programa.

Línea de comandos

  • Reemplaza dataset-id por el ID de tu conjunto de datos. El ID es el último elemento del nombre de tu conjunto de datos. Por ejemplo, si el nombre de tu conjunto de datos es projects/434039606874/locations/us-central1/datasets/3104518874390609379, el ID de tu conjunto de datos es 3104518874390609379.
curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models \
  -d '{
    "displayName": "test_model",
    "dataset_id": "dataset-id",
    "textClassificationModelMetadata": {
      "modelType": "BASIC_MODEL"
    }
  }'

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la tarea. Para ver un ejemplo, consulta Obtener el estado de una operación.

{
  "name": "projects/434039606874/locations/us-central1/operations/1979469554520652445",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "createTime": "2018-04-27T01:28:41.338120Z",
    "updateTime": "2018-04-27T01:28:41.338120Z",
    "cancellable": true
  }
}

Python

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de Python.
# TODO(developer): Uncomment and set the following variables
# project_id = 'PROJECT_ID_HERE'
# compute_region = 'COMPUTE_REGION_HERE'
# dataset_id = 'DATASET_ID_HERE'
# model_name = 'MODEL_NAME_HERE'

from google.cloud import automl_v1beta1 as automl

client = automl.AutoMlClient()

# A resource that represents Google Cloud Platform location.
project_location = client.location_path(project_id, compute_region)

# Set model name and model metadata for the dataset.
my_model = {
    "display_name": model_name,
    "dataset_id": dataset_id,
    "text_classification_model_metadata": {},
}

# Create a model with the model metadata in the region.
response = client.create_model(project_location, my_model)
print("Training operation name: {}".format(response.operation.name))
print("Training started...")

Java

/**
 * Demonstrates using the AutoML client to create a model.
 *
 * @param projectId the Id of the project.
 * @param computeRegion the Region name.
 * @param dataSetId the Id of the dataset to which model is created.
 * @param modelName the Name of the model.
 * @throws Exception on AutoML Client errors
 */
public static void createModel(
    String projectId, String computeRegion, String dataSetId, String modelName)
    throws IOException, InterruptedException, ExecutionException {

  // Instantiates a client
  AutoMlClient client = AutoMlClient.create();

  // A resource that represents Google Cloud Platform location.
  LocationName projectLocation = LocationName.of(projectId, computeRegion);

  // Set model meta data
  TextClassificationModelMetadata textClassificationModelMetadata =
      TextClassificationModelMetadata.newBuilder().build();

  // Set model name, dataset and metadata.
  Model myModel =
      Model.newBuilder()
          .setDisplayName(modelName)
          .setDatasetId(dataSetId)
          .setTextClassificationModelMetadata(textClassificationModelMetadata)
          .build();

  // Create a model with the model metadata in the region.
  OperationFuture<Model, OperationMetadata> response =
      client.createModelAsync(projectLocation, myModel);

  System.out.println(
      String.format("Training operation name: %s", response.getInitialFuture().get().getName()));
  System.out.println("Training started...");
}

Node.js

  const automl = require(`@google-cloud/automl`);

  const client = new automl.v1beta1.AutoMlClient();

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = `The GCLOUD_PROJECT string, e.g. "my-gcloud-project"`;
  // const computeRegion = `region-name, e.g. "us-central1"`;
  // const datasetId = `Id of the dataset`;
  // const modelName = `Name of the model, e.g. "myModel"`;

  // A resource that represents Google Cloud Platform location.
  const projectLocation = client.locationPath(projectId, computeRegion);

  // Set model name and model metadata for the dataset.
  const myModel = {
    displayName: modelName,
    datasetId: datasetId,
    textClassificationModelMetadata: {},
  };

  // Create a model with the model metadata in the region.
  const [operation, initialApiResponse] = await client.createModel({
    parent: projectLocation,
    model: myModel,
  });
  console.log(`Training operation name: ${initialApiResponse.name}`);
  console.log(`Training started...`);
  const [model] = await operation.promise();
  // Retrieve deployment state.
  let deploymentState = ``;
  if (model.deploymentState === 1) {
    deploymentState = `deployed`;
  } else if (model.deploymentState === 2) {
    deploymentState = `undeployed`;
  }

  // Display the model information.
  console.log(`Model name: ${model.name}`);
  console.log(`Model id: ${model.name.split(`/`).pop(-1)}`);
  console.log(`Model display name: ${model.displayName}`);
  console.log(`Model create time:`);
  console.log(`\tseconds: ${model.createTime.seconds}`);
  console.log(`\tnanos: ${model.createTime.nanos}`);
  console.log(`Model deployment state: ${deploymentState}`);

Obtener el estado de una operación

Puedes verificar el estado de una tarea de larga duración (como importar elementos a un conjunto de datos o entrenar un modelo) mediante el ID de operación de la respuesta que obtuviste cuando comenzaste la tarea.

Solo puedes verificar el estado de las operaciones mediante la API de AutoML.

En el comando siguiente, reemplaza operation-name por el nombre completo de tu operación. El nombre completo tiene el formato: projects/{project-id}/locations/us-central1/operations/{operation-id}

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1beta1/operation-id

Deberías ver un resultado similar al siguiente para una operación de importación:

{
  "name": "projects/434039606874/locations/us-central1/operations/2116326435840390257",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "progressPercentage": 100,
    "partialFailures": [
      {
        "code": 7,
        "message": "Duplicated files detected gs://my-project-lcm/training-data/astros.txt
        and gs://my-project-lcm/training-data/cubs.txt have the same content"
      },
    ],
    "createTime": "2018-04-27T01:39:59.821460Z",
    "updateTime": "2018-04-27T01:43:09.564770Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Deberías ver un resultado similar al siguiente para una operación de creación de un modelo:

{
  "name": "projects/434039606874/locations/us-central1/operations/2126599795587061786",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "progressPercentage": 100,
    "createTime": "2018-04-27T01:56:28.395640Z",
    "updateTime": "2018-04-27T02:04:12.336070Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model",
    "name": "projects/434039606874/locations/us-central1/models/3745331181667467569",
    "createTime": "2018-04-27T02:00:22.329970Z",
    "textClassificationModelMetadata": {
      "modelType": "BASIC_MODEL"
    },
    "displayName": "a_98487760535e48319dd204e6394670"
  }
}

Cancelar una operación

Puedes cancelar una tarea de importación o entrenamiento con el ID de operación. En el comando siguiente, reemplaza operation-name por el nombre completo de tu operación. El nombre completo tiene el formato: projects/{project-id}/locations/us-central1/operations/{operation-id}

curl \
  -X POST "Content-Type: application/json" \
  -H "Authorization: Bearer `gcloud auth application-default print-access-token`" \
  https://automl.googleapis.com/v1beta1/operation-name:cancel"

Obtener información sobre un modelo

Cuando se completa el entrenamiento, puedes obtener información sobre el modelo recién creado.

Los ejemplos en esta sección muestran los metadatos básicos sobre un modelo. Para obtener detalles sobre la preparación y precisión del modelo, consulta Evaluar modelos.

Línea de comandos

* Reemplaza model-name por el nombre completo de tu modelo, según la respuesta que obtuviste cuando lo creaste. El nombre completo tiene el formato: projects/{project-id}/locations/us-central1/models/{model-id}
curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
  -H "Content-Type: application/json" \
  https://automl.googleapis.com/v1beta1/model-name

Deberías ver un resultado similar al siguiente:

{
  "model": [
    {
      "name": "projects/434039606874/locations/us-central1/models/3745331181667467569",
      "createTime": "2018-04-27T02:00:22.329970Z",
      "textClassificationModelMetadata": {
        "modelType": "BASIC_MODEL"
      },
      "displayName": "a_98487760535e48319dd204e6394670"
    },
}

Python

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de Python.
# TODO(developer): Uncomment and set the following variables
# project_id = 'PROJECT_ID_HERE'
# compute_region = 'COMPUTE_REGION_HERE'
# model_id = 'MODEL_ID_HERE'

from google.cloud import automl_v1beta1 as automl
from google.cloud.automl_v1beta1 import enums

client = automl.AutoMlClient()

# Get the full path of the model.
model_full_id = client.model_path(project_id, compute_region, model_id)

# Get complete detail of the model.
model = client.get_model(model_full_id)

# Retrieve deployment state.
deployment_state = ""
if model.deployment_state == enums.Model.DeploymentState.DEPLOYED:
    deployment_state = "deployed"
else:
    deployment_state = "undeployed"

# Display the model information.
print("Model name: {}".format(model.name))
print("Model id: {}".format(model.name.split("/")[-1]))
print("Model display name: {}".format(model.display_name))
print("Model create time:")
print("\tseconds: {}".format(model.create_time.seconds))
print("\tnanos: {}".format(model.create_time.nanos))
print("Model deployment state: {}".format(deployment_state))

Java

  /**
   * Demonstrates using the AutoML client to get model details.
   *
   * @param projectId the Id of the project.
   * @param computeRegion the Region name.
   * @param modelId the Id of the model.
   * @throws IOException on AutoML Client errors
   */
  public static void getModel(String projectId, String computeRegion, String modelId)
      throws IOException {
    // Instantiates a client
    AutoMlClient client = AutoMlClient.create();

    // Get the full path of the model.
    ModelName modelFullId = ModelName.of(projectId, computeRegion, modelId);

    // Get complete detail of the model.
    Model model = client.getModel(modelFullId);

    // Display the model information.
    System.out.println(String.format("Model name: %s", model.getName()));
    System.out.println(
        String.format(
            "Model id: %s", model.getName().split("/")[model.getName().split("/").length - 1]));
    System.out.println(String.format("Model display name: %s", model.getDisplayName()));
    System.out.println("Model create time:");
    System.out.println(String.format("\tseconds: %s", model.getCreateTime().getSeconds()));
    System.out.println(String.format("\tnanos: %s", model.getCreateTime().getNanos()));
    System.out.println(String.format("Model deployment state: %s", model.getDeploymentState()));
  }
  // END automl_language_get_model]

  /**
   * Demonstrates using the AutoML client to list model evaluations.
   *
   * @param projectId the Id of the project.
   * @param computeRegion the Region name.
   * @param modelId the Id of the model.
   * @param filter the Filter expression.
   * @throws IOException on Input/Output errors.
   */
  public static void listModelEvaluations(
      String projectId, String computeRegion, String modelId, String filter) throws IOException {
    // Instantiates a client
    AutoMlClient client = AutoMlClient.create();

    // Get the full path of the model.
    ModelName modelFullId = ModelName.of(projectId, computeRegion, modelId);

    // Create list model evaluations request.
    ListModelEvaluationsRequest modelEvaluationsRequest =
        ListModelEvaluationsRequest.newBuilder()
            .setParent(modelFullId.toString())
            .setFilter(filter)
            .build();

    // List all the model evaluations in the model by applying filter.
    for (ModelEvaluation element :
        client.listModelEvaluations(modelEvaluationsRequest).iterateAll()) {
      System.out.println(element);
    }
  }

  /**
   * Demonstrates using the AutoML client to get model evaluations.
   *
   * @param projectId the Id of the project.
   * @param computeRegion the Region name.
   * @param modelId the Id of the model.
   * @param modelEvaluationId the Id of your model evaluation.
   * @throws IOException on Input/Output errors.
   */
  public static void getModelEvaluation(
      String projectId, String computeRegion, String modelId, String modelEvaluationId)
      throws IOException {
    // Instantiates a client
    AutoMlClient client = AutoMlClient.create();

    // Get the full path of the model evaluation.
    ModelEvaluationName modelEvaluationFullId =
        ModelEvaluationName.of(projectId, computeRegion, modelId, modelEvaluationId);

    // Get complete detail of the model evaluation.
    ModelEvaluation response = client.getModelEvaluation(modelEvaluationFullId);

    System.out.println(response);
  }

  /**
   * Demonstrates using the AutoML client to display model evaluation.
   *
   * @param projectId the Id of the project.
   * @param computeRegion the Region name.
   * @param modelId the Id of the model.
   * @param filter the Filter expression.
   * @throws IOException on Input/Output errors.
   */
  public static void displayEvaluation(
      String projectId, String computeRegion, String modelId, String filter) throws IOException {
    // Instantiates a client
    AutoMlClient client = AutoMlClient.create();

    // Get the full path of the model.
    ModelName modelFullId = ModelName.of(projectId, computeRegion, modelId);

    // List all the model evaluations in the model by applying.
    ListModelEvaluationsRequest modelEvaluationsrequest =
        ListModelEvaluationsRequest.newBuilder()
            .setParent(modelFullId.toString())
            .setFilter(filter)
            .build();

    // Iterate through the results.
    String modelEvaluationId = "";
    for (ModelEvaluation element :
        client.listModelEvaluations(modelEvaluationsrequest).iterateAll()) {
      if (element.getAnnotationSpecId() != null) {
        modelEvaluationId = element.getName().split("/")[element.getName().split("/").length - 1];
      }
    }

    // Resource name for the model evaluation.
    ModelEvaluationName modelEvaluationFullId =
        ModelEvaluationName.of(projectId, computeRegion, modelId, modelEvaluationId);

    // Get a model evaluation.
    ModelEvaluation modelEvaluation = client.getModelEvaluation(modelEvaluationFullId);

    ClassificationEvaluationMetrics classMetrics =
        modelEvaluation.getClassificationEvaluationMetrics();
    List<ConfidenceMetricsEntry> confidenceMetricsEntries =
        classMetrics.getConfidenceMetricsEntryList();

    // Showing model score based on threshold of 0.5
    for (ConfidenceMetricsEntry confidenceMetricsEntry : confidenceMetricsEntries) {
      if (confidenceMetricsEntry.getConfidenceThreshold() == 0.5) {
        System.out.println("Precision and recall are based on a score threshold of 0.5");
        System.out.println(
            String.format("Model Precision: %.2f ", confidenceMetricsEntry.getPrecision() * 100)
                + '%');
        System.out.println(
            String.format("Model Recall: %.2f ", confidenceMetricsEntry.getRecall() * 100) + '%');
        System.out.println(
            String.format("Model F1 Score: %.2f ", confidenceMetricsEntry.getF1Score() * 100)
                + '%');
        System.out.println(
            String.format(
                    "Model Precision@1: %.2f ", confidenceMetricsEntry.getPrecisionAt1() * 100)
                + '%');
        System.out.println(
            String.format("Model Recall@1: %.2f ", confidenceMetricsEntry.getRecallAt1() * 100)
                + '%');
        System.out.println(
            String.format("Model F1 Score@1: %.2f ", confidenceMetricsEntry.getF1ScoreAt1() * 100)
                + '%');
      }
    }
  }

  /**
   * Demonstrates using the AutoML client to delete a model.
   *
   * @param projectId the Id of the project.
   * @param computeRegion the Region name.
   * @param modelId the Id of the model.
   * @throws Exception on AutoML Client errors
   */
  public static void deleteModel(String projectId, String computeRegion, String modelId)
      throws InterruptedException, ExecutionException, IOException {
    // Instantiates a client
    AutoMlClient client = AutoMlClient.create();

    // Get the full path of the model.
    ModelName modelFullId = ModelName.of(projectId, computeRegion, modelId);

    // Delete a model.
    Empty response = client.deleteModelAsync(modelFullId).get();

    System.out.println("Model deletion started...");
  }

  public static void main(String[] args) throws Exception {
    ModelApi modelApi = new ModelApi();
    modelApi.argsHelper(args, System.out);
  }

  public static void argsHelper(String[] args, PrintStream out) throws Exception {
    ArgumentParser parser =
        ArgumentParsers.newFor("ModelApi")
            .build()
            .defaultHelp(true)
            .description("Model API operations.");
    Subparsers subparsers = parser.addSubparsers().dest("command");

    Subparser createModelParser = subparsers.addParser("create_model");
    createModelParser.addArgument("datasetId");
    createModelParser.addArgument("modelName");

    Subparser listModelsParser = subparsers.addParser("list_models");
    listModelsParser
        .addArgument("filter")
        .nargs("?")
        .setDefault("textClassificationModelMetadata:*");

    Subparser getModelParser = subparsers.addParser("get_model");
    getModelParser.addArgument("modelId");

    Subparser listModelEvaluationsParser = subparsers.addParser("list_model_evaluations");
    listModelEvaluationsParser.addArgument("modelId");
    listModelEvaluationsParser.addArgument("filter").nargs("?").setDefault("");

    Subparser getModelEvaluationParser = subparsers.addParser("get_model_evaluation");
    getModelEvaluationParser.addArgument("modelId");
    getModelEvaluationParser.addArgument("modelEvaluationId");

    Subparser displayEvaluationParser = subparsers.addParser("display_evaluation");
    displayEvaluationParser.addArgument("modelId");
    displayEvaluationParser.addArgument("filter").nargs("?").setDefault("");

    Subparser deleteModelParser = subparsers.addParser("delete_model");
    deleteModelParser.addArgument("modelId");

    Subparser getOperationStatusParser = subparsers.addParser("get_operation_status");
    getOperationStatusParser.addArgument("operationFullId");

    String projectId = System.getenv("PROJECT_ID");
    String computeRegion = System.getenv("REGION_NAME");

    Namespace ns = null;
    try {
      ns = parser.parseArgs(args);
      if (ns.get("command").equals("create_model")) {
        createModel(projectId, computeRegion, ns.getString("datasetId"), ns.getString("modelName"));
      }
      if (ns.get("command").equals("list_models")) {
        listModels(projectId, computeRegion, ns.getString("filter"));
      }
      if (ns.get("command").equals("get_model")) {
        getModel(projectId, computeRegion, ns.getString("modelId"));
      }
      if (ns.get("command").equals("list_model_evaluations")) {
        listModelEvaluations(
            projectId, computeRegion, ns.getString("modelId"), ns.getString("filter"));
      }
      if (ns.get("command").equals("get_model_evaluation")) {
        getModelEvaluation(
            projectId, computeRegion, ns.getString("modelId"), ns.getString("modelEvaluationId"));
      }
      if (ns.get("command").equals("delete_model")) {
        deleteModel(projectId, computeRegion, ns.getString("modelId"));
      }
      if (ns.get("command").equals("get_operation_status")) {
        getOperationStatus(ns.getString("operationFullId"));
      }
      if (ns.get("command").equals("display_evaluation")) {
        displayEvaluation(
            projectId, computeRegion, ns.getString("modelId"), ns.getString("filter"));
      }

    } catch (ArgumentParserException e) {
      parser.handleError(e);
    }
  }
}

Node.js

  const automl = require(`@google-cloud/automl`);

  const client = new automl.v1beta1.AutoMlClient();

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = `The GCLOUD_PROJECT string, e.g. "my-gcloud-project"`;
  // const computeRegion = `region-name, e.g. "us-central1"`;
  // const modelId = `id of the model, e.g. “ICN12345”`;

  // Get the full path of the model.
  const modelFullId = client.modelPath(projectId, computeRegion, modelId);

  // Get complete detail of the model.
  const [model] = await client.getModel({name: modelFullId});

  // Display the model information.
  console.log(`Model name: ${model.name}`);
  console.log(`Model id: ${model.name.split(`/`).pop(-1)}`);
  console.log(`Model display name: ${model.displayName}`);
  console.log(`Model dataset id: ${model.datasetId}`);
  if (model.modelMetadata === `translationModelMetadata`) {
    console.log(`Translation model metadata:`);
    console.log(`\tBase model: ${model.translationModelMetadata.baseModel}`);
    console.log(
      `\tSource language code: ${
        model.translationModelMetadata.sourceLanguageCode
      }`
    );
    console.log(
      `\tTarget language code: ${
        model.translationModelMetadata.targetLanguageCode
      }`
    );
  } else if (model.modelMetadata === `textClassificationModelMetadata`) {
    console.log(
      `Text classification model metadata: ${
        model.textClassificationModelMetadata
      }`
    );
  } else if (model.modelMetadata === `imageClassificationModelMetadata`) {
    console.log(`Image classification model metadata:`);
    console.log(
      `\tBase model id: ${model.imageClassificationModelMetadata.baseModelId}`
    );
    console.log(
      `\tTrain budget: ${model.imageClassificationModelMetadata.trainBudget}`
    );
    console.log(
      `\tTrain cost: ${model.imageClassificationModelMetadata.trainCost}`
    );
    console.log(
      `\tStop reason: ${model.imageClassificationModelMetadata.stopReason}`
    );
  }
  console.log(`Model create time:`);
  console.log(`\tseconds: ${model.createTime.seconds}`);
  console.log(`\tnanos: ${model.createTime.nanos}`);
  console.log(`Model update time:`);
  console.log(`\tseconds: ${model.updateTime.seconds}`);
  console.log(`\tnanos: ${model.updateTime.nanos}`);
  console.log(`Model deployment state: ${model.deploymentState}`);

Mostrar una lista de modelos

Un proyecto puede incluir varios modelos. Esta sección describe cómo recuperar una lista de los modelos disponibles para un proyecto.

IU web

Para ver una lista de los modelos disponibles mediante la IU de AutoML Natural Language, haz clic en el ícono de la bombilla en la barra de navegación izquierda.

Para ver los modelos de un proyecto diferente, selecciónalo de la lista desplegable en la parte superior derecha de la barra de título.

Línea de comandos

curl \
  -X GET \
  -H "Authorization: Bearer $(gcloud auth application-default  \
print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/us-central1/models

Deberías ver un resultado similar al siguiente:

{
  "model": [
    {
      "name": "projects/434039606874/locations/us-central1/models/7537307368641647584",
      "displayName": "c982e11ffbd5455e8d9bee2734f01f81",
      "textClassificationModelMetadata": {
        "modelType": "BASIC_MODEL"
      },
      "createTime": "2018-04-30T23:06:19.223230Z"
    },
    {
      "name": "projects/434039606874/locations/us-central1/models/6877109870585533885",
      "displayName": "test_201801111318",
      "textClassificationModelMetadata": {
        "modelType": "BASIC_MODEL"
      },
      "createTime": "2018-01-11T21:25:05.893590Z"
    }
  ]
}

Python

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de Python.
# TODO(developer): Uncomment and set the following variables
# project_id = 'PROJECT_ID_HERE'
# compute_region = 'COMPUTE_REGION_HERE'
# filter_ = 'DATASET_ID_HERE'

from google.cloud import automl_v1beta1 as automl
from google.cloud.automl_v1beta1 import enums

client = automl.AutoMlClient()

# A resource that represents Google Cloud Platform location.
project_location = client.location_path(project_id, compute_region)

# List all the models available in the region by applying filter.
response = client.list_models(project_location, filter_)

print("List of models:")
for model in response:
    # Retrieve deployment state.
    deployment_state = ""
    if model.deployment_state == enums.Model.DeploymentState.DEPLOYED:
        deployment_state = "deployed"
    else:
        deployment_state = "undeployed"

    # Display the model information.
    print("Model name: {}".format(model.name))
    print("Model id: {}".format(model.name.split("/")[-1]))
    print("Model display name: {}".format(model.display_name))
    print("Model create time:")
    print("\tseconds: {}".format(model.create_time.seconds))
    print("\tnanos: {}".format(model.create_time.nanos))
    print("Model deployment state: {}".format(deployment_state))

Java

/**
 * Demonstrates using the AutoML client to list all models.
 *
 * @param projectId the Id of the project.
 * @param computeRegion the Region name.
 * @param filter the filter expression.
 * @throws IOException on Input/Output errors.
 */
public static void listModels(String projectId, String computeRegion, String filter)
    throws IOException {
  // Instantiates a client
  AutoMlClient client = AutoMlClient.create();

  // A resource that represents Google Cloud Platform location.
  LocationName projectLocation = LocationName.of(projectId, computeRegion);

  // Create list models request.
  ListModelsRequest listModelsRequest =
      ListModelsRequest.newBuilder()
          .setParent(projectLocation.toString())
          .setFilter(filter)
          .build();

  System.out.println("List of models:");
  for (Model model : client.listModels(listModelsRequest).iterateAll()) {
    // Display the model information.
    System.out.println(String.format("Model name: %s", model.getName()));
    System.out.println(
        String.format(
            "Model id: %s", model.getName().split("/")[model.getName().split("/").length - 1]));
    System.out.println(String.format("Model display name: %s", model.getDisplayName()));
    System.out.println("Model create time:");
    System.out.println(String.format("\tseconds: %s", model.getCreateTime().getSeconds()));
    System.out.println(String.format("\tnanos: %s", model.getCreateTime().getNanos()));
    System.out.println(String.format("Model deployment state: %s", model.getDeploymentState()));
  }
}

Node.js

  const automl = require(`@google-cloud/automl`);

  const client = new automl.v1beta1.AutoMlClient();

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = `The GCLOUD_PROJECT string, e.g. "my-gcloud-project"`;
  // const computeRegion = `region-name, e.g. "us-central1"`;
  // const filter_ = `filter expressions, must specify field, e.g. “imageClassificationModelMetadata:*”`;

  // A resource that represents Google Cloud Platform location.
  const projectLocation = client.locationPath(projectId, computeRegion);

  // List all the models available in the region by applying filter.
  if (filter === ``) filter = `textClassificationModelMetadata:*`;
  const [models] = await client.listModels({
    parent: projectLocation,
    filter: filter,
  });

  // Display the model information.
  console.log(`List of models:`);
  models.forEach(model => {
    console.log(`Model name: ${model.name}`);
    console.log(`Model id: ${model.name.split(`/`).pop(-1)}`);
    console.log(`Model display name: ${model.displayName}`);
    console.log(`Model dataset id: ${model.datasetId}`);
    if (model.modelMetadata === `translationModelMetadata`) {
      console.log(`Translation model metadata:`);
      console.log(`\tBase model: ${model.translationModelMetadata.baseModel}`);
      console.log(
        `\tSource language code: ${
          model.translationModelMetadata.sourceLanguageCode
        }`
      );
      console.log(
        `\tTarget language code: ${
          model.translationModelMetadata.targetLanguageCode
        }`
      );
    } else if (model.modelMetadata === `textClassificationModelMetadata`) {
      console.log(
        `Text classification model metadata: ${
          model.textClassificationModelMetadata
        }`
      );
    } else if (model.modelMetadata === `imageClassificationModelMetadata`) {
      console.log(`Image classification model metadata:`);
      console.log(
        `\tBase model id: ${model.imageClassificationModelMetadata.baseModelId}`
      );
      console.log(
        `\tTrain budget: ${model.imageClassificationModelMetadata.trainBudget}`
      );
      console.log(
        `\tTrain cost: ${model.imageClassificationModelMetadata.trainCost}`
      );
      console.log(
        `\tStop reason: ${model.imageClassificationModelMetadata.stopReason}`
      );
    }
    console.log(`Model create time:`);
    console.log(`\tseconds: ${model.createTime.seconds}`);
    console.log(`\tnanos: ${model.createTime.nanos}`);
    console.log(`Model update time:`);
    console.log(`\tseconds: ${model.updateTime.seconds}`);
    console.log(`\tnanos: ${model.updateTime.nanos}`);
    console.log(`Model deployment state: ${model.deploymentState}`);
    console.log(`\n`);
  });

Implementar o desimplementar un modelo

AutoML Natural Language implementa un modelo automáticamente cuando este ha sido entrenado. El siguiente ejemplo muestra cómo desimplementar un modelo o implementar explícitamente un modelo previamente desimplementado.

Línea de comandos

  • Reemplaza model-name con el nombre completo de tu modelo, según la respuesta que obtuviste cuando creaste el modelo. El nombre completo tiene el formato: projects/{project-id}/locations/us-central1/models/{model-id}

Para desimplementar un modelo:

curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/model-name:undeploy

Para implementar un modelo:

curl \
  -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/model-name:deploy

Python

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de Python.

Para desimplementar un modelo:

from google.cloud import automl_v1beta1
client = automl_v1beta1.AutoMlClient()
name = client.model_path('[PROJECT]', '[LOCATION]', '[MODEL]')
response = client.undeploy_model(name)

Para implementar un modelo:

from google.cloud import automl_v1beta1
client = automl_v1beta1.AutoMlClient()
name = client.model_path('[PROJECT]', '[LOCATION]', '[MODEL]')
response = client.deploy_model(name)

Borrar un modelo

El siguiente ejemplo borra un modelo.

IU web

  1. En la IU de AutoML Natural Language, haz clic en el ícono de la bombilla en el menú de navegación izquierdo para mostrar la lista de modelos disponibles.

  2. Haz clic en el menú de tres puntos en el extremo derecho de la fila que deseas borrar y selecciona Borrar modelo.

  3. Haz clic en Borrar en el cuadro de diálogo de confirmación.

Línea de comandos

  • Reemplaza model-name con el nombre completo de tu modelo, según la respuesta que obtuviste cuando creaste el modelo. El nombre completo tiene el formato: projects/{project-id}/locations/us-central1/models/{model-id}
curl \
  -X DELETE \
  -H "Authorization: Bearer $(gcloud auth application-default  \
print-access-token)" \
  -H "Content-Type: application/json" \
https://automl.googleapis.com/v1beta1/model-name

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la operación de borrado. Para ver un ejemplo, consulta Obtener el estado de una operación.

{
  "name": "projects/434039606874/locations/us-central1/operations/4422270194425422927",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata",
    "progressPercentage": 100,
    "createTime": "2018-04-27T02:33:02.479200Z",
    "updateTime": "2018-04-27T02:35:17.309060Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de Python.

  • La variable model_id es el ID de tu modelo. El ID es el último elemento del nombre de tu modelo. Por ejemplo, si el nombre de tu modelo es projects/434039606874/locations/us-central1/models/3745331181667467569, entonces el ID de tu modelo es 3745331181667467569.
# TODO(developer): Uncomment and set the following variables
# project_id = 'PROJECT_ID_HERE'
# compute_region = 'COMPUTE_REGION_HERE'
# model_id = 'MODEL_ID_HERE'

from google.cloud import automl_v1beta1 as automl

client = automl.AutoMlClient()

# Get the full path of the model.
model_full_id = client.model_path(project_id, compute_region, model_id)

# Delete a model.
response = client.delete_model(model_full_id)

# synchronous check of operation status.
print("Model deleted. {}".format(response.result()))

Java

/**
 * Demonstrates using the AutoML client to delete a model.
 *
 * @param projectId the Id of the project.
 * @param computeRegion the Region name.
 * @param modelId the Id of the model.
 * @throws Exception on AutoML Client errors
 */
public static void deleteModel(String projectId, String computeRegion, String modelId)
    throws InterruptedException, ExecutionException, IOException {
  // Instantiates a client
  AutoMlClient client = AutoMlClient.create();

  // Get the full path of the model.
  ModelName modelFullId = ModelName.of(projectId, computeRegion, modelId);

  // Delete a model.
  Empty response = client.deleteModelAsync(modelFullId).get();

  System.out.println("Model deletion started...");
}

Node.js

  const automl = require(`@google-cloud/automl`);

  const client = new automl.v1beta1.AutoMlClient();

  /**
   * TODO(developer): Uncomment the following line before running the sample.
   */
  // const projectId = `The GCLOUD_PROJECT string, e.g. "my-gcloud-project"`;
  // const computeRegion = `region-name, e.g. "us-central1"`;
  // const modelId = `id of the model, e.g. “ICN12345”`;

  // Get the full path of the model.
  const modelFullId = client.modelPath(projectId, computeRegion, modelId);

  // Delete a model.
  const [operation] = client.deleteModel({name: modelFullId});
  const response = await operation.promise();
  // The final result of the operation.
  if (response[2].done === true) console.log(`Model deleted.`);

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

Enviar comentarios sobre…

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