일괄 예측 및 설명 가져오기

이 페이지에서는 Google Cloud 콘솔 또는 Vertex AI API를 사용하여 학습된 AutoML 분류 또는 회귀 모델에 일괄 예측 요청을 수행하는 방법을 보여줍니다.

일괄 예측 요청은 비동기식 요청입니다(동기식 요청인 온라인 예측과 반대). 모델을 엔드포인트에 배포할 필요 없이 모델 리소스에서 직접 일괄 예측을 요청합니다. 표 형식 데이터의 경우 즉각적인 응답이 필요하지 않고 단일 요청을 사용하여 누적된 데이터를 처리하고 싶은 경우 일괄 예측을 사용하세요.

일괄 예측 요청을 수행하려면 Vertex AI가 예측 결과를 저장하는 입력 소스출력 형식을 지정합니다.

시작하기 전에

일괄 예측 요청을 수행하기 전에 먼저 모델을 학습시켜야 합니다.

입력 데이터

일괄 예측 요청의 입력 데이터는 모델이 예측을 수행하는 데 사용하는 데이터입니다. 분류 또는 회귀 모델의 경우 다음 두 가지 형식 중 하나로 입력 데이터를 제공할 수 있습니다.

  • BigQuery 테이블
  • Cloud Storage의 CSV 객체

모델 학습에 사용한 형식과 동일한 형식을 입력 데이터에 사용하는 것이 좋습니다. 예를 들어 BigQuery에서 데이터를 사용하여 모델을 학습시켰으면 BigQuery 테이블을 일괄 예측의 입력으로 사용하는 것이 가장 좋습니다. Vertex AI는 모든 CSV 입력 필드를 문자열로 취급하므로 학습 데이터와 입력 데이터 형식을 혼합하면 오류가 발생할 수 있습니다.

데이터 소스에는 모델 학습에 사용된 모든 열을 어떤 순서대로든 포함하는 테이블 형식 데이터가 있어야 합니다. 학습 데이터에 없거나, 학습 데이터에는 있지만 학습에 사용할 수 없는 열을 포함할 수 있습니다. 이러한 추가 열은 출력에 포함되지만 예측 결과에 영향을 주지 않습니다.

입력 데이터 요구사항

BigQuery 테이블

BigQuery 테이블을 입력으로 선택하는 경우 다음을 확인해야 합니다.

  • BigQuery 데이터 소스 테이블은 100GB를 넘지 않아야 합니다.
  • 테이블이 다른 프로젝트에 있으면 해당 프로젝트의 Vertex AI 서비스 계정에 BigQuery Data Editor 역할을 제공해야 합니다.

CSV 파일

Cloud Storage에서 입력으로 CSV 객체를 선택할 경우 다음 사항을 확인해야 합니다.

  • 데이터 소스는 열 이름이 있는 헤더 행으로 시작해야 합니다.
  • 각 데이터 소스 객체는 10GB를 넘지 않아야 합니다. 여러 파일을 포함할 수도 있지만 최대 용량은 100GB로 제한됩니다.
  • Cloud Storage 버킷이 다른 프로젝트에 있으면 해당 프로젝트의 Storage Object Creator 역할을 Vertex AI 서비스 계정에 부여해야 합니다.
  • 모든 문자열을 큰따옴표(")로 묶어야 합니다.

출력 형식

일괄 예측 요청의 출력 형식은 입력에 사용한 형식과 동일할 필요가 없습니다. 예를 들어 BigQuery 테이블을 입력으로 사용한 경우 Cloud Storage의 CSV 객체로 결과를 출력할 수 있습니다.

모델에 일괄 예측 요청 보내기

일괄 예측 요청을 수행하려면 Google Cloud 콘솔 또는 Vertex AI API를 사용하면 됩니다. 입력 데이터 소스는 Cloud Storage 버킷이나 BigQuery 테이블에 저장된 CSV 객체일 수 있습니다. 입력으로 제출하는 데이터 양에 따라 일괄 예측 태스크가 완료되는 데 다소 시간이 걸릴 수 있습니다.

Google Cloud 콘솔

Google Cloud 콘솔을 사용하여 일괄 예측을 요청합니다.

  1. Google Cloud 콘솔의 Vertex AI 섹션에서 일괄 예측 페이지로 이동합니다.

    일괄 예측 페이지로 이동

  2. 만들기를 클릭하여 새 일괄 예측 창을 엽니다.
  3. 일괄 예측 정의에서 다음 단계를 완료합니다.
    1. 일괄 예측의 이름을 입력합니다.
    2. 모델 이름에 이 일괄 예측에 사용할 모델의 이름을 선택합니다.
    3. 버전에 이 일괄 예측에 사용할 모델 버전을 선택합니다.
    4. 소스 선택에서 소스 입력 데이터가 Cloud Storage의 CSV 파일인지 또는 BigQuery의 테이블인지 여부를 선택합니다.
      • CSV 파일의 경우 CSV 입력 파일이 있는 Cloud Storage 위치를 지정합니다.
      • BigQuery 테이블의 경우 테이블이 있는 프로젝트 ID, BigQuery 데이터 세트 ID, BigQuery 테이블 또는 뷰 ID를 지정합니다.
    5. 출력에서 CSV 또는 BigQuery를 선택합니다.
      • CSV의 경우 Vertex AI에서 출력을 저장하는 Cloud Storage 버킷을 지정합니다.
      • BigQuery의 경우 프로젝트 ID 또는 기존 데이터 세트를 지정할 수 있습니다.
        • 프로젝트 ID를 지정하려면 Google Cloud 프로젝트 ID 필드에 프로젝트 ID를 입력합니다. Vertex AI에서 새로운 출력 데이터 세트를 자동으로 만듭니다.
        • 기존 데이터 세트를 지정하려면 Google Cloud 프로젝트 ID 필드에 BigQuery 경로를 입력합니다(예: bq://projectid.datasetid).
      • 선택사항. 설명(특성 기여 분석이라고도 함)이 포함된 예측을 요청하여 모델이 예측에 어떻게 도착했는지 확인할 수 있습니다. 로컬 특성 중요도 값은 각 특성이 예측 결과에 얼마나 기여했는지 나타냅니다. 특성 기여 분석은 Vertex Explainable AI를 통한 Vertex AI 예측에 포함되어 있습니다.

        특성 기여 분석을 사용 설정하려면 이 모델에 특성 기여 분석 사용 설정을 선택합니다. 이 옵션은 출력 대상이 Cloud Storage의 BigQuery 또는 JSONL인 경우에 사용할 수 있습니다. Cloud Storage의 CSV에서는 특성 기여 분석이 지원되지 않습니다.

  4. 선택사항: 일괄 예측을 위한 모델 모니터링 분석은 미리보기로 제공됩니다. 일괄 예측 작업에 편향 감지 구성을 추가하는 방법은 기본 요건을 참조하세요.
    1. 이 일괄 예측에 모델 모니터링 사용 설정을 클릭하여 켜거나 끕니다.
    2. 학습 데이터 소스를 선택합니다. 선택한 학습 데이터 소스의 데이터 경로 또는 위치를 입력합니다.
    3. 선택사항: 알림 기준 아래에서 알림을 트리거할 임곗값을 지정합니다.
    4. 알림 이메일의 경우 모델이 알림 기준을 초과하면 알림을 받을 이메일 주소 하나 이상을 쉼표로 구분하여 입력합니다.
    5. 선택사항: 알림 채널의 경우 모델이 알림 기준을 초과하면 알림을 받을 Cloud Monitoring 채널을 추가합니다. 기존 Cloud Monitoring 채널을 선택하거나 알림 채널 관리를 클릭하여 새 채널을 만들 수 있습니다. 콘솔에서는 PagerDuty, Slack, Pub/Sub 알림 채널을 지원합니다.
  5. 만들기를 클릭합니다.

API: BigQuery

REST

batchPredictionJobs.create 메서드를 사용하여 일괄 예측을 요청합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 모델이 저장되고 일괄 예측 작업이 실행되는 리전. 예를 들면 us-central1입니다.
  • PROJECT_ID: 프로젝트 ID
  • BATCH_JOB_NAME: 일괄 작업의 표시 이름
  • MODEL_ID: 예측을 수행하는 데 사용할 모델의 ID
  • INPUT_URI: BigQuery 데이터 소스에 대한 참조입니다. 형식은 다음과 같습니다.
    bq://bqprojectId.bqDatasetId.bqTableId
    
  • OUTPUT_URI: 예측이 기록되는 BigQuery 대상에 대한 참조입니다. 프로젝트 ID를 지정하고 선택적으로 기존 데이터 세트 ID를 지정합니다. 프로젝트 ID만 지정하면 Vertex AI가 새로운 출력 데이터 세트를 만듭니다. 다음 형식을 사용합니다.
    bq://bqprojectId.bqDatasetId
    
  • MACHINE_TYPE: 이 일괄 예측 작업에 사용할 머신 리소스입니다. 자세히 알아보기
  • STARTING_REPLICA_COUNT: 이 일괄 예측 작업의 시작 노드 수입니다. 로드 시 필요에 따라 최대 노드 수까지 노드 수를 늘리거나 줄일 수 있지만 절대 이 수 미만이 되지 않습니다.
  • MAX_REPLICA_COUNT: 이 일괄 예측 작업의 최대 노드 수입니다. 로드 시 필요에 따라 노드 수를 늘리거나 줄일 수 있지만 최댓값을 절대 초과하지 않습니다. 선택사항으로, 기본값은 10입니다.
  • GENERATE_EXPLANATION: 설명(특성 기여 분석이라고도 함)이 포함된 예측을 요청하여 모델이 예측에 어떻게 도착했는지 확인할 수 있습니다. 로컬 특성 중요도 값은 각 특성이 예측 결과에 얼마나 기여했는지 나타냅니다. 특성 기여 분석은 Vertex Explainable AI를 통한 Vertex AI 예측에 포함되어 있습니다.

    기본값은 false입니다. 특성 기여 분석을 사용 설정하려면 true로 설정합니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

JSON 요청 본문:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
      "outputUri": "OUTPUT_URI"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

  "generateExplanation": GENERATE_EXPLANATION

}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "bigquery",
    "bigquerySource": {
      "inputUri": "INPUT_URI"
    }
  },
  "outputConfig": {
    "predictionsFormat": "bigquery",
    "bigqueryDestination": {
        "outputUri": bq://12345
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  },
  "generateExplanation": false,
  "outputInfo": {
    "bigqueryOutputDataset": "bq://12345.reg_model_2020_10_02_06_04
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

Java

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Java 설정 안내를 따르세요. 자세한 내용은 Vertex AI Java API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

다음 샘플에서 INSTANCES_FORMATPREDICTIONS_FORMAT을 `bigquery`로 바꿉니다. 다른 자리표시자를 교체하는 방법을 알아보려면 이 섹션의 `REST & CMD LINE` 탭을 참조하세요.
import com.google.cloud.aiplatform.v1.BatchPredictionJob;
import com.google.cloud.aiplatform.v1.BigQueryDestination;
import com.google.cloud.aiplatform.v1.BigQuerySource;
import com.google.cloud.aiplatform.v1.JobServiceClient;
import com.google.cloud.aiplatform.v1.JobServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import com.google.cloud.aiplatform.v1.ModelName;
import com.google.gson.JsonObject;
import com.google.protobuf.Value;
import com.google.protobuf.util.JsonFormat;
import java.io.IOException;

public class CreateBatchPredictionJobBigquerySample {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "PROJECT";
    String displayName = "DISPLAY_NAME";
    String modelName = "MODEL_NAME";
    String instancesFormat = "INSTANCES_FORMAT";
    String bigquerySourceInputUri = "BIGQUERY_SOURCE_INPUT_URI";
    String predictionsFormat = "PREDICTIONS_FORMAT";
    String bigqueryDestinationOutputUri = "BIGQUERY_DESTINATION_OUTPUT_URI";
    createBatchPredictionJobBigquerySample(
        project,
        displayName,
        modelName,
        instancesFormat,
        bigquerySourceInputUri,
        predictionsFormat,
        bigqueryDestinationOutputUri);
  }

  static void createBatchPredictionJobBigquerySample(
      String project,
      String displayName,
      String model,
      String instancesFormat,
      String bigquerySourceInputUri,
      String predictionsFormat,
      String bigqueryDestinationOutputUri)
      throws IOException {
    JobServiceSettings settings =
        JobServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();
    String location = "us-central1";

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (JobServiceClient client = JobServiceClient.create(settings)) {
      JsonObject jsonModelParameters = new JsonObject();
      Value.Builder modelParametersBuilder = Value.newBuilder();
      JsonFormat.parser().merge(jsonModelParameters.toString(), modelParametersBuilder);
      Value modelParameters = modelParametersBuilder.build();
      BigQuerySource bigquerySource =
          BigQuerySource.newBuilder().setInputUri(bigquerySourceInputUri).build();
      BatchPredictionJob.InputConfig inputConfig =
          BatchPredictionJob.InputConfig.newBuilder()
              .setInstancesFormat(instancesFormat)
              .setBigquerySource(bigquerySource)
              .build();
      BigQueryDestination bigqueryDestination =
          BigQueryDestination.newBuilder().setOutputUri(bigqueryDestinationOutputUri).build();
      BatchPredictionJob.OutputConfig outputConfig =
          BatchPredictionJob.OutputConfig.newBuilder()
              .setPredictionsFormat(predictionsFormat)
              .setBigqueryDestination(bigqueryDestination)
              .build();
      String modelName = ModelName.of(project, location, model).toString();
      BatchPredictionJob batchPredictionJob =
          BatchPredictionJob.newBuilder()
              .setDisplayName(displayName)
              .setModel(modelName)
              .setModelParameters(modelParameters)
              .setInputConfig(inputConfig)
              .setOutputConfig(outputConfig)
              .build();
      LocationName parent = LocationName.of(project, location);
      BatchPredictionJob response = client.createBatchPredictionJob(parent, batchPredictionJob);
      System.out.format("response: %s\n", response);
      System.out.format("\tName: %s\n", response.getName());
    }
  }
}

Python

Vertex AI SDK for Python을 설치하거나 업데이트하는 방법은 Vertex AI SDK for Python 설치를 참조하세요. 자세한 내용은 Python API 참고 문서를 확인하세요.

다음 샘플에서는 `instances_format` 및 `predictions_format` 매개변수를 `'bigquery'`로 설정합니다. 다른 매개변수를 설정하는 방법은 이 섹션의 `REST & CMD LINE` 탭을 참조하세요.
from google.cloud import aiplatform_v1beta1
from google.protobuf import json_format
from google.protobuf.struct_pb2 import Value


def create_batch_prediction_job_bigquery_sample(
    project: str,
    display_name: str,
    model_name: str,
    instances_format: str,
    bigquery_source_input_uri: str,
    predictions_format: str,
    bigquery_destination_output_uri: str,
    location: str = "us-central1",
    api_endpoint: str = "us-central1-aiplatform.googleapis.com",
):
    # The AI Platform services require regional API endpoints.
    client_options = {"api_endpoint": api_endpoint}
    # Initialize client that will be used to create and send requests.
    # This client only needs to be created once, and can be reused for multiple requests.
    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)
    model_parameters_dict = {}
    model_parameters = json_format.ParseDict(model_parameters_dict, Value())

    batch_prediction_job = {
        "display_name": display_name,
        # Format: 'projects/{project}/locations/{location}/models/{model_id}'
        "model": model_name,
        "model_parameters": model_parameters,
        "input_config": {
            "instances_format": instances_format,
            "bigquery_source": {"input_uri": bigquery_source_input_uri},
        },
        "output_config": {
            "predictions_format": predictions_format,
            "bigquery_destination": {"output_uri": bigquery_destination_output_uri},
        },
        # optional
        "generate_explanation": True,
    }
    parent = f"projects/{project}/locations/{location}"
    response = client.create_batch_prediction_job(
        parent=parent, batch_prediction_job=batch_prediction_job
    )
    print("response:", response)

API: Cloud Storage

REST

batchPredictionJobs.create 메서드를 사용해 일괄 예측을 요청합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION_ID: 모델이 저장되고 일괄 예측 작업이 실행되는 리전. 예를 들면 us-central1입니다.
  • PROJECT_ID: 프로젝트 ID
  • BATCH_JOB_NAME: 일괄 작업의 표시 이름
  • MODEL_ID: 예측을 수행하는 데 사용할 모델의 ID
  • URI: 학습 데이터가 포함된 Cloud Storage 버킷의 경로(URI). 두 개 이상 있을 수 있습니다. 각 URI의 형식은 다음과 같습니다.
    gs://bucketName/pathToFileName
    
  • OUTPUT_URI_PREFIX: 예측이 기록되는 Cloud Storage 대상의 경로입니다. Vertex AI에서 이 경로의 타임스탬프가 적용된 하위 디렉터리에 일괄 예측을 기록합니다. 이 값을 다음 형식의 문자열에 설정합니다.
    gs://bucketName/pathToOutputDirectory
    
  • MACHINE_TYPE: 이 일괄 예측 작업에 사용할 머신 리소스입니다. 자세히 알아보기
  • STARTING_REPLICA_COUNT: 이 일괄 예측 작업의 시작 노드 수입니다. 로드 시 필요에 따라 최대 노드 수까지 노드 수를 늘리거나 줄일 수 있지만 절대 이 수 미만이 되지 않습니다.
  • MAX_REPLICA_COUNT: 이 일괄 예측 작업의 최대 노드 수입니다. 로드 시 필요에 따라 노드 수를 늘리거나 줄일 수 있지만 최댓값을 절대 초과하지 않습니다. 선택사항으로, 기본값은 10입니다.
  • GENERATE_EXPLANATION: 설명(특성 기여 분석이라고도 함)이 포함된 예측을 요청하여 모델이 예측에 어떻게 도착했는지 확인할 수 있습니다. 로컬 특성 중요도 값은 각 특성이 예측 결과에 얼마나 기여했는지 나타냅니다. 특성 기여 분석은 Vertex Explainable AI를 통한 Vertex AI 예측에 포함되어 있습니다.

    기본값은 false입니다. 특성 기여 분석을 사용 설정하려면 true로 설정합니다. 이 옵션은 출력 대상이 JSONL인 경우에만 사용 가능합니다. Cloud Storage의 CSV에서는 특성 기여 분석이 지원되지 않습니다.

HTTP 메서드 및 URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs

JSON 요청 본문:

{
  "displayName": "BATCH_JOB_NAME",
  "model": "MODEL_ID",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        URI1,...
      ]
    },
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "MACHINE_TYPE",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": STARTING_REPLICA_COUNT,
    "maxReplicaCount": MAX_REPLICA_COUNT
  },

  "generateExplanation": GENERATE_EXPLANATION

}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/batchPredictionJobs" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.

{
  "name": "projects/PROJECT__ID/locations/LOCATION_ID/batchPredictionJobs/67890",
  "displayName": "batch_job_1 202005291958",
  "model": "projects/12345/locations/us-central1/models/5678",
  "state": "JOB_STATE_PENDING",
  "inputConfig": {
    "instancesFormat": "csv",
    "gcsSource": {
      "uris": [
        "gs://bp_bucket/reg_mode_test"
      ]
    }
  },
  "outputConfig": {
    "predictionsFormat": "csv",
    "gcsDestination": {
      "outputUriPrefix": "OUTPUT_URI_PREFIX"
    }
  },
  "dedicatedResources": {
    "machineSpec": {
      "machineType": "n1-standard-32",
      "acceleratorCount": "0"
    },
    "startingReplicaCount": 2,
    "maxReplicaCount": 6
  },
  "manualBatchTuningParameters": {
    "batchSize": 4
  }
  "outputInfo": {
    "gcsOutputDataset": "OUTPUT_URI_PREFIX/prediction-batch_job_1 202005291958-2020-09-30T02:58:44.341643Z"
  }
  "state": "JOB_STATE_PENDING",
  "createTime": "2020-09-30T02:58:44.341643Z",
  "updateTime": "2020-09-30T02:58:44.341643Z",
}

일괄 예측 결과 검색

Vertex AI는 일괄 예측 출력을 지정된 대상(BigQuery 또는 Cloud Storage)으로 전송합니다.

BigQuery

출력 데이터 세트

BigQuery를 사용하는 경우 일괄 예측의 출력은 출력 데이터 세트에 저장됩니다. Vertex AI에 데이터 세트를 제공한 경우 데이터 세트 이름(BQ_DATASET_NAME)은 이전에 제공한 이름입니다. 출력 데이터 세트를 제공하지 않은 경우 Vertex AI가 자동으로 데이터세트를 생성합니다. 다음 단계에 따라 이름(BQ_DATASET_NAME)을 찾을 수 있습니다.

  1. Google Cloud 콘솔에서 Vertex AI 일괄 예측 페이지로 이동합니다.

    일괄 예측 페이지로 이동

  2. 생성한 예측을 선택합니다.
  3. 출력 데이터 세트는 내보내기 위치에 지정됩니다. 데이터 세트 이름은 prediction_MODEL_NAME_TIMESTAMP 형식입니다.
출력 테이블

출력 데이터 세트에는 다음 세 가지 출력 테이블 중 하나 이상이 포함됩니다.

  • 예측 테이블

    이 테이블에는 예측이 요청된 입력 데이터의 모든 행에 대한 행이 포함됩니다(즉, TARGET_COLUMN_NAME = null).

  • 오류 테이블

    이 테이블에는 일괄 예측 중에 발생하는 중요하지 않은 오류에 대한 행이 포함됩니다. 중요하지 않은 각 오류는 Vertex AI가 예측을 반환할 수 없는 입력 데이터의 행에 해당합니다.

예측 테이블

테이블의 이름(BQ_PREDICTIONS_TABLE_NAME)은 일괄 예측 작업이 시작된 타임스탬프와 함께 'predictions_'을 추가하여 형성됩니다. predictions_TIMESTAMP

예측을 검색하려면 BigQuery 페이지로 이동하세요.

BigQuery로 이동

쿼리 형식은 모델 유형에 따라 다릅니다.

분류:

SELECT predicted_TARGET_COLUMN_NAME.classes AS classes,
predicted_TARGET_COLUMN_NAME.scores AS scores
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

classes는 잠재적 클래스의 목록이며 scores는 해당하는 신뢰도 점수입니다.

회귀:

SELECT predicted_TARGET_COLUMN_NAME.value
FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME

모델에서 확률적 추론을 사용하는 경우 predicted_TARGET_COLUMN_NAME.value에는 최적화 목표의 최소화 도구가 포함됩니다. 예를 들어 최적화 목표가 minimize-rmsepredicted_TARGET_COLUMN_NAME.value에는 평균값이 포함됩니다. minimize-maepredicted_TARGET_COLUMN_NAME.value에 중앙값이 포함됩니다.

모델에서 분위수로 확률적 추론을 사용하는 경우 Vertex AI는 최적화 목표의 최소화 도구 외에 분위수 값과 예측을 제공합니다. 분위수 값은 모델 학습 중에 설정됩니다. 분위수 예측은 분위수 값과 연결된 예측 값입니다.

특성 기여 분석을 사용 설정한 경우 예측 테이블에서도 기여 분석을 찾을 수 있습니다. 특성 BQ_FEATURE_NAME의 기여 분석에 액세스하려면 다음 쿼리를 실행합니다.

SELECT explanation.attributions[OFFSET(0)].featureAttributions.BQ_FEATURE_NAME FROM BQ_DATASET_NAME.BQ_PREDICTIONS_TABLE_NAME
  

오류 테이블

테이블의 이름(BQ_ERRORS_TABLE_NAME)은 일괄 예측 작업이 시작된 타임스탬프와 함께 errors_를 추가하여 형성됩니다. errors_TIMESTAMP 오류 검증 테이블을 검색하는 경우 다음을 수행합니다.
  1. 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 다음 쿼리를 실행합니다.
    SELECT * FROM BQ_DATASET_NAME.BQ_ERRORS_TABLE_NAME
          
오류는 다음 열에 저장됩니다.
  • errors_TARGET_COLUMN_NAME.code
  • errors_TARGET_COLUMN_NAME.message

Cloud Storage

Cloud Storage를 출력 대상으로 지정하면 일괄 예측 요청의 결과가 지정한 버킷의 새 폴더에 CSV 객체로 반환됩니다. 폴더 이름은 모델 이름 앞에 'prediction_'과 일괄 예측 작업이 시작된 시점의 타임스탬프를 추가해 지정해야 합니다. 모델의 일괄 예측 탭에서 Cloud Storage 폴더 이름을 확인할 수 있습니다.

Cloud Storage 폴더에는 다음과 같은 두 가지 객체가 있습니다.
  • 예측 객체

    예측 객체의 이름은 'predictions_1.csv', 'predictions_2.csv' 등으로 지정됩니다. 이러한 예측 파일에는 열 이름이 지정된 헤더 행과 반환된 모든 예측에 대한 하나의 행이 포함됩니다. 예측 객체에서 Vertex AI는 예측 데이터를 반환하고 모델 유형에 따라 예측 결과에 대한 하나 이상의 새 열을 만듭니다.

    • 분류: 타겟 열의 각 예상 값에 대해 이름이 TARGET_COLUMN_NAME_VALUE_score인 열이 결과에 추가됩니다. 이 열에는 해당 값에 대한 점수 또는 신뢰도 추정치가 포함됩니다.
    • 회귀: 해당 행의 예측 값은 predicted_TARGET_COLUMN_NAME라는 열에 반환됩니다. CSV 출력에 대한 예측 간격은 반환되지 않습니다.
  • 오류 객체

    오류 객체의 이름은 `errors_1.csv`, `errors_2.csv` 등으로 지정됩니다. 여기에는 헤더 행과 Vertex AI가 예측을 반환하지 못하는 입력 데이터의 모든 행에 대한 하나의 행이 포함됩니다. 예를 들어 null 비허용 특성이 null인 경우입니다

참고: 결과가 크면 여러 객체로 분할됩니다.

Cloud Storage에서 반환된 일괄 예측 결과에는 특성 기여 분석을 사용할 수 없습니다.

예측 결과 해석

분류

분류 모델은 신뢰도 점수를 반환합니다.

신뢰도 점수는 모델이 각 클래스 또는 라벨을 테스트 항목과 얼마나 밀접하게 연관시키는지를 전달합니다. 숫자가 높을수록 해당 항목에 라벨이 적용되어야 하는 모델의 신뢰도가 높아집니다. 모델의 결과를 수락할 신뢰도 점수를 얼마나 높게 책정할지 결정합니다.

회귀

회귀 모델은 예측 값을 반환합니다.

모델에서 확률적 추론을 사용하는 경우 value 필드에 최적화 목표의 최소화 도구가 포함됩니다. 예를 들어 최적화 목표가 minimize-rmsevalue 필드에 평균 값이 포함됩니다. minimize-maevalue 필드에 중앙값이 포함됩니다.

모델에서 분위수로 확률적 추론을 사용하는 경우 Vertex AI는 최적화 목표의 최소화 도구 외에 분위수 값과 예측을 제공합니다. 분위수 값은 모델 학습 중에 설정됩니다. 분위수 예측은 분위수 값과 연결된 예측 값입니다.

설명 결과 해석

일괄 예측 결과가 BigQuery에 저장되고 특성 기여 분석을 사용 설정하면 예측 테이블에서 특성 기여 분석 값을 찾을 수 있습니다.

로컬 특성 중요도를 계산하려면 먼저 기준 예측 점수를 계산합니다. 기준 값은 숫자 특성의 중앙 값과 범주형 특성의 최빈값을 사용해 학습 데이터에서 계산됩니다. 기준 값에서 생성된 예측은 기준 예측 점수가 됩니다. 기준 값은 모델에 대해 한 번 계산되며 변경되지 않습니다.

특정 예측에서 각 특성의 로컬 특성 중요도는 기준 예측 점수와 비교할 때 해당 특성이 결과를 얼마나 가감했는지 알려줍니다. 모든 특성 중요도 값의 합계는 기준 예측 점수와 예측 결과 간의 차이입니다.

분류 모델의 경우 점수는 항상 0.0과 1.0 사이(포함)입니다. 따라서 분류 모델의 로컬 특성 중요도 값은 항상 -1.0과 1.0(포함) 사이입니다.

특성 기여 분석 쿼리의 예시와 자세한 내용은 분류 및 회귀용 특성 기여 분석을 참조하세요.

다음 단계