1. Giới thiệu
Trong lớp học lập trình này, tôi đã liệt kê các bước để tóm tắt mã nguồn từ kho lưu trữ GitHub và xác định ngôn ngữ lập trình trong kho lưu trữ, bằng Mô hình ngôn ngữ lớn Vertex AI để tạo văn bản ( text-bison) dưới dạng một hàm từ xa được lưu trữ trong BigQuery. Nhờ Dự án lưu trữ GitHub, hiện chúng ta có ảnh chụp nhanh đầy đủ của hơn 2,8 triệu kho lưu trữ GitHub nguồn mở trong Tập dữ liệu công khai của Google BigQuery. Danh sách các dịch vụ được sử dụng là:
- BigQuery ML
- Vertex AI PaLM API
Sản phẩm bạn sẽ tạo ra
Bạn sẽ tạo
- Một tập dữ liệu BigQuery để chứa mô hình
- Một mô hình BigQuery lưu trữ Vertex AI PaLM API dưới dạng một hàm từ xa
- Một kết nối bên ngoài để thiết lập kết nối giữa BigQuery và Vertex AI
2. Yêu cầu
3. Trước khi bắt đầu
- Trong Google Cloud Console, trên trang bộ chọn dự án, hãy chọn hoặc tạo một dự án Google Cloud
- Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên đám mây. Tìm hiểu cách kiểm tra xem tính năng thanh toán đã được bật trên một dự án hay chưa
- Đảm bảo rằng bạn đã bật tất cả các API cần thiết (BigQuery API, Vertex AI API, BigQuery Connection API) enabled
- Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud và được tải sẵn bq. Tham khảo tài liệu về các lệnh và cách sử dụng gcloud
Trên Cloud Console, hãy nhấp vào Activate Cloud Shell (Kích hoạt Cloud Shell) ở góc trên cùng bên phải:

Nếu dự án của bạn chưa được thiết lập, hãy sử dụng lệnh sau để thiết lập:
gcloud config set project <YOUR_PROJECT_ID>
- Chuyển đến bảng điều khiển BigQuery trực tiếp bằng cách nhập URL sau vào trình duyệt: https://console.cloud.google.com/bigquery
4. Đang chuẩn bị dữ liệu
Trong trường hợp sử dụng này, chúng ta đang sử dụng nội dung mã nguồn từ tập dữ liệu github_repos trong Tập dữ liệu công khai của Google BigQuery. Để sử dụng tập dữ liệu này, trong bảng điều khiển BigQuery, hãy tìm kiếm "github_repos" rồi nhấn phím Enter. Nhấp vào biểu tượng dấu sao bên cạnh tập dữ liệu được liệt kê là kết quả tìm kiếm. Sau đó, nhấp vào tuỳ chọn "SHOW STARRED ONLY" (CHỈ HIỂN THỊ CÁC TẬP DỮ LIỆU ĐƯỢC ĐÁNH DẤU SAO) để chỉ xem tập dữ liệu đó trong các tập dữ liệu công khai.

Mở rộng các bảng trong tập dữ liệu để xem giản đồ và bản xem trước dữ liệu. Chúng ta sẽ sử dụng sample_contents, chỉ chứa một mẫu (10%) của toàn bộ dữ liệu trong bảng contents. Sau đây là bản xem trước dữ liệu:

5. Tạo tập dữ liệu BigQuery
Tập dữ liệu BigQuery là một tập hợp các bảng. Tất cả các bảng trong một tập dữ liệu đều được lưu trữ ở cùng một vị trí dữ liệu location. Bạn cũng có thể đính kèm các chế độ kiểm soát quyền truy cập tuỳ chỉnh để hạn chế quyền truy cập vào một tập dữ liệu và các bảng của tập dữ liệu đó.
Tạo một tập dữ liệu trong khu vực "US" (hoặc bất kỳ khu vực nào bạn thích) có tên là bq_llm

Tập dữ liệu này sẽ chứa mô hình học máy mà chúng ta sẽ tạo trong các bước sắp tới. Thông thường, chúng ta cũng sẽ lưu trữ dữ liệu mà chúng ta sử dụng trong ứng dụng học máy trong một bảng trong chính tập dữ liệu này. Tuy nhiên, trong trường hợp sử dụng của chúng ta, dữ liệu đã nằm trong một tập dữ liệu công khai của BigQuery. Chúng ta sẽ tham chiếu trực tiếp đến tập dữ liệu đó từ tập dữ liệu mới tạo khi cần. Nếu muốn thực hiện dự án này trên tập dữ liệu của riêng bạn nằm trong một tệp CSV (hoặc bất kỳ tệp nào khác), bạn có thể tải dữ liệu vào một tập dữ liệu BigQuery vào bảng bằng cách chạy lệnh bên dưới từ thiết bị đầu cuối 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. Tạo kết nối bên ngoài
Tạo một Kết nối bên ngoài (Bật BigQuery Connection API nếu chưa thực hiện) và ghi lại mã tài khoản dịch vụ từ thông tin chi tiết về cấu hình kết nối:
- Nhấp vào nút +ADD (+THÊM) trên ngăn BigQuery Explorer (Trình khám phá BigQuery) (ở bên trái bảng điều khiển BigQuery) rồi nhấp vào "Connection to external data sources" (Kết nối với các nguồn dữ liệu bên ngoài) trong các nguồn phổ biến được liệt kê
- Chọn Connection type (Loại kết nối) là "BigLake and remote functions" (BigLake và các hàm từ xa) rồi cung cấp "llm-conn" làm Connection ID (Mã kết nối)

- Sau khi tạo kết nối, hãy ghi lại Tài khoản dịch vụ được tạo từ thông tin chi tiết về cấu hình kết nối
7. Cấp quyền
Trong bước này, chúng ta sẽ cấp quyền cho Tài khoản dịch vụ để truy cập vào dịch vụ Vertex AI:
Mở IAM rồi thêm Tài khoản dịch vụ mà bạn đã sao chép sau khi tạo kết nối bên ngoài làm Chủ thể và chọn Vai trò "Vertex AI User" (Người dùng Vertex AI)

8. Tạo mô hình học máy từ xa
Tạo mô hình từ xa đại diện cho một mô hình ngôn ngữ lớn Vertex AI được lưu trữ:
CREATE OR REPLACE MODEL bq_llm.llm_model
REMOTE WITH CONNECTION `us.llm-conn`
OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');
Mô hình này tạo một mô hình có tên là llm_model trong tập dữ liệu bq_llm, tận dụng API CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 của Vertex AI làm một hàm từ xa. Quá trình này sẽ mất vài giây để hoàn tất.
9. Tạo văn bản bằng mô hình học máy
Sau khi tạo mô hình, hãy sử dụng mô hình đó để tạo, tóm tắt hoặc phân loại văn bản.
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));
**Giải thích:
ml_generate_text_result** là phản hồi từ mô hình tạo văn bản ở định dạng JSON, chứa cả nội dung và thuộc tính an toàn: a. Nội dung đại diện cho kết quả văn bản được tạo b. Thuộc tính an toàn đại diện cho bộ lọc nội dung tích hợp có ngưỡng có thể điều chỉnh được bật trong Vertex AI Palm API để tránh mọi phản hồi không mong muốn hoặc không lường trước được từ mô hình ngôn ngữ lớn – phản hồi sẽ bị chặn nếu vi phạm ngưỡng an toàn
ML.GENERATE_TEXT là cấu trúc mà bạn sử dụng trong BigQuery để truy cập vào Vertex AI LLM (mô hình ngôn ngữ lớn) nhằm thực hiện các tác vụ tạo văn bản
CONCAT nối câu lệnh PROMPT và bản ghi cơ sở dữ liệu
github_repos là tên tập dữ liệu và sample_contents là tên của bảng chứa dữ liệu mà chúng ta sẽ sử dụng trong thiết kế câu lệnh
Temperature là tham số câu lệnh để kiểm soát tính ngẫu nhiên của phản hồi – càng ít càng tốt về mức độ liên quan
Max_output_tokens là số lượng từ bạn muốn trong phản hồi
Phản hồi truy vấn có dạng như sau:

10. Làm phẳng kết quả truy vấn
Hãy làm phẳng kết quả để chúng ta không phải giải mã JSON một cách rõ ràng trong truy vấn:
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));
**Giải thích:
Flatten_json_output** đại diện cho giá trị boolean. Nếu được đặt thành true, giá trị này sẽ trả về một văn bản dễ hiểu được trích xuất từ phản hồi JSON.
Phản hồi truy vấn có dạng như sau:

11. Dọn dẹp
Để tránh bị tính phí vào tài khoản Google Cloud cho các tài nguyên được sử dụng trong bài đăng này, hãy làm theo các bước sau:
- Trong bảng điều khiển Cloud, hãy chuyển đến trang Manage resources
- Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá, rồi nhấp vào Delete (Xoá)
- Trong hộp thoại, hãy nhập mã dự án, rồi nhấp vào Shut down (Tắt) để xoá dự án
12. Xin chúc mừng
Xin chúc mừng! Bạn đã sử dụng thành công một chương trình Vertex AI Text Generation LLM theo phương thức lập trình để thực hiện phân tích văn bản trên dữ liệu của bạn chỉ bằng các truy vấn SQL. Hãy xem tài liệu về sản phẩm Vertex AI LLM để tìm hiểu thêm về các mô hình hiện có.