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 để thực hiện việc tóm tắt mã nguồn từ các kho lưu trữ trên GitHub và xác định ngôn ngữ lập trình trong kho lưu trữ, bằng cách sử dụng Mô hình ngôn ngữ lớn của 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ữ của GitHub, hiện chúng tôi có một bản chụp đầy đủ của hơn 2,8 triệu kho lưu trữ nguồn mở trên GitHub trong Tập dữ liệu công khai của Google BigQuery. Danh sách các dịch vụ đã 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 mối 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 chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud
- Đảm bảo bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không
- Đả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)
- 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 để biết các lệnh và cách sử dụng gcloud
Trong 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 bạn chưa đặt dự án, hãy dùng lệnh sau để đặt dự án:
gcloud config set project <YOUR_PROJECT_ID>
- Chuyển đến bảng điều khiển BigQuery ngay 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ính năng này, trong bảng điều khiển BigQuery, hãy tìm "github_repos" rồi nhấn phím Enter. Nhấp vào dấu sao bên cạnh tập dữ liệu xuất hiện trong kết quả tìm kiếm. Sau đó, nhấp vào lựa chọn "CHỈ HIỂN THỊ DỮ LIỆU ĐƯỢC GẮN DẤU SAO" để chỉ xem tập dữ liệu đó trong số 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. Bảng này chỉ chứa một mẫu (10%) dữ liệu đầy đủ trong bảng nội dung. Dưới đâ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. 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 ở khu vực "Hoa Kỳ" (hoặc bất kỳ khu vực nào mà bạn muốn) 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 ở 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 ML 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 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 mình trong 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 trong 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. Đang tạo kết nối bên ngoài
Tạo một Kết nối bên ngoài (Bật API kết nối BQ nếu bạn chưa thực hiện) và ghi lại mã nhận dạng Tài khoản dịch vụ trong phần thông tin chi tiết về cấu hình kết nối:
- Nhấp vào nút +THÊM trên ngăn BigQuery Explorer (ở bên trái của bảng điều khiển BigQuery) rồi nhấp vào "Kết nối với các nguồn dữ liệu bên ngoài" trong danh sách các nguồn phổ biến
- Chọn Loại kết nối là "BigLake và các hàm từ xa" rồi cung cấp "llm-conn" làm 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 Nguyên tắc và chọn vai trò "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 được lưu trữ trên 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');
Thao tác này sẽ 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 CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 API của Vertex AI làm 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 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 của mô hình tạo văn bản ở định dạng JSON, chứa cả nội dung và các thuộc tính an toàn: a. Nội dung biểu thị kết quả văn bản được tạo b. Thuộc tính an toàn là bộ lọc nội dung tích hợp có ngưỡng điều chỉnh được, đượ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 dùng trong BigQuery để truy cập vào LLM của Vertex AI nhằm thực hiện các tác vụ tạo văn bản
Hàm 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 lưu trữ dữ liệu mà chúng ta sẽ dùng trong thiết kế câu lệnh
Nhiệt độ là tham số của câu lệnh để kiểm soát tính ngẫu nhiên của câu trả lời – nhiệt độ càng thấp thì câu trả lời càng phù hợp
Max_output_tokens là số lượng từ bạn muốn có trong câu trả lờ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 bạn đặt giá trị này thành true, hệ thống sẽ trả về văn bản dễ hiểu dạng phẳng đượ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 của bạn cho các tài nguyên được 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 Google Cloud, hãy chuyển đến trang Quản lý tài nguyên
- Trong danh sách dự án, hãy chọn dự án bạn muốn xoá rồi nhấp vào Xoá
- Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào 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 LLM tạo văn bản Vertex AI theo phương thức lập trình để phân tích văn bản trên dữ liệu của mình chỉ bằng cách sử dụng các truy vấn SQL. Hãy xem tài liệu về sản phẩm LLM của Vertex AI để tìm hiểu thêm về các mô hình hiện có.