نموذج لغوي كبير (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

ما الذي ستقوم ببنائه

ستقوم بإنشاء

  • مجموعة بيانات BigQuery لاحتواء النموذج
  • نموذج BigQuery الذي يستضيف Vertex AI PaLM API كدالة عن بُعد
  • يشير هذا المصطلح إلى اتصال خارجي لإنشاء اتصال بين BigQuery وVertex AI.

2. المتطلبات

  • متصفح، مثل Chrome أو Firefox
  • مشروع على Google Cloud تم تفعيل الفوترة فيه

3- قبل البدء

  1. في Google Cloud Console، ضمن صفحة أداة اختيار المشاريع، اختَر مشروعًا على Google Cloud أو أنشئه.
  2. تأكَّد من تفعيل الفوترة لمشروعك على السحابة الإلكترونية. التعرُّف على كيفية التحقّق مما إذا كانت الفوترة مفعّلة في مشروع
  3. تأكَّد من تفعيل جميع واجهات برمجة التطبيقات اللازمة (BigQuery API وVertex AI API وBigQuery Connection API).
  4. ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud وتكون محمَّلة مسبقًا بـ bq. يمكنك الرجوع إلى المستندات حول أوامر gcloud واستخدامها.

من Cloud Console، انقر على "تفعيل Cloud Shell" في أعلى يسار الصفحة:

51622c00acec2fa.png

إذا لم يتم ضبط مشروعك، استخدِم الأمر التالي لضبطه:

gcloud config set project <YOUR_PROJECT_ID>
  1. انتقِل إلى وحدة تحكُّم BigQuery مباشرةً من خلال إدخال عنوان URL التالي في متصفّحك: https://console.cloud.google.com/bigquery

4. يتم تجهيز البيانات.

في حالة الاستخدام هذه، نستخدِم محتوى رمز المصدر من مجموعة بيانات github_repos في مجموعات البيانات العامة من Google BigQuery. لاستخدام هذا، في وحدة تحكم BigQuery، ابحث عن "github_repos" واضغط على Enter. انقر فوق النجمة بجوار مجموعة البيانات المدرجة كنتيجة البحث. بعد ذلك، انقر على "عرض الصور المميّزة بنجمة فقط". فقط لرؤية مجموعة البيانات هذه من مجموعات البيانات العامة فقط.

dc6bf1e2fa6bba8a.png

وسِّع الجداول في مجموعة البيانات لعرض المخطط ومعاينة البيانات. سنستخدم sample_contents، التي تحتوي فقط على عينة (10%) من البيانات الكاملة في جدول المحتويات. في ما يلي معاينة للبيانات:

e021c689c56abf22.png

5- إنشاء مجموعة بيانات BigQuery

مجموعة بيانات BigQuery هي مجموعة من الجداول. يتم تخزين جميع الجداول في مجموعة بيانات في موقع البيانات نفسه. يمكنك أيضًا إرفاق عناصر تحكّم مخصّصة في الوصول لفرض قيود على الوصول إلى مجموعة بيانات وجداولها.

إنشاء مجموعة بيانات في المنطقة "US" (أو أي منطقة مفضّلة لدينا) باسم bq_llm

c67e9f929629739a.png

ستضم مجموعة البيانات هذه نموذج تعلُّم الآلة الذي سننشئه في الخطوات القادمة. عادةً ما نخزّن البيانات التي نستخدمها في تطبيق تعلُّم الآلة في جدول ضمن مجموعة البيانات هذه نفسها، ولكن في حالة استخدامنا، تكون البيانات متوفّرة بالفعل في مجموعة بيانات عامة في BigQuery، سنشير إليها مباشرةً من مجموعة البيانات التي تمّ إنشاؤها حديثًا على النحو المطلوب. إذا كنت تريد تنفيذ هذا المشروع على مجموعة البيانات الخاصة بك والتي تتواجد في ملف CSV (أو أي ملف آخر)، فيمكنك تحميل بياناتك في مجموعة بيانات BigQuery إلى جدول عن طريق تشغيل الأمر أدناه من الطرفية Cloud Shell:

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. انقر فوق الزر "+إضافة" في جزء "مستكشف BigQuery" (على يمين وحدة تحكم BigQuery) وانقر على "الاتصال بمصادر البيانات الخارجية" في المصادر الرائجة المدرَجة في القائمة
  2. اختَر نوع الاتصال على أنّه "BigLake والوظائف عن بُعد" وقم بتوفير "llm-conn" كمعرّف الاتصال

6b75042881eaec5f.png

  1. بعد إنشاء عملية الربط، دوِّن حساب الخدمة الذي تم إنشاؤه من تفاصيل إعدادات الربط.

7. منح الأذونات

في هذه الخطوة، سنمنح حساب الخدمة أذونات الوصول إلى خدمة Vertex AI:

افتح "إدارة الهوية وإمكانية الوصول" وأضِف حساب الخدمة الذي نسخته بعد إنشاء الاتصال الخارجي كمدير رئيسي، ثم اختَر "مستخدم Vertex AI". الدور

ff8e1d730879f972.png

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');

تنشئ الأداة نموذجًا باسم llm_model في مجموعة البيانات bq_llm التي تستفيد من واجهة برمجة التطبيقات CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 في Vertex AI كدالة عن بُعد. سيستغرق إكمال هذه الخطوة عدة ثوانٍ.

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 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. في قائمة المشاريع، اختَر المشروع الذي تريد حذفه، ثم انقر على "حذف".
  3. في مربّع الحوار، اكتب معرّف المشروع، ثم انقر على "إيقاف التشغيل" لحذف المشروع.

12. تهانينا

تهانينا! لقد تمكّنت من استخدام Vertex AI Text Generation LLM آليًا لإجراء إحصاءات نصية على بياناتك باستخدام طلبات بحث SQL فقط. يمكنك الاطّلاع على مستندات منتجات Vertex AI LLM لمعرفة المزيد من المعلومات حول النماذج المتوفّرة.