Cài đặt môi trường cần thiết
Để làm việc với các mô hình ngôn ngữ từ thư viện Hugging Face, bạn cần cài đặt một số gói chính như sau:
pip install transformers datasets tokenizers
Tải mô hình và bộ tách từ xuống máy cục bộ
Sử dụng phương thức from_pretrained để tải mô hình và tokenizer về một thư mục cụ thể nhằm tái sử dụng mà không cần tải lại nhiều lần.
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "uer/gpt2-chinese-cluecorpussmall"
cache_directory = "./my_model_cache/uer/gpt2-chinese-cluecorpussmall"
# Tải và lưu mô hình
AutoModelForCausalLM.from_pretrained(model_name, cache_dir=cache_directory)
# Tải và lưu bộ tách từ
AutoTokenizer.from_pretrained(model_name, cache_dir=cache_directory)
print(f"Mô hình và tokenizer đã được lưu tại: {cache_directory}")
Sử dụng mô hình đã tải cục bộ để sinh văn bản
Sau khi có mô hình trong ổ cứng, bạn có thể nạp trực tiếp từ đường dẫn chứa file config.json, pytorch_model.bin và các thành phần khác.
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# Đường dẫn đến phiên bản đã tải (thường nằm trong thư mục snapshots)
model_path = r"D:/PycharmProjects/demo_13/TransFormers_test/my_model_cache/uer/gpt2-chinese-cluecorpussmall/models--uer--gpt2-chinese-cluecorpussmall/snapshots/c2c0249d8a2731f269414cc3b22dff021f8e07a3"
# Nạp mô hình và tokenizer
loaded_model = AutoModelForCausalLM.from_pretrained(model_path)
loaded_tokenizer = AutoTokenizer.from_pretrained(model_path)
# Tạo pipeline sinh văn bản, hỗ trợ chạy trên GPU nếu có
text_generator = pipeline(
task="text-generation",
model=loaded_model,
tokenizer=loaded_tokenizer,
device=0 # Sử dụng CUDA (device=0), đổi thành -1 nếu dùng CPU
)
# Tham số hóa quá trình sinh văn bản
results = text_generator(
"Xin chào, tôi là một mô hình ngôn ngữ,",
max_length=50,
num_return_sequences=1,
truncation=True,
temperature=0.7,
top_k=50,
top_p=0.9,
clean_up_tokenization_spaces=False
)
print(results)
Gọi mô hình trực tuyến để phân loại văn bản
Bạn cũng có thể kết nối trực tiếp tới Hugging Face Hub để sử dụng mô hình mà không cần tải về. Ví dụ dưới đây minh họa việc phân loại cảm xúc hoặc chủ đề của câu tiếng Trung.
from transformers import BertForSequenceClassification, BertTokenizer, pipeline
# Chỉ định tên mô hình trực tuyến
model_id = "bert-base-chinese"
# Nạp mô hình và tokenizer từ Internet
classifier_model = BertForSequenceClassification.from_pretrained(model_id)
classifier_tokenizer = BertTokenizer.from_pretrained(model_id)
# Tạo pipeline xử lý tác vụ phân loại
text_classifier = pipeline("text-classification", model=classifier_model, tokenizer=classifier_tokenizer)
# Dự đoán nhãn cho đoạn văn bản đầu vào
output_label = text_classifier("Xin chào, tôi là một mô hình ngôn ngữ")
print(output_label)
Sử dụng mô hình hỏi đáp trích xuất (Extractive QA)
Một ứng dụng phổ biến khác là hệ thống hỏi đáp, nơi mô hình tìm câu trả lời trong một đoạn văn bản (context) dựa trên câu hỏi (question).
from transformers import pipeline
# Khởi tạo pipeline QA với mô hình RoBERTa tiếng Trung
qa_pipeline = pipeline(
"question-answering",
model="uer/roberta-base-chinese-extractive-qa",
device=0 # Chạy trên GPU
)
# Đặt câu hỏi cùng với ngữ cảnh
context = """"Đấu chi lực, tam đoạn!"
Nhìn năm chữ sáng chói đến mức chói mắt trên tấm bia thử nghiệm ma thạch, thiếu niên mặt mày vô cảm, khóe miệng hiện lên nụ cười tự giễu... Năm tháng trước, danh hiệu thiên tài từng vang dội khắp thành Ô Đạm, giờ đây lại sa cơ lỡ vận đến thế này?
...
Người đã đánh mất hào quang thiên tài chính là Tiêu Viêm – người từng 4 tuổi luyện khí, 11 tuổi đột phá thành đấu giả, nhưng ba năm trước bỗng dưng tu vi giảm sút nghiêm trọng, bị mọi người chế giễu."
"""
result = qa_pipeline({
"question": "Ai là người đã đánh mất hào quang thiên tài?",
"context": context
})
print(result)