Khóa học
Gần đây, lĩnh vực mô hình ngôn ngữ lớn (LLM) thay đổi rất nhanh. Các LLM mới được thiết kế nhỏ gọn và thông minh hơn, giúp chi phí thấp hơn và dễ sử dụng hơn so với các mô hình lớn.
Với việc ra mắt Llama 3.2, chúng ta có thể sử dụng các mô hình nhỏ hơn như biến thể 1B và 3B. Dù các mô hình nhỏ này có thể không đạt độ chính xác như mô hình lớn trong các nhiệm vụ tổng quát, chúng có thể được tinh chỉnh để đạt hiệu năng xuất sắc ở các lĩnh vực cụ thể, chẳng hạn phân loại cảm xúc trong tương tác hỗ trợ khách hàng. Nhờ đó, chúng có thể thay thế các mô hình truyền thống trong những miền này.
Trong hướng dẫn này, chúng ta sẽ khám phá khả năng của các mô hình vision và lightweight của Llama 3.2. Bạn sẽ học cách truy cập mô hình Llama 3.2 3B, tinh chỉnh nó trên bộ dữ liệu hỗ trợ khách hàng, sau đó gộp và xuất lên Hugging Face Hub. Cuối cùng, chúng ta sẽ chuyển đổi mô hình sang định dạng GGUF và sử dụng cục bộ với ứng dụng Jan.
Nếu bạn mới bắt đầu với AI, rất nên học AI Fundamentals để nắm các kiến thức cơ bản về ChatGPT, LLM, generative AI, và hơn thế nữa.

Hình: Tác giả
Giới thiệu Llama 3.2
Dòng mô hình nguồn mở Llama 3.2 có hai biến thể: lightweight và vision. Mô hình vision vượt trội về suy luận hình ảnh và kết nối thị giác với ngôn ngữ, trong khi mô hình lightweight giỏi tạo văn bản đa ngôn ngữ và gọi công cụ trên thiết bị biên.
Mô hình lightweight
Mô hình lightweight có hai biến thể nhỏ: 1B và 3B. Các mô hình này phù hợp cho tạo văn bản đa ngôn ngữ và tác vụ gọi công cụ. Chúng nhỏ gọn, nghĩa là có thể chạy ngay trên thiết bị để dữ liệu không rời khỏi máy và tạo văn bản tốc độ cao với chi phí tính toán thấp.
Để tạo các mô hình lightweight hiệu quả, Llama 3.2 sử dụng kỹ thuật tỉa (pruning) và chưng cất tri thức (knowledge distillation). Pruning giảm kích thước mô hình mà vẫn giữ hiệu năng, còn distillation dùng mạng lớn truyền tri thức cho mạng nhỏ, tăng cường hiệu suất của chúng.
Mô hình 3B vượt trội so với Gemma 2 (2.6B) và Phi 3.5-mini ở các nhiệm vụ như tuân thủ hướng dẫn, tóm tắt, viết lại prompt, và sử dụng công cụ.

Nguồn: Llama 3.2: Cách mạng hóa edge AI và thị giác với các mô hình mở, tùy biến
Mô hình vision
Mô hình vision có hai biến thể: 11B và 90B. Chúng được thiết kế hỗ trợ suy luận hình ảnh. Cả 11B và 90B đều có thể hiểu và diễn giải tài liệu, biểu đồ, đồ thị và thực hiện các nhiệm vụ như mô tả ảnh và neo ngữ nghĩa thị giác (visual grounding). Năng lực vision tiên tiến này có được nhờ tích hợp bộ mã hóa ảnh tiền huấn luyện với mô hình ngôn ngữ thông qua trọng số adapter gồm các lớp cross-attention.
So với Claude 3 Haiku và GPT-4o mini, các mô hình vision Llama 3.2 nổi trội ở nhận dạng hình ảnh và nhiều tác vụ hiểu biết thị giác, trở thành công cụ vững vàng cho các ứng dụng AI đa phương thức.

Nguồn: Llama 3.2: Cách mạng hóa edge AI và thị giác với các mô hình mở, tùy biến
Bạn có thể tìm hiểu thêm về các trường hợp sử dụng, điểm chuẩn, Llama Guard 3, và kiến trúc mô hình Llama 3.2 trong blog mới nhất của chúng tôi, Hướng dẫn Llama 3.2: Cách hoạt động, Trường hợp sử dụng & hơn thế nữa.
Truy cập mô hình Lightweight Llama 3.2 trên Kaggle
Dù Llama 3.2 là mô hình miễn phí và nguồn mở, bạn vẫn cần chấp nhận điều khoản và điền biểu mẫu trên website.
Để truy cập mô hình Llama 3.2 mới nhất trên nền tảng Kaggle:
- Vào trang llama.com và điền biểu mẫu thông tin của bạn. Chọn cả mô hình lightweight và vision.

Nguồn: Download Llama
- Đi tới trang mô hình Meta | Llama 3.2 và nhấn nút “Submit Form”.

Nguồn: Meta | Llama 3.2 | Kaggle
- Chấp nhận tất cả điều khoản và nhấn nút “Submit”.

Nguồn: Meta | Llama 3.2 | Kaggle
- Chờ vài phút cho đến khi bạn thấy tùy chọn tải xuống hoặc tạo notebook mới. Chọn thẻ Transformers và biến thể mô hình, rồi nhấn “+ New Notebook”.

- Notebook Kaggle sẽ khởi chạy với mô hình Llama mới nhất. Để chạy được, bạn chỉ cần đổi bộ tăng tốc sang “GPU T4 x2”.

- Cập nhật các gói Python Transformers và Accelerate.
%%capture
%pip install -U transformers accelerate
- Tải tokenizer và mô hình bằng gói Transformers. Thay vì cung cấp liên kết kho mô hình trên Hugging Face, chúng ta chỉ định thư mục cục bộ chứa mô hình.
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, TextStreamer
import torch
base_model = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"
tokenizer = AutoTokenizer.from_pretrained(base_model)
model = AutoModelForCausalLM.from_pretrained(
base_model,
return_dict=True,
low_cpu_mem_usage=True,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True,
)
- Đặt
pad_token_idđể tránh nhận cảnh báo.
if tokenizer.pad_token_id is None:
tokenizer.pad_token_id = tokenizer.eos_token_id
if model.config.pad_token_id is None:
model.config.pad_token_id = model.config.eos_token_id
- Tạo pipeline sinh văn bản với mô hình và tokenizer.
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.float16,
device_map="auto",
)
- Chạy pipeline với prompt tùy chỉnh. Ở đây, chúng ta hỏi về Vincent van Gogh.
messages = [{"role": "user", "content": "Who is Vincent van Gogh?"}]
prompt = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
outputs = pipe(prompt, max_new_tokens=120, do_sample=True)
print(outputs[0]["generated_text"])
Câu trả lời khá chính xác.

- Hãy cung cấp hướng dẫn hệ thống để xem mô hình có hiểu và làm theo prompt phức tạp không. Chúng ta sẽ hiển thị kết quả dạng HTML bằng cách ghép mã Markdown.
from IPython.display import Markdown, display
messages = [
{
"role": "system",
"content": "You are a skilled Python developer specializing in database management and optimization.",
},
{
"role": "user",
"content": "I'm experiencing a sorting issue in my database. Could you please provide Python code to help resolve this problem?",
},
]
prompt = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
outputs = pipe(prompt, max_new_tokens=512, do_sample=True)
display(
Markdown(
outputs[0]["generated_text"].split(
"<|start_header_id|>assistant<|end_header_id|>"
)[1]
)
)
Kết quả rất chính xác. Mô hình hoạt động khá tốt dù chỉ có 3 tỷ tham số.

Nếu bạn gặp khó khăn khi truy cập mô hình lightweight Llama 3.2, vui lòng tham khảo notebook Accessing the Llama 3.2 Lightweight Models.
Truy cập mô hình Vision Llama 3.2 trên Kaggle
Truy cập mô hình Vision khá đơn giản, và bạn không cần lo về bộ nhớ GPU vì trong hướng dẫn này chúng ta sẽ dùng nhiều GPU.
- Gửi biểu mẫu trên trang mô hình Meta | Llama 3.2 Vision. Chấp nhận tất cả điều khoản và nhấn “Submit”.

Nguồn: Meta | Llama 3.2 Vision | Kaggle
- Cuộn xuống, chọn thẻ Transformer và biến thể mô hình vision, rồi nhấn “+ New Notebook”.

Nguồn: Meta | Llama 3.2 Vision | Kaggle
- Đảm bảo bạn dùng “GPU T4 x2” làm bộ tăng tốc.
- Cập nhật các gói Python Transformers và Accelerate.
%%capture
%pip install -U transformers accelerate
- Tải bộ xử lý ảnh và mô hình vision Llama 3.2.
import torch
from transformers import MllamaForConditionalGeneration, AutoProcessor
base_model = "/kaggle/input/llama-3.2-vision/transformers/11b-vision-instruct/1"
processor = AutoProcessor.from_pretrained(base_model)
model = MllamaForConditionalGeneration.from_pretrained(
base_model,
low_cpu_mem_usage=True,
torch_dtype=torch.bfloat16,
device_map="auto",
)
Như bạn thấy, mô hình dùng gần 25 GB bộ nhớ GPU. Điều này không thể chạy trên laptop hoặc bản miễn phí của Google Colab.

- Tải ảnh. Chúng ta dùng ảnh minh họa nổi bật của hướng dẫn: OpenAI o1-preview Tutorial: Building a Machine Learning Project.
- Viết thông điệp và chuyển thành prompt bằng mẫu chat. Viết thông điệp và chuyển thành prompt bằng mẫu chat.
- Xử lý cả ảnh và văn bản rồi cung cấp cho mô hình để tạo phản hồi.
import requests
from PIL import Image
url = "https://media.datacamp.com/cms/google/ad_4nxcz-j3ir2begccslzay07rqfj5ttakp2emttn0x6nkygls5ywl0unospj2s0-mrwpdtmqjl1fagh6pvkkjekqey_kwzl6qnodf143yt66znq0epflvx6clfoqw41oeoymhpz6qrlb5ajer4aeniogbmtwtd.png"
image = Image.open(requests.get(url, stream=True).raw)
messages = [
{"role": "user", "content": [
{"type": "image"},
{"type": "text", "text": "Describe the tutorial feature image."}
]}
]
input_text = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(image, input_text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=120)
print(processor.decode(output[0]))
Kết quả là mô tả chi tiết về hình ảnh. Khá chính xác.

Nếu gặp vấn đề khi chạy đoạn mã trên, hãy tham khảo notebook Accessing the Llama 3.2 Vision Models trên Kaggle.
Tinh chỉnh Llama 3.2 3B Instruct
Trong phần này, chúng ta sẽ học cách tinh chỉnh mô hình Llama 3.2 3B Instruct bằng thư viện Transformers trên bộ dữ liệu hỗ trợ khách hàng. Chúng ta sẽ dùng Kaggle để truy cập GPU miễn phí và có RAM cao hơn Colab.
1. Thiết lập
Mở notebook mới trên Kaggle và thiết lập biến môi trường. Chúng ta sẽ dùng API của Hugging Face để lưu mô hình và Weights & Biases để theo dõi hiệu năng.

Cài đặt và cập nhật tất cả gói Python cần thiết.
%%capture
%pip install -U transformers
%pip install -U datasets
%pip install -U accelerate
%pip install -U peft
%pip install -U trl
%pip install -U bitsandbytes
%pip install -U wandb
Tải các gói Python và hàm sẽ dùng xuyên suốt quá trình tinh chỉnh và đánh giá.
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
BitsAndBytesConfig,
HfArgumentParser,
TrainingArguments,
pipeline,
logging,
)
from peft import (
LoraConfig,
PeftModel,
prepare_model_for_kbit_training,
get_peft_model,
)
import os, torch, wandb
from datasets import load_dataset
from trl import SFTTrainer, setup_chat_format
Đăng nhập Hugging Face CLI bằng API key.
from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)
Đăng nhập Weights & Biases bằng API key và khởi tạo dự án mới.
wb_token = user_secrets.get_secret("wandb")
wandb.login(key=wb_token)
run = wandb.init(
project='Fine-tune Llama 3.2 on Customer Support Dataset',
job_type="training",
anonymous="allow"
)
Đặt biến cho mô hình gốc, bộ dữ liệu và tên mô hình mới. Chúng ta sẽ dùng ở nhiều nơi trong dự án nên đặt ngay từ đầu để tránh nhầm lẫn.
base_model = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"
new_model = "llama-3.2-3b-it-Ecommerce-ChatBot"
dataset_name = "bitext/Bitext-customer-support-llm-chatbot-training-dataset"
2. Tải mô hình và tokenizer
Đặt kiểu dữ liệu và cơ chế attention.
# Set torch dtype and attention implementation
if torch.cuda.get_device_capability()[0] >= 8:
!pip install -qqq flash-attn
torch_dtype = torch.bfloat16
attn_implementation = "flash_attention_2"
else:
torch_dtype = torch.float16
attn_implementation = "eager"
Tải mô hình và tokenizer bằng cách cung cấp thư mục mô hình cục bộ. Dù mô hình nhỏ, tải toàn bộ và tinh chỉnh sẽ tốn thời gian. Thay vào đó, chúng ta sẽ tải mô hình ở mức lượng tử hóa 4-bit.
# QLoRA config
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch_dtype,
bnb_4bit_use_double_quant=True,
)
# Load model
model = AutoModelForCausalLM.from_pretrained(
base_model,
quantization_config=bnb_config,
device_map="auto",
attn_implementation=attn_implementation
)
# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
3. Tải và xử lý bộ dữ liệu
Chúng ta sẽ tải bộ dữ liệu Bitext-customer-support-llm-chatbot từ Hugging Face Hub. Đây là bộ dữ liệu tổng hợp lai sẽ dùng để tạo chatbot hỗ trợ khách hàng tùy chỉnh.
Chúng ta sẽ tải, xáo trộn và chọn chỉ 1000 mẫu. Chúng ta tinh chỉnh trên tập nhỏ để giảm thời gian huấn luyện, nhưng bạn luôn có thể chọn toàn bộ tập.
Tiếp theo, chúng ta tạo cột "text" bằng hướng dẫn hệ thống, truy vấn người dùng và phản hồi trợ lý. Sau đó chuyển phản hồi JSON sang định dạng chat.
#Importing the dataset
dataset = load_dataset(dataset_name, split="train")
dataset = dataset.shuffle(seed=65).select(range(1000)) # Only use 1000 samples for quick demo
instruction = """You are a top-rated customer service agent named John.
Be polite to customers and answer all their questions.
"""
def format_chat_template(row):
row_json = [{"role": "system", "content": instruction },
{"role": "user", "content": row["instruction"]},
{"role": "assistant", "content": row["response"]}]
row["text"] = tokenizer.apply_chat_template(row_json, tokenize=False)
return row
dataset = dataset.map(
format_chat_template,
num_proc= 4,
)
Như ta thấy, chúng ta đã kết hợp truy vấn khách hàng và phản hồi trợ lý theo định dạng chat.
dataset['text'][3]

4. Thiết lập mô hình
Trích xuất tên module tuyến tính từ mô hình.
import bitsandbytes as bnb
def find_all_linear_names(model):
cls = bnb.nn.Linear4bit
lora_module_names = set()
for name, module in model.named_modules():
if isinstance(module, cls):
names = name.split('.')
lora_module_names.add(names[0] if len(names) == 1 else names[-1])
if 'lm_head' in lora_module_names: # needed for 16 bit
lora_module_names.remove('lm_head')
return list(lora_module_names)
modules = find_all_linear_names(model)
Dùng tên module tuyến tính để tạo bộ tiếp hợp LoRA. Chúng ta chỉ tinh chỉnh bộ tiếp hợp LoRA và giữ nguyên phần còn lại của mô hình để tiết kiệm bộ nhớ và rút ngắn thời gian huấn luyện.
# LoRA config
peft_config = LoraConfig(
r=16,
lora_alpha=32,
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
target_modules=modules
)
model, tokenizer = setup_chat_format(model, tokenizer)
model = get_peft_model(model, peft_config)
Chúng ta cấu hình siêu tham số để chạy trong môi trường Kaggle. Bạn có thể hiểu từng siêu tham số bằng cách tham khảo hướng dẫn Tinh chỉnh Llama 2 và thay đổi để tối ưu việc huấn luyện trên hệ thống của bạn.
#Hyperparamter
training_arguments = TrainingArguments(
output_dir=new_model,
per_device_train_batch_size=1,
per_device_eval_batch_size=1,
gradient_accumulation_steps=2,
optim="paged_adamw_32bit",
num_train_epochs=1,
eval_strategy="steps",
eval_steps=0.2,
logging_steps=1,
warmup_steps=10,
logging_strategy="steps",
learning_rate=2e-4,
fp16=False,
bf16=False,
group_by_length=True,
report_to="wandb"
)
Bây giờ, chúng ta thiết lập bộ huấn luyện SFT (giám sát) và cung cấp tập huấn luyện, tập đánh giá, cấu hình LoRA, tham số huấn luyện, tokenizer và mô hình.
# Setting sft parameters
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
eval_dataset=dataset["test"],
peft_config=peft_config,
max_seq_length= 512,
dataset_text_field="text",
tokenizer=tokenizer,
args=training_arguments,
packing= False,
)
5. Huấn luyện mô hình
Bắt đầu quá trình huấn luyện và theo dõi chỉ số mất mát huấn luyện và xác thực.
trainer.train()
Độ mất mát huấn luyện giảm dần. Đây là dấu hiệu tốt.

Lịch sử chạy chi tiết được tạo khi chúng ta kết thúc phiên Weights & Biases.
wandb.finish()

Bạn luôn có thể vào bảng điều khiển Weights & Biases để xem kỹ các chỉ số mô hình.

6. Suy luận mô hình
Để kiểm thử mô hình đã tinh chỉnh, chúng ta sẽ cung cấp một prompt mẫu từ bộ dữ liệu.
messages = [{"role": "system", "content": instruction},
{"role": "user", "content": "I bought the same item twice, cancel order {{Order Number}}"}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors='pt', padding=True, truncation=True).to("cuda")
outputs = model.generate(**inputs, max_new_tokens=150, num_return_sequences=1)
text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(text.split("assistant")[1])
Mô hình đã tinh chỉnh tiếp thu được phong cách và đưa ra phản hồi chính xác.

7. Lưu tokenizer và mô hình
Lưu mô hình đã tinh chỉnh cục bộ và đẩy lên Hugging Face Hub. Hàm push_to_hub sẽ tạo kho mô hình mới và đẩy tệp mô hình vào kho Hugging Face của bạn.
# Save the fine-tuned model
trainer.model.save_pretrained(new_model)
trainer.model.push_to_hub(new_model, use_temp_dir=False)

Nguồn: kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot
Để tinh chỉnh các mô hình Llama 3 lớn hơn, bạn nên xem hướng dẫn Tinh chỉnh Llama 3.1 cho Phân loại Văn bản. Hướng dẫn này khá phổ biến và sẽ giúp bạn hoàn thành tác vụ LLM trọn vẹn.
8. Lưu notebook
Nhấp nút "Save Version" ở góc trên bên phải, chọn tùy chọn quick save, và đổi tùy chọn lưu đầu ra để lưu tệp mô hình cùng toàn bộ mã.

Xem notebook Kaggle Fine-tune Llama 3.2 on Customer Support để xem mã nguồn, kết quả và đầu ra.
Đây là hướng dẫn thiên về mã. Nếu bạn tìm kiếm cách tinh chỉnh LLM không cần mã hoặc ít mã, hãy xem LlaMA-Factory WebUI Beginner's Guide: Fine-Tuning LLMs.
Gộp và xuất Llama 3.2 đã tinh chỉnh
Chúng ta sẽ tạo notebook mới và thêm notebook đã lưu trước đó để truy cập bộ tiếp hợp LoRA đã tinh chỉnh nhằm tránh các vấn đề bộ nhớ.
Hãy đảm bảo bạn cũng đã thêm mô hình gốc "Llama 3.2 3B Instruct".

Cài đặt và cập nhật tất cả gói Python cần thiết.
%%capture
%pip install -U bitsandbytes
%pip install transformers==4.44.2
%pip install -U accelerate
%pip install -U peft
%pip install -U trl
Đăng nhập Hugging Face CLI để đẩy mô hình đã gộp lên Hugging Face Hub.
from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()
hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)
Chỉ định vị trí mô hình gốc và LoRA đã tinh chỉnh. Chúng ta sẽ dùng để tải mô hình gốc và gộp với adapter.
# Model
base_model_url = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"
new_model_url = "/kaggle/input/fine-tune-llama-3-2-on-customer-support/llama-3.2-3b-it-Ecommerce-ChatBot/"
Tải tokenizer và mô hình đầy đủ.
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, pipeline
from peft import PeftModel
import torch
from trl import setup_chat_format
# Reload tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(base_model_url)
base_model_reload= AutoModelForCausalLM.from_pretrained(
base_model_url,
low_cpu_mem_usage=True,
return_dict=True,
torch_dtype=torch.float16,
device_map="auto",
)
Áp dụng định dạng chat cho mô hình và tokenizer. Sau đó gộp mô hình gốc với bộ tiếp hợp LoRA.
# Merge adapter with base model
base_model_reload, tokenizer = setup_chat_format(base_model_reload, tokenizer)
model = PeftModel.from_pretrained(base_model_reload, new_model_url)
model = model.merge_and_unload()
Để kiểm tra mô hình đã gộp thành công chưa, hãy cung cấp prompt mẫu và tạo phản hồi.
instruction = """You are a top-rated customer service agent named John.
Be polite to customers and answer all their questions.
"""
messages = [{"role": "system", "content": instruction},
{"role": "user", "content": "I have to see what payment payment modalities are accepted"}]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors='pt', padding=True, truncation=True).to("cuda")
outputs = model.generate(**inputs, max_new_tokens=150, num_return_sequences=1)
text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(text.split("assistant")[1])
Như bạn thấy, mô hình đã tinh chỉnh của chúng ta hoạt động hoàn hảo.

Lưu tokenizer và mô hình cục bộ.
new_model = "llama-3.2-3b-it-Ecommerce-ChatBot"
model.save_pretrained(new_model)
tokenizer.save_pretrained(new_model)
Đẩy tokenizer và mô hình đã gộp lên kho mô hình Hugging Face.
model.push_to_hub(new_model, use_temp_dir=False)
tokenizer.push_to_hub(new_model, use_temp_dir=False)
Sau vài phút, bạn có thể xem tất cả tệp mô hình cùng tệp metadata trong kho Hugging Face của bạn.

Nguồn: kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot
Bạn cũng có thể xem mã nguồn trong notebook Merging and Exporting Fine-tuned Llama 3.2 trên Kaggle để tìm hiểu thêm về gộp và tải mô hình lên Hugging Face Hub.
Bước tiếp theo trong dự án này là chuyển đổi mô hình đầy đủ sang định dạng GGUF rồi lượng tử hóa. Sau đó, bạn có thể dùng cục bộ bằng ứng dụng chat yêu thích như Jan, Msty, hoặc GPT4ALL. Hãy theo dõi hướng dẫn Tinh chỉnh Llama 3 và sử dụng cục bộ để học cách chuyển tất cả LLM sang định dạng GGUF và dùng trên laptop.
Chuyển đổi mô hình đã gộp sang định dạng GGUF
Để sử dụng mô hình đã tinh chỉnh cục bộ, trước tiên chúng ta phải chuyển sang định dạng GGUF. Tại sao? Vì đây là định dạng của llama.cpp và được chấp nhận bởi hầu hết ứng dụng chatbot trên máy tính.
Chuyển đổi mô hình đã gộp sang định dạng llama.ccp khá dễ. Tất cả những gì cần làm là vào GGUF My Repo trên Hugging Face Hub. Đăng nhập bằng tài khoản Hugging Face. Nhập liên kết kho mô hình đã tinh chỉnh “kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot” và nhấn nút “Submit”.

Nguồn: GGUF My Repo
Chỉ trong vài giây, phiên bản đã lượng tử của mô hình sẽ được tạo trong một kho Hugging Face mới.

Nguồn: kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot-Q4_K_M-GGUF
Nhấp thẻ “Files” và tải xuống chỉ tệp GGUF.

Nguồn: llama-3.2-3b-it-ecommerce-chatbot-q4_k_m.gguf
Sử dụng mô hình đã tinh chỉnh cục bộ
Chúng ta sẽ dùng ứng dụng chatbot Jan để dùng mô hình đã tinh chỉnh ngay trên máy. Truy cập trang chính thức jan.ai để tải và cài đặt ứng dụng.

Nguồn: Jan
Nhấn vào phần cài đặt, chọn menu “My Models”, và bấm “Import Model”. Sau đó cung cấp thư mục cục bộ của mô hình.

Vào menu chat và chọn mô hình đã tinh chỉnh, như hình dưới đây.

Nhấp thẻ “Assistant” ở bảng bên phải và nhập system prompt.
System prompt: “You are a top-rated customer service agent named John. Be polite to customers and answer all their questions.”

Nhấp thẻ “Model” ngay cạnh “Assistant” và đổi stop token thành “<|eot_id|>”

Vậy là xong. Bạn chỉ cần hỏi AI hỗ trợ khách hàng về vấn đề bạn đang gặp phải.
Prompt: “How do I order multiple items from the same vendor?”

Phản hồi chính xác và cực nhanh—gần 102 token/giây.
Kết luận
Tinh chỉnh các LLM nhỏ giúp tiết kiệm chi phí và cải thiện thời gian suy luận. Với đủ dữ liệu, bạn có thể nâng hiệu năng mô hình trên một số tác vụ tiệm cận GPT-4-mini. Nói ngắn gọn, tương lai của AI là sử dụng nhiều LLM nhỏ trong một lưới với mối quan hệ master-slave.
Mô hình master sẽ nhận prompt ban đầu và quyết định dùng mô hình chuyên biệt nào để tạo câu trả lời. Cách này sẽ giảm thời gian tính toán, cải thiện kết quả và giảm chi phí vận hành.
Trong hướng dẫn này, chúng ta đã tìm hiểu về Llama 3.2 và cách truy cập trên Kaggle. Chúng ta cũng đã học cách tinh chỉnh mô hình lightweight Llama 3.2 trên bộ dữ liệu hỗ trợ khách hàng để mô hình học cách phản hồi theo một phong cách nhất định và cung cấp thông tin chuyên biệt chính xác. Sau đó, chúng ta gộp bộ tiếp hợp LoRA với mô hình gốc và đẩy mô hình đầy đủ lên Hugging Face Hub. Cuối cùng, chúng ta chuyển đổi mô hình đã gộp sang định dạng GGUF và dùng cục bộ trên laptop với ứng dụng chatbot Jan.
Hãy tham gia khóa Working with Hugging Face dạng tương tác để học cách sử dụng công cụ và tinh chỉnh mô hình.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
