1. บทนำ
ใน Codelab นี้ เราได้ระบุขั้นตอนการสรุปซอร์สโค้ดจากที่เก็บของ GitHub และระบุภาษาการเขียนโปรแกรมในที่เก็บ โดยใช้ Vertex AI Large Language Model สำหรับการสร้างข้อความ ( text-bison) เป็นฟังก์ชันระยะไกลที่โฮสต์ใน BigQuery ด้วย Archive Project ของ GitHub ขณะนี้เรามีสแนปชอตของที่เก็บ GitHub แบบโอเพนซอร์สกว่า 2.8 ล้านรายการใน Google BigQuery Public Datasets บริการที่ใช้มีดังนี้
- BigQuery ML
- Vertex AI PaLM API
สิ่งที่คุณจะสร้าง
คุณจะได้สร้าง
- ชุดข้อมูล BigQuery ที่จะมีโมเดล
- โมเดล BigQuery ที่โฮสต์ Vertex AI PaLM API เป็นฟังก์ชันระยะไกล
- การเชื่อมต่อภายนอกเพื่อสร้างการเชื่อมต่อระหว่าง BigQuery กับ Vertex AI
2. ข้อกำหนด
3. ก่อนเริ่มต้น
- ใน Google Cloud Console ในหน้าตัวเลือกโปรเจ็กต์ ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud
- ตรวจสอบว่าเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่อยู่ในระบบคลาวด์แล้ว ดูวิธีตรวจสอบว่าเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้ว
- ตรวจสอบว่าเปิดใช้ API ที่จำเป็นทั้งหมด (BigQuery API, Vertex AI API, BigQuery Connection API) แล้ว
- คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมแบบบรรทัดคำสั่งที่ทำงานใน Google Cloud และโหลด bq ไว้ล่วงหน้า ดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ
คลิก "เปิดใช้งาน Cloud Shell" ที่มุมขวาบนจาก Cloud Console:
หากไม่ได้ตั้งค่าโปรเจ็กต์ไว้ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์
gcloud config set project <YOUR_PROJECT_ID>
- ไปที่คอนโซล BigQuery โดยตรงโดยป้อน URL ต่อไปนี้ในเบราว์เซอร์ https://console.cloud.google.com/bigquery
4. กำลังเตรียมข้อมูล
ในกรณีการใช้งานนี้ เราจะใช้เนื้อหาซอร์สโค้ดจากชุดข้อมูล github_repos ในชุดข้อมูลสาธารณะของ Google BigQuery หากต้องการใช้ฟีเจอร์นี้ ให้ค้นหา "github_repos" ในคอนโซล BigQuery แล้วกด Enter คลิกดาวข้างชุดข้อมูลที่แสดงเป็นผลการค้นหา จากนั้นคลิกช่อง "แสดงเฉพาะที่ติดดาว" ในการดูชุดข้อมูลนั้นจากชุดข้อมูลสาธารณะเท่านั้น
ขยายตารางในชุดข้อมูลเพื่อดูสคีมาและตัวอย่างข้อมูล เราจะใช้ sample_contents ซึ่งมีตัวอย่างเพียง (10%) ของข้อมูลทั้งหมดในตารางเนื้อหา ตัวอย่างข้อมูลมีดังนี้
5. การสร้างชุดข้อมูล BigQuery
ชุดข้อมูล BigQuery คือคอลเล็กชันของตาราง ตารางทั้งหมดในชุดข้อมูลจะได้รับการจัดเก็บไว้ในตำแหน่งข้อมูลเดียวกัน คุณยังแนบการควบคุมการเข้าถึงที่กำหนดเองเพื่อจำกัดการเข้าถึงชุดข้อมูลและตารางของชุดข้อมูลได้ด้วย
สร้างชุดข้อมูลในภูมิภาค "สหรัฐอเมริกา" (หรือภูมิภาคใดก็ได้ที่เรากำหนดไว้) ชื่อ bq_llm
ชุดข้อมูลนี้เป็นที่เก็บโมเดล ML ที่เราจะสร้างในขั้นตอนถัดไป ปกติแล้วเราจะจัดเก็บข้อมูลที่ใช้ในแอปพลิเคชัน ML ในตารางในชุดข้อมูลนี้ด้วยเช่นกัน แต่ในกรณีใช้งาน ข้อมูลอยู่ในชุดข้อมูลสาธารณะของ 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 หากยังไม่ได้ทำ) และจดรหัสบัญชีบริการจากรายละเอียดการกำหนดค่าการเชื่อมต่อไว้
- คลิกปุ่ม +เพิ่ม ในแผง BigQuery Explorer (ทางด้านซ้ายของคอนโซล BigQuery) แล้วคลิก "การเชื่อมต่อกับแหล่งข้อมูลภายนอก" ในแหล่งที่มายอดนิยมที่แสดงอยู่ในรายการ
- เลือกประเภทการเชื่อมต่อเป็น "ฟังก์ชัน BigLake และรีโมต" และระบุ "llm-conn" เป็นรหัสการเชื่อมต่อ
- เมื่อสร้างการเชื่อมต่อแล้ว ให้จดบันทึกบัญชีบริการที่สร้างจากรายละเอียดการกำหนดค่าการเชื่อมต่อ
7. ให้สิทธิ์
ในขั้นตอนนี้ เราจะให้สิทธิ์แก่บัญชีบริการเพื่อเข้าถึงบริการ Vertex AI
เปิด IAM และเพิ่มบัญชีบริการที่คุณคัดลอกหลังจากสร้างการเชื่อมต่อภายนอกเป็นผู้หลักและเลือก "ผู้ใช้ Vertex AI" บทบาท
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 ที่มีทั้งแอตทริบิวต์เนื้อหาและความปลอดภัย ก. เนื้อหาแสดงผลลัพธ์ข้อความที่สร้างขึ้น b. แอตทริบิวต์ความปลอดภัยจะแสดงตัวกรองเนื้อหาในตัวที่มีเกณฑ์แบบปรับได้ซึ่งเปิดใช้ใน Vertex AI Palm API เพื่อหลีกเลี่ยงการตอบสนองที่ไม่คาดคิดหรือคาดไม่ถึงจากโมเดลภาษาขนาดใหญ่ โดยการตอบกลับจะถูกบล็อกหากละเมิดเกณฑ์ความปลอดภัย
ML.GENERATE_TEXT คือโครงสร้างที่คุณใช้ใน BigQuery เพื่อเข้าถึง Vertex AI LLM เพื่อทำงานการสร้างข้อความ
CONCAT จะเพิ่มคำสั่ง PROMPT และบันทึกฐานข้อมูล
github_repos คือชื่อชุดข้อมูลและ sample_contents คือชื่อตารางที่เก็บข้อมูลที่เราจะใช้ในการออกแบบพรอมต์
Temperature คือพารามิเตอร์พรอมต์เพื่อควบคุมการสุ่มคำตอบ โดยยิ่งให้คำตอบน้อยก็จะยิ่งดีกว่าในแง่ของความเกี่ยวข้อง
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 ให้ไปที่หน้าจัดการทรัพยากร
- ในรายการโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการลบ แล้วคลิกลบ
- ในกล่องโต้ตอบ ให้พิมพ์รหัสโปรเจ็กต์ แล้วคลิกปิดเครื่องเพื่อลบโปรเจ็กต์
12. ขอแสดงความยินดี
ยินดีด้วย คุณได้ใช้ Vertex AI Text Generation LLM แบบเป็นโปรแกรมเพื่อวิเคราะห์ข้อความในข้อมูลโดยใช้เฉพาะการค้นหา SQL เท่านั้นเรียบร้อยแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับโมเดลที่พร้อมใช้งานได้ในเอกสารประกอบผลิตภัณฑ์ Vertex AI LLM