일괄 예측은 모델을 엔드포인트에 배포할 필요 없이 모델 리소스에서 직접 예측을 요청하는 비동기식 요청입니다.
이 튜토리얼에서는 고가용성 VPN(HA VPN)을 사용하여 멀티 클라우드 및 온프레미스 비공개 연결의 기반이 되는 두 Virtual Private Cloud 네트워크 간에 학습된 모델에 비공개로 일괄 예측 요청을 전송합니다.
이 튜토리얼은 Vertex AI, 가상 프라이빗 클라우드(VPC), Google Cloud 콘솔, Cloud Shell에 익숙한 엔터프라이즈 네트워크 관리자, 데이터 과학자, 연구원을 대상으로 작성되었습니다. Vertex AI Workbench에 익숙하면 도움이 되지만 필수는 아닙니다.
목표
- 이전 다이어그램에 나와 있듯이 2개의 가상 프라이빗 클라우드(VPC) 네트워크를 만듭니다.
- 하나(
vertex-networking-vpc
)는 일괄 예측을 위해 Google API에 액세스하는 데 사용됩니다. - 다른 하나(
onprem-vpc
)는 온프레미스 네트워크를 나타냅니다.
- 하나(
vertex-networking-vpc
및onprem-vpc
를 연결하기 위해 HA VPN 게이트웨이, Cloud VPN 터널, Cloud Router를 배포합니다.- Vertex AI 일괄 예측 모델을 빌드하고 Cloud Storage 버킷에 업로드합니다.
- Private Service Connect(PSC) 엔드포인트를 만들어 비공개 요청을 Vertex AI 일괄 예측 REST API로 전달합니다.
- Private Service Connect 엔드포인트의 경로를
onprem-vpc
에 공지하도록vertex-networking-vpc
에서 Cloud Router 커스텀 공지 모드를 구성합니다. - HA VPN을 통해 비공개로 일괄 예측 요청을 전송하는 클라이언트 애플리케이션(
on-prem-client
)을 나타내는 Compute Engine VM 인스턴스를onprem-vpc
에 만듭니다.
비용
이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
-
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Cloud Shell을 열고 이 튜토리얼에 나열된 명령어를 실행합니다. Cloud Shell은 웹브라우저에서 프로젝트와 리소스를 관리할 수 있는 Google Cloud의 대화형 셸 환경입니다.
- Cloud Shell에서 현재 프로젝트를 Google Cloud 프로젝트 ID로 설정한 후 동일한 프로젝트 ID를
projectid
셸 변수에 저장합니다. PROJECT_ID를 프로젝트 ID로 바꿉니다. 필요한 경우 Google Cloud 콘솔에서 프로젝트 ID를 찾을 수 있습니다. 자세한 내용은 프로젝트 ID 찾기를 참조하세요.projectid="PROJECT_ID" gcloud config set project ${projectid}
- 프로젝트 소유자가 아니라면 프로젝트 소유자에게 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin) 역할을 부여해 달라고 요청합니다. 다음 단계에서 IAM 역할을 부여하려면 이 역할이 있어야 합니다.
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1, roles/compute.networkAdmin, roles/compute.securityAdmin, roles/dns.admin, roles/iap.tunnelResourceAccessor, roles/notebooks.admin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/servicedirectory.editor, roles/serviceusage.serviceUsageAdmin, roles/storage.admin, roles/aiplatform.admin, roles/aiplatform.user, roles/resourcemanager.projectIamAdmin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
-
Enable the DNS, Artifact Registry, IAM, Compute Engine, Notebooks, and Vertex AI APIs:
gcloud services enable dns.googleapis.com
artifactregistry.googleapis.com iam.googleapis.com compute.googleapis.com notebooks.googleapis.com aiplatform.googleapis.com
VPC 네트워크 만들기
이 섹션에서는 일괄 예측을 위해 Google API에 액세스하는 VPC 네트워크 1개와 온프레미스 네트워크를 시뮬레이션하기 위한 VPC 네트워크 1개를 만듭니다. 두 VPC 네트워크 각각에 Cloud Router와 Cloud NAT 게이트웨이를 만듭니다. Cloud NAT 게이트웨이는 외부 IP 주소가 없는 Compute Engine 가상 머신(VM) 인스턴스에 대한 발신 연결을 제공합니다.
vertex-networking-vpc
VPC 네트워크 만들기gcloud compute networks create vertex-networking-vpc \ --subnet-mode custom
vertex-networking-vpc
네트워크에서 기본 IPv4 범위가10.0.1.0/28
인workbench-subnet
이라는 서브넷을 만듭니다.gcloud compute networks subnets create workbench-subnet \ --range=10.0.1.0/28 \ --network=vertex-networking-vpc \ --region=us-central1 \ --enable-private-ip-google-access
온프레미스 네트워크(
onprem-vpc
)를 시뮬레이션하도록 VPC 네트워크를 만듭니다.gcloud compute networks create onprem-vpc \ --subnet-mode custom
onprem-vpc
네트워크에서 기본 IPv4 범위가172.16.10.0/29
인onprem-vpc-subnet1
이라는 서브넷을 만듭니다.gcloud compute networks subnets create onprem-vpc-subnet1 \ --network onprem-vpc \ --range 172.16.10.0/29 \ --region us-central1
VPC 네트워크가 올바르게 구성되었는지 확인
Google Cloud 콘솔의 VPC 네트워크 페이지에서 현재 프로젝트의 네트워크 탭으로 이동합니다.
VPC 네트워크 목록에서 네트워크 2개(
vertex-networking-vpc
및onprem-vpc
)가 생성되었는지 확인합니다.현재 프로젝트의 서브넷 탭을 클릭합니다.
VPC 서브넷 목록에서
workbench-subnet
및onprem-vpc-subnet1
서브넷이 생성되었는지 확인합니다.
하이브리드 연결 구성
이 섹션에서는 서로 연결된 HA VPN 게이트웨이 2개를 만듭니다. 하나는 vertex-networking-vpc
VPC 네트워크에 있습니다. 다른 하나는 onprem-vpc
VPC 네트워크에 있습니다. 각 게이트웨이에는 Cloud Router와 VPN 터널 쌍이 포함됩니다.
HA VPN 게이트웨이 만들기
Cloud Shell에서
vertex-networking-vpc
VPC 네트워크의 HA VPN 게이트웨이를 만듭니다.gcloud compute vpn-gateways create vertex-networking-vpn-gw1 \ --network vertex-networking-vpc \ --region us-central1
onprem-vpc
VPC 네트워크의 HA VPN 게이트웨이를 만듭니다.gcloud compute vpn-gateways create onprem-vpn-gw1 \ --network onprem-vpc \ --region us-central1
Google Cloud 콘솔에서 VPN 페이지의 Cloud VPN 게이트웨이 탭으로 이동합니다.
2개의 게이트웨이(
vertex-networking-vpn-gw1
및onprem-vpn-gw1
)가 생성되었고 각 게이트웨이에 인터페이스 IP 주소 2개가 있는지 확인합니다.
Cloud Router 및 Cloud NAT 게이트웨이 만들기
두 VPC 네트워크 각각에 일반 Cloud Router 1개와 리전 Cloud Router 1개를 만듭니다. 각 리전 Cloud Router에서 Cloud NAT 게이트웨이를 만듭니다. Cloud NAT 게이트웨이는 외부 IP 주소가 없는 Compute Engine 가상 머신(VM) 인스턴스에 대한 발신 연결을 제공합니다.
Cloud Shell에서
vertex-networking-vpc
VPC 네트워크의 Cloud Router를 만듭니다.gcloud compute routers create vertex-networking-vpc-router1 \ --region us-central1\ --network vertex-networking-vpc \ --asn 65001
onprem-vpc
VPC 네트워크의 Cloud Router를 만듭니다.gcloud compute routers create onprem-vpc-router1 \ --region us-central1\ --network onprem-vpc\ --asn 65002
vertex-networking-vpc
VPC 네트워크의 리전 Cloud Router를 만듭니다.gcloud compute routers create cloud-router-us-central1-vertex-nat \ --network vertex-networking-vpc \ --region us-central1
리전 Cloud Router에서 Cloud NAT 게이트웨이를 구성합니다.
gcloud compute routers nats create cloud-nat-us-central1 \ --router=cloud-router-us-central1-vertex-nat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
onprem-vpc
VPC 네트워크의 리전 Cloud Router를 만듭니다.gcloud compute routers create cloud-router-us-central1-onprem-nat \ --network onprem-vpc \ --region us-central1
리전 Cloud Router에서 Cloud NAT 게이트웨이를 구성합니다.
gcloud compute routers nats create cloud-nat-us-central1-on-prem \ --router=cloud-router-us-central1-onprem-nat \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges \ --region us-central1
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
Cloud Router 목록에서 다음 라우터가 생성되었는지 확인합니다.
cloud-router-us-central1-onprem-nat
cloud-router-us-central1-vertex-nat
onprem-vpc-router1
vertex-networking-vpc-router1
새 값을 보려면 Google Cloud 콘솔 브라우저 탭을 새로고침해야 할 수 있습니다.
Cloud Router 목록에서
cloud-router-us-central1-vertex-nat
를 클릭합니다.라우터 세부정보 페이지에서
cloud-nat-us-central1
Cloud NAT 게이트웨이가 생성되었는지 확인합니다.뒤로 화살표를 클릭하여 Cloud Router 페이지로 돌아갑니다.
라우터 목록에서
cloud-router-us-central1-onprem-nat
를 클릭합니다.라우터 세부정보 페이지에서
cloud-nat-us-central1-on-prem
Cloud NAT 게이트웨이가 생성되었는지 확인합니다.
VPN 터널 만들기
Cloud Shell의
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel0
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel0 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 0
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel1
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create vertex-networking-vpc-tunnel1 \ --peer-gcp-gateway onprem-vpn-gw1 \ --region us-central1 \ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router vertex-networking-vpc-router1 \ --vpn-gateway vertex-networking-vpn-gw1 \ --interface 1
onprem-vpc
네트워크에서onprem-vpc-tunnel0
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create onprem-vpc-tunnel0 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 0
onprem-vpc
네트워크에서onprem-vpc-tunnel1
이라는 VPN 터널을 만듭니다.gcloud compute vpn-tunnels create onprem-vpc-tunnel1 \ --peer-gcp-gateway vertex-networking-vpn-gw1 \ --region us-central1\ --ike-version 2 \ --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \ --router onprem-vpc-router1 \ --vpn-gateway onprem-vpn-gw1 \ --interface 1
Google Cloud 콘솔에서 VPN 페이지로 이동합니다.
VPN 터널 목록에서 VPN 터널 4개가 생성되었는지 확인합니다.
BGP 세션 설정
Cloud Router는 경계 게이트웨이 프로토콜(BGP)을 사용하여 VPC 네트워크(이 경우 vertex-networking-vpc
)와 온프레미스 네트워크(onprem-vpc
로 표시) 간에 경로를 교환합니다. Cloud Router에서 온프레미스 라우터의 인터페이스와 BGP 피어를 구성합니다.
인터페이스와 BGP 피어 구성은 함께 BGP 세션을 구성합니다.
이 섹션에서는 vertex-networking-vpc
에 대한 2개의 BGP 세션과 onprem-vpc
에 대한 2개의 BGP 세션을 만듭니다.
라우터 사이에 인터페이스와 BGP 피어를 구성하면 경로 교환이 자동으로 시작됩니다.
vertex-networking-vpc
용 BGP 세션 설정
Cloud Shell의
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel0
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel0-to-onprem \ --ip-address 169.254.0.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel0 \ --region us-central1
vertex-networking-vpc
네트워크에서bgp-onprem-tunnel0
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel0 \ --interface if-tunnel0-to-onprem \ --peer-ip-address 169.254.0.2 \ --peer-asn 65002 \ --region us-central1
vertex-networking-vpc
네트워크에서vertex-networking-vpc-tunnel1
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface vertex-networking-vpc-router1 \ --interface-name if-tunnel1-to-onprem \ --ip-address 169.254.1.1 \ --mask-length 30 \ --vpn-tunnel vertex-networking-vpc-tunnel1 \ --region us-central1
vertex-networking-vpc
네트워크에서bgp-onprem-tunnel1
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer vertex-networking-vpc-router1 \ --peer-name bgp-onprem-tunnel1 \ --interface if-tunnel1-to-onprem \ --peer-ip-address 169.254.1.2 \ --peer-asn 65002 \ --region us-central1
onprem-vpc
용 BGP 세션 설정
onprem-vpc
네트워크에서onprem-vpc-tunnel0
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel0-to-vertex-networking-vpc \ --ip-address 169.254.0.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel0 \ --region us-central1
onprem-vpc
네트워크에서bgp-vertex-networking-vpc-tunnel0
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel0 \ --interface if-tunnel0-to-vertex-networking-vpc \ --peer-ip-address 169.254.0.1 \ --peer-asn 65001 \ --region us-central1
onprem-vpc
네트워크에서onprem-vpc-tunnel1
에 대한 BGP 인터페이스를 만듭니다.gcloud compute routers add-interface onprem-vpc-router1 \ --interface-name if-tunnel1-to-vertex-networking-vpc \ --ip-address 169.254.1.2 \ --mask-length 30 \ --vpn-tunnel onprem-vpc-tunnel1 \ --region us-central1
onprem-vpc
네트워크에서bgp-vertex-networking-vpc-tunnel1
에 대한 BGP 피어를 만듭니다.gcloud compute routers add-bgp-peer onprem-vpc-router1 \ --peer-name bgp-vertex-networking-vpc-tunnel1 \ --interface if-tunnel1-to-vertex-networking-vpc \ --peer-ip-address 169.254.1.1 \ --peer-asn 65001 \ --region us-central1
BGP 세션 생성 검증
Google Cloud 콘솔에서 VPN 페이지로 이동합니다.
VPN 터널 목록에서 각 터널의 BGP 세션 상태 열 값이 BGP 세션 구성에서 BGP 설정됨으로 변경되었는지 확인합니다. 새 값을 보려면 Google Cloud 콘솔 브라우저 탭을 새로고침해야 할 수 있습니다.
vertex-networking-vpc
로 학습된 경로 검증
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 목록에서
vertex-networking-vpc
를 클릭합니다.경로 탭을 클릭합니다.
리전 목록에서 us-central1(아이오와)을 선택하고 보기를 클릭합니다.
대상 IP 범위 열에서
onprem-vpc-subnet1
서브넷의 IP 범위(172.16.10.0/29
)가 두 번 표시되는지 확인합니다.
학습된 경로 onprem-vpc
검증
뒤로 화살표를 클릭하여 VPC 네트워크 페이지로 돌아갑니다.
VPC 네트워크 목록에서
onprem-vpc
를 클릭합니다.경로 탭을 클릭합니다.
리전 목록에서 us-central1(아이오와)을 선택하고 보기를 클릭합니다.
대상 IP 범위 열에서
workbench-subnet
서브넷 IP 범위(10.0.1.0/28
)가 두 번 표시되는지 확인합니다.
Private Service Connect 소비자 엔드포인트 만들기
Cloud Shell에서 Google API에 액세스하는 데 사용될 소비자 엔드포인트 IP 주소를 예약합니다.
gcloud compute addresses create psc-googleapi-ip \ --global \ --purpose=PRIVATE_SERVICE_CONNECT \ --addresses=192.168.0.1 \ --network=vertex-networking-vpc
엔드포인트를 Google API 및 서비스에 연결하는 전달 규칙을 만듭니다.
gcloud compute forwarding-rules create pscvertex \ --global \ --network=vertex-networking-vpc\ --address=psc-googleapi-ip \ --target-google-apis-bundle=all-apis
vertex-networking-vpc
의 커스텀 공지 경로 만들기
이 섹션에서는 Cloud Router 커스텀 공지 모드를 vertex-networking-vpc-router1
(vertex-networking-vpc
의 Cloud Router)의 커스텀 IP 범위 공지로 구성하여 PSC 엔드포인트의 IP 주소를 onprem-vpc
네트워크에 공지합니다.
Google Cloud 콘솔에서 Cloud Router 페이지로 이동합니다.
Cloud Router 목록에서
vertex-networking-vpc-router1
을 클릭합니다.라우터 세부정보 페이지에서
수정을 클릭합니다.공지된 경로 섹션에서 경로에 대해 커스텀 경로 만들기를 선택합니다.
Cloud Router에서 사용할 수 있는 서브넷을 계속 공지하려면 Cloud Router에 표시되는 모든 서브넷 공지 체크박스를 선택합니다. 이 옵션을 사용 설정하면 기본 공지 모드에서 Cloud Router 동작을 모방합니다.
커스텀 경로 추가를 클릭합니다.
소스에 커스텀 IP 범위를 선택합니다.
IP 주소 범위에 다음 IP 주소를 입력합니다.
192.168.0.1
설명에 다음 텍스트를 입력합니다.
Custom route to advertise Private Service Connect endpoint IP address
완료를 클릭한 다음 저장을 클릭합니다.
onprem-vpc
에서 공지된 경로를 학습했는지 검증
Google Cloud 콘솔에서 경로 페이지로 이동합니다.
유효한 경로 탭에서 다음을 수행합니다.
- 네트워크에
onprem-vpc
를 선택합니다. - 리전에
us-central1 (Iowa)
을 선택합니다. - 보기를 클릭합니다.
경로 목록에서 이름이 .
onprem-vpc-router1-bgp-vertex-networking-vpc-tunnel0
및onprem-vpc-router1-bgp-vfertex-networking-vpc-tunnel1
로 시작하고 둘 다 대상 IP 범위192.168.0.1
가 있는 항목이 있는지 확인합니다.이러한 항목이 바로 표시되지 않으면 몇 분 정도 기다린 후 Google Cloud 콘솔 브라우저 탭을 새로고침합니다.
- 네트워크에
사용자 관리형 서비스 계정을 사용하는 onprem-vpc
VM 만들기
이 섹션에서는 일괄 예측 요청을 보내는 온프레미스 클라이언트 애플리케이션을 시뮬레이션하는 VM 인스턴스를 만듭니다. Compute Engine 및 IAM 권장사항을 준수하는 이 VM은 Compute Engine 기본 서비스 계정 대신 사용자 관리 서비스 계정을 사용합니다.
사용자 관리형 서비스 계정 만들기
Cloud Shell에서 다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
onprem-user-managed-sa
라는 서비스 계정을 만듭니다.gcloud iam service-accounts create onprem-user-managed-sa \ --display-name="onprem-user-managed-sa-onprem-client"
서비스 계정에 Vertex AI 사용자(
roles/aiplatform.user
) 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:onprem-user-managed-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
서비스 계정에 스토리지 객체 뷰어(
storage.objectViewer
) 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:onprem-user-managed-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer"
on-prem-client
VM 인스턴스 만들기
만든 VM 인스턴스에는 외부 IP 주소가 없으며 인터넷을 통한 직접 액세스를 허용하지 않습니다. VM에 대한 관리 액세스를 사용 설정하려면 IAP(Identity-Aware Proxy) TCP 전달을 사용하세요.
Cloud Shell에서
on-prem-client
VM 인스턴스를 만듭니다.gcloud compute instances create on-prem-client \ --zone=us-central1-a \ --image-family=debian-11 \ --image-project=debian-cloud \ --subnet=onprem-vpc-subnet1 \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --no-address \ --shielded-secure-boot \ --service-account=onprem-user-managed-sa@$projectid.iam.gserviceaccount.com \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install tcpdump dnsutils -y"
IAP가 VM 인스턴스에 연결하도록 허용하는 방화벽 규칙을 만듭니다.
gcloud compute firewall-rules create ssh-iap-on-prem-vpc \ --network onprem-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
Vertex AI API에 대한 공개 액세스 검증
이 섹션에서는 dig
유틸리티를 사용하여 on-prem-client
VM 인스턴스에서 Vertex AI API(us-central1-aiplatform.googleapis.com
)에 대해 DNS 조회를 수행합니다. dig
출력은 기본 액세스가 공개 VIP만 사용하여 Vertex AI API에 액세스함을 보여줍니다.
다음 섹션에서는 Vertex AI API에 대한 비공개 액세스를 구성합니다.
Cloud Shell에서 IAP를 사용하여
on-prem-client
VM 인스턴스에 로그인합니다.gcloud compute ssh on-prem-client \ --zone=us-central1-a \ --tunnel-through-iap
on-prem-client
VM 인스턴스에서dig
명령어를 실행합니다.dig us-central1-aiplatform.googleapis.com
다음과 비슷한
dig
출력이 표시됩니다. 여기서 응답 섹션의 IP 주소는 공개 IP 주소입니다.; <<>> DiG 9.16.44-Debian <<>> us-central1.aiplatfom.googleapis.com ;; global options: +cmd ;; Got answer: ;; <>/span>->HEADER<<- opcode: QUERY, status: NOERROR, id: 42506 ;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;us-central1.aiplatfom.googleapis.com. IN A ;; ANSWER SECTION: us-central1.aiplatfom.googleapis.com. 300 IN A 173.194.192.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.152.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.219.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.146.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.147.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.125.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.136.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.148.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.200.95 us-central1.aiplatfom.googleapis.com. 300 IN A 209.85.234.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.171.95 us-central1.aiplatfom.googleapis.com. 300 IN A 108.177.112.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.250.128.95 us-central1.aiplatfom.googleapis.com. 300 IN A 142.251.6.95 us-central1.aiplatfom.googleapis.com. 300 IN A 172.217.212.95 us-central1.aiplatfom.googleapis.com. 300 IN A 74.125.124.95 ;; Query time: 8 msec ;; SERVER: 169.254.169.254#53(169.254.169.254) ;; WHEN: Wed Sep 27 04:10:16 UTC 2023 ;; MSG SIZE rcvd: 321
Vertex AI API에 대한 비공개 액세스 구성 및 검증
이 섹션에서는 일괄 예측 요청을 전송할 때 요청이 PSC 엔드포인트로 리디렉션되도록 Vertex AI API에 대한 비공개 액세스를 구성합니다. PSC 엔드포인트는 다시 이러한 비공개 요청을 Vertex AI 일괄 예측 REST API로 전달합니다.
PSC 엔드포인트를 가리키도록 /etc/hosts
파일을 업데이트합니다.
이 단계에서는 공개 서비스 엔드포인트(us-central1-aiplatform.googleapis.com
)로 전송된 요청이 PSC 엔드포인트(192.168.0.1
)로 리디렉션되는 /etc/hosts
파일에 줄을 추가합니다.
on-prem-client
VM 인스턴스에서vim
또는nano
와 같은 텍스트 편집기를 사용하여/etc/hosts
파일을 엽니다.sudo vim /etc/hosts
다음 줄을 파일에 추가합니다.
192.168.0.1 us-central1-aiplatform.googleapis.com
이 줄은 PSC 엔드포인트의 IP 주소(
192.168.0.1
)를 Vertex AI Google API(us-central1-aiplatform.googleapis.com
)의 정규화된 도메인 이름에 할당합니다.수정된 파일은 다음과 같습니다.
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 us-central1-aiplatform.googleapis.com # Added by you 172.16.10.6 on-prem-client.us-central1-a.c.vertex-genai-400103.internal on-prem-client # Added by Google 169.254.169.254 metadata.google.internal # Added by Google
다음과 같이 파일을 저장합니다.
vim
을 사용하는 경우Esc
키를 누른 후:wq
를 입력하여 파일을 저장하고 종료합니다.nano
를 사용하는 경우Control+O
을 입력하고Enter
를 눌러 파일을 저장한 후Control+X
를 입력하여 종료합니다.
다음과 같이 Vertex AI 엔드포인트를 핑합니다.
ping us-central1-aiplatform.googleapis.com
ping
명령어에서 다음 출력을 반환합니다.192.168.0.1
은 PSC 엔드포인트 IP 주소입니다.PING us-central1-aiplatform.googleapis.com (192.168.0.1) 56(84) bytes of data.
ping
에서 종료하려면Control+C
를 입력합니다.exit
를 입력하여on-prem-client
VM 인스턴스를 종료합니다.
vertex-networking-vpc
에서 Vertex AI Workbench의 사용자 관리형 서비스 계정 만들기
이 섹션에서는 Vertex AI Workbench 인스턴스에 대한 액세스를 제어하기 위해 사용자 관리형 서비스 계정을 만든 후 IAM 역할을 서비스 계정에 할당합니다. 인스턴스를 만들 때 서비스 계정을 지정합니다.
Cloud Shell에서 다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
workbench-sa
라는 서비스 계정을 만듭니다.gcloud iam service-accounts create workbench-sa \ --display-name="workbench-sa"
서비스 계정에 Vertex AI 사용자(
roles/aiplatform.user
) IAM 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"
서비스 계정에 BigQuery 사용자(
roles/bigquery.user
) IAM 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/bigquery.user"
서비스 계정에 스토리지 관리자(
roles/storage.admin
) IAM 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/storage.admin"
서비스 계정에 로그 뷰어(
roles/logging.viewer
) IAM 역할을 할당합니다.gcloud projects add-iam-policy-binding $projectid \ --member="serviceAccount:workbench-sa@$projectid.iam.gserviceaccount.com" \ --role="roles/logging.viewer"
Vertex AI Workbench 인스턴스 만들기
Cloud Shell에서
workbench-sa
서비스 계정을 지정하여 Vertex AI Workbench 인스턴스를 만듭니다.gcloud workbench instances create workbench-tutorial \ --vm-image-project=deeplearning-platform-release \ --vm-image-family=common-cpu-notebooks \ --machine-type=n1-standard-4 \ --location=us-central1-a \ --subnet-region=us-central1 \ --shielded-secure-boot=True \ --subnet=workbench-subnet \ --disable-public-ip \ --service-account-email=workbench-sa@$projectid.iam.gserviceaccount.com
Google Cloud 콘솔의 Vertex AI Workbench 페이지에서 인스턴스 탭으로 이동합니다.
Vertex AI Workbench 인스턴스 이름(
workbench-tutorial
) 옆에 있는 JupyterLab 열기를 클릭합니다.Vertex AI Workbench 인스턴스가 JupyterLab을 엽니다.
파일 > 새로 만들기 > 노트북을 선택합니다.
커널 선택 메뉴에서 Python 3(로컬)를 선택하고 선택을 클릭합니다.
새 노트북이 열리면 코드를 입력할 수 있는 기본 코드 셀이 있습니다. 텍스트 필드 뒤에
[ ]:
가 표시되어 있습니다. 텍스트 필드에 코드를 붙여넣을 수 있습니다.Vertex AI SDK for Python을 설치하려면 다음 코드를 셀에 붙여넣고
선택한 셀 실행 및 진행을 클릭합니다.!pip3 install --upgrade google-cloud-bigquery scikit-learn==1.2
이 단계와 이어지는 각 단계에서 필요한 경우
아래에 셀 삽입을 클릭하여 새 코드 셀을 추가하고 셀에 코드를 붙여넣은 후 선택한 셀 실행 및 진행을 클릭합니다.이 Jupyter 런타임에서 새로 설치된 패키지를 사용하려면 런타임을 다시 시작합니다.
# Restart kernel after installs so that your environment can access the new packages import IPython app = IPython.Application.instance() app.kernel.do_shutdown(True)
JupyterLab 노트북에서 PROJECT_ID를 프로젝트 ID로 대체하여 다음 환경 변수를 설정합니다.
# set project ID and location PROJECT_ID = "PROJECT_ID" REGION = "us-central1"
학습 작업을 스테이징할 Cloud Storage 버킷을 만듭니다.
BUCKET_NAME = f"{PROJECT_ID}-ml-staging" BUCKET_URI = f"gs://{BUCKET_NAME}" !gcloud storage buckets create {BUCKET_URI} --location={REGION} --project={PROJECT_ID}
학습 데이터 준비
이 섹션에서는 예측 모델을 학습시키는 데 사용할 데이터를 준비합니다.
JupyterLab 노트북에서 BigQuery 클라이언트를 만듭니다.
from google.cloud import bigquery bq_client = bigquery.Client(project=PROJECT_ID)
BigQuery
ml_datasets
공개 데이터 세트에서 데이터를 가져옵니다.DATA_SOURCE = "bigquery-public-data.ml_datasets.census_adult_income" # Define the SQL query to fetch the dataset query = f""" SELECT * FROM `{DATA_SOURCE}` LIMIT 20000 """ # Download the dataset to a dataframe df = bq_client.query(query).to_dataframe() df.head()
sklearn
라이브러리를 사용하여 학습 및 테스트용 데이터를 분할합니다.from sklearn.model_selection import train_test_split # Split the dataset X_train, X_test = train_test_split(df, test_size=0.3, random_state=43) # Print the shapes of train and test sets print(X_train.shape, X_test.shape)
학습 및 테스트 DataFrame을 스테이징 버킷의 CSV 파일로 내보냅니다.
X_train.to_csv(f"{BUCKET_URI}/train.csv",index=False, quoting=1, quotechar='"') X_test[[i for i in X_test.columns if i != "income_bracket"]].iloc[:20].to_csv(f"{BUCKET_URI}/test.csv",index=False,quoting=1, quotechar='"')
학습 애플리케이션 준비
이 섹션에서는 Python 학습 애플리케이션을 만들고 빌드한 후 스테이징 버킷에 저장하는 방법을 포함합니다.
JupyterLab 노트북에서 학습 애플리케이션 파일을 위한 새 폴더를 만듭니다.
!mkdir -p training_package/trainer
이제 JupyterLab 탐색 메뉴에
training_package
라는 폴더가 표시됩니다.모델을 학습시키고 파일로 내보내기 위한 특성, 대상, 라벨, 단계를 정의합니다.
%%writefile training_package/trainer/task.py from sklearn.ensemble import RandomForestClassifier from sklearn.feature_selection import SelectKBest from sklearn.pipeline import FeatureUnion, Pipeline from sklearn.preprocessing import LabelBinarizer import pandas as pd import argparse import joblib import os TARGET = "income_bracket" # Define the feature columns that you use from the dataset COLUMNS = ( "age", "workclass", "functional_weight", "education", "education_num", "marital_status", "occupation", "relationship", "race", "sex", "capital_gain", "capital_loss", "hours_per_week", "native_country", ) # Categorical columns are columns that have string values and # need to be turned into a numerical value to be used for training CATEGORICAL_COLUMNS = ( "workclass", "education", "marital_status", "occupation", "relationship", "race", "sex", "native_country", ) # load the arguments parser = argparse.ArgumentParser() parser.add_argument('--training-dir', dest='training_dir', default=os.getenv('AIP_MODEL_DIR'), type=str,help='get the staging directory') args = parser.parse_args() # Load the training data X_train = pd.read_csv(os.path.join(args.training_dir,"train.csv")) # Remove the column we are trying to predict ('income-level') from our features list # Convert the Dataframe to a lists of lists train_features = X_train.drop(TARGET, axis=1).to_numpy().tolist() # Create our training labels list, convert the Dataframe to a lists of lists train_labels = X_train[TARGET].to_numpy().tolist() # Since the census data set has categorical features, we need to convert # them to numerical values. We'll use a list of pipelines to convert each # categorical column and then use FeatureUnion to combine them before calling # the RandomForestClassifier. categorical_pipelines = [] # Each categorical column needs to be extracted individually and converted to a numerical value. # To do this, each categorical column will use a pipeline that extracts one feature column via # SelectKBest(k=1) and a LabelBinarizer() to convert the categorical value to a numerical one. # A scores array (created below) will select and extract the feature column. The scores array is # created by iterating over the COLUMNS and checking if it is a CATEGORICAL_COLUMN. for i, col in enumerate(COLUMNS): if col in CATEGORICAL_COLUMNS: # Create a scores array to get the individual categorical column. # Example: # data = [39, 'State-gov', 77516, 'Bachelors', 13, 'Never-married', 'Adm-clerical', # 'Not-in-family', 'White', 'Male', 2174, 0, 40, 'United-States'] # scores = [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # # Returns: [['Sate-gov']] scores = [] # Build the scores array for j in range(len(COLUMNS)): if i == j: # This column is the categorical column we want to extract. scores.append(1) # Set to 1 to select this column else: # Every other column should be ignored. scores.append(0) skb = SelectKBest(k=1) skb.scores_ = scores # Convert the categorical column to a numerical value lbn = LabelBinarizer() r = skb.transform(train_features) lbn.fit(r) # Create the pipeline to extract the categorical feature categorical_pipelines.append( ( "categorical-{}".format(i), Pipeline([("SKB-{}".format(i), skb), ("LBN-{}".format(i), lbn)]), ) ) # Create pipeline to extract the numerical features skb = SelectKBest(k=6) # From COLUMNS use the features that are numerical skb.scores_ = [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0] categorical_pipelines.append(("numerical", skb)) # Combine all the features using FeatureUnion preprocess = FeatureUnion(categorical_pipelines) # Create the classifier classifier = RandomForestClassifier() # Transform the features and fit them to the classifier classifier.fit(preprocess.transform(train_features), train_labels) # Create the overall model as a single pipeline pipeline = Pipeline([("union", preprocess), ("classifier", classifier)]) # Save the model pipeline joblib.dump(pipeline, os.path.join(args.training_dir,"model.joblib"))
각 하위 디렉터리에
__init__.py
파일을 만들어 패키지로 만듭니다.!touch training_package/__init__.py !touch training_package/trainer/__init__.py
Python 패키지 설정 스크립트를 만듭니다.
%%writefile training_package/setup.py from setuptools import find_packages from setuptools import setup setup( name='trainer', version='0.1', packages=find_packages(), include_package_data=True, description='Training application package for census income classification.' )
sdist
명령어를 사용하여 학습 애플리케이션의 소스 배포를 만듭니다.!cd training_package && python setup.py sdist --formats=gztar
Python 패키지를 스테이징 버킷에 복사합니다.
!gcloud storage cp training_package/dist/trainer-0.1.tar.gz $BUCKET_URI/
스테이징 버킷에 파일 세 개가 포함되어 있는지 확인합니다.
!gcloud storage ls $BUCKET_URI
출력은 다음과 같이 표시됩니다.
gs://$BUCKET_NAME/test.csv gs://$BUCKET_NAME/train.csv gs://$BUCKET_NAME/trainer-0.1.tar.gz
모델 학습
이 섹션에서는 커스텀 학습 작업을 만들고 실행하여 모델을 학습시킵니다.
JupyterLab 노트북에서 다음 명령어를 실행하여 커스텀 학습 작업을 생성합니다.
!gcloud ai custom-jobs create --display-name=income-classification-training-job \ --project=$PROJECT_ID \ --worker-pool-spec=replica-count=1,machine-type='e2-highmem-2',executor-image-uri='us-docker.pkg.dev/vertex-ai/training/sklearn-cpu.1-0:latest',python-module=trainer.task \ --python-package-uris=$BUCKET_URI/trainer-0.1.tar.gz \ --args="--training-dir","/gcs/$BUCKET_NAME" \ --region=$REGION
출력은 다음과 비슷하게 표시됩니다. 각 커스텀 작업 경로의 첫 번째 숫자는 프로젝트 번호입니다(PROJECT_NUMBER). 두 번째 숫자는 커스텀 작업 ID(CUSTOM_JOB_ID)입니다. 다음 단계에서 사용할 수 있도록 이 번호를 메모하세요.
Using endpoint [https://us-central1-aiplatform.googleapis.com/] CustomJob [projects/721032480027/locations/us-central1/customJobs/1100328496195960832] is submitted successfully. Your job is still active. You may view the status of your job with the command $ gcloud ai custom-jobs describe projects/721032480027/locations/us-central1/customJobs/1100328496195960832 or continue streaming the logs with the command $ gcloud ai custom-jobs stream-logs projects/721032480027/locations/us-central1/customJobs/1100328496195960832
커스텀 학습 작업을 실행하고 실행 시 작업에서 로그를 스트리밍하여 진행 상황을 표시합니다.
!gcloud ai custom-jobs stream-logs projects/PROJECT_NUMBER/locations/us-central1/customJobs/CUSTOM_JOB_ID
다음 값을 바꿉니다.
- PROJECT_NUMBER: 이전 명령어 출력의 프로젝트 번호
- CUSTOM_JOB_ID: 이전 명령어 출력의 커스텀 작업 ID
이제 커스텀 학습 작업이 실행됩니다. 완료하려면 10분 정도 소요됩니다.
작업이 완료되면 스테이징 버킷의 모델을 Vertex AI Model Registry로 가져올 수 있습니다.
모델 가져오기
커스텀 학습 작업은 학습된 모델을 스테이징 버킷에 업로드합니다. 작업이 완료되면 버킷의 모델을 Vertex AI Model Registry로 가져올 수 있습니다.
JupyterLab 노트북에서 다음 명령어를 실행하여 모델을 가져옵니다.
!gcloud ai models upload --container-image-uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-2:latest" \ --display-name=income-classifier-model \ --artifact-uri=$BUCKET_URI \ --project=$PROJECT_ID \ --region=$REGION
다음과 같이 프로젝트의 Vertex AI 모델을 나열합니다.
!gcloud ai models list --region=us-central1
다음과 유사하게 출력됩니다. 2개 이상의 모델이 나열될 경우 목록의 첫 번째 모델이 가장 최근에 가져온 모델입니다.
MODEL_ID 열의 값을 기록해 둡니다. 일괄 예측 요청을 만들 때 필요합니다.
Using endpoint [https://us-central1-aiplatform.googleapis.com/] MODEL_ID DISPLAY_NAME 1871528219660779520 income-classifier-model
또는 다음과 같이 프로젝트에 있는 모델을 나열할 수 있습니다.
Google Cloud 콘솔의 Vertex AI 섹션에서 Vertex AI Model Registry 페이지로 이동합니다.
Vertex AI Model Registry 페이지로 이동합니다.
모델의 모델 ID 및 기타 세부정보를 보려면 모델 이름을 클릭한 후 버전 세부정보 탭을 클릭합니다.
모델에서 일괄 예측 가져오기
이제 모델에서 일괄 예측을 요청할 수 있습니다. 일괄 예측 요청은 on-prem-client
VM 인스턴스에서 이루어집니다.
일괄 예측 요청 만들기
이 단계에서는 ssh
를 사용하여 on-prem-client
VM 인스턴스에 로그인합니다.
VM 인스턴스에서 일괄 예측을 가져오기 위해 모델에 전송하는 샘플 curl
요청의 페이로드를 포함하는 request.json
이라는 텍스트 파일을 만듭니다.
Cloud Shell에서 다음 명령어를 실행하고 PROJECT_ID를 프로젝트 ID로 바꿉니다.
projectid=PROJECT_ID gcloud config set project ${projectid}
ssh
를 사용하여on-prem-client
VM 인스턴스에 로그인합니다.gcloud compute ssh on-prem-client \ --project=$projectid \ --zone=us-central1-a
on-prem-client
VM 인스턴스에서vim
또는nano
와 같은 텍스트 편집기를 사용하여 다음 텍스트를 포함하는request.json
이라는 새 파일을 만듭니다.{ "displayName": "income-classification-batch-job", "model": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID", "inputConfig": { "instancesFormat": "csv", "gcsSource": { "uris": ["BUCKET_URI/test.csv"] } }, "outputConfig": { "predictionsFormat": "jsonl", "gcsDestination": { "outputUriPrefix": "BUCKET_URI" } }, "dedicatedResources": { "machineSpec": { "machineType": "n1-standard-4", "acceleratorCount": "0" }, "startingReplicaCount": 1, "maxReplicaCount": 2 } }
다음 값을 바꿉니다.
- PROJECT_ID: 프로젝트 ID
- MODEL_ID: 모델의 모델 ID
- BUCKET_URI: 모델을 스테이징한 스토리지 버킷의 URI
다음 명령어를 실행하여 일괄 예측 요청을 전송합니다.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/batchPredictionJobs"
PROJECT_ID를 프로젝트 ID로 바꿉니다.
응답에 다음 줄이 표시됩니다.
"state": "JOB_STATE_PENDING"
이제 일괄 예측 작업이 비동기식으로 실행됩니다. 실행하는 데 20분 정도 걸립니다.
Google Cloud 콘솔의 Vertex AI 섹션에서 일괄 예측 페이지로 이동합니다.
일괄 예측 작업이 실행되는 동안 상태는
Running
입니다. 완료되면 상태가Finished
로 변경됩니다.일괄 예측 작업의 이름(
income-classification-batch-job
)를 클릭한 후 세부정보 페이지의 내보내기 위치 링크를 클릭하여 Cloud Storage에서 일괄 작업의 출력 파일을 확인할 수 있습니다.또는,
Cloud Storage에서 예측 출력 보기 아이콘( 최종 업데이트 열 및 액션 메뉴 사이에 있음)을 클릭합니다.prediction.results-00000-of-00002
또는prediction.results-00001-of-00002
파일 링크를 클릭한 다음 인증된 URL 링크를 클릭하여 파일을 엽니다.일괄 예측 작업 출력은 다음 예시와 비슷하게 표시됩니다.
{"instance": ["27", " Private", "391468", " 11th", "7", " Divorced", " Craft-repair", " Own-child", " White", " Male", "0", "0", "40", " United-States"], "prediction": " <=50K"} {"instance": ["47", " Self-emp-not-inc", "192755", " HS-grad", "9", " Married-civ-spouse", " Machine-op-inspct", " Wife", " White", " Female", "0", "0", "20", " United-States"], "prediction": " <=50K"} {"instance": ["32", " Self-emp-not-inc", "84119", " HS-grad", "9", " Married-civ-spouse", " Craft-repair", " Husband", " White", " Male", "0", "0", "45", " United-States"], "prediction": " <=50K"} {"instance": ["32", " Private", "236543", " 12th", "8", " Divorced", " Protective-serv", " Own-child", " White", " Male", "0", "0", "54", " Mexico"], "prediction": " <=50K"} {"instance": ["60", " Private", "160625", " HS-grad", "9", " Married-civ-spouse", " Prof-specialty", " Husband", " White", " Male", "5013", "0", "40", " United-States"], "prediction": " <=50K"} {"instance": ["34", " Local-gov", "22641", " HS-grad", "9", " Never-married", " Protective-serv", " Not-in-family", " Amer-Indian-Eskimo", " Male", "0", "0", "40", " United-States"], "prediction": " <=50K"} {"instance": ["32", " Private", "178623", " HS-grad", "9", " Never-married", " Other-service", " Not-in-family", " Black", " Female", "0", "0", "40", " ?"], "prediction": " <=50K"} {"instance": ["28", " Private", "54243", " HS-grad", "9", " Divorced", " Transport-moving", " Not-in-family", " White", " Male", "0", "0", "60", " United-States"], "prediction": " <=50K"} {"instance": ["29", " Local-gov", "214385", " 11th", "7", " Divorced", " Other-service", " Unmarried", " Black", " Female", "0", "0", "20", " United-States"], "prediction": " <=50K"} {"instance": ["49", " Self-emp-inc", "213140", " HS-grad", "9", " Married-civ-spouse", " Exec-managerial", " Husband", " White", " Male", "0", "1902", "60", " United-States"], "prediction": " >50K"}
삭제
이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트는 유지하되 개별 리소스를 삭제하세요.
다음과 같이 Google Cloud 콘솔에서 개별 리소스를 삭제할 수 있습니다.
다음과 같이 일괄 예측 작업을 삭제합니다.
Google Cloud 콘솔의 Vertex AI 섹션에서 일괄 예측 페이지로 이동합니다.
일괄 예측 작업(
income-classification-batch-job
)의 이름 옆에 있는 액션 메뉴를 클릭하고 일괄 예측 작업 삭제를 선택합니다.
다음과 같이 모델을 삭제합니다.
Google Cloud 콘솔의 Vertex AI 섹션에서 Model Registry 페이지로 이동합니다.
모델 이름(
income-classifier-model
) 옆에 있는 작업 메뉴를 클릭한 다음 모델 삭제를 선택합니다.
다음과 같이 Vertex AI Workbench 인스턴스를 삭제합니다.
Google Cloud 콘솔의 Vertex AI 섹션에서 Workbench 페이지에 있는 인스턴스 탭으로 이동합니다.
workbench-tutorial
Vertex AI Workbench 인스턴스를 선택하고 삭제를 클릭합니다.
다음과 같이 Compute Engine VM 인스턴스를 삭제합니다.
Google Cloud 콘솔에서 Compute Engine 페이지로 이동합니다.
on-prem-client
VM 인스턴스를 선택하고 삭제를 클릭합니다.
다음과 같이 VPN 터널을 삭제합니다.
Google Cloud 콘솔에서 VPN 페이지로 이동합니다.
VPN 페이지에서 VPN 탭을 클릭합니다.
VPN 터널 목록에서 이 튜토리얼에서 만든 4개의 VPN 터널을 선택하고
삭제를 클릭합니다.
다음과 같이 HA VPN 게이트웨이를 삭제합니다.
VPN 페이지에서 VPN 탭을 클릭합니다.
VPN 게이트웨이 목록에서
onprem-vpn-gw1
을 클릭합니다.Cloud VPN 게이트웨이 세부정보 페이지에서
VPN 게이트웨이 삭제를 클릭합니다.필요한 경우
뒤로 화살표를 클릭하여 VPN 게이트웨이 목록으로 돌아가서vertex-networking-vpn-gw1
을 클릭합니다.Cloud VPN 게이트웨이 세부정보 페이지에서
VPN 게이트웨이 삭제를 클릭합니다.
다음과 같이 Cloud Router를 삭제합니다.
Cloud Router 페이지로 이동합니다.
Cloud Router 목록에서 이 튜토리얼에서 만든 라우터 4개를 선택합니다.
라우터를 삭제하려면
삭제를 클릭합니다.Cloud Router에 연결된 2개의 Cloud NAT 게이트웨이도 삭제됩니다.
다음과 같이
vertex-networking-vpc
VPC 네트워크의pscvertex
전달 규칙을 삭제합니다.부하 분산 페이지의 프런트엔드 탭으로 이동합니다.
전달 규칙 목록에서
pscvertex
를 클릭합니다.전달 규칙 세부정보 페이지에서
삭제를 클릭합니다.
다음과 같이 VPC 네트워크를 삭제합니다.
VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 목록에서
onprem-vpc
를 클릭합니다.VPC 네트워크 세부정보 페이지에서
VPC 네트워크 삭제를 클릭합니다.각 네트워크를 삭제하면 하위 네트워크, 경로 및 방화벽 규칙도 삭제됩니다.
VPC 네트워크 목록에서
vertex-networking-vpc
를 클릭합니다.VPC 네트워크 세부정보 페이지에서
VPC 네트워크 삭제를 클릭합니다.
다음과 같이 스토리지 버킷을 삭제합니다.
Google Cloud 콘솔에서 Cloud Storage 페이지로 이동합니다.
스토리지 버킷을 선택하고
삭제를 클릭합니다.
다음과 같이
workbench-sa
및onprem-user-managed-sa
서비스 계정을 삭제합니다.서비스 계정페이지로 이동합니다.
onprem-user-managed-sa
및workbench-sa
서비스 계정을 선택하고 삭제를 클릭합니다.
다음 단계
- Vertex AI 엔드포인트 및 서비스에 액세스하기 위한 엔터프라이즈 네트워킹 옵션을 알아보세요.
- Private Service Connect 작동 방식과 상당한 성능상의 이점을 제공하는 이유를 알아보세요.
- VPC 서비스 제어를 사용하여 보안 경계를 만들어 온라인 예측 엔드포인트에서 Vertex AI 및 기타 Google API에 대한 액세스를 허용하거나 거부하는 방법을 알아보세요.
- 대규모 및 프로덕션 환경에서
/etc/hosts
파일을 업데이트하는 대신 DNS 전달 영역을 사용하는 방법과 이유를 알아보세요.