Tác giả: Farruh
Trí tuệ nhân tạo đã chuyển từ một thuật ngữ thông dụng thành một công cụ quan trọng trong cả ứng dụng cá nhân và doanh nghiệp. Khi lĩnh vực AI phát triển, nhu cầu về các mô hình hiệu quả hơn và dành riêng cho từng tác vụ cũng tăng theo. Đây chính là lúc khả năng tinh chỉnh và lượng tử hóa phát huy tác dụng, giúp chúng tôi tinh chỉnh các mô hình dựng sẵn cho phù hợp hơn với nhu cầu của mình và xử lý hiệu quả hơn. Dưới đây là hướng dẫn để giúp người mới bắt đầu thực hiện quy trình tinh chỉnh và lượng tử hóa mô hình ngôn ngữ bằng cách sử dụng Python và thư viện Transformers
của Hugging Face.
Tinh chỉnh cũng giống như mài giũa một bộ kỹ năng khái quát thành một kỹ năng chuyên biệt. Một mô hình ngôn ngữ được đào tạo trước có thể biết rất nhiều về nhiều chủ đề. Nhưng thông qua việc tinh chỉnh, mô hình này có thể trở thành chuyên gia trong một lĩnh vực cụ thể, chẳng hạn như biệt ngữ pháp lý hoặc thuật ngữ y tế.
Lượng tử hóa bổ sung cho quy trình này bằng cách giúp các mô hình lớn này tiết kiệm tài nguyên hơn, giảm dung lượng bộ nhớ và tăng tốc độ điện tính. Việc này đặc biệt có lợi khi triển khai các mô hình trên các thiết bị biên hoặc trong môi trường bị hạn chế về sức mạnh điện toán.
Các doanh nghiệp có thể tận dụng các mô hình lượng tử hóa và tinh chỉnh để tạo ra ứng dụng AI nâng cao vốn có vẻ không khả thi do hạn chế về tài nguyên. Đối với các cá nhân, những kỹ thuật này giúp chạy AI phức tạp trên phần cứng thông thường, giúp dễ thực hiện các dự án hoặc nghiên cứu cá nhân hơn.
Trước khi xử lý mã, bạn sẽ cần có quyền truy cập vào các mô hình và bộ dữ liệu AI. Hugging Face là điểm khởi đầu:
Trước tiên, bạn phải nhập các thư viện cần thiết. Bạn sẽ cần có thư viện torch
cho chức năng PyTorch và thư viện transformer
của Hugging Face cho kiến trúc mô hình và trọng số được đào tạo trước. Ngoài ra, bạn cần nhập các tài nguyên khác như tập dữ liệu
để tải và xử lý các tập dữ liệu, cũng như peft
và trl
để hỗ trợ lượng tử hóa và quy trình đào tạo hiệu quả.
import torch
from datasets import load_dataset
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
TrainingArguments,
pipeline,
logging,
)
from peft import LoraConfig, PeftModel
from trl import SFTTrainer
Tiếp theo, mã sẽ chỉ định mô hình và tập dữ liệu cần sử dụng, vốn rất quan trọng cho việc tinh chỉnh. Biến model_name
giữ mã định danh của mô hình được đào tạo trước mà bạn muốn tinh chỉnh và dataset_name
là mã định danh của tập dữ liệu mà bạn sẽ sử dụng để đào tạo.
model_name = "Qwen/Qwen-7B-Chat"
dataset_name = "mlabonne/guanaco-llama2-1k"
new_model = "Qwen-7B-Chat-SFT"
Các thông số để tinh chỉnh được đặt bằng cách sử dụngTrainingArguments
. Trong đó này bao gồm số lượng epoch, quy mô lô, tốc độ học, v.v. Đây là những yếu tố để xác định cách mô hình sẽ học trong quá trình tinh chỉnh.
training_arguments = TrainingArguments(
output_dir="./results",
num_train_epochs=1,
per_device_train_batch_size=1,
gradient_accumulation_steps=1,
learning_rate=2e-4,
weight_decay=0.001,
# ... other arguments
)
BitsAndBytesConfig
cấu hình mô hình để lượng tử hóa. Khi đặt load_in_4bit
thành True
, bạn sẽ cho phép mô hình sử dụng phiên bản lượng tử hóa 4 bit, giảm kích thước của mô hình và có khả năng tăng tốc độ.
bnb_config = BitsAndBytesConfig(
load_in_4bit=use_4bit,
bnb_4bit_quant_type=bnb_4bit_quant_type,
bnb_4bit_compute_dtype=compute_dtype,
bnb_4bit_use_double_quant=use_nested_quant,
)
Mô hình được tải với cấu hình đã chỉ định và tokenizer sẽ được chuẩn bị. Sau đó, SFTTrainer
được sử dụng để tinh chỉnh mô hình trên tập dữ liệu đã tải. Sau khi đào tạo, mô hình sẽ được lưu để sử dụng sau này.
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
# ... other configurations
)
trainer = SFTTrainer(
model=model,
train_dataset=dataset,
# ... other configurations
)
trainer.train()
trainer.model.save_pretrained(new_model)
Sau khi tinh chỉnh và lượng tử hóa mô hình, bạn có thể tạo văn bản dựa trên gợi ý để xem mô hình hoạt động như thế nào. Bạn có thể tạo văn bản bằng cách sử dụng hàm pipeline
từ transformer
.
pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])
Hướng dẫn này sẽ giới thiệu cho người đọc từng bước trong quy trình, từ việc thiết lập môi trường đến chạy mô hình lượng tử hóa và tinh chỉnh đầu tiên của mình. Mỗi bước được minh họa bằng một đoạn mã từ mã được cung cấp, giải thích mục đích của đoạn mã đó và hướng dẫn người đọc cách sửa đổi theo nhu cầu của mình.
Khi kết thúc hướng dẫn này, người đọc sẽ hiểu rõ về cách tinh chỉnh và lượng tử hóa mô hình ngôn ngữ được đào tạo trước. Kiến thức này mở ra một thế giới mới về khả năng ứng dụng AI, giúp các mô hình trở nên chuyên biệt và hiệu quả hơn.
Hãy nhớ rằng lĩnh vực AI không ngừng phát triển và việc luôn cập nhật các kỹ thuật mới nhất là chìa khóa để phát huy hết tiềm năng của AI. Vì vậy, hãy tìm hiểu, thử nghiệm và đừng ngại chia sẻ những thành tựu cũng như bài học của bạn với cộng đồng.
Hãy chuẩn bị để tinh chỉnh theo cách của bạn nhằm nắm vững về AI!
Chúc bạn lập trình vui vẻ!
Bài viết này được viết bằng tiếng Anh. Xem bài viết gốc tại đây.
การเพิ่มประสิทธิภาพโมเดล GenAI: แนวทางในการปรับแต่งอย่างละเอียดและควอนไทเซชัน
Pengoptimalan Model GenAI: Panduan Penyesuaian dan Kuantisasi
91 posts | 3 followers
FollowRegional Content Hub - May 13, 2024
Regional Content Hub - August 5, 2024
Alibaba Cloud Vietnam - September 15, 2023
Regional Content Hub - August 29, 2024
Nong The Hoang - March 4, 2024
Regional Content Hub - August 29, 2024
91 posts | 3 followers
FollowTop-performance foundation models from Alibaba Cloud
Learn MoreAccelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn MoreAccelerate innovation with generative AI to create new business success
Learn MoreA platform that provides enterprise-level data modeling services based on machine learning algorithms to quickly meet your needs for data-driven operations.
Learn MoreMore Posts by Regional Content Hub