Fine-tuning LLM (tinh chỉnh mô hình ngôn ngữ lớn) là quá trình huấn luyện thêm một mô hình đã được huấn luyện sẵn trên bộ dữ liệu nhỏ, chuyên biệt để nó làm tốt hơn một nhiệm vụ cụ thể, như trả lời đúng giọng thương hiệu, phân loại văn bản theo chuẩn riêng hay xuất kết quả đúng định dạng. Thay vì xây mô hình từ đầu rất tốn kém, fine-tuning tận dụng kiến thức sẵn có của mô hình và chỉ điều chỉnh hành vi của nó.
Bài viết giải thích fine-tuning là gì, khi nào nên và không nên fine-tune, các phương pháp như full fine-tuning, LoRA, QLoRA, quy trình chuẩn bị dữ liệu và huấn luyện, cùng so sánh với prompt engineering và RAG.
Fine-tuning LLM là gì?
Một LLM được tạo ra qua giai đoạn pre-training trên lượng văn bản khổng lồ, giúp nó có kiến thức và khả năng ngôn ngữ chung. Fine-tuning là bước tiếp theo: dùng vài trăm đến vài nghìn (hoặc nhiều hơn) ví dụ chất lượng để "dạy" mô hình cách làm một việc cụ thể theo ý bạn.
Hình dung một sinh viên tốt nghiệp đại học (mô hình pre-trained) vào làm ở công ty. Họ đã có kiến thức nền, nhưng cần được đào tạo thêm về quy trình, văn phong và sản phẩm của công ty. Đó chính là fine-tuning.
Khi nào nên fine-tune?
Nên fine-tune khi
- Cần phong cách, giọng văn nhất quán mà prompt khó giữ ổn định.
- Cần định dạng đầu ra rất cụ thể, lặp lại hàng nghìn lần.
- Muốn mô hình nhỏ hơn, rẻ hơn làm tốt một nhiệm vụ hẹp thay cho mô hình lớn đắt tiền.
- Bài toán chuyên biệt như phân loại ticket theo danh mục nội bộ, trích xuất thông tin từ loại văn bản đặc thù.
- Prompt quá dài vì chứa nhiều ví dụ; fine-tune giúp rút ngắn prompt, giảm chi phí và độ trễ.
Không nên fine-tune khi
- Mục tiêu chính là cung cấp kiến thức mới hoặc thường xuyên thay đổi (giá, chính sách, tài liệu). Trường hợp này nên dùng RAG.
- Chưa thử tối ưu prompt. Rất nhiều bài toán giải quyết được bằng prompt engineering tốt.
- Không có dữ liệu chất lượng. Dữ liệu kém sẽ cho mô hình kém.
So sánh prompt engineering, RAG và fine-tuning
| Tiêu chí | Prompt engineering | RAG | Fine-tuning |
|---|---|---|---|
| Thay đổi mô hình | Không | Không | Có (cập nhật trọng số) |
| Chi phí bắt đầu | Rất thấp | Trung bình | Cao hơn |
| Bổ sung kiến thức mới | Hạn chế (giới hạn context) | Tốt nhất | Không hiệu quả bằng |
| Điều chỉnh hành vi, phong cách | Trung bình | Thấp | Tốt nhất |
| Thời gian triển khai | Vài giờ | Vài ngày | Vài ngày đến vài tuần |
Thứ tự khuyến nghị: thử prompt trước → thêm RAG nếu cần kiến thức → fine-tune khi cần thay đổi hành vi mà hai cách trên không đáp ứng.
Các phương pháp fine-tuning phổ biến
Full fine-tuning
Cập nhật toàn bộ tham số của mô hình. Cho khả năng điều chỉnh mạnh nhất nhưng cần nhiều GPU, bộ nhớ và dễ làm mô hình "quên" kiến thức cũ (catastrophic forgetting).
PEFT và LoRA
PEFT (Parameter-Efficient Fine-Tuning) là nhóm kỹ thuật chỉ huấn luyện một phần nhỏ tham số. Phổ biến nhất là LoRA (Low-Rank Adaptation), được nhóm nghiên cứu Microsoft công bố năm 2021: giữ nguyên trọng số gốc và thêm các ma trận nhỏ có thể huấn luyện. Kết quả là file "adapter" nhẹ, huấn luyện nhanh và rẻ hơn nhiều.
QLoRA
Kết hợp LoRA với lượng tử hóa mô hình gốc xuống 4-bit để giảm bộ nhớ, cho phép fine-tune mô hình khá lớn trên một GPU đơn. Phương pháp này được giới thiệu năm 2023 và rất phổ biến trong cộng đồng mô hình mở.
Instruction tuning và học theo sở thích
- Supervised Fine-Tuning (SFT): huấn luyện trên cặp chỉ dẫn – câu trả lời mẫu.
- RLHF và DPO: huấn luyện theo dữ liệu so sánh câu trả lời tốt/kém để mô hình phù hợp sở thích con người hơn.
| Phương pháp | Tài nguyên | Mức điều chỉnh | Phù hợp |
|---|---|---|---|
| Full fine-tuning | Rất lớn | Toàn bộ mô hình | Tổ chức có hạ tầng mạnh |
| LoRA | Vừa phải | Adapter nhỏ | Đa số dự án thực tế |
| QLoRA | Thấp | Adapter trên mô hình 4-bit | Cá nhân, nhóm nhỏ, GPU hạn chế |
| Fine-tuning qua API | Không cần GPU riêng | Do nhà cung cấp quản lý | Doanh nghiệp muốn triển khai nhanh |
Quy trình fine-tune LLM từng bước
- Xác định mục tiêu và chỉ số đánh giá: ví dụ độ chính xác phân loại, tỷ lệ đúng định dạng.
- Chọn mô hình nền: mô hình mở (Llama, Qwen, Mistral, Gemma…) hoặc dịch vụ fine-tune qua API của nhà cung cấp.
- Chuẩn bị dữ liệu: thu thập ví dụ đầu vào – đầu ra chuẩn, làm sạch, loại trùng, loại dữ liệu nhạy cảm.
- Chia tập train/validation/test.
- Huấn luyện: chọn learning rate, số epoch, kích thước batch; theo dõi loss trên tập validation.
- Đánh giá: so sánh với mô hình gốc + prompt tốt trên cùng bộ test. Nếu không tốt hơn rõ rệt, không nên triển khai.
- Triển khai và giám sát: theo dõi chất lượng thực tế, thu thập ví dụ lỗi để cải thiện vòng sau.
Định dạng dữ liệu mẫu (JSONL)
{"messages": [
{"role": "system", "content": "Bạn là trợ lý CSKH của cửa hàng X, trả lời ngắn gọn, thân thiện."},
{"role": "user", "content": "Shop có giao hàng ra Đà Nẵng không?"},
{"role": "assistant", "content": "Dạ có ạ! Shop giao toàn quốc, Đà Nẵng nhận hàng trong 2–3 ngày."}
]}
Mỗi dòng là một ví dụ hội thoại hoàn chỉnh. Chất lượng và tính nhất quán của câu trả lời mẫu quan trọng hơn số lượng.
Ví dụ fine-tune với LoRA bằng Hugging Face
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("<tên-mô-hình-mở>")
config = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05,
target_modules=["q_proj", "v_proj"], task_type="CAUSAL_LM")
model = get_peft_model(model, config)
model.print_trainable_parameters() # chỉ một phần rất nhỏ tham số được huấn luyện
Chi phí và hạ tầng cần chuẩn bị
- Fine-tune qua API: không cần GPU riêng, trả phí theo lượng token huấn luyện và token sử dụng sau đó. Phù hợp khi muốn thử nhanh, nhưng dữ liệu phải gửi lên nhà cung cấp.
- GPU thuê theo giờ: các dịch vụ cloud GPU cho phép thuê máy theo giờ để chạy LoRA/QLoRA trên mô hình mở, chỉ trả tiền khi huấn luyện.
- Notebook miễn phí: Google Colab, Kaggle có GPU giới hạn, đủ để học và thử mô hình nhỏ.
- Máy chủ riêng: phù hợp khi dữ liệu nhạy cảm không được rời khỏi hạ tầng công ty.
Ngoài chi phí tính toán, phần tốn công nhất thường là chuẩn bị và kiểm tra dữ liệu. Hãy dành thời gian xây bộ ví dụ chuẩn và bộ test trước khi chạy huấn luyện. Sau khi fine-tune, bạn cũng cần tính chi phí phục vụ mô hình (inference): mô hình tự host cần server GPU chạy liên tục, trong khi mô hình qua API tính phí theo lượt dùng.
Những lỗi thường gặp khi fine-tune
- Dữ liệu không nhất quán: cùng loại câu hỏi nhưng câu trả lời mẫu mỗi nơi một kiểu.
- Overfitting: huấn luyện quá nhiều epoch, mô hình học thuộc và kém với câu hỏi mới.
- Kỳ vọng nhồi kiến thức: fine-tune để mô hình "nhớ" toàn bộ tài liệu thường kém hiệu quả hơn RAG.
- Không có bộ đánh giá: không biết mô hình mới tốt hơn hay tệ hơn.
- Lộ dữ liệu nhạy cảm trong dữ liệu huấn luyện.
Câu hỏi thường gặp
Fine-tuning cần bao nhiêu dữ liệu?
Tùy nhiệm vụ. Với điều chỉnh phong cách hoặc định dạng, vài trăm ví dụ chất lượng cao thường đã có thể tạo khác biệt. Nhiệm vụ phức tạp cần nhiều hơn. Hãy bắt đầu nhỏ, đánh giá rồi mở rộng.
Có thể fine-tune ChatGPT không?
OpenAI cung cấp dịch vụ fine-tune cho một số mô hình qua API. Danh sách mô hình hỗ trợ thay đổi theo thời gian, nên hãy xem tài liệu chính thức trước khi bắt đầu.
Fine-tuning và training khác nhau thế nào?
Training (pre-training) là huấn luyện mô hình từ đầu trên dữ liệu rất lớn. Fine-tuning là huấn luyện thêm mô hình đã có sẵn trên dữ liệu nhỏ, chuyên biệt.
LoRA là gì?
LoRA là kỹ thuật fine-tune hiệu quả, chỉ huấn luyện các ma trận nhỏ gắn thêm vào mô hình thay vì toàn bộ tham số, giúp tiết kiệm bộ nhớ và chi phí.
Nên chọn RAG hay fine-tuning cho chatbot doanh nghiệp?
Phần lớn trường hợp nên bắt đầu với RAG để chatbot trả lời đúng theo tài liệu. Fine-tuning phù hợp khi cần thêm giọng văn, định dạng hoặc hành vi đặc thù.
Học cách tùy biến mô hình AI cùng MelyDemy
Fine-tuning đòi hỏi nền tảng về Deep Learning và Python. Bạn có thể bắt đầu với Khóa học Deep Learning cơ bản và Khoá học Machine Learning, sau đó áp dụng LLM vào sản phẩm thực tế qua Khoá học build một AI Agent từ đầu.