예측 클래스

Vertex AI SDK에는 다음 예측 클래스가 포함되어 있습니다. 클래스 하나는 일괄 예측용입니다. 나머지는 온라인 예측이나 벡터 검색 예측과 관련이 있습니다. 자세한 내용은 Vertex AI의 예측 가져오기 개요를 참조하세요.

일괄 예측 클래스

일괄 예측은 비동기식 예측 요청의 그룹입니다. 모델을 엔드포인트에 배포할 필요 없이 모델 리소스에서 일괄 예측을 요청합니다. 일괄 예측은 즉각적인 응답이 필요하지 않고 단일 요청으로 데이터를 처리하려는 경우에 적합합니다. BatchPredictionJob은 일괄 예측과 관련된 Vertex AI SDK의 클래스 중 하나입니다.

BatchPredictionJob

BatchPredictionJob 클래스는 비동기식 예측 요청 그룹을 나타냅니다. 일괄 예측 작업을 만드는 방법은 두 가지가 있습니다.

  1. 일괄 예측 작업을 만드는 데 선호되는 방법은 학습된 Model에서 batch_predict 메서드를 사용하는 것입니다. 이 메서드에는 다음 매개변수가 필요합니다.

    • instances_format: 일괄 예측 요청 파일의 형식(jsonl, csv, bigquery, tf-record, tf-record-gzip 또는 file-list)입니다.
    • prediction_format: 일괄 예측 응답 파일의 형식(jsonl, csv, bigquery, tf-record, tf-record-gzip, file-list)입니다.
    • gcs_source: 일괄 예측 요청에 대한 하나 이상의 Cloud Storage 경로 목록입니다.
    • gcs_destination_prefix: Vertex AI가 예측을 작성하는 Cloud Storage 경로입니다.

    다음 코드는 Model.batch_predict를 호출하는 방법의 예시입니다.

    batch_prediction_job = model.batch_predict(
        instances_format="jsonl",
        predictions_format="jsonl",
        job_display_name="your_job_display_name_string",
        gcs_source=['gs://path/to/my/dataset.csv'],
        gcs_destination_prefix='gs://path/to/my/destination',
        model_parameters=None,
        starting_replica_count=1,
        max_replica_count=5,
        machine_type="n1-standard-4",
        sync=True
    )
    
  2. 일괄 예측 작업을 만드는 두 번째 방법은 BatchPredictionJob.create 메서드를 호출하는 것입니다. BatchPredictionJob.create 메서드에는 4개의 매개변수가 필요합니다.

    • job_display_name: 일괄 예측 작업에 할당할 이름입니다. BatchPredictionJob.create에는 job_display_name이 필요하지만 Model.batch_predict에는 선택사항입니다.
    • model_name: 일괄 예측 작업에 사용하는 학습된 Model의 정규화된 이름 또는 ID입니다.
    • instances_format: 일괄 예측 요청 파일의 형식(jsonl, csv, bigquery, tf-record, tf-record-gzip 또는 file-list)입니다.
    • predictions_format: 일괄 예측 응답 파일의 형식(jsonl, csv, bigquery, tf-record, tf-record-gzip, file-list)입니다.

온라인 예측 클래스

온라인 예측은 모델 엔드포인트에 수행되는 동기식 요청입니다. 온라인 예측 요청을 수행하려면 먼저 모델을 엔드포인트에 배포해야 합니다. 애플리케이션 입력을 기반으로 생성된 예측이 필요하거나 빠른 예측 응답이 필요한 경우 온라인 예측을 사용합니다.

Endpoint

모델에서 온라인 예측을 수행하려면 먼저 모델을 엔드포인트에 배포해야 합니다. 엔드포인트에 모델을 배포할 때 온라인 예측을 제공할 수 있도록 물리적 머신 리소스를 모델과 연결합니다.

하나의 엔드포인트에 둘 이상의 모델을 배포할 수 있습니다. 둘 이상의 엔드포인트에 하나의 모델을 배포할 수도 있습니다. 자세한 내용은 모델 배포 고려사항을 참조하세요.

Endpoint 리소스를 만들려면 모델을 배포합니다. Model.deploy 메서드를 호출하면 Endpoint가 생성되고 반환됩니다.

다음은 커스텀 학습 작업을 만들고, 모델을 만들고 학습시키고, 엔드포인트에 모델을 배포하는 방법을 보여주는 샘플 코드 스니펫입니다.

# Create your custom training job

job = aiplatform.CustomTrainingJob(
    display_name="my_custom_training_job",
    script_path="task.py",
    container_uri="us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest",
    requirements=["google-cloud-bigquery>=2.20.0", "db-dtypes"],
    model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest"
)

# Start the training and create your model
model = job.run(
    dataset=dataset,
    model_display_name="my_model_name",
    bigquery_destination=f"bq://{project_id}"
)

# Create an endpoint and deploy your model to that endpoint
endpoint = model.deploy(deployed_model_display_name="my_deployed_model")

# Get predictions using test data in a DataFrame named 'df_my_test_data'
predictions = endpoint.predict(instances=df_my_test_data)

PrivateEndpoint

비공개 엔드포인트는 보안 네트워크를 통해 Vertex AI 온라인 예측 서비스로 예측이 전송된다는 점을 제외하면 Endpoint 리소스와 비슷합니다. 조직에서 모든 트래픽을 비공개로 유지하려면 비공개 엔드포인트를 사용합니다.

비공개 엔드포인트를 사용하려면 Vertex AI를 Virtual Private Cloud(VPC)와 피어링하도록 구성해야 합니다. 비공개 예측 엔드포인트가 Vertex AI와 직접 연결하려면 VPC가 필요합니다. 자세한 내용은 VPC 네트워크 피어링 설정온라인 예측에 비공개 엔드포인트 사용을 참조하세요.

ModelDeploymentMonitoringJob

ModelDeploymentMonitoringJob 리소스를 사용하여 모델을 모니터링하고 모델 예측 품질에 영향을 줄 수 있는 방식으로 편차가 발생하면 알림을 수신합니다.

입력 데이터가 모델을 학습시키는 데 사용된 데이터와 다르면 모델이 변경되지 않았더라도 모델 성능이 저하될 수 있습니다. 모델 모니터링은 특성 편향드리프트의 입력 날짜를 분석합니다.

  • 편향은 프로덕션 특성 데이터 분포가 모델을 학습시키는 데 사용된 특성 데이터에서 벗어나면 발생합니다.
  • 드리프트는 시간 경과에 따라 프로덕션 특성 데이터가 크게 변경될 때 발생합니다.

자세한 내용은 Vertex AI 모델 모니터링 소개를 참조하세요. Vertex AI SDK로 Vertex AI 모니터링을 구현하는 방법의 예시는 GitHub의 Explainable AI 특성 기여 분석으로 Vertex AI 모델 모니터링 노트북을 참조하세요.

벡터 검색 예측 클래스

벡터 검색은 유사성 일치를 수행하기 위해 유사성 색인 또는 벡터를 빌드하는 관리형 서비스입니다. 간략한 두 단계를 통해 유사성 일치가 수행됩니다.

  1. 데이터의 벡터 표현을 만듭니다. 데이터는 텍스트, 이미지, 동영상, 오디오 또는 테이블 형식 데이터일 수 있습니다.

  2. 벡터 검색에서는 개발자가 만든 벡터의 엔드포인트를 사용하여 유사한 벡터에 대해 지연 시간이 짧은 대규모 검색을 수행합니다.

자세한 내용은 GitHub의 벡터 검색 개요벡터 검색 색인 만들기 노트북을 참조하세요.

MatchingEngineIndex

MatchingEngineIndex 클래스는 벡터 검색에서 유사성 검색을 수행하는 데 사용하는 개발자가 만든 색인이나 벡터를 나타냅니다.

색인에 사용할 수 있는 검색 알고리즘에는 다음 두 가지가 있습니다.

  1. TreeAhConfig는 shallow tree-AH 알고리즘(비대칭 해싱을 사용하는 shallow tree)을 사용합니다. MatchingEngineIndex.create_tree_ah_index를 사용하여 tree-AH 알고리즘을 사용하는 색인을 만듭니다.
  2. BruteForceConfig는 표준 선형 검색을 사용합니다. MatchingEngineIndex.create_brute_force_index를 사용하여 표준 선형 검색을 사용하는 색인을 만듭니다.

색인을 구성하는 방법에 대한 자세한 내용은 색인 구성을 참조하세요.

다음 코드는 tree-AH 알고리즘을 사용하는 색인을 만드는 예시입니다.

my_tree_ah_index = aiplatform.Index.create_tree_ah_index(
    display_name="my_display_name",
    contents_delta_uri="gs://my_bucket/embeddings",
    dimensions=1,
    approximate_neighbors_count=150,
    distance_measure_type="SQUARED_L2_DISTANCE",
    leaf_node_embedding_count=100,
    leaf_nodes_to_search_percent=50,
    description="my description",
    labels={ "label_name": "label_value" }
)

다음 코드는 무작위 공격 알고리즘을 사용하는 색인을 만드는 예시입니다.

my_brute_force_index = aiplatform.Index.create_brute_force_index(
    display_name="my_display_name",
    contents_delta_uri="gs://my_bucket/embeddings",
    dimensions=1,
    approximate_neighbors_count=150,
    distance_measure_type="SQUARED_L2_DISTANCE",
    description="my description",
    labels={ "label_name": "label_value" }
)

MatchingEngineIndexEndpoint

MatchingEngineIndexEndpoint 클래스를 사용하여 엔드포인트를 만들고 검색합니다. 엔드포인트에 모델을 배포한 후 쿼리를 실행하는 데 사용하는 IP 주소를 가져옵니다.

다음 코드는 일치하는 엔진 색인 엔드포인트를 만든 후 일치하는 엔진 색인을 배포하는 예시입니다.

my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
    display_name="sample_index_endpoint",
    description="index endpoint description",
    network="projects/123456789123/global/networks/my_vpc"
)

my_index_endpoint = my_index_endpoint.deploy_index(
    index=my_tree_ah_index, deployed_index_id="my_matching_engine_index_id"
)

다음 단계