이 가이드에서는 다음 시나리오에서 커스텀 서비스 계정을 사용하도록 Vertex AI를 구성하는 방법을 설명합니다.
커스텀 학습을 수행할 때 사전 빌드된 컨테이너이든 커스텀 컨테이너이든 상관없이 학습 컨테이너에서 커스텀 서비스 계정을 사용하도록 Vertex AI를 구성할 수 있습니다.
커스텀 학습
Model
리소스를Endpoint
리소스에 배포하여 온라인 예측을 제공할 때 사전 빌드된 컨테이너이든 커스텀 컨테이너이든 상관없이 예측을 제공하는 컨테이너에서 커스텀 서비스 계정을 사용하도록 Vertex AI를 구성할 수 있습니다.Vertex AI 기반 Ray 클러스터를 생성할 때 클러스터의 모든 노드에 대해 커스텀 서비스 계정을 설정할 수 있습니다.
커스텀 서비스 계정을 사용해야 하는 경우
Vertex AI가 실행되면 일반적으로 Google에서 Google Cloud 프로젝트를 생성하고 관리하는 여러 서비스 계정 중 하나의 권한으로 작동합니다. 특정 컨텍스트에서 다른 Google Cloud 서비스에 대한 향상된 액세스 권한을 Vertex AI에 부여하려면 Vertex AI의 서비스 에이전트에 특정 역할을 추가하면 됩니다.
하지만 서비스 에이전트의 권한을 맞춤설정하려는 경우 사용할 세분화된 액세스 제어 기능이 제공되지 않을 수도 있습니다. 일반적인 사용 사례는 다음과 같습니다.
- Vertex AI 작업 및 모델에 대한 더 적은 권한 허용. 기본 Vertex AI 서비스 에이전트에는 BigQuery 및 Cloud Storage에 대한 액세스 권한이 있습니다.
- 여러 작업에 다른 리소스에 대한 액세스 허용. 많은 사용자가 단일 프로젝트에서 작업을 실행하도록 허용할 수 있지만 각 사용자 작업에 특정 BigQuery 테이블이나 Cloud Storage 버킷에 대한 액세스 권한만 부여할 수 있습니다.
예를 들어 실행하는 모든 커스텀 학습 작업을 개별적으로 맞춤설정하여 프로젝트 외부의 여러 Google Cloud 리소스에 액세스하고자 할 수 있습니다.
또한 서비스 에이전트의 권한을 맞춤설정하여도 커스텀 학습 Model
에서 예측을 제공하는 컨테이너에 제공되는 권한은 변경되지 않습니다.
커스텀 학습을 수행할 때마다 액세스를 맞춤설정하거나 커스텀 학습 Model
의 예측 컨테이너의 권한을 맞춤설정하려면 커스텀 서비스 계정을 사용해야 합니다.
기본 액세스
이 섹션에서는 커스텀 학습 컨테이너에 사용할 수 있는 기본 액세스 및 커스텀 학습 Model
리소스의 예측 컨테이너에 대해 설명합니다.
커스텀 서비스 계정을 사용하는 경우 특정 CustomJob
, HyperparameterTuningJob
, TrainingPipeline
또는 DeployedModel
리소스에 대해 이 액세스를 재정의합니다.
학습 컨테이너
CustomJob
, HyperparameterTuningJob
또는 커스텀 TrainingPipeline
을 만들 때 학습 컨테이너는 기본적으로 Google Cloud 프로젝트의 Vertex AI 커스텀 코드 서비스 에이전트를 사용하여 실행됩니다.
추가 Google Cloud 리소스에 대한 액세스 권한을 부여하는 방법을 비롯하여 Vertex AI 커스텀 코드 서비스 에이전트에 대해 자세히 알아보세요.
예측 컨테이너
커스텀 학습 Model
을 Endpoint
에 배포할 때 예측 컨테이너는 Vertex AI에서 관리되는 서비스 계정을 사용하여 실행됩니다. 이 서비스 계정은 Vertex AI 서비스 에이전트와 다릅니다.
예측 컨테이너가 기본적으로 사용하는 서비스 계정에는 Vertex AI가 AIP_STORAGE_URI
환경 변수에 저장된 URI에서 사용할 수 있도록 하는 모델 아티팩트 읽기 권한이 있습니다. 다른 권한을 얻기 위해 서비스 계정에 의존하지 마세요. 서비스 계정의 권한은 맞춤설정할 수 없습니다.
커스텀 서비스 계정 구성
다음 섹션에서는 Vertex AI에서 사용할 커스텀 서비스 계정을 설정하는 방법과 서비스 계정을 사용하도록 CustomJob
, HyperparameterTuningJob
, TrainingPipeline
, DeployedModel
을 구성하는 방법을 설명합니다. Artifact Registry에서 이미지를 가져오도록 커스텀 서비스 계정을 구성할 수 없습니다. Vertex AI는 기본 서비스 계정을 사용하여 이미지를 가져옵니다.
커스텀 서비스 계정 설정
커스텀 서비스 계정을 설정하려면 다음 안내를 따르세요.
사용자 관리형 서비스 계정을 만듭니다. 사용자 관리 서비스 계정은 Vertex AI 리소스와 동일한 프로젝트 또는 다른 프로젝트에 있을 수 있습니다.
Vertex AI가 커스텀 학습 또는 예측 중에 사용할 수 있도록 하려는 Google Cloud 서비스 및 리소스에 대한 액세스 권한을 제공하는 새 서비스 계정 IAM 역할을 부여합니다.
선택사항: 사용자 관리 서비스 계정이 학습 작업과 다른 프로젝트에 있는 경우 사용자 관리 서비스 계정을 구성하여 학습 작업에 서비스에 연결할 수 있습니다.
선택사항: 예측에 사용자 관리 서비스 계정을 사용하려는 경우 Vertex AI를 사용하는 프로젝트의 Vertex AI 서비스 에이전트에 서비스 계정 관리자 역할(
roles/iam.serviceAccountAdmin
)을 부여해야 합니다.gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \ CUSTOM_SERVICE_ACCOUNT
다음을 바꿉니다.
AI_PLATFORM_SERVICE_AGENT: 다음과 같은 형식을 가진 프로젝트 Vertex AI 서비스 에이전트의 이메일 주소입니다.
service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com
Vertex AI 서비스 에이전트를 찾으려면 Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
CUSTOM_SERVICE_ACCOUNT: 이 섹션의 첫 번째 단계에서 만든 새 사용자 관리 서비스 계정의 이메일 주소입니다.
Vertex AI 리소스의 커스텀 서비스 계정 지정
리소스에 특정 서비스 계정을 사용하도록 Vertex AI를 구성하는 프로세스는 서비스 계정을 리소스에 연결하는 것입니다. 다음 섹션에서는 이전 섹션에서 만든 서비스 계정을 여러 Vertex AI 리소스에 연결하는 방법을 설명합니다.
커스텀 학습 리소스에 서비스 계정 연결
커스텀 학습 중에 새 서비스 계정을 사용하도록 Vertex AI를 구성하려면 커스텀 학습을 시작할 때 서비스 계정의 이메일 주소를 CustomJobSpec
메시지의 serviceAccount
필드에 지정합니다. 생성하는 커스텀 학습 리소스 유형에 따라 API 요청에서 이 필드의 배치는 다릅니다.
CustomJob
을 만드는 경우CustomJob.jobSpec.serviceAccount
에 서비스 계정의 이메일 주소를 지정합니다.CustomJob
만들기에 대해 자세히 알아보세요.HyperparameterTuningJob
을 만드는 경우HyperparameterTuningJob.trialJobSpec.serviceAccount
에 서비스 계정의 이메일 주소를 지정합니다.HyperparameterTuningJob
만들기에 대해 자세히 알아보세요.하이퍼파라미터 조정 없이 커스텀
TrainingPipeline
을 만드는 경우TrainingPipeline.trainingTaskInputs.serviceAccount
에 서비스 계정의 이메일 주소를 지정합니다.하이퍼파라미터 조정으로 커스텀
TrainingPipeline
을 만드는 경우TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount
에 서비스 계정의 이메일 주소를 지정합니다.
온라인 예측을 제공하는 컨테이너에 서비스 계정 연결
새 서비스 계정을 사용하도록 커스텀 학습 Model
의 예측 컨테이너를 구성하려면 Endpoint
에 Model
을 배포할 때 서비스 계정의 이메일 주소를 지정합니다.
콘솔
Google Cloud 콘솔을 사용한 모델 배포를 따르세요. 모델 설정을 지정할 때 서비스 계정 드롭다운 목록에서 서비스 계정을 선택합니다.
gcloud
Vertex AI API를 사용한 모델 배포 따르기 gcloud
ai endpoints deploy-model
명령어를 실행할 때 --service-account
플래그를 사용하여 서비스 계정의 이메일 주소를 지정합니다.
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- ENDPOINT_ID: 엔드포인트의 ID
- LOCATION_ID: Vertex AI를 사용하는 리전
- MODEL_ID: 배포할 모델의 ID
-
DEPLOYED_MODEL_NAME:
DeployedModel
의 이름.DeployedModel
의Model
표시 이름도 사용할 수 있습니다. -
MACHINE_TYPE: 선택사항. 이 배포의 각 노드에 사용되는 머신 리소스입니다. 기본 설정은
n1-standard-2
입니다. 머신 유형에 대해 자세히 알아보세요. - MIN_REPLICA_COUNT: 이 배포의 최소 노드 수. 예측 로드 시 필요에 따라 최대 노드 수까지 노드 수를 늘리거나 줄일 수 있으며 이 노드 수 미만으로는 줄일 수 없습니다.
- MAX_REPLICA_COUNT: 이 배포의 최대 노드 수. 예측 로드 시 필요에 따라 이 노드 수까지 노드 수를 늘리거나 줄일 수 있으며 최소 노드 수 미만으로는 줄일 수 없습니다.
- CUSTOM_SERVICE_ACCOUNT: 서비스 계정의 이메일 주소입니다. 예를 들면
SA_NAME@PROJECT_ID.iam.gserviceaccount.com
입니다.
gcloud ai endpoints deploy-model 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud ai endpoints deploy-model ENDPOINT_ID \ --region=LOCATION \ --model=MODEL_ID \ --display-name=DEPLOYED_MODEL_NAME \ --machine-type=MACHINE_TYPE \ --min-replica-count=MIN_REPLICA_COUNT \ --max-replica-count=MAX_REPLICA_COUNT \ --traffic-split=0=100 \ --service-account=CUSTOM_SERVICE_ACCOUNT
Windows(PowerShell)
gcloud ai endpoints deploy-model ENDPOINT_ID ` --region=LOCATION ` --model=MODEL_ID ` --display-name=DEPLOYED_MODEL_NAME ` --machine-type=MACHINE_TYPE ` --min-replica-count=MIN_REPLICA_COUNT ` --max-replica-count=MAX_REPLICA_COUNT ` --traffic-split=0=100 ` --service-account=CUSTOM_SERVICE_ACCOUNT
Windows(cmd.exe)
gcloud ai endpoints deploy-model ENDPOINT_ID ^ --region=LOCATION ^ --model=MODEL_ID ^ --display-name=DEPLOYED_MODEL_NAME ^ --machine-type=MACHINE_TYPE ^ --min-replica-count=MIN_REPLICA_COUNT ^ --max-replica-count=MAX_REPLICA_COUNT ^ --traffic-split=0=100 ^ --service-account=CUSTOM_SERVICE_ACCOUNT
API
Vertex AI API를 사용한 모델 배포 따르기 projects.locations.endpoints.deployModel
요청을 보낼 때 deployedModel.serviceAccount
필드를 서비스 계정의 이메일 주소로 설정합니다.
코드에서 Google Cloud 서비스에 액세스
이전 섹션의 안내에 따라 커스텀 서비스 계정을 사용하도록 Vertex AI를 구성하면 학습 컨테이너 또는 예측 컨테이너가 서비스 계정이 액세스할 수 있는 모든 Google Cloud 서비스 및 리소스에 액세스할 수 있습니다.
Google Cloud 서비스에 액세스하려면 애플리케이션 기본 사용자 인증 정보(ADC)를 사용하도록 학습 코드 또는 예측 제공 코드를 작성하고 액세스할 리소스의 프로젝트 ID 또는 프로젝트 번호를 명시적으로 지정합니다. 다른 Google Cloud 서비스에 액세스하기 위한 코드 작성 자세히 알아보기