モデルの管理

準備済みの データセットを使用してモデルをトレーニングし、カスタムモデルを作成します。 AutoML Translation はデータセットの項目を使用してモデルのトレーニングとテストを行い、パフォーマンスを評価します。その結果を確認し、必要に応じてトレーニング データセットを調整して、改善されたデータセットで新しいモデルをトレーニングします。

モデルのトレーニングが完了するまで、数時間かかることがあります。AutoML API を使用すると、トレーニングのステータスを確認できます。

AutoML Translation ではトレーニングを開始するたびに新しいモデルが作成されるため、プロジェクトに多数のモデルが含まれる場合があります。プロジェクト内のモデルの一覧表示や、不要になったモデルの削除が可能です。

該当する利用規約またはドキュメントで特に指定されていない限り、Cloud AutoML プロダクトで作成されたカスタムモデルはエクスポートできません。

モデルのトレーニング

トレーニング用の確固とした文のペアを含むデータセットを用意したら、カスタムモデルの作成とトレーニングを行える状態です。

ウェブ UI

  1. AutoML Translation UI を開きます。

    [データセット] に、現在のプロジェクトの使用可能データセットが表示されます。

  2. カスタムモデルのトレーニングに使用するデータセットを選択します。

    選択したデータセットの表示名がタイトルバーに表示され、データセット内の個々の項目がラベルと一緒にページに一覧表示されます。

    [文] ページ

  3. データセットの確認を終えたら、タイトルバーのすぐ下にある [トレーニング] タブをクリックします。

  4. [トレーニングを開始] をクリックします。

    [新しいモデルのトレーニング] ダイアログ ボックスが表示され、新しいモデルの基になるベースモデルを選択できます。

  5. (省略可)ベースモデルを選択します。

    デフォルトでは、Google のニューラル機械翻訳(NMT)モデルが AutoML Translation のカスタムモデルのベースとなります。別のカスタム翻訳モデルをベースにするには、カスタムモデルのプルダウン リストからベースモデル名を選択します。(その GCP プロジェクトに関連するカスタムモデルがほかにない場合、リストは表示されません)。

  6. [トレーニングを開始] をクリックして、カスタムモデルのトレーニングを開始します。

モデルのトレーニングが完了するまで数時間かかることがあります。モデルのトレーニングが正常に終了したら、プログラムの登録に使用したメールアドレスにメッセージが届きます。

コマンドライン

  • dataset-id をデータセットの ID に置き換えます。この ID は、データセットの名前の最後の要素です。たとえば、データセットの名前が projects/434039606874/locations/us-central1/datasets/3104518874390609379 の場合、データセットの ID は 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",
    "translationModelMetadata": {
        "base_model" : ""
    },
  }'

出力は次のようになります。オペレーション ID を使用して、タスクのステータスを取得できます。例については、オペレーションのステータスの取得をご覧ください。

{
  "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

このコードサンプルを実行するには、あらかじめ 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 dataset.
my_model = {
    "display_name": model_name,
    "dataset_id": dataset_id,
    "translation_model_metadata": {"base_model": ""},
}

# 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 Exception {
  // Instantiates a client
  AutoMlClient client = AutoMlClient.create();

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

  // Set model metadata.
  TranslationModelMetadata translationModelMetadata =
      TranslationModelMetadata.newBuilder().setBaseModel("").build();

  // Set model name, dataset and metadata.
  Model myModel =
      Model.newBuilder()
          .setDisplayName(modelName)
          .setDatasetId(dataSetId)
          .setTranslationModelMetadata(translationModelMetadata)
          .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.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 dataset.
  const myModel = {
    displayName: modelName,
    datasetId: datasetId,
    translationModelMetadata: {},
  };

  // Create a model with the model metadata in the region.
  const [operation, response] = await client.createModel({
    parent: projectLocation,
    model: myModel,
  });
  const initialApiResponse = response;
  console.log(`Training operation name: `, initialApiResponse.name);
  console.log(`Training started...`);
  const [model] = await operation.promise();
  // The final result of the operation.
  console.log(model);
  // 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}`);

オペレーションのステータスの取得

タスクの開始時にレスポンスで返されたオペレーション ID を使用して、長時間実行タスク(データセットへの項目のインポートモデルのトレーニング)のステータスを確認できます。

AutoML API を使用して確認できるのはオペレーションのステータスのみです。

次のコマンドの operation-name はオペレーションの完全な名前に置き換えます。完全な名前の形式は 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

モデルの作成オペレーションの出力は次のようになります。

{
  "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",
    "translationModelMetadata": {
      "base_model" : ""
    },
    "displayName": "a_98487760535e48319dd204e6394670"
  }
}

オペレーションのキャンセル

オペレーション ID を使用して、インポート タスクやトレーニング タスクをキャンセルできます。次のコマンドの operation-name はオペレーションの完全な名前に置き換えます。完全な名前の形式は 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"

モデルに関する情報の取得

トレーニングが完了したら、新しく作成したモデルに関する情報を取得できます。

このセクションの例では、モデルに関する基本のメタデータが返されます。モデルの正確性と準備状況の詳細を確認するには、モデルの評価をご覧ください。

コマンドライン

* model-name を、モデル作成時のレスポンスから取得したモデルの完全な名前に置き換えます。完全な名前の形式は 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

出力は次のようになります。

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

Python

このコードサンプルを実行するには、あらかじめ 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.
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 Input/Output 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()));
}

Node.js

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

  const client = new automl.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}`);

モデルの一覧表示

1 つのプロジェクトに多数のモデルが含まれる場合があります。このセクションでは、プロジェクトで使用できるモデルを一覧表示する方法を説明します。

ウェブ UI

AutoML Translation UI を使用して使用可能なモデルを一覧表示するには、左側のナビゲーション バーの電球アイコンをクリックします。

別のプロジェクトのモデルを表示するには、タイトルバーの右上にあるプルダウン リストからプロジェクトを選択します。

コマンドライン

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

出力は次のようになります。

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

Python

このコードサンプルを実行するには、あらかじめ 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:
    # Display the model information.
    if model.deployment_state == enums.Model.DeploymentState.DEPLOYED:
        deployment_state = "deployed"
    else:
        deployment_state = "undeployed"

    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 listModlesRequest =
      ListModelsRequest.newBuilder()
          .setParent(projectLocation.toString())
          .setFilter(filter)
          .build();

  // List all the models available in the region by applying filter.
  System.out.println("List of models:");
  for (Model model : client.listModels(listModlesRequest).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.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. "translationDatasetMetadata:*”`;

  // 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.
  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}`);
    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`);
  });

モデルの削除

次の例では、モデルを削除します。

ウェブ UI

  1. AutoML Translation UI で、左側のナビゲーション メニューにある電球アイコンをクリックして使用可能なモデルを一覧表示します。

  2. 削除する行の右端にあるその他メニューをクリックし、[モデルの削除] を選択します。

  3. 確認ダイアログ ボックスで [削除] をクリックします。

コマンドライン

  • model-name を、モデル作成時のレスポンスから取得したモデルの完全な名前に置き換えます。完全な名前の形式は 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

出力は次のようになります。オペレーション ID を使用して、削除オペレーションのステータスを取得できます。例については、オペレーションのステータスの取得をご覧ください。

{
  "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

このコードサンプルを実行するには、あらかじめ Python クライアント ライブラリをインストールしておく必要があります。

  • model_id 変数はモデルの ID です。この ID は、モデルの名前の最後の要素です。たとえば、モデルの名前が projects/434039606874/locations/us-central1/models/3745331181667467569 の場合、モデルの ID は 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.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] = await client.deleteModel({name: modelFullId});
  const operationResponse = await operation.promise();
  // The final result of the operation.
  if (operationResponse[2].done === true) console.log(`Model deleted.`);

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

AutoML Translation のドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。