LLM فقط SQL با BigQuery ML با استفاده از Vertex AI PalM API

1. مقدمه

در این لبه کد، من مراحل انجام خلاصه‌سازی کد منبع از مخازن Github و شناسایی زبان برنامه‌نویسی در مخزن را با استفاده از مدل زبان بزرگ Vertex AI برای تولید متن ( text-bison ) به عنوان یک تابع راه دور میزبان در BigQuery فهرست کرده‌ام. . به لطف پروژه بایگانی GitHub، ما اکنون یک عکس فوری کامل از بیش از 2.8 میلیون مخزن منبع باز GitHub در مجموعه داده های عمومی Google BigQuery داریم. لیست خدمات مورد استفاده عبارتند از:

  1. BigQuery ML
  2. Vertex AI PalM API

چیزی که خواهی ساخت

شما ایجاد خواهید کرد

  • یک مجموعه داده BigQuery که شامل مدل است
  • یک مدل BigQuery که Vertex AI PalM API را به عنوان یک تابع راه دور میزبانی می کند
  • یک اتصال خارجی برای برقراری ارتباط بین BigQuery و Vertex AI

2. الزامات

  • مرورگری مانند کروم یا فایرفاکس
  • یک پروژه Google Cloud با فعال کردن صورت‌حساب

3. قبل از شروع

  1. در Google Cloud Console ، در صفحه انتخاب پروژه، یک پروژه Google Cloud را انتخاب یا ایجاد کنید
  2. مطمئن شوید که صورتحساب برای پروژه Cloud شما فعال است. با نحوه بررسی فعال بودن صورت‌حساب در پروژه آشنا شوید
  3. مطمئن شوید که همه APIهای لازم (BigQuery API، Vertex AI API، BigQuery Connection API) فعال هستند.
  4. شما از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Google Cloud اجرا می شود و با bq از قبل بارگذاری شده است. برای دستورات و استفاده از gcloud به اسناد مراجعه کنید

از Cloud Console، روی Activate Cloud Shell در گوشه سمت راست بالا کلیک کنید:

51622c00acec2fa.png

اگر پروژه شما تنظیم نشده است، از دستور زیر برای تنظیم آن استفاده کنید:

gcloud config set project <YOUR_PROJECT_ID>
  1. با وارد کردن URL زیر در مرورگر خود مستقیماً به کنسول BigQuery بروید: https://console.cloud.google.com/bigquery

4. آماده سازی داده ها

در این مورد، ما از محتوای کد منبع از مجموعه داده github_repos در مجموعه داده‌های عمومی Google BigQuery استفاده می‌کنیم. برای استفاده از این، در کنسول BigQuery، "github_repos" را جستجو کنید و اینتر را فشار دهید. روی ستاره کنار مجموعه داده ای که به عنوان نتیجه جستجو فهرست شده است کلیک کنید. سپس بر روی گزینه "SHOW STARRED ONLY" کلیک کنید تا آن مجموعه داده فقط از مجموعه داده های عمومی مشاهده شود.

dc6bf1e2fa6bba8a.png

جداول موجود در مجموعه داده را برای مشاهده طرح و پیش نمایش داده ها گسترش دهید. ما قصد داریم از نمونه_محتوا استفاده کنیم که فقط شامل یک نمونه (10%) از داده های کامل در جدول محتویات است. در اینجا پیش نمایش داده ها وجود دارد:

e021c689c56abf22.png

5. ایجاد مجموعه داده BigQuery

مجموعه داده BigQuery مجموعه ای از جداول است. همه جداول در یک مجموعه داده در یک مکان داده ذخیره می شوند. همچنین می‌توانید کنترل‌های دسترسی سفارشی را برای محدود کردن دسترسی به مجموعه داده و جداول آن ضمیمه کنید.

یک مجموعه داده در منطقه "US" (یا هر منطقه دلخواه ما) با نام bq_llm ایجاد کنید

c67e9f929629739a.png

این مجموعه داده، مدل ML را در خود جای خواهد داد که در مراحل بعدی ایجاد خواهیم کرد. معمولاً ما همچنین داده‌هایی را که در برنامه ML استفاده می‌کنیم در یک جدول در خود این مجموعه داده ذخیره می‌کنیم، اما در مورد استفاده ما، داده‌ها از قبل در یک مجموعه داده عمومی 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 را فعال کنید) و شناسه حساب سرویس را از جزئیات پیکربندی اتصال یادداشت کنید:

  1. روی دکمه +ADD در صفحه BigQuery Explorer (در سمت چپ کنسول BigQuery) کلیک کنید و روی "اتصال به منابع داده خارجی" در منابع محبوب لیست شده کلیک کنید.
  2. نوع اتصال را به عنوان «BigLake و توابع راه دور» انتخاب کنید و «llm-conn» را به عنوان شناسه اتصال ارائه کنید.

6b75042881eaec5f.png

  1. پس از ایجاد اتصال، حساب سرویس ایجاد شده از جزئیات پیکربندی اتصال را یادداشت کنید

7. اعطای مجوز

در این مرحله ما مجوزهایی را به حساب سرویس برای دسترسی به سرویس Vertex AI اعطا می کنیم:

IAM را باز کنید و حساب سرویسی را که پس از ایجاد اتصال خارجی کپی کرده اید به عنوان اصلی اضافه کنید و نقش "کاربر Vertex AI" را انتخاب کنید.

ff8e1d730879f972.png

8. یک مدل ML راه دور ایجاد کنید

مدل راه دور را ایجاد کنید که نشان دهنده یک مدل زبان بزرگ 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');

مدلی به نام llm_model در مجموعه داده bq_llm ایجاد می کند که از CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API Vertex AI به عنوان یک تابع راه دور استفاده می کند. چند ثانیه طول می کشد تا کامل شود.

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 است که شامل ویژگی‌های محتوا و ایمنی است: الف. محتوا نشان دهنده نتیجه متن تولید شده ب. ویژگی‌های ایمنی فیلتر محتوای داخلی را با یک آستانه قابل تنظیم نشان می‌دهند که در Vertex AI Palm API فعال است تا از هر گونه پاسخ ناخواسته یا پیش‌بینی نشده از مدل زبان بزرگ جلوگیری کند - اگر آستانه ایمنی را نقض کند، پاسخ مسدود می‌شود.

ML.GENERATE_TEXT ساختاری است که در BigQuery برای دسترسی به Vertex AI LLM برای انجام وظایف تولید متن استفاده می‌کنید.

CONCAT عبارت PROMPT و رکورد پایگاه داده را اضافه می کند

github_repos نام مجموعه داده است و sample_contents نام جدولی است که داده‌هایی را که در طراحی سریع استفاده خواهیم کرد را در خود نگه می‌دارد.

دما پارامتر فوری برای کنترل تصادفی بودن پاسخ است - از نظر ارتباط کمتر بهتر

Max_output_tokens تعداد کلماتی است که در پاسخ می خواهید

پاسخ پرس و جو به این صورت است:

1156f6eecb548cd5.png

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 را برمی‌گرداند.

پاسخ پرس و جو به این صورت است:

3b662ef7d3ba9263.png

11. پاکسازی کنید

برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این پست، این مراحل را دنبال کنید:

  1. در کنسول Google Cloud، به صفحه مدیریت منابع بروید
  2. در لیست پروژه، پروژه ای را که می خواهید حذف کنید انتخاب کنید و سپس روی Delete کلیک کنید
  3. در محاوره، شناسه پروژه را تایپ کنید و سپس روی Shut down کلیک کنید تا پروژه حذف شود

12. تبریک می گویم

تبریک می گویم! شما با موفقیت از Vertex AI Text Generation LLM به صورت برنامه نویسی برای انجام تجزیه و تحلیل متن روی داده های خود فقط با استفاده از SQL-queries استفاده کرده اید. برای کسب اطلاعات بیشتر در مورد مدل های موجود ، مستندات محصول Vertex AI LLM را بررسی کنید.