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, который я использовал, даже не имеет этого метода, поэтому я сейчас застрял. Любая помощь будет оценена по достоинству.
Получите процент прогресса в длительно выполняющихся задачах.