×
Community Blog Tối ưu hóa mô hình GenAI: Hướng dẫn tinh chỉnh và lượng tử hóa

Tối ưu hóa mô hình GenAI: Hướng dẫn tinh chỉnh và lượng tử hóa

Bài viết này mô tả cách tinh chỉnh và lượng tử hóa mô hình ngôn ngữ được đào tạo trước.

Tác giả: Farruh

1_jpeg

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.

Tầm quan trọng của việc tinh chỉnh và lượng tử hóa trong AI

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.

2_jpeg

Giá trị cho doanh nghiệp và cá nhâ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.

3_jpeg

Thiết lập tài khoản Hugging Face của bạ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:

  1. Truy cập Hugging Face.
  2. Nhấp vào Đăng ký để tạo tài khoản mới.
  3. Hoàn tất quy trình đăng ký.
  4. Xác minh email của bạn là xong!

4

Chuẩn bị môi trường

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ư pefttrl để 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

Chọn mô hình và tập dữ liệu

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"

Thông số tinh chỉnh

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
)

Lượng tử hóa với BitsAndBytes

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,
)

Tinh chỉnh và đào tạo mô hình

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)

Đánh giá mô hình của bạn

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 từng bước cho người đọc

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.

Kết luận

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.

0 0 0
Share on

Regional Content Hub

91 posts | 3 followers

You may also like

Comments

Regional Content Hub

91 posts | 3 followers

Related Products