Thông tin về lớp học lập trình này
1. Giới thiệu
Lý do khiến việc tinh chỉnh quan trọng
Các mô hình cơ sở được huấn luyện cho các mục đích chung và đôi khi không thực hiện các tác vụ như bạn mong muốn. Điều này có thể là do các nhiệm vụ mà bạn muốn mô hình thực hiện là các nhiệm vụ chuyên biệt, khó dạy mô hình chỉ bằng cách sử dụng thiết kế lời nhắc. Trong những trường hợp này, bạn có thể sử dụng tính năng điều chỉnh mô hình để cải thiện hiệu suất của mô hình cho các tác vụ cụ thể. Việc điều chỉnh mô hình cũng có thể giúp tuân thủ các yêu cầu cụ thể về đầu ra khi hướng dẫn chưa đủ. Mô hình ngôn ngữ lớn (LLM) có thể chứa một lượng lớn thông tin và có thể thực hiện nhiều nhiệm vụ, nhưng chỉ xuất sắc khi được huấn luyện chuyên sâu. Tính năng tinh chỉnh có thể huấn luyện LLM, cho phép bạn điều chỉnh LLM được huấn luyện trước cho phù hợp với nhu cầu cụ thể của mình.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách tinh chỉnh bằng phương pháp điều chỉnh có giám sát cho mô hình LLM.
Tính năng điều chỉnh có giám sát giúp cải thiện hiệu suất của mô hình bằng cách dạy một kỹ năng mới. Dữ liệu chứa hàng trăm ví dụ được gắn nhãn được dùng để hướng dẫn mô hình bắt chước một hành vi hoặc nhiệm vụ mong muốn. Chúng ta sẽ cung cấp một tập dữ liệu được gắn nhãn cho văn bản đầu vào (câu lệnh) và văn bản đầu ra (phản hồi) để hướng dẫn mô hình cách tuỳ chỉnh phản hồi cho trường hợp sử dụng cụ thể của chúng ta.
Bạn có thể xem thêm thông tin về cách tuỳ chỉnh mô hình tại đây.
Sản phẩm bạn sẽ tạo ra
Trường hợp sử dụng: Tạo dòng tiêu đề cho bài viết tin tức
Giả sử bạn muốn tự động tạo dòng tiêu đề cho các bài báo. Khi sử dụng Vertex AI, bạn có thể tinh chỉnh LLM để tạo tiêu đề tóm tắt phù hợp theo một kiểu cụ thể và tuỳ chỉnh tiêu đề theo nguyên tắc của kênh tin tức.
Trong lớp học lập trình này, bạn sẽ thực hiện những việc sau:
- Sử dụng
BBC FULLTEXT DATA
(do Tập dữ liệu công khai BigQuerybigquery-public-data.bbc_news.fulltext
cung cấp). - Điều chỉnh LLM (
text-bison@002
) thành một mô hình điều chỉnh mới có tên là "bbc-news-summary-tuned
" và so sánh kết quả với phản hồi từ mô hình cơ sở. Bạn có thể tìm thấy tệp JSONL mẫu cho lớp học lập trình này trong kho lưu trữ. Bạn có thể tải tệp lên Bộ chứa Cloud Storage và thực hiện các bước tinh chỉnh sau: - Chuẩn bị dữ liệu: Bắt đầu với một tập dữ liệu gồm các bài báo và dòng tiêu đề tương ứng, chẳng hạn như tập dữ liệu BBC News được dùng trong mã ví dụ.
- Tinh chỉnh mô hình được huấn luyện trước: Chọn một mô hình cơ sở như "
text-bison@002
" và tinh chỉnh mô hình đó bằng dữ liệu tin tức bằng cách sử dụng SDK Vertex AI cho Python. - Đánh giá kết quả: So sánh hiệu suất của mô hình được tinh chỉnh với mô hình cơ sở để xem chất lượng tạo dòng tiêu đề có được cải thiện hay không.
- Triển khai và sử dụng mô hình: Cung cấp mô hình đã tinh chỉnh thông qua điểm cuối API và bắt đầu tự động tạo dòng tiêu đề cho các bài viết mới.
2. 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 trên Google Cloud.
- Đảm bảo 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 dự án hay không.
- Mở Sổ tay Colab rồi đăng nhập vào cùng một tài khoản với tài khoản Google Cloud đang hoạt động của bạn.
3. Tinh chỉnh mô hình ngôn ngữ lớn
Lớp học lập trình này sử dụng SDK Vertex AI cho Python để tinh chỉnh mô hình. Bạn cũng có thể tinh chỉnh bằng các tuỳ chọn khác – HTTP, lệnh CURL, SDK Java, Bảng điều khiển.
Bạn có thể tinh chỉnh và đánh giá mô hình của mình để tạo câu trả lời tuỳ chỉnh theo 5 bước. Bạn có thể tham khảo mã đầy đủ trong tệp llm_fine_tuning_supervised.ipynb từ kho lưu trữ.
4. Bước 1: Cài đặt và nhập phần phụ thuộc
!pip install google-cloud-aiplatform
!pip install --user datasets
!pip install --user google-cloud-pipeline-components
Làm theo các bước còn lại như trong tệp .ipynb trong kho lưu trữ. Hãy nhớ thay thế PROJECT_ID và BUCKET_NAME bằng thông tin xác thực của bạn.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import warnings
warnings.filterwarnings('ignore')
import vertexai
vertexai.init(project=PROJECT_ID, location=REGION)
import kfp
import sys
import uuid
import json
import pandas as pd
from google.auth import default
from datasets import load_dataset
from google.cloud import aiplatform
from vertexai.preview.language_models import TextGenerationModel, EvaluationTextSummarizationSpec
5. Bước 2: Chuẩn bị và tải dữ liệu huấn luyện
Thay thế YOUR_BUCKET bằng bộ chứa của bạn và tải tệp dữ liệu huấn luyện mẫu TRAIN.jsonl lên bộ chứa đó. Dữ liệu mẫu đã được cung cấp cho trường hợp sử dụng này trong đường liên kết được đề cập ở trên.
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/TRAIN.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
Bước này sẽ dẫn đến kết quả sau:
6. Bước 3: Tinh chỉnh mô hình ngôn ngữ lớn
Tại thời điểm này, bạn có thể điều chỉnh bất kỳ mô hình ngôn ngữ lớn nào (dựa trên khả năng hỗ trợ) . Tuy nhiên, trong đoạn mã này, chúng ta đang điều chỉnh mô hình được huấn luyện trước "text-bison@002" bằng khung dữ liệu có dữ liệu huấn luyện mà chúng ta đã tải ở bước trước.:
model_display_name = 'bbc-finetuned-model' # @param {type:"string"}
tuned_model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model.tune_model(
training_data=df,
train_steps=100,
tuning_job_location="europe-west4",
tuned_model_location="europe-west4",
)
Quá trình này sẽ mất vài giờ để hoàn tất. Bạn có thể theo dõi tiến trình tinh chỉnh bằng cách sử dụng đường liên kết công việc của quy trình trong kết quả.
7. Bước 4: Dự đoán bằng mô hình mới được tinh chỉnh
Sau khi công việc tinh chỉnh hoàn tất, bạn có thể dự đoán bằng mô hình mới. Cách dự đoán bằng mô hình mới được điều chỉnh:
response = tuned_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
Bạn sẽ thấy kết quả sau:
Để dự đoán bằng mô hình cơ sở (text-bison@002
) để so sánh, hãy chạy các lệnh sau:
base_model = TextGenerationModel.from_pretrained("text-bison@002")
response = base_model.predict("Summarize this text to generate a title: \n Ever noticed how plane seats appear to be getting smaller and smaller? With increasing numbers of people taking to the skies, some experts are questioning if having such packed out planes is putting passengers at risk. They say that the shrinking space on aeroplanes is not only uncomfortable it it's putting our health and safety in danger. More than squabbling over the arm rest, shrinking space on planes putting our health and safety in danger? This week, a U.S consumer advisory group set up by the Department of Transportation said at a public hearing that while the government is happy to set standards for animals flying on planes, it doesn't stipulate a minimum amount of space for humans.")
print(response.text)
Bạn sẽ thấy kết quả sau:
Mặc dù cả hai tiêu đề được tạo đều phù hợp, nhưng tiêu đề đầu tiên (được tạo bằng mô hình được tinh chỉnh) phù hợp hơn với kiểu tiêu đề được sử dụng trong tập dữ liệu có liên quan.
Tải mô hình đã tinh chỉnh
Có thể bạn sẽ dễ dàng tải một mô hình mà bạn vừa tinh chỉnh. Nhưng hãy nhớ rằng trong bước 3, hàm này được gọi trong phạm vi của chính mã, vì vậy, hàm này vẫn giữ lại mô hình đã điều chỉnh trong biến tuned_model. Nhưng nếu bạn muốn gọi một mô hình đã được điều chỉnh trước đây thì sao?
Để thực hiện việc này, bạn có thể gọi phương thức get_tuned_model() trên LLM bằng URL ĐIỂM CUỐI đầy đủ của mô hình được tinh chỉnh đã triển khai từ Vertex AI Model Registry. Xin lưu ý rằng trong trường hợp này, bạn sẽ nhập PROJECT_NUMBER và MODEL_NUMBER thay vì mã nhận dạng tương ứng.
tuned_model_1 = TextGenerationModel.get_tuned_model("projects/<<PROJECT_NUMBER>>/locations/europe-west4/models/<<MODEL_NUMBER>>")
print(tuned_model_1.predict("YOUR_PROMPT"))
8. Bước 5: Đánh giá mô hình mới được tinh chỉnh
Đánh giá là một khía cạnh quan trọng để đánh giá chất lượng và mức độ liên quan của câu trả lời được tạo. Phương pháp này bao gồm việc kiểm tra kết quả của một mô hình ngôn ngữ tạo sinh để xác định tính mạch lạc, độ chính xác và mức độ phù hợp của kết quả đó với câu lệnh được cung cấp. Việc đánh giá mô hình giúp xác định các khía cạnh cần cải thiện, tối ưu hoá hiệu suất của mô hình và đảm bảo rằng văn bản được tạo đáp ứng các tiêu chuẩn mong muốn về chất lượng và tính hữu ích. Vui lòng đọc thêm về vấn đề này trong tài liệu. Hiện tại, chúng ta sẽ xem cách lấy một số chỉ số đánh giá trên mô hình được tinh chỉnh và so sánh với mô hình cơ sở.
- Tải tập dữ liệu ĐÁNH GIÁ:
json_url = 'https://storage.googleapis.com/YOUR_BUCKET/EVALUATE.jsonl'
df = pd.read_json(json_url, lines=True)
print (df)
- Xác định thông số kỹ thuật đánh giá cho một nhiệm vụ tóm tắt văn bản trên mô hình được tinh chỉnh.
task_spec = EvaluationTextSummarizationSpec(
task_name = "summarization",
ground_truth_data=df
)
Bước này sẽ mất vài phút để hoàn tất. Bạn có thể theo dõi tiến trình bằng cách sử dụng đường liên kết công việc của quy trình trong kết quả. Sau khi hoàn tất, bạn sẽ thấy kết quả đánh giá sau:
Chỉ số rougeLSum
trong kết quả đánh giá chỉ định điểm số ROUGE-L cho bản tóm tắt. ROUGE-L là một chỉ số dựa trên khả năng gợi nhắc, đo lường mức độ trùng lặp giữa một bản tóm tắt và bản tóm tắt tham chiếu. Chỉ số này được tính bằng cách lấy trình tự con chung dài nhất (LCS) giữa hai bản tóm tắt rồi chia cho độ dài của bản tóm tắt đối chiếu.
Điểm rougeLSum
trong biểu thức được cung cấp là 0,36600753600753694, nghĩa là bản tóm tắt có 36,6% trùng lặp với bản tóm tắt tham chiếu.
Nếu chạy bước đánh giá trên mô hình cơ sở, bạn sẽ thấy điểm tóm tắt tương đối cao hơn cho mô hình được tinh chỉnh.
Bạn có thể tìm thấy kết quả đánh giá trong thư mục đầu ra trên Cloud Storage mà bạn đã chỉ định khi tạo công việc đánh giá. Tệp có tên là evaluation_metrics.json
. Đối với các mô hình đã điều chỉnh, bạn cũng có thể xem kết quả đánh giá trong bảng điều khiển Google Cloud trên trang Model Registry (Sổ đăng ký mô hình) của Vertex AI.
9. Điểm quan trọng cần lưu ý
- Hỗ trợ mô hình: Luôn kiểm tra tài liệu về mô hình để biết khả năng tương thích mới nhất.
- Phát triển nhanh chóng: Lĩnh vực LLM phát triển nhanh chóng. Một mô hình mới hơn, mạnh mẽ hơn có thể hoạt động hiệu quả hơn một mô hình được tinh chỉnh dựa trên cơ sở cũ. Tin vui là bạn có thể áp dụng các kỹ thuật tinh chỉnh này cho các mô hình mới hơn khi có chức năng này.
- LoRA: LoRA là một kỹ thuật giúp tinh chỉnh hiệu quả các LLM. Mô hình này thực hiện việc này bằng cách đưa các ma trận phân ly có thứ hạng thấp, có thể huấn luyện vào các lớp của mô hình đã huấn luyện trước hiện có. Hãy đọc thêm về vấn đề này tại đây. Thay vì cập nhật tất cả các tham số của một LLM lớn, LoRA sẽ học các ma trận nhỏ hơn được thêm vào hoặc nhân với ma trận trọng số của mô hình ban đầu. Điều này làm giảm đáng kể số lượng tham số bổ sung được đưa vào trong quá trình tinh chỉnh.
10. Dọn dẹp
Để tránh bị tính phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong lớp học lập trình này, hãy làm theo các bước sau:
- Trong Google Cloud Console, 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 mà bạn muốn xoá, rồi nhấp vào Xoá.
- Trong hộp thoại, hãy nhập mã dự án, sau đó nhấp vào Shut down (Tắt) để xoá dự án.
- Ngoài ra, bạn có thể chuyển đến Model Registry (Sổ đăng ký mô hình), chuyển đến thẻ triển khai và kiểm thử mô hình, sau đó huỷ triển khai điểm cuối và xoá mô hình đã điều chỉnh được triển khai.
11. Xin chúc mừng
Xin chúc mừng! Bạn đã sử dụng thành công Vertex AI để tinh chỉnh mô hình LLM. Điều chỉnh chi tiết là một kỹ thuật hiệu quả giúp bạn tuỳ chỉnh LLM cho miền và tác vụ của mình. Với Vertex AI, bạn có các công cụ và tài nguyên cần thiết để tinh chỉnh mô hình một cách hiệu quả.
Khám phá kho lưu trữ GitHub và thử nghiệm với mã mẫu để trải nghiệm việc điều chỉnh chi tiết và đánh giá. Hãy cân nhắc cách các LLM được tinh chỉnh có thể giải quyết các nhu cầu cụ thể của bạn, từ việc tạo nội dung tiếp thị được nhắm mục tiêu đến việc tóm tắt các tài liệu phức tạp hoặc dịch ngôn ngữ có sắc thái văn hoá. Dùng bộ công cụ và dịch vụ toàn diện do Vertex AI cung cấp để dễ dàng xây dựng, huấn luyện, đánh giá và triển khai các mô hình được tinh chỉnh.