1. परिचय
इस कोडलैब में, मैंने GitHub रिपॉज़िटरी से सोर्स कोड की खास जानकारी पाने और रेपो में प्रोग्रामिंग की भाषा की पहचान करने के तरीके बताए हैं. इसके लिए, BigQuery में होस्ट किए गए रिमोट फ़ंक्शन के तौर पर Vertex AI लार्ज लैंग्वेज मॉडल ( text-bison) का इस्तेमाल किया जा सकता है. GitHub के Archive Project की मदद से, अब हमारे पास Google BigQuery सार्वजनिक डेटासेट में, 28 लाख से ज़्यादा ओपन सोर्स GitHub डेटा स्टोर करने की जगहों का पूरा स्नैपशॉट मौजूद है. यहां इस्तेमाल की जाने वाली सेवाओं की सूची दी गई है:
- BigQuery ML
- Vertex AI PaLM API
आपको क्या बनाना होगा
आपको यह बनाना होगा
- मॉडल शामिल करने के लिए BigQuery डेटासेट
- Vertex AI PaLM API को रिमोट फ़ंक्शन के तौर पर होस्ट करने वाला BigQuery मॉडल
- BigQuery और Vertex AI को कनेक्ट करने के लिए एक बाहरी कनेक्शन
2. ज़रूरी शर्तें
3. शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग की सुविधा चालू है या नहीं, यह देखने का तरीका जानें
- पक्का करें कि सभी ज़रूरी एपीआई (BigQuery API, Vertex AI API, BigQuery कनेक्शन API) चालू हैं
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है. यह bq के साथ पहले से लोड होता है. gcloud के लिए कमांड और इसके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें
Cloud Console में, सबसे ऊपर दाएं कोने में 'Cloud Shell को चालू करें' पर क्लिक करें:
अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए नीचे दिए गए कमांड का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- अपने ब्राउज़र में यह यूआरएल डालकर, सीधे BigQuery कंसोल पर जाएं: https://console.cloud.google.com/bigquery
4. डेटा तैयार हो रहा है
इस्तेमाल के इस उदाहरण में, हम Google BigQuery सार्वजनिक डेटासेट में github_repos डेटासेट से मिले सोर्स कोड कॉन्टेंट का इस्तेमाल कर रहे हैं. इसका इस्तेमाल करने के लिए, BigQuery कंसोल में "github_repos" खोजें और Enter दबाएं. खोज नतीजे के तौर पर दिए गए डेटासेट के बगल में मौजूद तारे के निशान पर क्लिक करें. इसके बाद, "सिर्फ़ स्टार के निशान वाले दिखाएं" पर क्लिक करें का इस्तेमाल करके उस डेटासेट को सिर्फ़ सार्वजनिक डेटासेट से देख सकते हैं.
स्कीमा और डेटा की झलक देखने के लिए, डेटासेट में दी गई टेबल को बड़ा करें. हम sample_contents का इस्तेमाल करने वाले हैं, जिसमें कॉन्टेंट टेबल में पूरे डेटा का सिर्फ़ सैंपल (10%) होता है. यहां डेटा की झलक दी गई है:
5. BigQuery डेटासेट बनाना
BigQuery डेटासेट, कई टेबल का कलेक्शन होता है. किसी डेटासेट में सभी टेबल को एक ही लोकेशन में सेव किया जाता है. डेटासेट और उसकी टेबल के ऐक्सेस को सीमित करने के लिए, कस्टम ऐक्सेस कंट्रोल भी अटैच किए जा सकते हैं.
"US" क्षेत्र में डेटासेट बनाएं (या हमारी प्राथमिकता के किसी भी क्षेत्र) का नाम bq_llm है
इस डेटासेट में, वह एमएल मॉडल होगा जिसे हम अगले चरणों में बनाएंगे. आम तौर पर, हम एमएल ऐप्लिकेशन में इस्तेमाल किए जाने वाले डेटा को इस डेटासेट में मौजूद टेबल में भी सेव करते हैं. हालांकि, डेटा इस्तेमाल करने के मामले में, डेटा पहले से ही BigQuery के सार्वजनिक डेटासेट में मौजूद होता है. इसलिए, हम ज़रूरत पड़ने पर सीधे अपने नए डेटासेट से इस बारे में जानकारी देंगे. अगर आपको यह प्रोजेक्ट, CSV या किसी दूसरी फ़ाइल में मौजूद अपने डेटासेट पर करना है, तो Cloud Shell टर्मिनल से इस निर्देश का इस्तेमाल करके, BigQuery डेटासेट में अपना डेटा लोड करें:
bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string
6. बाहरी कनेक्शन बनाया जा रहा है
कोई एक्सटर्नल कनेक्शन बनाएं (अगर BQ Connection API चालू नहीं किया गया है, तो उसे चालू करें) और कनेक्शन कॉन्फ़िगरेशन की जानकारी में से, सेवा खाता आईडी को नोट कर लें:
- BigQuery एक्सप्लोरर पैनल (BigQuery कंसोल के बाईं ओर) में, +जोड़ें बटन पर क्लिक करें. इसके बाद, "बाहरी डेटा सोर्स से कनेक्शन" पर क्लिक करें लोकप्रिय सोर्स का इस्तेमाल करके,
- "BigLake और रिमोट फ़ंक्शन" के तौर पर कनेक्शन टाइप चुनें और "llm-conn" उपलब्ध कराएं कनेक्शन आईडी के तौर पर
- कनेक्शन बनाने के बाद, कनेक्शन के कॉन्फ़िगरेशन की जानकारी से जनरेट किए गए सेवा खाते को नोट करें
7. अनुमतियां दें
इस चरण में, हम सेवा खाते को Vertex AI की सेवा ऐक्सेस करने की अनुमति देंगे:
IAM खोलें और प्रिंसिपल के तौर पर एक्सटर्नल कनेक्शन बनाने के बाद, कॉपी किए गए सेवा खाते को जोड़ें. इसके बाद, "Vertex AI User" चुनें भूमिका
8. रिमोट एमएल मॉडल बनाना
ऐसा रिमोट मॉडल बनाएं जो होस्ट किया गया Vertex AI बड़ा लैंग्वेज मॉडल दिखाता हो:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
यह bq_llm डेटासेट में, llm_model नाम का मॉडल बनाता है. यह Vertex AI के cloud_AI_LARGE_LANGUAGE_MODEL_V1 एपीआई को रिमोट फ़ंक्शन के तौर पर इस्तेमाल करता है. इस प्रोसेस को पूरा होने में कुछ सेकंड लगेंगे.
9. एमएल मॉडल का इस्तेमाल करके टेक्स्ट जनरेट करना
मॉडल बनाने के बाद, उसका इस्तेमाल टेक्स्ट जनरेट करने, उसकी खास जानकारी देने या उसकी कैटगरी तय करने के लिए करें.
SELECT
ml_generate_text_result['predictions'][0]['content'] AS generated_text,
ml_generate_text_result['predictions'][0]['safetyAttributes']
AS safety_attributes,
* EXCEPT (ml_generate_text_result)
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens));
**ज़्यादा जानकारी:
ml_generate_text_result**, JSON फ़ॉर्मैट में टेक्स्ट जनरेट करने वाले मॉडल से मिलने वाला रिस्पॉन्स है. इसमें कॉन्टेंट और सुरक्षा, दोनों एट्रिब्यूट शामिल होते हैं: a. कॉन्टेंट में, जनरेट किए गए टेक्स्ट के नतीजे b के बारे में बताया गया है. सुरक्षा एट्रिब्यूट की वैल्यू, पहले से मौजूद कॉन्टेंट फ़िल्टर में मौजूद, अडजस्ट किए जा सकने वाले थ्रेशोल्ड के साथ दिखती हैं. यह थ्रेशोल्ड, Vertex AI Pal API में चालू होता है. इससे लार्ज लैंग्वेज मॉडल से अनचाहे या अचानक मिलने वाले जवाबों से बचा जा सकता है. सुरक्षा थ्रेशोल्ड का उल्लंघन करने पर, इस तरह के जवाब को ब्लॉक कर दिया जाता है
ML.GENERATE_TEXT एक ऐसा कंस्ट्रक्ट है जिसका इस्तेमाल BigQuery में, टेक्स्ट जनरेट करने के टास्क करने के लिए, Vertex AI LLM को ऐक्सेस करने के लिए किया जाता है
CONCAT आपके सवाल और डेटाबेस रिकॉर्ड को जोड़ता है
github_repos, डेटासेट का नाम है और sample_contents उस टेबल का नाम है जिसमें वह डेटा होता है जिसे हम प्रॉम्प्ट डिज़ाइन में इस्तेमाल करेंगे
तापमान एक प्रॉम्प्ट पैरामीटर है, जिसकी मदद से रिस्पॉन्स की रैंडमनेस को कंट्रोल किया जाता है. यह काम के होने के हिसाब से जितना बेहतर होता है, उतना बेहतर होता है
Max_output_tokens में ऐसे शब्दों की संख्या है जिन्हें आपको जवाब में शामिल करना है
क्वेरी का जवाब कुछ ऐसा दिखेगा:
10. क्वेरी के नतीजे को फ़्लैट करें
चलिए, नतीजे को फ़्लैट करते हैं, ताकि हमें क्वेरी में JSON को साफ़ तौर पर डिकोड नहीं करना पड़े:
SELECT *
FROM
ML.GENERATE_TEXT(
MODEL `bq_llm.llm_model`,
(
SELECT
CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
AS prompt from `bigquery-public-data.github_repos.sample_contents`
limit 5
),
STRUCT(
0.2 AS temperature,
100 AS max_output_tokens,
TRUE AS flatten_json_output));
**ज़्यादा जानकारी:
Flatten_json_Output** से यह बूलियन वैल्यू के बारे में पता चलता है. अगर इसे 'सही' पर सेट किया जाता है, तो JSON के रिस्पॉन्स से निकाला गया ऐसा टेक्स्ट मिलता है जिसे आसानी से समझा जा सकता है.
क्वेरी का जवाब कुछ ऐसा दिखेगा:
11. व्यवस्थित करें
इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे, इसके लिए यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, 'मिटाएं' पर क्लिक करें
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए 'शट डाउन करें' पर क्लिक करें
12. बधाई हो
बधाई हो! आपने सिर्फ़ SQL-क्वेरी का इस्तेमाल करके, अपने डेटा का टेक्स्ट ऐनलिटिक्स करने के लिए, Vertex AI Text Generation एलएलएम प्रोग्राम के ज़रिए सही तरीके से इस्तेमाल किया है. उपलब्ध मॉडल के बारे में ज़्यादा जानने के लिए, Vertex AI एलएलएम से जुड़े प्रॉडक्ट के दस्तावेज़ देखें.