Từ base model đến chat model
Base model chỉ biết viết tiếp văn bản. SFT dạy nó dạng hỏi-đáp, RLHF chỉnh theo lựa chọn con người — vì thế model chat cư xử khác hẳn cỗ máy thô bên dưới.
TL;DR: Model bạn gọi qua API chat KHÔNG phải cỗ máy dự đoán-token-kế-tiếp thô — nó đã qua hai pha huấn luyện thêm. SFT (supervised fine-tuning) cho model xem ví dụ "câu hỏi → câu trả lời chuẩn" do con người viết, dạy nó dạng hội thoại hỏi-đáp thay vì chỉ viết tiếp bất cứ thứ gì thống kê hay theo sau. RLHF (reinforcement learning from human feedback) chỉnh tiếp bằng lựa chọn con người: model sinh nhiều câu trả lời, người chấm xếp hạng câu nào tốt hơn, model tối ưu theo xếp hạng đó. Hai pha này đổi hành vi — biết dừng, biết từ chối, theo đúng yêu cầu — chứ không nạp thêm sự kiện đáng tin nào.
Một đội build trợ lý tra cứu tài liệu nội bộ, dùng thẳng một base model mã nguồn mở (chưa qua tinh chỉnh) vì rẻ và có sẵn. Prompt: "Cách đổi mật khẩu trong hệ thống X là gì?" Kỳ vọng một câu trả lời. Thực tế model trả về:
Cách đổi mật khẩu trong hệ thống X là gì?
Cách đổi email đăng ký trong hệ thống X là gì?
Cách xoá tài khoản trong hệ thống X là gì?
Cách lấy lại tài khoản bị khoá là gì?
Không có câu trả lời nào — chỉ một danh sách câu hỏi khác, cứ sinh tới khi chạm max_tokens. Đội ngờ prompt sai, thử viết lại năm lần, vẫn vậy. Model không hỏng — nó đang làm đúng thứ nó được huấn luyện để làm: viết tiếp văn bản giống dữ liệu đã thấy. Bài này giải thích vì sao, và hai bước biến nó thành thứ biết "trả lời" thật.
1. Analogy — thực tập sinh mới đọc hết kho tài liệu
Một thực tập sinh vừa vào công ty, việc đầu tiên là đọc toàn bộ email, forum nội bộ, tài liệu FAQ trong ổ lưu trữ — không ai hướng dẫn thêm gì. Người này bắt chước rất giỏi văn phong, nhưng không hiểu vai trò "trả lời khách hàng" nghĩa là gì: đưa cho họ một câu hỏi, phản xạ tự nhiên là viết tiếp theo đúng kiểu văn bản đã đọc — mà trong FAQ, sau một câu hỏi thường là... câu hỏi khác (mục lục, danh sách đề mục), nên họ liệt kê thêm câu hỏi.
Công ty sửa việc này bằng hai bước huấn luyện thêm:
| Thực tập sinh | LLM |
|---|---|
| Đọc hết kho tài liệu, bắt chước văn phong nhưng chưa hiểu vai trò | Base model: pretrain trên corpus khổng lồ, chỉ học dự đoán token kế tiếp |
| Xem hàng trăm ví dụ mẫu "khách hỏi X → nhân viên chuẩn đáp Y" do quản lý soạn sẵn, tập bắt chước đúng mẫu | SFT: fine-tune trên tập instruction-response do con người viết |
| Thử trả lời nhiều câu, quản lý xếp hạng câu nào ổn hơn, thực tập sinh chỉnh dần theo xếp hạng đó | RLHF: reward model chấm theo lựa chọn con người, model tối ưu theo điểm |
| Nhân viên chính thức: biết dừng đúng lúc, biết từ chối yêu cầu ngoài phạm vi, đúng vai | Chat model: instruction-following, biết dừng, biết từ chối |
Base model = đọc hết kho tài liệu, chưa ai dạy vai trò. SFT = xem mẫu chuẩn. RLHF = bị chấm điểm và chỉnh theo điểm. Ba bước, ba tầng hành vi khác nhau.
2. Base model — chỉ biết viết tiếp
Bài trước bạn đã thấy: LLM sinh văn bản bằng cách lặp một bước duy nhất — nhìn toàn bộ token đã có, dự đoán phân phối xác suất cho token kế tiếp, chọn một token, nối vào chuỗi, lặp lại. Không có bước nào trong vòng lặp đó biết "đây là câu hỏi, phải trả lời".
Base model (pretrained model) là kết quả trực tiếp của vòng lặp đó, huấn luyện trên corpus khổng lồ — sách, web, forum, code — với đúng một mục tiêu: đoán đúng token kế tiếp của văn bản thật. Không có nhãn "đây là câu hỏi", "đây là câu trả lời chuẩn" nào được đưa vào — model chỉ học thống kê "chữ gì hay theo sau chữ gì".
Hệ quả: đưa một câu hỏi cho base model, nó không "hiểu" đó là yêu cầu trả lời — nó tiếp tục chuỗi theo đúng thứ hay xuất hiện sau một câu hỏi trong dữ liệu huấn luyện. Nếu dữ liệu đó là trang FAQ, thứ hay theo sau một câu hỏi là câu hỏi khác — đúng chuyện xảy ra ở scenario mở bài.
3. Pha 1 — SFT dạy dạng hỏi-đáp
SFT (Supervised Fine-Tuning) — tinh chỉnh có giám sát — là bước huấn luyện tiếp base model trên một tập dữ liệu nhỏ hơn nhiều, gồm các cặp (instruction, response mẫu) do con người (thường chuyên gia được thuê) soạn: một yêu cầu, kèm câu trả lời đúng-kiểu-mong-muốn.
Vẫn là bài toán dự đoán-token-kế-tiếp — cơ chế học không đổi — chỉ đổi dữ liệu: model giờ chỉ thấy toàn cặp "hỏi rồi đáp thẳng, gọn, đúng trọng tâm". Học đủ nhiều cặp như vậy, token có xác suất cao nhất sau một câu hỏi không còn là "câu hỏi khác" mà là "bắt đầu câu trả lời".
SFT sửa đúng lỗi ở scenario mở bài — dạy model đúng định dạng hội thoại. Nhưng nó chưa nói được câu trả lời nào hay hơn khi cả hai đều đúng định dạng — cần thêm một bước nữa.
4. Pha 2 — RLHF chỉnh theo lựa chọn con người
RLHF (Reinforcement Learning from Human Feedback) — học tăng cường từ phản hồi con người — chỉnh model đã qua SFT bằng một vòng khác:
1. Model (sau SFT) sinh nhiều câu trả lời khác nhau cho cùng một prompt
2. Người chấm xếp hạng: câu nào tốt hơn câu nào (không cần viết lại từ đầu)
3. Huấn luyện một "reward model" riêng: học dự đoán điểm số
khớp với thứ tự xếp hạng của người chấm
4. Tối ưu model chính để sinh câu trả lời mà reward model chấm điểm cao hơn
Khác biệt cốt lõi: SFT cần con người viết câu trả lời mẫu (tốn công, phủ ít tình huống); RLHF chỉ cần con người so sánh câu model tự sinh ra — rẻ hơn, phủ rộng hơn vì reward model tổng quát hoá từ các so sánh đó.
Toàn cảnh pipeline:

SFT = học bắt chước ví dụ mẫu con người viết. RLHF = học tối ưu theo lựa chọn con người (xếp hạng, không viết mẫu). Cả hai đều là bước huấn luyện sau pretrain, đều KHÔNG đổi kiến trúc model — chỉ đổi trọng số qua thêm dữ liệu.
5. Thử đoán — base model trả lời prompt này thế nào?
Prompt: "Explain the moon landing to a 6 year old in a few sentences." Đưa thẳng cho một base model (chưa qua SFT/RLHF). Bạn đoán nó sinh ra gì — một lời giải thích cho trẻ 6 tuổi, hay thứ khác hẳn? Viết dự đoán ra trước khi đọc tiếp.
Đây là một minh hoạ kinh điển cho khác biệt hành vi này. Base model GPT-3 không giải thích cú hạ cánh mặt trăng — nó tiếp tục bằng một danh sách các câu cùng khuôn mẫu: "Explain the theory of gravity to a 6 year old", "Explain the theory of relativity to a 6 year old", "Explain the big bang theory to a 6 year old"... Vì trong dữ liệu huấn luyện, một câu dạng "Explain X to a 6 year old" thường xuất hiện trong danh sách đề bài/worksheet giáo dục — và điều hay theo sau một đề bài trong danh sách là đề bài kế tiếp, không phải lời giải.
Model cùng kiến trúc, cùng quy mô, sau khi qua SFT + RLHF (InstructGPT trong paper đó) nhận đúng prompt này lại trả lời thẳng: một đoạn giải thích ngắn, đơn giản, đúng đối tượng trẻ 6 tuổi — không liệt kê thêm đề bài nào khác.
Không có gì trong hai model biết thêm sự kiện khác nhau về mặt trăng — cả hai học từ cùng loại dữ liệu về chủ đề đó. Khác biệt duy nhất là hành vi: một bên tiếp tục theo khuôn mẫu thống kê "sau đề bài là đề bài", bên kia đã học "sau một yêu cầu là một câu trả lời trực tiếp, đúng đối tượng".
6. Pitfall tổng hợp
❌ Nhầm 1 — RLHF làm model "biết nhiều hơn" hoặc "đúng sự kiện hơn":
✅ RLHF không nạp sự kiện mới — gốc kiến thức vẫn từ pretrain, nó không dạy được điều model chưa từng gặp. Nhưng vì người gắn nhãn ưu tiên câu trung thực, ít bịa khi xếp hạng, model học xu hướng trả lời đúng hơn: InstructGPT đo được cải thiện truthfulness (khoảng gấp đôi trên TruthfulQA) và giảm hallucination so với GPT-3. Tức RLHF chỉnh hành vi — gồm cả xu hướng trung thực — chứ không mở rộng kho sự kiện.
❌ Nhầm 2 — coi "model không trả lời thẳng, cứ liệt kê thêm câu hỏi" là bug cần sửa prompt:
✅ Với base model, đó là hành vi đúng theo cơ chế — không phải lỗi cần prompt engineering vá. Cách sửa đúng là dùng model đã qua SFT (+ RLHF nếu cần chất lượng cao hơn), không phải viết lại prompt cho base model.
❌ Nhầm 3 — nghĩ SFT và RLHF là một bước, dùng lẫn hai tên:
✅ SFT cần con người viết ví dụ mẫu (tốn, ít tình huống); RLHF chỉ cần con người so sánh câu model tự sinh (rẻ hơn, phủ rộng hơn). Hai cơ chế dữ liệu khác nhau, thường chạy nối tiếp (SFT trước, RLHF sau) chứ không thay thế nhau.
7. 📚 Deep Dive
Paper chính chủ:
- Ouyang et al. — Training language models to follow instructions with human feedback (InstructGPT), arXiv:2203.02155 — paper gốc mô tả pipeline SFT + reward model + RLHF (PPO) áp lên GPT-3, và đo cải thiện truthfulness/giảm hallucination của InstructGPT so với GPT-3.
Ghi chú: ví dụ "explain the moon landing to a 6 year old" là minh hoạ kinh điển đi kèm công bố InstructGPT (tài liệu công bố, không nằm nguyên văn trong bản paper) — dùng để minh hoạ định tính khác biệt hành vi, không phải số đo độc lập của bài này. Con số truthfulness (~2×) lấy từ chính paper.
8. Liên hệ các bài khác
- Bài 01 — Dự đoán token kế tiếp — cơ chế autoregressive mà cả base model lẫn chat model đều dùng; bài này chỉ khác nhau ở dữ liệu huấn luyện thêm, không đổi cơ chế sinh.
- Bài 06 — Hallucination — vì RLHF không nạp thêm sự kiện, hallucination là hệ quả cơ chế còn nguyên vẹn ở cả model đã qua SFT/RLHF.
- Mini-challenge — đọc log ba sự cố — phân biệt sự cố nào do base-vs-chat, sự cố nào do nguyên nhân khác.
9. Tóm tắt
- Base model chỉ được huấn luyện dự đoán token kế tiếp trên corpus thô — không có khái niệm "trả lời câu hỏi", chỉ tiếp tục văn bản theo thống kê đã thấy.
- SFT dạy model dạng hội thoại hỏi-đáp bằng ví dụ mẫu (instruction, response) do con người viết.
- RLHF chỉnh tiếp bằng lựa chọn con người: reward model chấm điểm theo xếp hạng, model tối ưu để điểm cao hơn — rẻ hơn SFT vì không cần viết mẫu, chỉ cần so sánh.
- Cả hai pha chỉnh hành vi (định dạng, biết dừng, biết từ chối, đúng đối tượng) — không nạp thêm sự kiện đáng tin; model chat vẫn có thể sai sự kiện y như base model.
- Ví dụ minh hoạ từ chính paper InstructGPT: cùng prompt, base model liệt kê thêm đề bài cùng khuôn mẫu, model đã qua SFT+RLHF trả lời thẳng đúng đối tượng.
10. Tự kiểm tra
Q1Vì sao base model, khi nhận một câu hỏi, lại có xu hướng sinh thêm câu hỏi khác thay vì trả lời — và vì sao đây không phải bug sửa được bằng prompt hay hơn?▸
Base model chỉ học dự đoán token kế tiếp trên corpus thô, không có khái niệm "đây là câu hỏi, phải trả lời". Nếu dữ liệu huấn luyện có nhiều đoạn dạng FAQ/danh sách đề bài, thứ hay theo sau một câu hỏi trong dữ liệu đó chính là câu hỏi khác — model tiếp tục đúng khuôn mẫu thống kê đó.
Đây là hành vi đúng cơ chế của base model, không phải lỗi ngẫu nhiên — prompt hay hơn không đổi được việc model chưa từng học "vai trò trả lời". Cách sửa đúng là dùng model đã qua SFT.
Q2Phân biệt: SFT cần con người làm gì, và RLHF cần con người làm gì? Vì sao RLHF thường rẻ hơn để mở rộng quy mô.▸
SFT cần con người viết câu trả lời mẫu cho từng cặp instruction — tốn công, chỉ phủ được số tình huống có người viết tới.
RLHF chỉ cần con người so sánh/xếp hạng các câu trả lời model đã tự sinh ra — không cần viết gì mới. Reward model học từ các so sánh đó rồi tổng quát hoá, nên phủ được nhiều tình huống hơn với cùng lượng công sức con người.
Q3Một model đã qua SFT + RLHF trả lời sai một sự kiện lịch sử. Đồng nghiệp kết luận 'chắc RLHF làm hỏng kiến thức'. Đánh giá kết luận này.▸
Kết luận sai chỗ quy nguyên nhân. RLHF chỉnh hành vi trình bày (định dạng, mức hữu ích, biết dừng) dựa trên xếp hạng con người — không phải nguồn nạp sự kiện. Sự kiện model biết đến từ dữ liệu pretrain, giai đoạn base model, xảy ra trước cả SFT lẫn RLHF.
Nếu sự kiện sai, base model phía dưới nhiều khả năng cũng sai y hệt — chỉ khác là chat model trình bày câu sai đó tự tin và đúng format hơn, dễ khiến người đọc tin nhầm.
Q4Vì sao ví dụ 'giải thích cú hạ cánh mặt trăng cho trẻ 6 tuổi' cho ra hai kết quả khác hẳn nhau giữa base model và model đã qua SFT+RLHF, dù cả hai cùng kiến trúc và cùng học từ dữ liệu có chứa kiến thức về mặt trăng?▸
Base model tiếp tục theo khuôn mẫu thống kê phổ biến của câu dạng "giải thích X cho trẻ 6 tuổi" trong dữ liệu huấn luyện — khuôn mẫu đó thường là danh sách đề bài giáo dục, nên điều hay theo sau là một đề bài khác, không phải lời giải.
Model đã qua SFT học từ ví dụ mẫu "yêu cầu → trả lời thẳng", rồi RLHF chỉnh tiếp theo xếp hạng con người ưu tiên câu trả lời hữu ích, đúng đối tượng — nên nó trả lời thẳng thay vì liệt kê thêm đề bài.
Q5Đội bạn cân nhắc dùng base model thô (rẻ, có sẵn) cho một chatbot hỏi-đáp nội bộ để tiết kiệm chi phí. Dựa vào bài này, đánh giá lựa chọn đó.▸
Base model chưa qua SFT/RLHF không có hành vi "trả lời câu hỏi" — nhiều khả năng lặp lại đúng lỗi ở scenario mở bài: liệt kê thêm câu hỏi thay vì trả lời, tốn token vô ích tới khi chạm giới hạn.
Rẻ hơn ở chi phí license/inference không bù được chi phí vận hành (output vô dụng, phải xử lý parse/fallback phức tạp hơn). Với chatbot hỏi-đáp, cần tối thiểu một model đã qua SFT — RLHF thêm nếu cần chất lượng trả lời cao hơn.
Bài tiếp theo: Hallucination — vì sao model tự tin nói sai
Bài này đáng gửi cho bạn học cùng?
Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.
Bài này có giúp bạn hiểu bản chất không?
Hỏi đáp về bài này
Chưa có câu hỏi
Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).
Đặt câu hỏi đầu tiên