Mô hình ngôn ngữ lớn (LLM) chỉ dành cho SQL với công nghệ học máy BigQuery sử dụng Vertex AI PaLM API

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 trong kho lưu trữ GitHub và việc xác định ngôn ngữ lập trình trong repo, sử dụng Mô hình ngôn ngữ lớn Vertex AI để tạo văn bản ( text-bison) làm hàm từ xa được lưu trữ trong BigQuery. Nhờ có dự án Archive Project (Dự án lưu trữ) GitHub mà chúng tôi hiện đã có thông tin tổng quan nhanh về hơn 2, 8 triệu kho lưu trữ nguồn mở GitHub trong Google BigQuery Public Datasets. Danh sách các dịch vụ được sử dụng là:

  1. BigQuery ML
  2. Vertex AI PaLM API

Sản phẩm bạn sẽ tạo ra

Bạn sẽ tạo

  • Tập dữ liệu BigQuery để chứa mô hình
  • Mô hình BigQuery lưu trữ Vertex AI PaLM API dưới dạng hàm từ xa
  • 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

  • Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
  • Một dự án trên Google Cloud đã bật tính năng thanh toán

3. Trước khi bắt đầu

  1. Trong Google Cloud Console, trên trang bộ chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Google 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
  3. Đảm bảo tất cả các API cần thiết (API BigQuery, Vertex AI API, BigQuery Connection API) đều được bật
  4. Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud được tải sẵn bằng bq. Tham khảo tài liệu về các lệnh gcloud và cách sử dụng

Trong Bảng điều khiển Cloud, hãy nhấp vào Kích hoạt Cloud Shell ở góc trên cùng bên phải:

51622c00acec2fa.png.

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 dự án:

gcloud config set project <YOUR_PROJECT_ID>
  1. Chuyển trực tiếp đến bảng điều khiển BigQuery bằng cách nhập URL sau vào trình duyệt của bạn: 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 tôi đ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 Google BigQuery. Để sử dụng URL này, trong bảng điều khiển BigQuery, hãy tìm kiếm "github_repos" và nhấn Enter. Nhấp vào dấu sao bên cạnh tập dữ liệu được liệt kê dưới dạng kết quả tìm kiếm. Sau đó nhấp vào "HIỂN THỊ CÓ GẮN DẤU SAO" để chỉ xem tập dữ liệu từ các tập dữ liệu công khai.

dc6bf1e2fa6bba8a.png

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ẫu (10%) của toàn bộ dữ liệu trong bảng nội dung. Dưới đây là bản xem trước dữ liệu:

e021c689c56abf22.png

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ả bảng trong một tập dữ liệu được lưu trữ tại 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 để giới hạn quyền truy cập vào một tập dữ liệu và các bảng trong tập dữ liệu đó.

Tạo một tập dữ liệu trong khu vực "Hoa Kỳ" (hoặc bất kỳ khu vực ưu tiên nào của chúng tôi) có tên là bq_llm

c67e9f929629739a.png

Tập dữ liệu này sẽ chứa mô hình học máy mà chúng tôi sẽ tạo trong các bước tiếp theo. Thông thường, chúng tôi cũng sẽ lưu trữ dữ liệu mà chúng tôi sử dụng trong ứng dụng học máy vào 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, dữ liệu đã có sẵn trong tập dữ liệu công khai BigQuery, chúng tôi sẽ tham chiếu trực tiếp dữ liệu đó từ tập dữ liệu mới tạo theo yêu cầu. 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 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 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. Đang tạo kết nối bên ngoài

Tạo Kết nối bên ngoài (Bật API kết nối BQ nếu chưa thực hiện) và ghi lại mã Tài khoản dịch vụ trong phần chi tiết cấu hình kết nối:

  1. Nhấp vào nút +THÊM trên ngăn BigQuery Explorer (ở bên trái bảng điều khiển BigQuery), rồi nhấp vào "Kết nối với nguồn dữ liệu bên ngoài" trong danh sách các nguồn phổ biến
  2. Chọn Loại kết nối là "BigLake và các chức năng từ xa" và cung cấp "llm-conn" làm Mã kết nối

6b75042881eaec5f.png.

  1. 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

Ở 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 Tài khoản chính và chọn "Người dùng Vertex AI" Vai trò

ff8e1d730879f972.png

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

Công cụ này tạo một mô hình có tên llm_model trong tập dữ liệu bq_llm. Mô hình này sử dụng API CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 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 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ả thuộc tính nội dung và 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 thể hiện bộ lọc nội dung tích hợp sẵn. Có ngưỡng điều chỉnh được bật trong Vertex AI Palm API để tránh mọi phản hồi ngoài ý muốn hoặc ngoài dự kiến của 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 mô hình ngôn ngữ lớn (LLM) của Vertex AI nhằm thực hiện các công việc tạo văn bản

Hàm CONCAT sẽ thêm câu lệnh PROMPT và bản ghi cơ sở dữ liệu

github_repos là tên tập dữ liệu, còn 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

Nhiệt độ là thông số nhắc để kiểm soát mức độ ngẫu nhiên của câu trả lời – càng thấp thì càng tốt về mức độ liên quan

Max_output_tokens là số từ bạn muốn dùng để phản hồi

Phản hồi truy vấn sẽ có dạng như sau:

1156f6eecb548cd5.pngS

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 boolean mà nếu đặt true sẽ trả về một văn bản phẳng dễ hiểu được trích xuất từ phản hồi JSON.

Phản hồi truy vấn sẽ có dạng như sau:

3b662ef7d3ba9263.png.

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 sử dụng trong bài đăng này, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Quản lý tài nguyên
  2. Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá, rồi nhấp vào Xoá
  3. Trong hộp thoại, nhập ID dự án, sau đó 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 mô hình ngôn ngữ lớn (LLM) dùng để tạo văn bản Vertex AI theo phương thức lập trình để chỉ phân tích văn bản trên dữ liệu bằng các truy vấn SQL. Hãy xem tài liệu về sản phẩm mô hình ngôn ngữ lớn (LLM) trong Vertex AI để tìm hiểu thêm về các mô hình có sẵn.