GCP Vertext AI Java API: возможно ли отслеживать ход долго выполняемого задания, например импорта данных или создания конвейера обучения?

Я пробую Java API Vertex AI. Для некоторых длительных задач, таких как импорт данных, обычно требуется около 30 минут. Можно ли в течение этого периода отслеживать прогресс, например процент импортированных данных?

Мой код выглядит следующим образом:

      fun importDataSample(
    project: String?, datasetName: String?, gcsSourceUri: String?, importSchemaUri: String?
) {
    val datasetServiceSettings: DatasetServiceSettings = DatasetServiceSettings.newBuilder()
        .setEndpoint("us-central1-aiplatform.googleapis.com:443")
        .setCredentialsProvider(credentialsProvider(DatasetServiceSettings.getDefaultServiceScopes()))
        .build()
    DatasetServiceClient.create(datasetServiceSettings).use { datasetServiceClient ->
        val gcsSource = GcsSource.newBuilder()
            .addUris(gcsSourceUri)
            .build()
        val importDataConfig = ImportDataConfig.newBuilder()
            .setGcsSource(gcsSource)
            .setImportSchemaUri(importSchemaUri)
            .build()
        val importDataConfigs = ArrayList<ImportDataConfig>()
        importDataConfigs.add(importDataConfig)
        val importFuture: OperationFuture<ImportDataResponse, ImportDataOperationMetadata> =
            datasetServiceClient.importDataAsync(datasetName, importDataConfigs)

        System.out.format("Operation name: %s\n", importFuture.getInitialFuture().get().getName())
        println("Waiting for operation to finish...")
}

После datasetServiceClient.importDataAsync(datasetName, importDataConfigs) я получил importFuture, который представляет собой OperationFuture<ImportDataResponse, ImportDataOperationMetadata>. Он содержит InitialFuture и pollingFuture. Я пробовал различные методы этих трех фьючерсов, но не нашел ни одного, который бы работал, чтобы добиться прогресса.

Я когда-либо находил код по адресу: https://github.com/GoogleCloudPlatform/java-docs-samples/issues/819 .

В котором что-то вроде этого:

      OperationFuture<LongRunningRecognizeResponse, LongRunningRecognizeMetadata,
    Operation> response =
    speech.longRunningRecognizeAsync(config, audio);

while (!response.isDone()) {
    ApiFuture<LongRunningRecognizeMetadata> future = response.peekMetadata();
    if (future != null) {
        LongRunningRecognizeMetadata meta = future.get();
        if (meta != null) {
             int percent = meta.getProgressPercent();
             System.out.println(String.format("Percent complete: %s%%", percent));
        }
    }
    Thread.sleep(500);
}

Я думаю, что Meta.getProgressPercent() может получить то, что я хочу. Но, к сожалению, ImportDataOperationMetadata, который я использовал, даже не имеет этого метода, поэтому я сейчас застрял. Любая помощь будет оценена по достоинству.

Получите процент прогресса в длительно выполняющихся задачах.

0 ответов