Vertex AI PaLM API ব্যবহার করে BigQuery ML সহ শুধুমাত্র SQL-LLM

1. ভূমিকা

এই কোডল্যাবে, আমি BigQuery-তে হোস্টেড রিমোট ফাংশন হিসেবে টেক্সট জেনারেশনের জন্য Vertex AI Large Language Model ( text-bison ) ব্যবহার করে Github repos থেকে সোর্স কোডের সারসংক্ষেপ এবং রেপোতে প্রোগ্রামিং ভাষা সনাক্তকরণের ধাপগুলি তালিকাভুক্ত করেছি। GitHub Archive Project-এর জন্য ধন্যবাদ, এখন আমাদের কাছে Google BigQuery Public Datasets- এ 2.8 মিলিয়নেরও বেশি ওপেন সোর্স GitHub রিপোজিটরির সম্পূর্ণ স্ন্যাপশট রয়েছে। ব্যবহৃত পরিষেবাগুলির তালিকা হল:

  1. বিগকুয়েরি এমএল
  2. ভার্টেক্স এআই PaLM API

তুমি কী তৈরি করবে

তুমি তৈরি করবে

  • মডেলটি ধারণ করার জন্য একটি BigQuery ডেটাসেট
  • একটি BigQuery মডেল যা Vertex AI PaLM API কে রিমোট ফাংশন হিসেবে হোস্ট করে
  • BigQuery এবং Vertex AI এর মধ্যে সংযোগ স্থাপনের জন্য একটি বহিরাগত সংযোগ

2. প্রয়োজনীয়তা

৩. শুরু করার আগে

  1. গুগল ক্লাউড কনসোলে , প্রজেক্ট সিলেক্টর পৃষ্ঠায়, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
  2. আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং সক্ষম আছে কিনা তা নিশ্চিত করুন। কোনও প্রোজেক্টে বিলিং সক্ষম আছে কিনা তা কীভাবে পরীক্ষা করবেন তা জানুন।
  3. নিশ্চিত করুন যে সমস্ত প্রয়োজনীয় API (BigQuery API, Vertex AI API, BigQuery Connection API) সক্রিয় আছে।
  4. আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চলমান একটি কমান্ড-লাইন পরিবেশ যা bq দিয়ে আগে থেকে লোড করা থাকে। gcloud কমান্ড এবং ব্যবহারের জন্য ডকুমেন্টেশন দেখুন।

ক্লাউড কনসোল থেকে, উপরের ডান কোণায় Activate Cloud Shell এ ক্লিক করুন:

51622c00acec2fa.png - সর্বশেষ সংস্করণ।

যদি আপনার প্রকল্পটি সেট না করা থাকে, তাহলে এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud config set project <YOUR_PROJECT_ID>
  1. আপনার ব্রাউজারে নিম্নলিখিত URL টি প্রবেশ করে সরাসরি BigQuery কনসোলে নেভিগেট করুন: https://console.cloud.google.com/bigquery

৪. তথ্য প্রস্তুত করা

এই ব্যবহারের ক্ষেত্রে আমরা Google BigQuery Public Datasets- এ github_repos ডেটাসেটের সোর্স কোড কন্টেন্ট ব্যবহার করছি। এটি ব্যবহার করতে, BigQuery কনসোলে, "github_repos" অনুসন্ধান করুন এবং এন্টার টিপুন। অনুসন্ধান ফলাফল হিসাবে তালিকাভুক্ত ডেটাসেটের পাশের তারাটিতে ক্লিক করুন। তারপর "SHOW STARRED ONLY" বিকল্পে ক্লিক করুন যাতে শুধুমাত্র পাবলিক ডেটাসেট থেকে সেই ডেটাসেটটি দেখা যায়।

dc6bf1e2fa6bba8a.png

স্কিমা এবং ডেটা প্রিভিউ দেখতে ডেটাসেটের টেবিলগুলি প্রসারিত করুন। আমরা sample_contents ব্যবহার করব, যাতে contents টেবিলের সম্পূর্ণ ডেটার শুধুমাত্র একটি নমুনা (10%) থাকবে। এখানে ডেটার একটি প্রিভিউ দেওয়া হল:

e021c689c56abf22.png সম্পর্কে

৫. BigQuery ডেটাসেট তৈরি করা

একটি BigQuery ডেটাসেট হল টেবিলের একটি সংগ্রহ। একটি ডেটাসেটের সমস্ত টেবিল একই ডেটা লোকেশনে সংরক্ষণ করা হয়। আপনি একটি ডেটাসেট এবং এর টেবিলগুলিতে অ্যাক্সেস সীমিত করতে কাস্টম অ্যাক্সেস নিয়ন্ত্রণও সংযুক্ত করতে পারেন।

"মার্কিন" অঞ্চলে (অথবা আমাদের পছন্দের যেকোনো অঞ্চলে) bq_llm নামে একটি ডেটাসেট তৈরি করুন।

c67e9f929629739a.png সম্পর্কে

এই ডেটাসেটে আসন্ন ধাপগুলিতে আমরা যে ML মডেলটি তৈরি করব তা থাকবে। সাধারণত আমরা ML অ্যাপ্লিকেশনে ব্যবহৃত ডেটা এই ডেটাসেটের একটি টেবিলে সংরক্ষণ করব, তবে আমাদের ব্যবহারের ক্ষেত্রে ডেটা ইতিমধ্যেই একটি BigQuery পাবলিক ডেটাসেটে থাকে, আমরা প্রয়োজন অনুসারে আমাদের নতুন তৈরি ডেটাসেট থেকে সরাসরি এটি উল্লেখ করব। আপনি যদি এই প্রকল্পটি আপনার নিজস্ব ডেটাসেটে করতে চান যা একটি CSV (অথবা অন্য কোনও ফাইল) থাকে, তাহলে আপনি ক্লাউড শেল টার্মিনাল থেকে নীচের কমান্ডটি চালিয়ে একটি BigQuery ডেটাসেটে আপনার ডেটা লোড করতে পারেন:

bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string

৬. বাহ্যিক সংযোগ তৈরি করা

একটি বহিরাগত সংযোগ তৈরি করুন (যদি ইতিমধ্যেই করা না থাকে তবে BQ সংযোগ API সক্ষম করুন) এবং সংযোগ কনফিগারেশনের বিবরণ থেকে পরিষেবা অ্যাকাউন্ট আইডিটি লিখে রাখুন:

  1. BigQuery এক্সপ্লোরার প্যানে (BigQuery কনসোলের বাম দিকে) +ADD বোতামে ক্লিক করুন এবং তালিকাভুক্ত জনপ্রিয় উৎসগুলিতে "বাহ্যিক ডেটা উৎসের সাথে সংযোগ" এ ক্লিক করুন।
  2. "BigLake and remote functions" হিসেবে Connection type নির্বাচন করুন এবং Connection ID হিসেবে "llm-conn" দিন।

6b75042881eaec5f.png সম্পর্কে

  1. সংযোগ তৈরি হয়ে গেলে, সংযোগ কনফিগারেশনের বিবরণ থেকে তৈরি পরিষেবা অ্যাকাউন্টটি নোট করুন।

৭. অনুমতি প্রদান করুন

এই ধাপে আমরা সার্ভিস অ্যাকাউন্টকে Vertex AI পরিষেবা অ্যাক্সেস করার অনুমতি দেব:

IAM খুলুন এবং বহিরাগত সংযোগ তৈরি করার পরে আপনার অনুলিপি করা পরিষেবা অ্যাকাউন্টটি প্রিন্সিপাল হিসাবে যুক্ত করুন এবং "Vertex AI ব্যবহারকারী" ভূমিকা নির্বাচন করুন।

ff8e1d730879f972.png সম্পর্কে

৮. একটি রিমোট এমএল মডেল তৈরি করুন

একটি হোস্টেড 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 API-কে রিমোট ফাংশন হিসেবে ব্যবহার করে। এটি সম্পন্ন হতে কয়েক সেকেন্ড সময় লাগবে।

৯. এমএল মডেল ব্যবহার করে টেক্সট তৈরি করুন

মডেলটি তৈরি হয়ে গেলে, টেক্সট তৈরি, সারসংক্ষেপ বা শ্রেণীবদ্ধ করতে মডেলটি ব্যবহার করুন।

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 Palm API-তে সক্ষম করা হয়েছে যাতে বৃহৎ ভাষা মডেল থেকে কোনও অনিচ্ছাকৃত বা অপ্রত্যাশিত প্রতিক্রিয়া এড়ানো যায় - যদি এটি সুরক্ষা থ্রেশহোল্ড লঙ্ঘন করে তবে প্রতিক্রিয়াটি ব্লক করা হয়।

ML.GENERATE_TEXT হল সেই কনস্ট্রাক্ট যা আপনি BigQuery-তে Vertex AI LLM অ্যাক্সেস করার জন্য টেক্সট জেনারেশনের কাজগুলি সম্পাদন করতে ব্যবহার করেন।

CONCAT আপনার PROMPT স্টেটমেন্ট এবং ডাটাবেস রেকর্ড যুক্ত করে

github_repos হল ডেটাসেটের নাম এবং sample_contents হল টেবিলের নাম যেখানে আমরা প্রম্পট ডিজাইনে যে ডেটা ব্যবহার করব তা ধারণ করে।

তাপমাত্রা হল প্রতিক্রিয়ার এলোমেলোতা নিয়ন্ত্রণের জন্য প্রম্পট প্যারামিটার - প্রাসঙ্গিকতার দিক থেকে কম হলে ভালো।

সর্বোচ্চ_আউটপুট_টোকেন হল উত্তরে আপনি যে শব্দগুলি চান তার সংখ্যা

প্রশ্নের উত্তরটি এরকম দেখাচ্ছে:

1156f6eecb548cd5.png সম্পর্কে

১০. কোয়েরির ফলাফল সমতল করুন

আসুন ফলাফলটি সমতল করি যাতে আমাদের কোয়েরিতে স্পষ্টভাবে 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 প্রতিক্রিয়া থেকে নিষ্কাশিত একটি সমতল বোধগম্য পাঠ্য প্রদান করে।

প্রশ্নের উত্তরটি এরকম দেখাচ্ছে:

3b662ef7d3ba9263.png সম্পর্কে

১১. পরিষ্কার করা

এই পোস্টে ব্যবহৃত রিসোর্সের জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউড কনসোলে, রিসোর্স পরিচালনা পৃষ্ঠায় যান।
  2. প্রকল্পের তালিকায়, আপনি যে প্রকল্পটি মুছতে চান তা নির্বাচন করুন এবং তারপরে মুছুন ক্লিক করুন
  3. ডায়ালগে, প্রোজেক্ট আইডি টাইপ করুন, এবং তারপর প্রোজেক্টটি মুছে ফেলতে Shut down এ ক্লিক করুন।

১২. অভিনন্দন

অভিনন্দন! আপনি শুধুমাত্র SQL-কোয়েরি ব্যবহার করে আপনার ডেটার টেক্সট বিশ্লেষণ করার জন্য একটি Vertex AI Text Generation LLM প্রোগ্রাম্যাটিকভাবে সফলভাবে ব্যবহার করেছেন। উপলব্ধ মডেলগুলি সম্পর্কে আরও জানতে Vertex AI LLM পণ্য ডকুমেন্টেশন দেখুন।