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

1. ভূমিকা

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

  1. BigQuery ML
  2. Vertex AI PaLM API

আপনি কি নির্মাণ করবেন

আপনি তৈরি করবেন

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

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

3. আপনি শুরু করার আগে

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

ক্লাউড কনসোল থেকে, উপরের ডানদিকে কোণায় ক্লাউড শেল সক্রিয় করুন ক্লিক করুন:

51622c00acec2fa.png

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

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

4. ডেটা প্রস্তুত করা হচ্ছে

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

dc6bf1e2fa6bba8a.png

স্কিমা এবং ডেটা প্রিভিউ দেখতে ডেটাসেটে টেবিলগুলি প্রসারিত করুন। আমরা নমুনা_বিষয়বস্তু ব্যবহার করতে যাচ্ছি, যেটিতে কেবলমাত্র বিষয়বস্তুর সারণীতে সম্পূর্ণ ডেটার একটি নমুনা (10%) রয়েছে। এখানে ডেটার একটি পূর্বরূপ রয়েছে:

e021c689c56abf22.png

5. 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

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

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

  1. BigQuery এক্সপ্লোরার প্যানে (BigQuery কনসোলের বাঁদিকে) +ADD বোতামে ক্লিক করুন এবং তালিকাভুক্ত জনপ্রিয় উত্সগুলিতে "বাহ্যিক ডেটা উত্সের সাথে সংযোগ" এ ক্লিক করুন
  2. "BigLake এবং দূরবর্তী ফাংশন" হিসাবে সংযোগের ধরন নির্বাচন করুন এবং সংযোগ ID হিসাবে "llm-conn" প্রদান করুন

6b75042881eaec5f.png

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

7. অনুমতি দিন

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

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

ff8e1d730879f972.png

8. একটি দূরবর্তী এমএল মডেল তৈরি করুন

রিমোট মডেল তৈরি করুন যা হোস্ট করা ভার্টেক্স এআই বৃহৎ ভাষা মডেলকে উপস্থাপন করে:

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

9. ML মডেল ব্যবহার করে পাঠ্য তৈরি করুন

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

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 ফরম্যাটে টেক্সট জেনারেশন মডেলের প্রতিক্রিয়া যা কন্টেন্ট এবং নিরাপত্তা বৈশিষ্ট্য উভয়ই ধারণ করে: ক. বিষয়বস্তু উত্পন্ন পাঠ্য ফলাফল প্রতিনিধিত্ব করে খ. সুরক্ষা বৈশিষ্ট্যগুলি একটি সামঞ্জস্যযোগ্য থ্রেশহোল্ড সহ অন্তর্নির্মিত বিষয়বস্তু ফিল্টারকে উপস্থাপন করে যা ভার্টেক্স এআই পাম এপিআই তে সক্ষম করা হয়েছে বৃহৎ ভাষার মডেল থেকে কোনও অনিচ্ছাকৃত বা অপ্রত্যাশিত প্রতিক্রিয়া এড়াতে - যদি এটি সুরক্ষা থ্রেশহোল্ড লঙ্ঘন করে তবে প্রতিক্রিয়াটি অবরুদ্ধ করা হয়

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

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

github_repos হল ডেটাসেটের নাম এবং নমুনা_সামগ্রী হল টেবিলের নাম যা আমরা প্রম্পট ডিজাইনে যে ডেটা ব্যবহার করব তা ধারণ করে

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

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

প্রশ্নের উত্তর এই মত দেখায়:

1156f6eecb548cd5.png

10. প্রশ্নের ফলাফল সমতল করুন

আসুন ফলাফলটিকে সমতল করি যাতে আমাদের জেএসওএনকে প্রশ্নে স্পষ্টভাবে ডিকোড করতে না হয়:

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

11. পরিষ্কার করুন

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

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

12. অভিনন্দন

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