Vertex AI SDK에는 다음 예측 클래스가 포함되어 있습니다. 클래스 하나는 일괄 예측용입니다. 나머지는 온라인 예측이나 벡터 검색 예측과 관련이 있습니다. 자세한 내용은 Vertex AI의 예측 가져오기 개요를 참조하세요.
일괄 예측 클래스
일괄 예측은 비동기식 예측 요청의 그룹입니다. 모델을 엔드포인트에 배포할 필요 없이 모델 리소스에서 일괄 예측을 요청합니다. 일괄 예측은 즉각적인 응답이 필요하지 않고 단일 요청으로 데이터를 처리하려는 경우에 적합합니다.
BatchPredictionJob
은 일괄 예측과 관련된 Vertex AI SDK의 클래스 중 하나입니다.
BatchPredictionJob
BatchPredictionJob
클래스는 비동기 예측 요청 그룹을 나타냅니다. 일괄 예측 작업을 만드는 방법에는 두 가지가 있습니다.
일괄 예측 작업을 만드는 좋은 방법은 학습된
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 )
일괄 예측 작업을 만드는 두 번째 방법은
BatchPredictionJob.create
메서드를 호출하는 것입니다.BatchPredictionJob.create
메서드에는 4개의 파라미터가 필요합니다.job_display_name
: 일괄 예측 작업에 할당하는 이름입니다.job_display_name
은BatchPredictionJob.create
의 경우 필수이고,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
모델에서 온라인 예측을 얻으려면 먼저 엔드포인트에 모델을 배포해야 합니다. 엔드포인트에 모델을 배포할 때는 온라인 예측을 제공할 수 있도록 물리적 머신 리소스를 모델에 연결합니다.
하나의 엔드포인트에 모델을 2개 이상 배포할 수 있습니다. 둘 이상의 엔드포인트에 하나의 모델을 배포할 수도 있습니다. 자세한 내용은 모델 배포 고려사항을 참조하세요.
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 모델 모니터링 노트북을 참조하세요.
벡터 검색 예측 클래스
벡터 검색은 유사성 일치를 수행하기 위해 유사성 색인 또는 벡터를 빌드하는 관리형 서비스입니다. 간략한 두 단계를 통해 유사성 일치가 수행됩니다.
데이터의 벡터 표현을 만듭니다. 데이터는 텍스트, 이미지, 동영상, 오디오 또는 테이블 형식 데이터일 수 있습니다.
벡터 검색에서는 개발자가 만든 벡터의 엔드포인트를 사용하여 유사한 벡터에 대해 지연 시간이 짧은 대규모 검색을 수행합니다.
자세한 내용은 GitHub의 벡터 검색 개요 및 벡터 검색 색인 만들기 노트북을 참조하세요.
MatchingEngineIndex
MatchingEngineIndex
클래스는 벡터 검색에서 유사성 검색을 수행하는 데 사용하는 개발자가 만든 색인이나 벡터를 나타냅니다.
색인에 사용할 수 있는 검색 알고리즘에는 다음 두 가지가 있습니다.
TreeAhConfig
는 shallow tree-AH 알고리즘(비대칭 해싱을 사용하는 shallow tree)을 사용합니다.MatchingEngineIndex.create_tree_ah_index
를 사용하여 tree-AH 알고리즘을 사용하는 색인을 만듭니다.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"
)
다음 단계
- Vertex AI SDK 자세히 알아보기