아래 문서는 Google의 Vertex AI에 호스팅된 모델에 대한 사용자 정의 연결을 위한 예시 설정 및 모델 어댑터를 제공합니다.
단계별 가이드는 모델 어댑터 생성 방법 및 외부 호스팅 모델에 대한 연결 생성 방법에 관한 문서를 참조하십시오.
먼저, Code Repositories 애플리케이션의 모델 어댑터 라이브러리를 사용하여 모델 어댑터를 게시하고 태그를 달아주십시오. 아래 모델 어댑터는 Vertex AI SDK for Python 및 프레임워크를 사용하여 Vertex AI에 호스팅된 모델에 대한 연결을 구성합니다. 아래 코드는 Python 3.8.17
, pandas 1.5.3
,
google-cloud-aiplatform 1.32.0
, google-auth 2.23.0
, google-auth-oauthlib 1.1.0
버전에서 테스트되었습니다.
이 모델 어댑터는 다음 가정을 기반으로 합니다:
region_name
- 연결 구성으로 제공됩니다.project_id
- 연결 구성으로 제공됩니다.endpoint_id
- 연결 구성으로 제공됩니다.google_application_credentials
- 자격증명으로 제공됩니다.Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
import palantir_models as pm import models_api.models_api_executable as executable_api from google.oauth2 import service_account from google.cloud import aiplatform from google.api_core import exceptions import json import pandas as pd import logging from typing import Optional logger = logging.getLogger(__name__) class VertexAITabularAdapter(pm.ExternalModelAdapter): """ :display-name: Vertex AI 테이블 모델 어댑터 :description: 탭 형식의 입력 및 출력 데이터를 기대하는 Vertex AI 모델을위한 기본 모델 어댑터입니다. """ def __init__(self, project_id, region_name, endpoint_id, google_application_credentials): self.endpoint_id = endpoint_id # google_application_credentials는 Google 제공의 유효한 문자열 표현의 비밀 키 파일로 예상됩니다. credentials = service_account.Credentials.from_service_account_info( json.loads(google_application_credentials), scopes=["https://www.googleapis.com/auth/cloud-platform"] ) aiplatform.init(project=project_id, location=region_name, credentials=credentials) @classmethod def init_external(cls, external_context) -> "pm.ExternalModelAdapter": project_id = external_context.external_model.connection_configuration["project_id"] region_name = external_context.external_model.connection_configuration["region_name"] endpoint_id = external_context.external_model.connection_configuration["endpoint_id"] google_application_credentials = external_context.resolved_credentials["google_application_credentials"] return cls( project_id, region_name, endpoint_id, google_application_credentials ) @classmethod def api(cls): inputs = {"df_in": pm.Pandas()} outputs = {"df_out": pm.Pandas()} return inputs, outputs def predict(self, df_in): instances = df_in.to_dict(orient='records') try: endpoint = aiplatform.Endpoint(endpoint_name=self.endpoint_id) except ValueError as error: logger.error("엔드 포인트 객체를 초기화하는 중 오류가 발생했습니다. 입력된 endpoint_id, project_id 및 " "region_name을 다시 확인하세요.") raise error try: # 모델의 출력은 json 직렬화 가능으로 가정됩니다. # 결과가 실행기에 너무 크면 OOM이 발생할 수 있습니다. prediction_result = endpoint.predict(instances=instances) except exceptions.Forbidden as error: logger.error("충분한 권한이 없는 제공된 google_application_credentials로 추론을 수행하는 중 오류가 발생했습니다.") raise error except exceptions.BadRequest as error: logger.error("입력 데이터 프레임을 다시 확인하십시오. 추론을 수행하는 중 오류가 발생했습니다.") raise error return pd.json_normalize(prediction_result.predictions)
다음으로, 이 모델 어댑터를 사용하고 모델 어댑터가 예상하는 필요한 설정과 자격증명을 제공하기 위해 외부 호스팅 모델 설정합니다. 이 예제에서는 모델이 us-central1
에 호스팅되어 있다고 가정하지만, 이는 설정 가능합니다.
위의 VertexAITabularAdapter
에는 URL이 필요하지 않으므로 비워두었지만, 설정과 자격증명 맵은 모델 어댑터에서 정의한 동일한 키를 사용하여 완성됩니다.
아래는 us-central1-aiplatform.googleapis.com
(포트 443)에 대해 설정된 이그레스 정책을 사용합니다.
외부 호스팅 모델 연결 대화 상자에서 게시된 모델 어댑터를 선택합니다.
예제 Vertex AI 표 모델 어댑터가 필요로 하는 연결 설정을 정의합니다.
이 어댑터는 다음의 연결 설정이 필요합니다:
예제 Vertex AI 표 모델 어댑터가 필요로 하는 자격증명 설정을 정의합니다.
이 어댑터는 다음의 자격증명 설정이 필요합니다:
Vertex AI 모델이 설정되었으므로, 이 모델은 실시간 배포 또는 Python 변환에서 호스팅될 수 있습니다.
아래 이미지는 실시간 배포에서 Vertex AI 모델에 대한 예제 쿼리를 보여줍니다.