이 페이지에서는 모델을 사용하여 예측을 호출하거나 임베딩을 생성한 후 모델 엔드포인트 관리에 모델 엔드포인트를 등록하는 방법을 설명합니다.
google_ml.create_model()
함수에 관한 자세한 내용은 모델 엔드포인트 관리 참조를 참고하세요.
시작하기 전에
모델 엔드포인트에 인증이 필요한 경우
google_ml_integration
확장 프로그램을 사용 설정합니다.모델 공급자에 따라 인증을 설정합니다.
postgres
기본 사용자 이름을 사용하여 데이터베이스에 액세스해야 합니다.
확장 프로그램 사용 설정
인스턴스의
google_ml_integration.enable_model_support
데이터베이스 플래그를on
로 설정합니다. 데이터베이스 플래그 설정에 관한 자세한 내용은 데이터베이스 플래그 구성을 참고하세요.psql
클라이언트 또는 Cloud SQL 스튜디오를 사용하여 기본 인스턴스에 연결합니다.다음 명령어를 실행하여
google_ml_integration
확장 프로그램이 버전 1.4.2로 업데이트되었는지 확인합니다.ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
psql
를 사용하여google_ml_integration
버전 1.4.2 확장 프로그램을 추가합니다.CREATE EXTENSION google_ml_integration VERSION '1.4.2';
선택사항: 모델 메타데이터를 관리할 수 있는 권한을 최고 관리자가 아닌 PostgreSQL 사용자에게 부여합니다.
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
NON_SUPER_USER
를 수퍼가 아닌 PostgreSQL 사용자 이름으로 바꿉니다.
인증 설정
다음 섹션에서는 Google Cloud 내에서 호스팅되는 Vertex AI 모델 엔드포인트 또는 모델 엔드포인트를 추가하기 전에 인증을 설정하는 방법을 보여줍니다.
Vertex AI 인증 설정
Google Vertex AI 모델 엔드포인트를 사용하려면 데이터베이스에 연결하는 데 사용하는 IAM 기반 Cloud SQL 서비스 계정에 Vertex AI 권한을 추가해야 합니다. Vertex AI와의 통합에 관한 자세한 내용은 Vertex AI와 Cloud SQL 통합을 참고하세요.
맞춤 호스팅 모델의 인증 설정
이 섹션에서는 Secret Manager를 사용하는 경우 인증을 설정하는 방법을 설명합니다. Vertex AI 모델 엔드포인트를 제외한 모든 모델의 경우 API 키 또는 보유자 토큰을 Secret Manager에 저장할 수 있습니다.
모델 엔드포인트가 Secret Manager를 통한 인증을 처리하지 않는 경우 이 섹션은 선택사항입니다. 예를 들어 모델 엔드포인트에서 HTTP 헤더를 사용하여 인증 정보를 전달하거나 인증을 전혀 사용하지 않는 경우 이 섹션의 단계를 완료하지 마세요.
API 키 또는 보유자 토큰을 만들고 사용하려면 다음 단계를 완료하세요.
Secret Manager에서 보안 비밀을 만듭니다. 자세한 내용은 보안 비밀 만들기 및 보안 비밀 버전 액세스를 참고하세요.
보안 비밀 이름과 보안 비밀 경로는
google_ml.create_sm_secret()
SQL 함수에 사용됩니다.Cloud SQL 인스턴스에 보안 비밀에 액세스할 권한을 부여합니다.
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \ --role="roles/secretmanager.secretAccessor"
다음을 바꿉니다.
SECRET_ID
: Secret Manager의 보안 비밀 ID입니다.SERVICE_ACCOUNT_EMAIL
: IAM 기반 Cloud SQL 서비스 계정의 이메일 주소입니다. 이 이메일 주소를 찾으려면gcloud sql instances describe INSTANCE_NAME
명령어를 사용하고 INSTANCE_NAME을 인스턴스의 이름으로 바꿉니다.serviceAccountEmailAddress
매개변수 옆에 표시되는 값은 이메일 주소입니다.
기본 지원되는 텍스트 임베딩 모델
이 섹션에서는 모델 엔드포인트 관리를 위해 모델 엔드포인트를 등록하는 방법을 보여줍니다.
Vertex AI 임베딩 모델
모델 엔드포인트 관리는 Vertex AI의 모든 버전의 text-embedding-gecko
모델을 기본적으로 지원합니다. 정규화된 이름을 사용하여 모델 버전을 textembedding-gecko@001
또는 textembedding-gecko@002
로 설정합니다.
textembedding-gecko
및 textembedding-gecko@001
모델 엔드포인트 ID는 모두 모델 엔드포인트 관리에 사전 등록되어 있으므로 둘 중 하나를 모델 ID로 직접 사용할 수 있습니다. 이러한 모델의 경우 확장 프로그램이 기본 변환 함수를 자동으로 설정합니다.
쿼리하는 Cloud SQL 인스턴스와 Vertex AI 모델이 모두 동일한 리전에 있는지 확인합니다.
textembedding-gecko@002
모델 엔드포인트를 등록하려면 create_model
함수를 호출합니다.
CALL
google_ml.create_model(
model_id => 'textembedding-gecko@002',
model_provider => 'google',
model_qualified_name => 'textembedding-gecko@002',
model_type => 'text_embedding',
model_auth_type => 'cloudsql_service_agent_iam');
커스텀 호스팅 텍스트 임베딩 모델
이 섹션에서는 Google Cloud 내 네트워크에 호스팅된 맞춤 모델 엔드포인트를 등록하는 방법을 보여줍니다.
맞춤 호스팅 텍스트 삽입 모델 엔드포인트를 추가하려면 변환 함수와 원하는 경우 맞춤 HTTP 헤더를 만들어야 합니다. 반면 맞춤 호스팅된 일반 모델 엔드포인트를 추가하려면 선택적으로 맞춤 HTTP 헤더를 생성하고 모델 요청 URL을 설정해야 합니다.
다음 예에서는 Google Cloud 내에서 호스팅되는 Cymbal에서 호스팅하는 custom-embedding-model
텍스트 임베딩 모델 엔드포인트를 추가합니다. cymbal_text_input_transform
및 cymbal_text_output_transform
변환 함수는 모델의 입력 및 출력 형식을 예측 함수의 입력 및 출력 형식으로 변환하는 데 사용됩니다.
맞춤 호스팅 텍스트 임베딩 모델 엔드포인트를 등록하려면 다음 단계를 완료하세요.
Secret Manager에 저장된 보안 비밀을 호출합니다.
CALL google_ml.create_sm_secret( secret_id => 'SECRET_ID', secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
다음을 바꿉니다.
SECRET_ID
: 설정하고 나중에 모델 엔드포인트를 등록할 때 사용하는 보안 비밀 ID입니다(예:key1
).SECRET_MANAGER_SECRET_ID
: 보안 비밀을 만들 때 Secret Manager에 설정된 보안 비밀 ID입니다.PROJECT_ID
: Google Cloud 프로젝트의 ID입니다.VERSION_NUMBER
: 보안 비밀 ID의 버전 번호입니다.
텍스트 임베딩 모델 엔드포인트의 예측 함수에 관한 다음 서명을 기반으로 입력 및 출력 변환 함수를 만듭니다. 변환 함수를 만드는 방법에 관한 자세한 내용은 변환 함수 예를 참고하세요.
다음은
custom-embedding-model
텍스트 임베딩 모델 엔드포인트에만 해당하는 변환 함수의 예입니다.-- Input Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT) RETURNS JSON LANGUAGE plpgsql AS $$ DECLARE transformed_input JSON; model_qualified_name TEXT; BEGIN SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input; RETURN transformed_input; END; $$; -- Output Transform Function corresponding to the custom model endpoint CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON) RETURNS REAL[] LANGUAGE plpgsql AS $$ DECLARE transformed_output REAL[]; BEGIN SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output; RETURN transformed_output; END; $$;
create model 함수를 호출하여 맞춤 임베딩 모델 엔드포인트를 등록합니다.
CALL google_ml.create_model( model_id => 'MODEL_ID', model_request_url => 'REQUEST_URL', model_provider => 'custom', model_type => 'text_embedding', model_auth_type => 'secret_manager', model_auth_id => 'SECRET_ID', model_qualified_name => 'MODEL_QUALIFIED_NAME', model_in_transform_fn => 'cymbal_text_input_transform', model_out_transform_fn => 'cymbal_text_output_transform');
다음을 바꿉니다.
MODEL_ID
: 필수 항목입니다. 정의한 모델 엔드포인트의 고유 ID입니다 (예:custom-embedding-model
). 이 모델 ID는 모델 엔드포인트가 임베딩을 생성하거나 예측을 호출하는 데 필요한 메타데이터에 대해 참조됩니다.REQUEST_URL
: 필수 항목입니다. 맞춤 텍스트 임베딩 및 일반 모델 엔드포인트를 추가할 때의 모델별 엔드포인트입니다(예:https://cymbal.com/models/text/embeddings/v1
). 내부 IP 주소를 통해 모델 엔드포인트에 액세스할 수 있는지 확인합니다. 모델 엔드포인트 관리는 외부 IP 주소를 지원하지 않습니다.MODEL_QUALIFIED_NAME
: 모델 엔드포인트에서 정규화된 이름을 사용하는 경우 필요합니다. 모델 엔드포인트에 여러 버전이 있는 경우의 정규화된 이름입니다.SECRET_ID
: 앞의google_ml.create_sm_secret()
절차에서 사용한 보안 비밀 ID입니다.
일반 모델
이 섹션에서는 기본 제공되지 않는 Vertex AI Model Garden에서 일반 gemini-pro
모델 엔드포인트를 등록하는 방법을 보여줍니다. Google Cloud 내에서 호스팅되는 모든 일반 모델 엔드포인트를 등록할 수 있습니다.
Cloud SQL은 Vertex AI Model Garden을 통해 사용할 수 있는 모델 엔드포인트와 Google Cloud 내 네트워크에 호스팅된 모델 엔드포인트만 지원합니다.
Gemini 모델
다음 예에서는 Vertex AI Model Garden의 gemini-1.0-pro
모델 엔드포인트를 추가합니다.
gemini-1.0-pro
모델 엔드포인트를 등록하려면 create model
함수를 호출합니다.
```sql
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
model_provider => 'google',
model_auth_type => 'cloudsql_service_agent_iam');
```
Replace the following:
* <code><var>MODEL_ID</var></code>: a unique ID for the model endpoint that you define (for example,<br> `gemini-1`). This model ID is referenced for metadata that the model endpoint needs to generate embeddings or invoke predictions.
* <code><var>PROJECT_ID</var></code>: the ID of your Google Cloud project.
자세한 내용은 일반 모델 엔드포인트의 예측을 호출하는 방법을 참고하세요.
다음 단계
- 모델 엔드포인트 관리 참조에 대해 알아보세요.