Vertex AI, PSC का इस्तेमाल करके निजी तौर पर ऑनलाइन अनुमानित एंडपॉइंट को ऐक्सेस करता है

1. परिचय

कंपनी की इमारत में मौजूद होस्ट, ऑनलाइन अनुमान लगाने की सुविधा को नेटिव तौर पर ऐक्सेस कर सकते हैं. इसके लिए, वे सार्वजनिक इंटरनेट (पहला विकल्प) का इस्तेमाल कर सकते हैं. इसके अलावा, वे Cloud VPN या Private Service Connect (पीएससी) के साथ Cloud Interconnect (दूसरा विकल्प) का इस्तेमाल कर सकते हैं. ये दोनों विकल्प, एसएसएल/TLS एन्क्रिप्शन की सुविधा देते हैं. इंटरनेट की तुलना में, इंटरकनेक्ट पर ऑनलाइन अनुमान लगाने के लिए हाइब्रिड कनेक्टिविटी ज़्यादा बेहतर तरीके से काम करती है. इसलिए, इसे ज़रूरी ऐप्लिकेशन के लिए इस्तेमाल करने का सुझाव दिया जाता है. इसके बारे में इमेज 1 में बताया गया है.

इस ट्यूटोरियल में, हम यह दिखाएंगे कि दो वीपीसी नेटवर्क के बीच निजी तौर पर ऑनलाइन अनुमान लगाने की सुविधा को ऐक्सेस करने के लिए, हाई-अवेलेबिलिटी वीपीएन (एचए वीपीएन) का इस्तेमाल कैसे किया जाता है. यह मल्टी-क्लाउड और ऑन-प्रिमाइसेस प्राइवेट कनेक्टिविटी के लिए आधार के तौर पर काम कर सकता है.

ध्यान दें कि Vertex Online Prediction एक सार्वजनिक एंडपॉइंट है. इसलिए, आपको VPC सेवा नियंत्रण (VPC-SC) का इस्तेमाल करके, ऐक्सेस को सीमित करना होगा. इससे सुरक्षित पेरीमीटर बनाए जा सकेंगे, ताकि Vertex और अन्य Googleapis को ऐक्सेस करने की अनुमति दी जा सके या न दी जा सके. इस ट्यूटोरियल में VPC-SC के बारे में नहीं बताया गया है. ज़्यादा जानकारी के लिए, Vertex AI के साथ VPC सर्विस कंट्रोल देखें

24a07ba49a7bcb16.png

आपको क्या बनाना है

आपको on-prem-vpc नाम का वीपीसी नेटवर्क सेट अप करना होगा, ताकि ऑन-प्रिमाइसेस एनवायरमेंट को दिखाया जा सके. आपके डिप्लॉयमेंट के लिए, on-prem-vpc मौजूद नहीं होगा. इसके बजाय, आपके ऑन-प्रिमाइसेस डेटा सेंटर या क्लाउड सेवा देने वाली कंपनी के लिए हाइब्रिड नेटवर्किंग का इस्तेमाल किया जाएगा.

आपको एक ऐसा Private Service Connect आर्किटेक्चर बनाना है जिसमें यह दिखाया गया हो कि Cloud NAT के ज़रिए ऑनलाइन अनुमान लगाने की सुविधा को सार्वजनिक तौर पर कैसे ऐक्सेस किया जाता है. साथ ही, इसमें यह भी दिखाया गया हो कि एचए वीपीएन पर पीएससी का इस्तेमाल करके, इसे निजी तौर पर कैसे ऐक्सेस किया जाता है. इसके बारे में यहां बताया गया है.

b545c808b366341a.png

Google Cloud प्रोजेक्ट में ऑनलाइन अनुमान लगाने की सुविधा को डिप्लॉय करने के बाद, इन इस्तेमाल के उदाहरणों को एक्सप्लोर किया जाएगा:

ऑनलाइन अनुमान लगाने की सुविधा को सार्वजनिक तौर पर ऐक्सेस किया जा सकता है. इसमें ये शामिल हैं:

  • एक GCE इंस्टेंस (nat-client) बनाएं, जो इंटरनेट ऐक्सेस करने के लिए NAT का इस्तेमाल करता हो
  • मॉडल के ख़िलाफ़ अनुमान लगाने के लिए, CURL का इस्तेमाल करना
  • टीसीपीडींप का इस्तेमाल करके यह पुष्टि करें कि ऑनलाइन अनुमान लगाने की सुविधा को सार्वजनिक वीआईपी के ज़रिए ऐक्सेस किया गया है

ऑनलाइन अनुमान लगाने की सुविधा का निजी ऐक्सेस, इसमें ये शामिल हैं:

  • प्रोजेक्ट में, मॉडल को Vertex AI के ऑनलाइन अनुमान लगाने वाले एंडपॉइंट पर डिप्लॉय करना
  • aiml-vpc में Private Service Connect (Googleapis) एंडपॉइंट बनाना
  • PSC आईपी पते को क्लाउड राउटर के ज़रिए, ऑन-प्रेम वीपीसी में कस्टम विज्ञापन के तौर पर एक्सपोर्ट करें
  • GCE इंस्टेंस (private-client) बनाएं और etc/hosts फ़ाइल को पीएससी एंडपॉइंट आईपी से अपडेट करें
  • मॉडल के ख़िलाफ़ अनुमान लगाने के लिए, CURL का इस्तेमाल करना
  • टीसीपीडींप का इस्तेमाल करके यह पुष्टि करें कि ऑनलाइन अनुमान लगाने की सुविधा को पीएससी एंडपॉइंट के आईपी पते के ज़रिए ऐक्सेस किया गया है

आपको क्या सीखने को मिलेगा

  • Private Service Connect एंडपॉइंट कैसे बनाया जाता है
  • Cloud Router पर PSC एंडपॉइंट आईपी का विज्ञापन कैसे दिखाया जाता है
  • सार्वजनिक और निजी, दोनों तरह के ऑनलाइन अनुमान के ऐक्सेस की पुष्टि करने के लिए, TCPDUMP का इस्तेमाल कैसे करें

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट

IAM अनुमतियां

Compute Network Admin

सेवा डायरेक्ट्री एडिटर

डीएनएस एडमिन

नेटवर्क एडमिन

कोटा एडमिन

Notebooks एडमिन

Service Account User

स्टोरेज एडमिन

Vertex AI का इस्तेमाल करने वाला व्यक्ति

सेवा खाता एडमिन

2. शुरू करने से पहले

ट्यूटोरियल के साथ काम करने के लिए प्रोजेक्ट को अपडेट करना

इस ट्यूटोरियल में, Cloud Shell में gcloud कॉन्फ़िगरेशन लागू करने में मदद के लिए, $variables का इस्तेमाल किया गया है.

Cloud Shell में, यह तरीका अपनाएं:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. सेवाएं सक्षम करें

Cloud Shell में, यह तरीका अपनाएं:

gcloud services enable dns.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable iam.googleapis.com 
gcloud services enable compute.googleapis.com 
gcloud services enable notebooks.googleapis.com

4. aiml-vpc सेटअप

aiml-vpc बनाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud compute networks create aiml-vpc --project=$projectid --subnet-mode=custom

उपयोगकर्ता के मैनेज किए गए नोटबुक सबनेट को बनाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud compute networks subnets create workbench-subnet --project=$projectid --range=172.16.10.0/28 --network=aiml-vpc --region=us-central1 --enable-private-ip-google-access

क्लाउड राऊटर और एनएटी कॉन्फ़िगरेशन

नोटबुक सॉफ़्टवेयर पैकेज डाउनलोड करने के लिए, ट्यूटोरियल में Cloud NAT का इस्तेमाल किया जाता है. ऐसा इसलिए, क्योंकि उपयोगकर्ता के मैनेज किए गए नोटबुक इंस्टेंस में कोई बाहरी आईपी पता नहीं होता है. Cloud NAT, इग्रेस NAT की सुविधाएं भी देता है. इसका मतलब है कि इंटरनेट होस्ट को उपयोगकर्ता के मैनेज किए गए नोटबुक से कम्यूनिकेट करने की अनुमति नहीं है. इससे यह ज़्यादा सुरक्षित हो जाता है.

Cloud Shell में, रीजनल क्लाउड राउटर बनाएं.

gcloud compute routers create cloud-router-us-central1-aiml-nat --network aiml-vpc --region us-central1

Cloud Shell में, रीजनल क्लाउड नेट गेटवे बनाएं.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-aiml-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

5. on-prem-vpc setup

on-prem-vpc बनाएं

Cloud Shell में, यह तरीका अपनाएं:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

nat-subnet बनाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud compute networks subnets create nat-subnet --project=$projectid --range=192.168.10.0/28 --network=on-prem-vpc --region=us-central1

private-ip-subnet बनाना

Cloud Shell में, यह तरीका अपनाएं:

gcloud compute networks subnets create private-ip-subnet --project=$projectid --range=192.168.20.0/28 --network=on-prem-vpc --region=us-central1

क्लाउड राऊटर और एनएटी कॉन्फ़िगरेशन

इस ट्यूटोरियल में, सॉफ़्टवेयर पैकेज डाउनलोड करने के लिए Cloud NAT का इस्तेमाल किया गया है. Cloud NAT, इग्रेस एनएटी की सुविधाएं भी उपलब्ध कराता है. इसका मतलब है कि इंटरनेट होस्ट को कंप्यूट से कम्यूनिकेशन शुरू करने की अनुमति नहीं है. इससे यह ज़्यादा सुरक्षित हो जाता है.

Cloud Shell में, रीजनल क्लाउड राउटर बनाएं.

gcloud compute routers create cloud-router-us-central1-on-prem-nat --network on-prem-vpc --region us-central1

Cloud Shell में, रीजनल क्लाउड नेट गेटवे बनाएं.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-us-central1-on-prem-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

6. Private Service Connect एंडपॉइंट बनाना

इस सेक्शन में, आपको एक Private Service Connect (PSC) एंडपॉइंट बनाना होगा. इसका इस्तेमाल, ऑन-प्रेम-वीपीसी से Vertex API को ऐक्सेस करने के लिए किया जाएगा. आने वाले चरण में, पीएससी के आईपी पते 100.100.10.10 का विज्ञापन, aiml-vpc-cloud-router-vpn से कस्टम राउटर विज्ञापन के तौर पर ऑन-प्रिमाइसेस नेटवर्क पर दिखाया जाएगा.

Cloud Shell से

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=100.100.10.10 \
    --network=aiml-vpc

पीएससी एंडपॉइंट बनाना

Cloud Shell से

gcloud compute forwarding-rules create pscvertex \
    --global \
    --network=aiml-vpc \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

कॉन्फ़िगर किए गए Private Service Connect एंडपॉइंट की सूची बनाएं

Cloud Shell से

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

कॉन्फ़िगर किए गए Private Service Connect एंडपॉइंट के बारे में जानकारी

Cloud Shell से

gcloud compute forwarding-rules describe \
    pscvertex --global

7. हाइब्रिड कनेक्टिविटी

इस सेक्शन में, आपको एक Cloud Router बनाना होगा. इससे बॉर्डर गेटवे प्रोटोकॉल (बीजीपी) का इस्तेमाल करके, अपने वर्चुअल प्राइवेट क्लाउड (वीपीसी) और पीयर नेटवर्क के बीच डाइनैमिक तरीके से रास्तों को बदला जा सकता है.

Cloud Router, आपके नेटवर्क को कनेक्ट करने के लिए Cloud VPN टनल पर बीजीपी सेशन सेट अप कर सकता है. यह नए सबनेट आईपी पते की रेंज को अपने-आप पहचान लेता है और उन्हें आपके पीयर नेटवर्क पर ब्रॉडकास्ट करता है.

इस ट्यूटोरियल में, aiml-vpc और on-prem-vpc के बीच HA VPN डिप्लॉय किया जाएगा.

aiml-vpc के लिए HA VPN गेटवे बनाएं

हर गेटवे के लिए, दो बाहरी IPv4 पते अपने-आप असाइन हो जाते हैं. इनमें से एक पता, हर गेटवे इंटरफ़ेस के लिए होता है.

Cloud Shell में, HA VPN गेटवे बनाएं

gcloud compute vpn-gateways create aiml-vpn-gw \
   --network=aiml-vpc\
   --region=us-central1

on-prem-vpc के लिए HA VPN गेटवे बनाएं

हर गेटवे के लिए, दो बाहरी IPv4 पते अपने-आप असाइन हो जाते हैं. इनमें से एक पता, हर गेटवे इंटरफ़ेस के लिए होता है. इन आईपी पतों को नोट कर लें, ताकि कॉन्फ़िगरेशन के चरणों में इनका इस्तेमाल किया जा सके.

Cloud Shell में, HA VPN गेटवे बनाएं.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

एचए वीपीएन गेटवे बनाने की पुष्टि करना

कंसोल का इस्तेमाल करके, हाइब्रिड कनेक्टिविटी → वीपीएन → क्लाउड वीपीएन गेटवे पर जाएं. इसके बाद, पुष्टि करें कि गेटवे के आईपी पते जनरेट हो गए हैं.

66312b1b53c233d7.png

aiml-vpc के लिए Cloud Router बनाएं

Cloud Shell में, us-central1 में मौजूद Cloud Router बनाएं

gcloud compute routers create aiml-cr-us-central1 \
   --region=us-central1 \
   --network=aiml-vpc\
   --asn=65001

ऑन-प्रेम-वीपीसी के लिए Cloud Router बनाना

Cloud Shell में, us-central1 में मौजूद Cloud Router बनाएं

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

aiml-vpc के लिए वीपीएन टनल बनाएं

आपको हर एचए वीपीएन गेटवे पर दो वीपीएन टनल बनाने होंगे.

वीपीएन टनल बनाएं0

Cloud Shell में, tunnel0 बनाएं:

gcloud compute vpn-tunnels create aiml-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 0

वीपीएन टनल1 बनाएं

Cloud Shell में, tunnel1 बनाएं:

gcloud compute vpn-tunnels create aiml-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router aiml-cr-us-central1 \
    --vpn-gateway aiml-vpn-gw \
    --interface 1

on-prem-vpc के लिए वीपीएन टनल बनाएं

आपको हर एचए वीपीएन गेटवे पर दो वीपीएन टनल बनाने होंगे.

वीपीएन टनल बनाएं0

Cloud Shell में, tunnel0 बनाएं:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

वीपीएन टनल1 बनाएं

Cloud Shell में, tunnel1 बनाएं:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway aiml-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

वीपीएन टनल बनाने की पुष्टि करना

कंसोल का इस्तेमाल करके, हाइब्रिड कनेक्टिविटी → वीपीएन → क्लाउड वीपीएन टनल पर जाएं.

e8e13ebaed09f1.png

8. बीजीपी नेबर को सेट अप करना

BGP सेशन बनाना

इस सेक्शन में, Cloud Router इंटरफ़ेस और BGP पियर कॉन्फ़िगर किए जाते हैं.

aiml-vpc के लिए बीजीपी इंटरफ़ेस और पियरिंग बनाना

Cloud Shell में, BGP इंटरफ़ेस बनाएं:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel0 \
    --region us-central1

Cloud Shell में, BGP पीयर बनाएं:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

Cloud Shell में, BGP इंटरफ़ेस बनाएं:

gcloud compute routers add-interface aiml-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel aiml-vpc-tunnel1 \
    --region us-central1

Cloud Shell में, BGP पीयर बनाएं:

gcloud compute routers add-bgp-peer aiml-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

ऑन-प्रेम-वीपीसी के लिए बीजीपी इंटरफ़ेस और पियरिंग बनाना

Cloud Shell में, BGP इंटरफ़ेस बनाएं:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-aiml-vpc\
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

Cloud Shell में, BGP पीयर बनाएं:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel0 \
    --interface if-tunnel1-to-aiml-vpc\
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

Cloud Shell में, BGP इंटरफ़ेस बनाएं:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-aiml-vpc\
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

Cloud Shell में, BGP पीयर बनाएं:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-aiml-vpc-tunnel1\
    --interface if-tunnel2-to-aiml-vpc\
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

वीपीएन टनल की जानकारी देखने के लिए, हाइब्रिड कनेक्टिविटी → वीपीएन पर जाएं.

cb91b4476a88acd3.png

HA वीपीएन पर, एआईएमएल-वीपीएलसी से सीखे गए रास्तों की पुष्टि करें

कंसोल का इस्तेमाल करके, VPC नेटवर्क → वीपीसी नेटवर्क → aiml-vpc→ रूट → क्षेत्र → US-CENTRAL1 → देखें पर जाएं

देखें कि aiml-vpc ने on-prem-vpc nat-subnet और private-ip-subnet से रूट सीख लिए हैं

f407ed6e1a6233db.png

पुष्टि करें कि HA-VPN के ज़रिए, on-prem-vpc ने workbench-subnet के बारे में जानकारी हासिल कर ली है

कंसोल का इस्तेमाल करके, VPC नेटवर्क → वीपीसी नेटवर्क → on-prem-vpc → रूट → क्षेत्र → US-CENTRAL1 → देखें पर जाएं

7957e5d898a9e7e0.png

9. aiml-vpc के लिए कस्टम रूट विज्ञापन बनाएं

Private Service Connect एंडपॉइंट आईपी का विज्ञापन, aiml-cr-us-central1 क्लाउड राउटर अपने-आप नहीं करता है. ऐसा इसलिए, क्योंकि सबनेट को वीपीसी में कॉन्फ़िगर नहीं किया गया है.

इसके बजाय, आपको एंडपॉइंट आईपी पते 100.100.10.10 के लिए, aiml-cr-us-central क्लाउड राउटर से कस्टम रूट विज्ञापन बनाना होगा. इसे BGP के ज़रिए, on-prem-vpc पर मौजूद ऑन-प्रिमाइसेस एनवायरमेंट में दिखाया जाएगा.

कंसोल में जाकर, हाइब्रिड कनेक्टिविटी → क्लाउड राउटर → aiml-cr-us-central1 पर जाएं. इसके बाद, बदलाव करें को चुनें.

c8fb02ed59a5b068.png

विज्ञापन दिखाए गए रास्ते सेक्शन में, कस्टम रास्ते बनाएं विकल्प चुनें. इसके बाद, नीचे दिए गए उदाहरण के आधार पर फ़ील्ड अपडेट करें. हो गया चुनें. इसके बाद, सेव करें पर क्लिक करें.

5996464e3aae0665.png

f799082ab2cd7e31.png

पुष्टि करना

पुष्टि करें कि ऑन-प्रेम-वीपीसी ने HA-VPN के ज़रिए PSC एंडपॉइंट का आईपी पता जान लिया है

कंसोल का इस्तेमाल करके, VPC नेटवर्क → वीपीसी नेटवर्क → on-prem-vpc → रूट → क्षेत्र → US-CENTRAL1 → देखें पर जाएं

1b42673e6f940bf2.png

10. ऑन-प्रेम-वीपीसी पर कस्टम रूट के विज्ञापन बनाना

डिफ़ॉल्ट रूप से, ऑन-प्रेम-वीपीसी क्लाउड राउटर सभी सबनेट का विज्ञापन दिखाता है. हालांकि, सिर्फ़ निजी-आईपी-सबनेट की ज़रूरत होती है.

यहां दिए गए सेक्शन में, on-prem-cr-us-central1 क्लाउड राउटर से रूट के विज्ञापन अपडेट करें.

कंसोल में, हाइब्रिड कनेक्टिविटी → क्लाउड राउटर → on-prem-cr-us-central1 पर जाएं. इसके बाद, बदलाव करें चुनें.

bd96bde9550d516a.png

विज्ञापन दिखाए गए रास्ते सेक्शन में, कस्टम रास्ते बनाएं विकल्प चुनें. इसके बाद, नीचे दिए गए उदाहरण के आधार पर फ़ील्ड अपडेट करें. हो गया चुनें. इसके बाद, सेव करें पर क्लिक करें.

f8b61f669a9cfeef.png

पुष्टि करना

पुष्टि करें कि aiml-vpc ने on-prem-vpc से private-ip-subnet रूट के बारे में जानकारी हासिल कर ली है.

कंसोल का इस्तेमाल करके, VPC नेटवर्क → वीपीसी नेटवर्क → aiml-vpc → रूट → क्षेत्र → US-CENTRAL1 → देखें पर जाएं

2b1a7a5f918e9f50.png

11. उपयोगकर्ता के मैनेज किए गए सेवा खाते (GCE इंस्टेंस) बनाना

Vertex API को बेहतर तरीके से कंट्रोल करने के लिए, उपयोगकर्ता के मैनेज किए गए सेवा खाते की ज़रूरत होती है. इसे नेट और निजी क्लाइंट इंस्टेंस पर लागू किया जाएगा. जनरेट होने के बाद, सेवा खाते की अनुमतियों में कारोबार की ज़रूरतों के हिसाब से बदलाव किया जा सकता है. ट्यूटोरियल में, उपयोगकर्ता के मैनेज किए गए सेवा खाते, vertex-sa पर ये भूमिकाएं लागू होंगी:

आगे बढ़ने से पहले, आपको सेवा खाते के एपीआई को होगा.

Cloud Shell में, सेवा खाता बनाएं.

gcloud iam service-accounts create gce-vertex-sa \
    --description="service account for vertex" \
    --display-name="gce-vertex-sa"

Cloud Shell में, सेवा खाते को compute instance admin की भूमिका के साथ अपडेट करें

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/compute.instanceAdmin.v1"

Cloud Shell में, सेवा खाते को Vertex AI उपयोगकर्ता की भूमिका के साथ अपडेट करें

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:gce-vertex-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

12. उपयोगकर्ता के मैनेज किए गए सेवा खाते (नोटबुक) को बनाना

इस सेक्शन में, आपको उपयोगकर्ता के मैनेज किए गए सेवा खाते को बनाना होगा. यह खाता, ट्यूटोरियल में इस्तेमाल किए गए Vertex Workbench (Notebook) से जुड़ा होगा.

ट्यूटोरियल में, सेवा खाते पर ये भूमिकाएं लागू होंगी:

Cloud Shell में, सेवा खाता बनाएं.

gcloud iam service-accounts create user-managed-notebook-sa \
    --display-name="user-managed-notebook-sa"

Cloud Shell में, सेवा खाते को स्टोरेज एडमिन की भूमिका के साथ अपडेट करें.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"

Cloud Shell में, सेवा खाते को Vertex AI उपयोगकर्ता की भूमिका के साथ अपडेट करें.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"

Cloud Shell में, सेवा खाते को Artifact Registry एडमिन की भूमिका असाइन करें.

gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:user-managed-notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"

Cloud Shell में, सेवा खाते की सूची बनाएं. साथ ही, उस ईमेल पते को नोट करें जिसका इस्तेमाल उपयोगकर्ता के मैनेज किए गए नोटबुक को बनाते समय किया जाएगा.

gcloud iam service-accounts list

13. टेस्ट इंस्टेंस बनाए गए

यहां दिए गए सेक्शन में, Vertex API तक पहुंचने के अलग-अलग तरीकों की पुष्टि करने के लिए, टेस्ट इंस्टेंस बनाए जाएंगे. खास तौर पर:

  • इंस्टेंस, nat-client, Vertex AI को हल करने के लिए Cloud NAT का इस्तेमाल करेगा. इसलिए, इंटरनेट पर Online Prediction एंडपॉइंट को ऐक्सेस करेगा
  • उदाहरण के लिए, private-client इंस्टेंस, HA-VPN के ज़रिए ऑनलाइन अनुमान लगाने वाले एंडपॉइंट को ऐक्सेस करने के लिए, Private Service Connect के आईपी पते 100.100.10.10 का इस्तेमाल करेगा.

Cloud Shell में nat-client इंस्टेंस बनाएं.

gcloud compute instances create nat-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=nat-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

Cloud Shell में private-client इंस्टेंस बनाएं.

gcloud compute instances create private-client \
    --zone=us-central1-a \
    --image-family=debian-11 \
    --image-project=debian-cloud \
    --subnet=private-ip-subnet \
    --service-account=vertex-sa@$projectid.iam.gserviceaccount.com \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --no-address \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install tcpdump dnsutils -y"

Identity-Aware Proxy (IAP) को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, ऐसा फ़ायरवॉल नियम बनाएं जो:

  • यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
  • इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.

Cloud Shell में, IAP फ़ायरवॉल नियम बनाएं.

gcloud compute firewall-rules create ssh-iap-on-prem-vpc \
    --network on-prem-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

14. उपयोगकर्ता के मैनेज किए गए नोटबुक बनाना

नोटबुक एपीआई को

यहां दिए गए सेक्शन में, उपयोगकर्ता के मैनेज किए गए ऐसे नोटबुक का इंस्टेंस बनाएं जिसमें पहले से बनाया गया सेवा खाता, user-managed-notebook-sa शामिल हो.

Cloud Shell में, private-client इंस्टेंस बनाएं.

gcloud notebooks 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 \
      --subnet=workbench-subnet \
      --no-public-ip    --service-account=user-managed-notebook-sa@$projectid.iam.gserviceaccount.com

15. मॉडल और ऑनलाइन अनुमान की सुविधा डिप्लॉय करना

नीचे दिए गए सेक्शन में, दिए गए कोड लैब,Vertex AI:Use custom prediction routines with Sklearn to preprocess and post process data for predictions का इस्तेमाल करें. सेक्शन 7 से शुरू करें, क्योंकि आपने पिछले चरण में पहले ही एक नोटबुक बना ली है. मॉडल को डिप्लॉय करने के बाद, अगले सेक्शन को शुरू करने के लिए ट्यूटोरियल पर वापस जाएं.

ee68b7ba0cfd2746.png

16. इंटरनेट पर Vertex API के ऐक्सेस की पुष्टि करना

यहां दिए गए सेक्शन में, इंस्टेंस और nat-client में लॉग इन करें. साथ ही, Vertex API को हल करने के लिए इस्तेमाल किए गए डोमेन us-central1-aiplatform.googleapis.com के ख़िलाफ़ dig और tcpdump का इस्तेमाल करके, Vertex AI से कनेक्टिविटी की पुष्टि करें.

Cloud Shell में IAP का इस्तेमाल करके nat-client में लॉग इन करें. इसके बाद, vertex डोमेन us-central1-aiplatform.googleapis.com के ख़िलाफ़ dig करके, Vertex API से कनेक्टिविटी की पुष्टि करें

gcloud compute ssh nat-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

डिग कमांड चलाएं.

dig us-central1-aiplatform.googleapis.com

उदाहरण के लिए, डीएनएस के जवाब में मौजूद सार्वजनिक आईपी पतों पर ध्यान दें.

user@nat-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56761
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.111.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.1.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.121.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.103.95
us-central1-aiplatform.googleapis.com. 300 IN A 108.177.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.171.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.250.159.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.120.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.161.95
us-central1-aiplatform.googleapis.com. 300 IN A 142.251.172.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.126.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.70.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Thu Jun 29 01:35:57 UTC 2023
;; MSG SIZE  rcvd: 322

nat-client ओएस से, tcpdump को एक्ज़ीक्यूट करें. इससे, Online Prediction के ख़िलाफ़ कर्ल करते समय डीएनएस रिज़ॉल्यूशन की पुष्टि की जा सकेगी.

 sudo tcpdump -i any port 53 -n

उदाहरण:

user@nat-client:~$ sudo tcpdump -i any port 53 -n 
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes

"+" को चुनकर, नया Cloud Shell टर्मिनल खोलें. नया टैब खुलने के बाद, प्रोजेक्ट के नाम वाले वैरिएबल को अपडेट करें.

Cloud Shell में, प्रोजेक्ट के नाम वाले वैरिएबल को अपडेट करें.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Cloud Shell 2 में, nat-client इंस्टेंस से ssh करें.

gcloud compute ssh --zone "us-central1-a" "nat-client" --project "$projectid"

यहां दिए गए सेक्शन में, sudo VI एडिटर या nano का इस्तेमाल करके instances.json फ़ाइल बनाई जाएगी. साथ ही, डिप्लॉय किए गए मॉडल से अनुमान पाने के लिए इस्तेमाल की गई डेटा स्ट्रिंग डाली जाएगी.

नेट-क्लाइंट ओएस से, नीचे दी गई डेटा स्ट्रिंग के साथ instances.json fाइल बनाएं:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

उदाहरण:

user@nat-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@nat-client:$

Cloud Console से अपना ऑनलाइन अनुमान लगाने वाला एंडपॉइंट आईडी पाएं. इसका इस्तेमाल अगले चरणों में किया जाएगा.

VERTEX AI → ऑनलाइन अनुमान पर जाएं

237d413ccde1e95b.png

नेट-क्लाइंट ओएस से, ये वैरिएबल बनाएं:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

उदाहरण:

ENDPOINT_ID="3328226095324463104"

nat-client ओएस से, मॉडल से जवाब पाने के लिए कर्ल करें.

curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

उदाहरण के लिए, अनुमान के सही होने की जानकारी.

user@nat-client$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}

17. पुष्टि करना - Vertex API को इंटरनेट ऐक्सेस करने की अनुमति है

अब आपने अनुमान लगा लिया है. इसलिए, आइए टीसीपीडंप के नतीजों (टर्मिनल 1) पर एक नज़र डालें. इनसे पता चलता है कि nat-client इंस्टेंस (192.168.10.2), Vertex AI डोमेन us-central1-aiplatform.googleapis.com के लिए, लोकल डीएनएस सर्वर 169.254.169.254 को डीएनएस क्वेरी कर रहा है. डीएनएस क्वेरी के नतीजे, Vertex API के लिए सार्वजनिक वर्चुअल आईपी पते (वीआईपी) हैं. इनके बारे में यहां बताया गया है:

user@nat-client:~$ sudo tcpdump -i any port 53 -n
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
20:05:09.260937 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 47190+ A? oauth2.googleapis.com. (39)
20:05:09.260946 ens4  Out IP 192.168.10.2.40782 > 169.254.169.254.53: 28075+ AAAA? oauth2.googleapis.com. (39)
20:05:09.263556 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 28075 4/0/0 AAAA 2607:f8b0:4001:c34::5f, AAAA 2607:f8b0:4001:c54::5f, AAAA 2607:f8b0:4001:c16::5f, AAAA 2607:f8b0:4001:c17::5f (151)
20:05:09.265018 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.40782: 47190 16/0/0 A 74.125.201.95, A 74.125.202.95, A 74.125.69.95, A 64.233.183.95, A 173.194.193.95, A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 64.233.191.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95 (295)
20:05:09.474478 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 36008+ A? us-central1-aiplatform.googleapis.com. (55)
20:05:09.474488 ens4  Out IP 192.168.10.2.57356 > 169.254.169.254.53: 47020+ AAAA? us-central1-aiplatform.googleapis.com. (55)
20:05:09.477190 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 36008 16/0/0 A 173.194.194.95, A 173.194.195.95, A 173.194.196.95, A 173.194.197.95, A 173.194.74.95, A 173.194.192.95, A 209.85.145.95, A 209.85.146.95, A 209.85.147.95, A 142.250.125.95, A 142.250.136.95, A 142.250.148.95, A 209.85.200.95, A 209.85.234.95, A 142.250.152.95, A 142.250.128.95 (311)
20:05:09.478607 ens4  In  IP 169.254.169.254.53 > 192.168.10.2.57356: 47020 4/0/0 AAAA 2607:f8b0:4001:c1b::5f, AAAA 2607:f8b0:4001:c0c::5f, AAAA 2607:f8b0:4001:c0e::5f, AAAA 2607:f8b0:4001:c1e::5f (167)

18. Vertex API के लिए निजी ऐक्सेस चालू करना

यहां दिए गए सेक्शन में, हाइब्रिड नेटवर्किंग (HA वीपीएन) पर Private Service Connect का इस्तेमाल करके, Vertex API को ऐक्सेस किया जाएगा. इससे ऑनलाइन अनुमान लगाने की सुविधा को निजी तौर पर ऐक्सेस किया जा सकेगा. ट्यूटोरियल में इस्तेमाल किए गए उदाहरण में, आपको निजी क्लाइंट इंस्टेंस में /etc/hosts फ़ाइल को अपडेट करना होगा.

आपके ऑन-प्रिमाइसेस एनवायरमेंट में, टेस्टिंग के लिए कुछ मशीनों की /etc/hosts फ़ाइल को अपडेट करना सही है. हालांकि, बड़े पैमाने पर और प्रोडक्शन एनवायरमेंट के लिए, पीएससी एंडपॉइंट के FQDN का इस्तेमाल करके नया फ़ॉरवर्डिंग ज़ोन बनाना बेहतर है.

उदाहरण के लिए, ट्यूटोरियल में बनाए गए पीएससी एंडपॉइंट को pscvertex कहा जाता है. इसका मतलब है कि pscvertex.p.googleapis.com. Vertex के लिए एंडपॉइंट का इस्तेमाल करते समय, सेवा के साथ FQDN जोड़ें. जैसे, us-central1-aiplatform-pscvertex.p.googleapis.com.

पीएससी एंडपॉइंट के साथ ऑन-प्रिमाइसेस डीएनएस को अपडेट करने के लिए, स्थानीय ऐप्लिकेशन को फिर से फ़ैक्टराइज़ करना भी ज़रूरी है.ऐसा इसलिए, ताकि वे नेटिव पब्लिक एंडपॉइंट us-central1-aiplatform.googleapis.com के बजाय, FDQN us-central1-aiplatform-pscvertex.p.googleapis.com को कॉल कर सकें.

कस्टम एंडपॉइंट का इस्तेमाल करने के लिए कॉन्फ़िगर किए जा सकने वाले क्लाइंट, एंडपॉइंट को अनुरोध भेजने के लिए p.googleapis.com डीएनएस नामों का इस्तेमाल कर सकते हैं.

कस्टम एंडपॉइंट का इस्तेमाल करने के लिए, अपने क्लाइंट या क्लाइंट लाइब्रेरी को कॉन्फ़िगर करने के बारे में जानकारी पाने के लिए, उसका दस्तावेज़ देखें. उदाहरण के लिए:

  • Python: google-api-core पैकेज में, Client options class में api_endpoint को कॉन्फ़िगर किया जा सकता है.
  • Go: api पैकेज में Client options package में जाकर, WithEndpoint को कॉन्फ़िगर किया जा सकता है.
  • gcloud: You can configure api_endpoint_overrides

"+" को चुनकर, नया Cloud Shell टर्मिनल खोलें. नया टैब खुलने के बाद, प्रोजेक्ट के नाम वाले वैरिएबल को अपडेट करें.

Cloud Shell से.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

नए Cloud Shell में IAP का इस्तेमाल करके, private-client में लॉग इन करें. इसके बाद, vertex डोमेन us-central1-aiplatform.googleapis.com के ख़िलाफ़ dig करके, Vertex API से कनेक्टिविटी की पुष्टि करें

Cloud Shell से, निजी क्लाइंट ओएस इंस्टेंस में लॉग इन करें.

gcloud compute ssh private-client --project=$projectid --zone=us-central1-a --tunnel-through-iap

डिग कमांड चलाएं.

dig us-central1-aiplatform.googleapis.com

उदाहरण के लिए, डीएनएस रिस्पॉन्स के आधार पर सार्वजनिक आईपी नोट करें.

user@private-client:~$ dig us-central1-aiplatform.googleapis.com

; <<>> DiG 9.16.42-Debian <<>> us-central1-aiplatform.googleapis.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33311
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;us-central1-aiplatform.googleapis.com. IN A

;; ANSWER SECTION:
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.132.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.201.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.202.95
us-central1-aiplatform.googleapis.com. 300 IN A 74.125.69.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.182.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.183.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.193.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.194.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.195.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.196.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.197.95
us-central1-aiplatform.googleapis.com. 300 IN A 64.233.191.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.74.95
us-central1-aiplatform.googleapis.com. 300 IN A 173.194.192.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.145.95
us-central1-aiplatform.googleapis.com. 300 IN A 209.85.146.95

;; Query time: 4 msec
;; SERVER: 169.254.169.254#53(169.254.169.254)
;; WHEN: Sun Jul 02 20:5

sudo VI एडिटर या nano का इस्तेमाल करके, private-client इंस्टेंस /etc/hosts को अपडेट करें. इससे Vertext AI FQDN us-central1-aiplatform.googleapis.com का रिकॉर्ड बनाया जा सकेगा. यह रिकॉर्ड, PSC एंडपॉइंट 100.100.10.10 पर पॉइंट करेगा. इसके बाद, कोई और बदलाव करने की ज़रूरत नहीं होगी.

उदाहरण:

user@private-client:~$ more /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

100.100.10.10 us-central1-aiplatform.googleapis.com
192.168.20.2 private-client.c.$projectid.internal private-client  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

निजी क्लाइंट ओएस से, Vertex API एंडपॉइंट को पिंग करें.

ping us-central1-aiplatform.googleapis.com

उदाहरण के लिए, PING से पीएससी एंडपॉइंट का आईपी पता मिलता है, लेकिन कोई जवाब नहीं मिलता.

user@private-client:~$ ping us-central1-aiplatform.googleapis.com
PING us-central1-aiplatform.googleapis.com (100.100.10.10) 56(84) bytes of data.

निजी क्लाइंट ओएस से, tcpdump को एक्ज़ीक्यूट करें. इससे डीएनएस रिज़ॉल्यूशन और आईपी डेटापाथ की पुष्टि की जा सकेगी. ऐसा तब करें, जब ऑनलाइन अनुमान के लिए कर्ल किया जा रहा हो.

 sudo tcpdump -i any port 53 -n or host 100.100.10.10

"+" को चुनकर, चौथा Cloud Shell टर्मिनल खोलें. नया टैब खुलने के बाद, प्रोजेक्ट के नाम वाले वैरिएबल को अपडेट करें.

Cloud Shell में, प्रोजेक्ट के नाम वाले वैरिएबल को अपडेट करें.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

Cloud Shell 4 में, private-client इंस्टेंस से ssh करें.

gcloud compute ssh --zone "us-central1-a" "private-client" --project "$projectid"

यहां दिए गए सेक्शन में, sudo VI एडिटर या nano का इस्तेमाल करके instances.json फ़ाइल बनाई जाएगी. साथ ही, डिप्लॉय किए गए मॉडल से अनुमान पाने के लिए इस्तेमाल की गई डेटा स्ट्रिंग डाली जाएगी.

निजी क्लाइंट ओएस से, नीचे दी गई डेटा स्ट्रिंग के साथ instances.json file बनाएं:

{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

उदाहरण:

user@private-client:$ more instances.json 
{"instances": [
  [0.23, 'Ideal', 'E', 'VS2', 61.5, 55.0, 3.95, 3.98, 2.43],
  [0.29, 'Premium', 'J', 'Internally Flawless', 52.5, 49.0, 4.00, 2.13, 3.11]]}

user@private-client:$

निजी क्लाइंट ओएस से, ये वैरिएबल बनाएं:

gcloud config list project
projectid=YOUR-PROJECT-NAME
echo $projectid
ENDPOINT_ID="insert-your-endpoint-id-here"

उदाहरण:

ENDPOINT_ID="3328226095324463104"

Cloud Shell 4 में मौजूद प्राइवेट-क्लाइंट ओएस से, मॉडल से जवाब पाने के लिए कर्ल करें.

curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json

19. पुष्टि करना - Vertex API को निजी तौर पर ऐक्सेस करना

Cloud Shell 4 में मौजूद प्राइवेट-क्लाइंट ओएस से, ध्यान दें कि Vertex API को ऐक्सेस करने के लिए, पीएससी एंडपॉइंट आईपी (100.100.10.10) का इस्तेमाल किया गया था.

user@private-client$ curl -v -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://us-central1-aiplatform.googleapis.com/v1/projects/${projectid}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict -d @instances.json
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 100.100.10.10:443...
* Connected to us-central1-aiplatform.googleapis.com (100.100.10.10) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: CN=upload.video.google.com
*  start date: May 29 08:21:36 2023 GMT
*  expire date: Aug 21 08:21:35 2023 GMT
*  subjectAltName: host "us-central1-aiplatform.googleapis.com" matched cert's "*.googleapis.com"
*  issuer: C=US; O=Google Trust Services LLC; CN=GTS CA 1C3
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55f2ab65c2c0)
> POST /v1/projects/$projectid/locations/us-central1/endpoints/3328226095324463104:predict HTTP/2
> Host: us-central1-aiplatform.googleapis.com
> user-agent: curl/7.74.0
> accept: */*
> authorization: Bearer ya29.a0AbVbY6NdCbIJYj0mQROeq-xYgQCw534TTtjRc1kBAEOimKCFxb3gqgD5AvhfefJatSNr33eW1YJirfQVMptFoqfjRoB-i8zEJJ_GGCVqhsVnpSOjK0hzJQSuo2YGjIiSe1o1zdo7lWmh1Px-vLe8FImieGkrQ1hqVaa6aCgYKAXgSARESFQFWKvPlUQ_FuKB2hrDJRyFDjupL1g0171
> content-type: application/json
> content-length: 154
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* We are completely uploaded and fine
< HTTP/2 200 
< content-type: application/json; charset=UTF-8
< x-vertex-ai-internal-prediction-backend: harpoon
< date: Mon, 03 Jul 2023 22:13:35 GMT
< vary: X-Origin
< vary: Referer
< vary: Origin,Accept-Encoding
< server: scaffolding on HTTPServer2
< cache-control: private
< x-xss-protection: 0
< x-frame-options: SAMEORIGIN
< x-content-type-options: nosniff
< accept-ranges: none
< 
{
  "predictions": [
    "$479.0",
    "$586.0"
  ],
  "deployedModelId": "1949163636186415104",
  "model": "projects/234086459238/locations/us-central1/models/947543727654567936",
  "modelDisplayName": "diamonds-cpr",
  "modelVersionId": "1"
}
* Connection #0 to host us-central1-aiplatform.googleapis.com left intact

Cloud Shell 3 में मौजूद TCPDUMP टर्मिनल से, हम पुष्टि कर सकते हैं कि us-central1-aiplatform.googleapis.com के लिए डीएनएस लुकअप नहीं किया गया था. ऐसा इसलिए, क्योंकि /etc/host फ़ाइल को प्राथमिकता दी गई थी. हालांकि, डेटा पाथ में पीएससी आईपी पते 100.100.10.10 का इस्तेमाल किया गया था.

user@private-client:~$ sudo tcpdump -i any port 53 -n or host 100.100.10.10
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
22:13:35.507625 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 58585+ A? oauth2.googleapis.com. (39)
22:13:35.507631 ens4  Out IP 192.168.20.2.37004 > 169.254.169.254.53: 15580+ AAAA? oauth2.googleapis.com. (39)
22:13:35.511796 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 58585 16/0/0 A 142.251.6.95, A 108.177.112.95, A 74.125.124.95, A 172.217.212.95, A 172.217.214.95, A 172.253.114.95, A 172.253.119.95, A 108.177.111.95, A 142.250.1.95, A 108.177.121.95, A 142.250.103.95, A 108.177.120.95, A 142.251.171.95, A 142.250.159.95, A 142.251.120.95, A 142.251.161.95 (295)
22:13:35.512002 ens4  In  IP 169.254.169.254.53 > 192.168.20.2.37004: 15580 4/0/0 AAAA 2607:f8b0:4001:c2b::5f, AAAA 2607:f8b0:4001:c18::5f, AAAA 2607:f8b0:4001:c5f::5f, AAAA 2607:f8b0:4001:c58::5f (151)
22:13:35.722145 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [S], seq 1951267724, win 65320, options [mss 1420,sackOK,TS val 1371205990 ecr 0,nop,wscale 7], length 0
22:13:35.730727 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [S.], seq 3198878726, ack 1951267725, win 65535, options [mss 1366,sackOK,TS val 67847676 ecr 1371205990,nop,wscale 8], length 0
22:13:35.730760 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 1, win 511, options [nop,nop,TS val 1371205999 ecr 67847676], length 0
22:13:35.738339 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 1:518, ack 1, win 511, options [nop,nop,TS val 1371206006 ecr 67847676], length 517
22:13:35.739922 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], ack 518, win 261, options [nop,nop,TS val 67847688 ecr 1371206006], length 0
22:13:35.740860 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [.], seq 1:2709, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 2708
22:13:35.740863 ens4  In  IP 100.100.10.10.443 > 192.168.20.2.47304: Flags [P.], seq 2709:4699, ack 518, win 261, options [nop,nop,TS val 67847689 ecr 1371206006], length 1990
22:13:35.740874 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 2709, win 497, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.740886 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [.], ack 4699, win 485, options [nop,nop,TS val 1371206009 ecr 67847689], length 0
22:13:35.742709 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 518:598, ack 4699, win 501, options [nop,nop,TS val 1371206011 ecr 67847689], length 80
22:13:35.743996 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 598:644, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 46
22:13:35.744011 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 644:693, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 49
22:13:35.744082 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 693:728, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 35
22:13:35.744165 ens4  Out IP 192.168.20.2.47304 > 100.100.10.10.443: Flags [P.], seq 728:1069, ack 4699, win 501, options [nop,nop,TS val 1371206012 ecr 67847689], length 341

आपने इंटरनेट के ज़रिए सार्वजनिक एंडपॉइंट से कनेक्ट करके, ऑनलाइन अनुमान लगाने की सुविधा को चालू कर लिया है. साथ ही, हाइब्रिड नेटवर्किंग और Private Service Connect (googleapis) का इस्तेमाल करके, इसे निजी तौर पर चालू कर लिया है. ओएस से बाहर निकलें और Cloud Shell प्रॉम्प्ट पर वापस जाएं.

20. व्यवस्थित करें

Cloud Shell से, ट्यूटोरियल के कॉम्पोनेंट मिटाएं.

gcloud compute forwarding-rules delete pscvertex --global --quiet

gcloud compute instances delete workbench-tutorial --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-ip --global --quiet

gcloud compute networks subnets delete workbench-subnet --region=us-central1 --quiet 

gcloud compute vpn-tunnels delete aiml-vpc-tunnel0 aiml-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete aiml-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet 

gcloud compute routers delete aiml-cr-us-central1 cloud-router-us-central1-aiml-nat --region=us-central1 --quiet 

gcloud compute routers delete cloud-router-us-central1-on-prem-nat on-prem-cr-us-central1 --region=us-central1 --quiet

gcloud compute instances delete nat-client private-client --zone=us-central1-a --quiet

gcloud compute firewall-rules delete ssh-iap-on-prem-vpc --quiet

gcloud compute networks subnets delete nat-subnet  private-ip-subnet --region=us-central1 --quiet

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute networks delete aiml-vpc --quiet

Vertex कॉम्पोनेंट मिटाना

कंटेनर इमेज मिटाने के लिए, Artifact Registry पर जाएं. इसके बाद, बनाई गई रिपॉज़िटरी चुनें और मिटाएं को चुनें

616a3108bc2e48c8.png

स्टोरेज बकेट को मिटाने के लिए, Cloud Console में नेविगेशन मेन्यू का इस्तेमाल करके, स्टोरेज पर जाएं. इसके बाद, अपनी बकेट चुनें और मिटाएं पर क्लिक करें:

eddd1f9fdfaede8.png

मॉडल को एंडपॉइंट से अनडिप्लॉय करें. Vertex AI → ऑनलाइन अनुमान → diamonds-cpr_endpoint चुनें → एंडपॉइंट से मॉडल को अनडिप्लॉय करें → अनडिप्लॉय करें पर जाएं

bc95f092d21d4698.png

मॉडल मिटाएं. Vertex AI → Model Registry → मॉडल मिटाएं पर जाएं

ec4afff091e11606.png

ऑनलाइन अनुमान लगाने वाले एंडपॉइंट को मिटाएं. VertexAI → ऑनलाइन अनुमान → diamonds-cpr_endpoint को चुनें → एंडपॉइंट मिटाएं पर जाएं

7453760299bdfb9a.png

21. बधाई हो

बधाई हो, आपने इंटरनेट का इस्तेमाल करके, ऑनलाइन अनुमान लगाने की सुविधा को नेटिव तरीके से कनेक्ट करने की सुविधा को कॉन्फ़िगर और पुष्टि कर ली है. साथ ही, आपने Private Service Connect और हाइब्रिड नेटवर्किंग का इस्तेमाल करके, इसे निजी तौर पर कनेक्ट करने की सुविधा को भी कॉन्फ़िगर और पुष्टि कर ली है.

आपने nat-client और private-client बनाया है. साथ ही, Vertex API तक पहुंचने के लिए इस्तेमाल किए गए आईपी पतों की पुष्टि करने के लिए, TCPDUMP का इस्तेमाल किया है. इसके अलावा, आपने Private Service Connect (googleapis) के बारे में जाना. साथ ही, यह भी जाना कि ग्राहक के पीएससी एंडपॉइंट का इस्तेमाल करके, ऑन-प्रिमाइसेस और मल्टी-क्लाउड ऐप्लिकेशन को अलग-अलग कैसे किया जा सकता है.

Cosmopup को ट्यूटोरियल बहुत पसंद हैं!!

e6d3675ca7c6911f.jpeg

आगे क्या करना है?

इनमें से कुछ ट्यूटोरियल देखें...

ज़्यादा जानकारी और वीडियो

रेफ़रंस दस्तावेज़