AlloyDB Omni에 AlloyDB AI 설치

이 페이지에서는 AlloyDB Omni를 설치하고 AlloyDB AI를 통합하는 방법을 보여줍니다.

AlloyDB AI는 엔터프라이즈 생성형 AI 애플리케이션을 빌드할 수 있는 AlloyDB Omni에 포함된 기능 모음입니다. AlloyDB의 ML 기능에 관한 자세한 내용은 생성형 AI 애플리케이션 빌드를 참고하세요.

AlloyDB AI가 포함된 AlloyDB Omni를 사용하면 원격 ML 모델을 쿼리하여 ML 모델에서 생성된 온라인 예측 및 텍스트 임베딩을 사용할 수 있습니다. AlloyDB AI가 포함된 AlloyDB Omni는 이미지와 같은 다른 콘텐츠의 벡터 임베딩도 처리할 수 있습니다(예: google_ml.predict_row 인터페이스를 사용하고 쿼리에서 직접 번역하는 경우).

AlloyDB AI와 함께 AlloyDB Omni를 설치할 위치에 따라 다음 옵션 중 하나를 선택합니다.

원격 모델을 쿼리하도록 AlloyDB Omni 인스턴스 구성

데이터베이스 클러스터 매니페스트에서 googleMLExtension를 사용 설정하여 모델 엔드포인트 관리를 사용하여 원격 모델을 쿼리할 수 있습니다.

원하는 경우 Vertex AI 모델을 쿼리하려면 Vertex AI로 AlloyDB 서비스 계정을 구성하고, 키를 사용하여 Kubernetes 비밀을 만들고, 데이터베이스 클러스터 매니페스트에 Kubernetes 비밀을 설정해야 합니다.

AlloyDB 서비스 계정에 Vertex AI 권한 추가

원격 Vertex AI 모델을 쿼리하도록 AlloyDB Omni를 구성하려면 다음 단계를 따르세요.

  1. Google Cloud로 서비스 계정을 만듭니다.

  2. 서비스 계정 키를 만들고 JSON 형식으로 private-key.json 파일에 저장한 후 다운로드합니다.

  3. 키를 파일 시스템의 영구 위치에 저장합니다. 이 파일은 AlloyDB Omni 서버의 전체 기간 동안 이 위치에 있습니다.

    파일 시스템의 위치를 기록해 둡니다. 이후 단계에서 필요합니다.

  4. 적절한 프로젝트 및 서비스 계정에 Vertex AI Identity and Access Management (IAM) 권한을 추가합니다.

       gcloud projects add-iam-policy-binding PROJECT_ID \
           --member="serviceAccount:SERVICE_ACCOUNT_ID" \
           --role="roles/aiplatform.user"

    다음을 바꿉니다.

    • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.

    • SERVICE_ACCOUNT_ID: 이전 단계에서 만든 서비스 계정의 ID입니다. 여기에는 전체 @PROJECT_ID.iam.gserviceaccount.com 접미사가 포함됩니다(예: my-service@my-project.iam.gserviceaccount.com).

서비스 계정 키를 사용하여 Kubernetes 보안 비밀 만들기

이전 단계에서 다운로드한 서비스 계정 키를 기반으로 Kubernetes 보안 비밀을 만들려면 다음 명령어를 실행합니다.

   kubectl create secret generic SECRET_NAME \
   --from-file=PATH_TO_SERVICE_ACCOUNT_KEY/private-key.json \
   -n NAMESPACE

다음을 바꿉니다.

  • SECRET_NAME: AlloyDB Omni가 AlloyDB AI 기능에 액세스할 수 있도록 DBCluster 매니페스트를 만들 때 사용되는 보안 비밀의 이름입니다. 예를 들면 vertex-ai-key-alloydb입니다.

  • PATH_TO_SERVICE_ACCOUNT_KEY: private-key.json 서비스 계정 키를 다운로드한 위치의 경로입니다.

  • NAMESPACE: 데이터베이스 클러스터의 네임스페이스입니다.

AlloyDB Omni 연산자 설치

AlloyDB Omni 연산자 설치에 나와 있는 단계에 따라 AlloyDB Omni 연산자를 설치합니다.

AlloyDB AI로 데이터베이스 클러스터 만들기

  1. AlloyDB AI로 데이터베이스 클러스터를 만듭니다.

    googleMLExtension 필드에서 enabledtrue로 설정하면 원격 모델을 쿼리할 수 있습니다. Vertex AI 모델을 쿼리하려면 vertexAIKeyRef를 Kubernetes 보안 비밀로 설정합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-DB_CLUSTER_NAME
    type: Opaque
    data:
      DB_CLUSTER_NAME: "ENCODED_PASSWORD"
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: DB_CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        adminUser:
          passwordRef:
            name: db-pw-DB_CLUSTER_NAME
        features:
          googleMLExtension:
            enabled: true
            config:
              vertexAIKeyRef: VERTEX_AI_SECRET_NAME
              vertexAIRegion: VERTEX_AI_REGION
        resources:
          cpu: CPU_COUNT
          memory: MEMORY_SIZE
          disks:
          - name: DataDisk
            size: DISK_SIZE
            storageClass: standard
    

    다음을 바꿉니다.

    • DB_CLUSTER_NAME: 이 데이터베이스 클러스터의 이름입니다(예: my-db-cluster).

    • VERTEX_AI_SECRET_NAME (선택사항): 이전 단계에서 만든 Vertex AI 보안 비밀입니다. Vertex AI 모델을 호출하려면 이 옵션을 설정해야 합니다.

    • VERTEX_AI_REGION(선택사항): 요청을 전송할 Vertex AI 리전 엔드포인트입니다(예: us-west4). 기본값은 us-central1입니다.

    • ENCODED_PASSWORD: 기본 postgres 사용자 역할의 데이터베이스 로그인 비밀번호로, base64 문자열로 인코딩됩니다(예: ChangeMe123의 경우 Q2hhbmdlTWUxMjM=).

    • CPU_COUNT: 이 데이터베이스 클러스터의 각 데이터베이스 인스턴스에서 사용할 수 있는 CPU 수입니다.

    • MEMORY_SIZE: 이 데이터베이스 클러스터의 데이터베이스 인스턴스당 메모리 양입니다. CPU당 8GB로 설정하는 것이 좋습니다. 예를 들어 이 매니페스트에서 앞서 cpu2로 설정한 경우 memory16Gi로 설정하는 것이 좋습니다.

    • DISK_SIZE: 데이터베이스 인스턴스당 디스크 크기입니다(예: 10Gi).

  2. 매니페스트를 적용합니다.

    kubectl apply -f DB_CLUSTER_YAML

    다음을 바꿉니다.

    • DB_CLUSTER_YAML: 이 데이터베이스 클러스터 매니페스트 파일의 이름입니다(예: alloydb-omni-db-cluster.yaml).

사전 설치된 psql을 사용하여 연결

데이터베이스를 실행하는 팟에 이미 설치된 psql 클라이언트를 사용하여 테스트 연결을 설정할 수 있습니다.

이렇게 하려면 다음 명령어를 실행합니다.

export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres

DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

명령어를 입력하면 데이터베이스 서버에서 비밀번호를 묻는 메시지가 표시됩니다. 데이터베이스 클러스터를 만들 때 base64로 인코딩된 버전을 Kubernetes 보안 비밀로 제공한 비밀번호를 입력합니다. 예를 들어 Q2hhbmdlTWUxMjM= 보안 비밀로 데이터베이스 클러스터를 만들었다면 여기에서 사용할 로그인 비밀번호는 ChangeMe123입니다.

AlloyDB AI 설치를 통해 AlloyDB Omni 확인

설치가 완료되었으며 모델 예측을 사용하는지 확인하려면 다음을 입력합니다.

   CREATE EXTENSION IF NOT EXISTS google_ml_integration CASCADE;

   SELECT array_dims(embedding( 'text-embedding-005', 'AlloyDB AI')::real[]);

결과는 다음과 유사합니다.

      array_dims
      ------------
      [1:768]
      (1 row) 

이전 쿼리에서 embedding() 호출은 입력 텍스트 AlloyDB AI의 임베딩을 생성합니다. array_dimsembedding()에서 반환된 배열의 크기를 반환합니다. text-embedding-005 모델은 768개의 측정기준이 있는 출력을 반환하므로 출력은 [768]입니다.

다음 단계