Как программно получить идентификатор модели из google-cloud-automl с помощью клиентской библиотеки node.js

Теперь я могу использовать клиентскую библиотеку autoML node.js для обучения модели на google-cloud-automl.

Q: Как я могу программно получить идентификатор модели после завершения обучения модели ?.

Цель: я буду использовать этот идентификатор для развертывания модели без веб-интерфейса.

Пробовал: Сначала я подумал, что это в ответе при обучении модели (operation.name). Но в имени операции было указано projects / $ {projectId} / locations / $ {location} / operations / $ {operationId}, что не включает идентификатор модели. Поэтому я понятия не имею, как программно получить идентификатор модели.

Любое предложение буду благодарен.

код для обучения: https://cloud.google.com/vision/automl/docs/train-edge

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const dataset_id = 'YOUR_DATASET_ID';
// const displayName = 'YOUR_DISPLAY_NAME';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require(`@google-cloud/automl`).v1;

// Instantiates a client
const client = new AutoMlClient();

async function createModel() {
  // Construct request
  const request = {
    parent: client.locationPath(projectId, location),
    model: {
      displayName: displayName,
      datasetId: datasetId,
      imageClassificationModelMetadata: {
        trainBudgetMilliNodeHours: 24000,
      },
    },
  };

  // Don't wait for the LRO
  const [operation] = await client.createModel(request);
  console.log(`Training started... ${operation}`);
  console.log(`Training operation name: ${operation.name}`);
}

createModel();

код для развертывания из: https://cloud.google.com/vision/automl/docs/deploy (требуется идентификатор модели)


/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const modelId = 'YOUR_MODEL_ID';

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require(`@google-cloud/automl`).v1;

// Instantiates a client
const client = new AutoMlClient();

async function deployModel() {
  // Construct request
  const request = {
    name: client.modelPath(projectId, location, modelId),
  };

  const [operation] = await client.deployModel(request);

  // Wait for operation to complete.
  const [response] = await operation.promise();
  console.log(`Model deployment finished. ${response}`);
}

deployModel();

person SanyapongY    schedule 18.03.2020    source источник


Ответы (1)


Создание модели - это длительная операция (LRO), поэтому ответ не будет содержать метаданные модели, а вместо этого будет содержать информацию об операции, которая создаст модель:

{
  "name": "projects/project-id/locations/us-central1/operations/ICN2106290444865378475",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-10-30T20:06:08.253243Z",
    "updateTime": "2019-10-30T20:06:08.253243Z",
    "createModelDetails": {}
  }
}

Вы можете получить операцию в любой момент, чтобы узнать, завершена ли она:

/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const projectId = 'YOUR_PROJECT_ID';
// const location = 'us-central1';
// const operationId = 'YOUR_OPERATION_ID'; // e.g. ICN2106290444865378475

// Imports the Google Cloud AutoML library
const {AutoMlClient} = require(`@google-cloud/automl`).v1;

// Instantiates a client
const client = new AutoMlClient();

async function getOperationStatus() {
  // Construct request
  const request = {
    name: `projects/${projectId}/locations/${location}/operations/${operationId}`,
  };

  const [response] = await client.operationsClient.getOperation(request);

  console.log(`Name: ${response.name}`);
  console.log(`Operation details:`);
  console.log(`${response}`);
}

getOperationStatus();

Приведенный выше код Node.js взят из Работа с длительными операции документации.

Вы должны увидеть результат, аналогичный следующему для завершенной операции создания модели:

{
  "name": "projects/project-id/locations/us-central1/operations/operation-id",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata",
    "createTime": "2019-07-22T18:35:06.881193Z",
    "updateTime": "2019-07-22T19:58:44.972235Z",
    "createModelDetails": {}
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.automl.v1.Model",
    "name": "projects/project-id/locations/us-central1/models/model-id"
  }
}

Затем вы можете получить model-id из ответа:

console.log(response.response.name); // Full model path
console.log(response.response.name.replace(/projects\/[a-zA-Z0-9-]*\/locations\/[a-zA-Z0-9-]*\/models\//,'')); // Just the model-id
person Daniel Bank    schedule 19.03.2020
comment
Это очень четкий ответ, и теперь я понял суть. Спасибо вам большое за ваше внимание!. - person SanyapongY; 19.03.2020
comment
Если вы не возражаете, я спрашиваю, откуда вы знаете этот ответ? Я имею в виду, есть ли какой-нибудь документ, на который мне стоит взглянуть. Я новичок, любое предложение буду благодарен. - person SanyapongY; 20.03.2020
comment
Я понял!. Да, как вы упомянули, я запутался и подумал, что они разделены. Большое спасибо за Вашу помощь. Хорошего дня, братан :). - person SanyapongY; 20.03.2020