1. Giới thiệu
Tại sao hoạt động tinh chỉnh lại 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 tác vụ như bạn mong muốn. Điều này có thể là do các nhiệm vụ 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ột mô hình nếu chỉ sử dụng thiết kế câu lệnh. Trong những trường hợp này, bạn có thể sử dụng tính năng tinh 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 đầu ra cụ thể khi hướng dẫn chưa đủ. Các 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 các mô hình này chỉ vượt trội hơn khi được đào tạo chuyên biệt. Hoạt động tinh chỉnh có thể huấn luyện một LLM (mô hình ngôn ngữ lớn) được huấn luyện trước, cho phép bạn điều chỉnh một LLM được huấn luyện trước cho phù hợp với các 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 tinh chỉnh có giám sát cho một mô hình LLM (mô hình ngôn ngữ lớn).
Tính năng điều chỉnh có giám sát 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 để dạy mô hình bắt chước một hành vi hoặc tác vụ mong muốn. Chúng tôi sẽ cung cấp một tập dữ liệu được gắn nhãn cho văn bản nhập (câu lệnh) và văn bản đầu ra (câu trả lời) để dạy mô hình này cách tuỳ chỉnh câu trả lờ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ề việc 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 tiêu đề cho tin bài
Giả sử bạn muốn tự động tạo tiêu đề cho các tin bài. Khi sử dụng Vertex AI, bạn có thể tinh chỉnh một LLM (mô hình ngôn ngữ lớn) để tạo tiêu đề tóm tắt phù hợp theo một phong cách 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 các nội dung 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). - Tinh chỉnh một LLM (
text-bison@002
) thành một mô hình được tinh chỉnh mới có tên là "bbc-news-summary-tuned
" rồi so sánh kết quả với phản hồi từ mô hình cơ sở. Bạn có thể xem 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 đây: - Chuẩn bị dữ liệu: Bắt đầu với một tập dữ liệu gồm các tin bài và tiêu đề tương ứng, chẳng hạn như tập dữ liệu của BBC News được dùng trong mã ví dụ.
- Điều chỉnh một mô hình đã huấn luyện trước: Chọn một mô hình cơ sở như "
text-bison@002
" và tinh chỉnh chúng với dữ liệu tin tức của bạn bằng Vertex AI SDK 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ở để thấy sự cải thiện về chất lượng tạo dòng tiêu đề.
- Triển khai và sử dụng mô hình: Cung cấp mô hình được tinh chỉnh cho mô hình thông qua điểm cuối API và tự động bắt đầu tạo 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.
- Nhớ bật tính năng thanh toán cho dự án Google Cloud của bạn. 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ở Colab Notebook rồi đăng nhập vào cùng một tài khoản Google Cloud đang hoạt động.
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 Vertex AI SDK dành cho Python để tinh chỉnh mô hình. Bạn cũng có thể tinh chỉnh bằng cách sử dụ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 để có các câu trả lời tuỳ chỉnh qua 5 bước. Bạn có thể tham khảo mã đầy đủ trong tệp llm_fine_tuning_supervised.ipynb trên 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ư minh hoạ trong tệp .ipynb trong kho lưu trữ. Đảm bảo bạn thay thế PROJECT_ID và BUCKET_NAME bằng thông tin đăng nhập của mình.
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 rồi tải tệp dữ liệu huấn luyện TRAIN.jsonl mẫu lên đó. Chúng tôi đã cung cấp dữ liệu mẫu cho trường hợp sử dụng này trong đường liên kết nêu 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:
6. Bước 3: Tinh chỉnh mô hình ngôn ngữ lớn
Bạn có thể điều chỉnh bất kỳ mô hình ngôn ngữ lớn nào vào thời điểm này (dựa trên khả năng hỗ trợ có sẵn) . Tuy nhiên, trong đoạn mã này, chúng ta sẽ điều chỉnh mô hình đã huấn luyện trước "text-bison@002" với 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",
)
Bước 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 quy trình trong kết quả.
7. Bước 4: Dự đoán bằng mô hình tinh chỉnh mới
Sau khi hoàn tất công việc tinh chỉnh, bạn sẽ có thể dự đoán bằng mô hình mới của mình. 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
) nhằm 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 có vẻ 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 đề cập.
Tải mô hình được tinh chỉnh
Việc tải một mô hình mà bạn vừa tinh chỉnh có thể sẽ dễ dàng hơn. Nhưng hãy nhớ ở bước 3, lệnh này được gọi trong phạm vi của chính mã để nó vẫn chứa mô hình đã được điều chỉnh trong biếnnhững_model. Nhưng nếu bạn muốn gọi ra 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 ENDPOINT đầy đủ của mô hình được tinh chỉnh và triển khai trên Vertex AI Model Registry. Lưu ý rằng trong trường hợp này, bạn sẽ nhập PROJECT_NUMBER và MODEL_NUMBER thay vì id tương ứng của chú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 tinh chỉnh mới
Đánh giá là một khía cạnh quan trọng để đánh giá chất lượng và mức độ phù hợp của câu trả lời được tạo. Quá trình này sẽ kiểm tra kết quả từ 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 câu lệnh đó với câu lệnh được đưa ra. 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à mức độ hữu ích. Đọc thêm về vấn đề này trong tài liệu này. Bây giờ, chúng ta sẽ xem cách nhận một số chỉ số đánh giá trên mô hình được tinh chỉnh rồi so sánh với mô hình cơ sở.
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ố đánh giá cho 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 quy trình trong kết quả. Sau khi hoàn tất, bạn sẽ thấy kết quả đánh giá như sau:
Chỉ số rougeLSum
trong kết quả đánh giá chỉ định điểm ROUGE-L cho bản tóm tắt. ROUGE-L là chỉ số dựa trên thu hồi, đo lường sự trùng lặp giữa bản tóm tắt và bản tóm tắt tham chiếu. Tỷ lệ này được tính bằng cách lấy chuỗi con chung dài nhất (LCS) giữa hai bản tóm tắt rồi chia chuỗi đó cho độ dài của tóm tắt tham chiếu.
Điểm rougeLSum
trong biểu thức đã cho là 0,36600753600753694, có nghĩa là bản tóm tắt có độ trùng lặp là 36,6% 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 rằng điểm tóm tắt cao hơn tương đối đối với mô hình được tinh chỉnh.
Bạn có thể xem kết quả đánh giá trong thư mục đầu ra của Cloud Storage mà bạn chỉ định khi tạo lệnh đánh giá. Tệp có tên là evaluation_metrics.json
. Đối với các mô hình đã được đ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 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 những kỹ thuật tinh chỉnh này cho các mô hình mới hơn khi tính năng này được cung cấp.
- LoRA: LoRA là một kỹ thuật giúp tinh chỉnh các mô hình ngôn ngữ lớn (LLM) một cách hiệu quả. Công cụ này thực hiện việc này bằng cách đưa các ma trận phân rã ở cấp thấp và có thể huấn luyện vào các lớp của mô hình đã được huấn luyện trước. Đọc thêm thông tin 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 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í vào tài khoản Google Cloud cho những tài nguyên 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 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 mà bạn muốn xoá, sau đó nhấp vào Delete (Xoá).
- Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.
- Ngoài ra, bạn có thể truy cập vào 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 đã được điều chỉnh đã 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. Tinh chỉnh là một kỹ thuật mạnh mẽ cho phép bạn tuỳ chỉnh các LLM theo miền và công việc 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á các kho lưu trữ GitHub và thử nghiệm với mã mẫu để trực tiếp trải nghiệm quy trình tinh chỉnh và đánh giá. Hãy cân nhắc cách các LLM được tinh chỉnh có thể đáp ứng 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á. Sử 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.