OpenArchLabOpen Architecture — From Models to Systems

F · Training Methods & Model Adaptation

Response / sequence distillation · fine-tune student trên câu trả lời của teacher

Model lớn (teacher) viết câu trả lời hoặc chuỗi suy luận, pipeline lọc giữ mẫu đúng, rồi model nhỏ (student) được fine-tune trên chính các mẫu đó.

LESSON ID train-response-distillation GROUP Kiến trúc huấn luyện
Mục lục bài học

1Định nghĩa

Response distillation, còn gọi là sequence-level distillation, là hình thức chưng cất tri thức thực dụng nhất với LLM: một mô hình lớn (teacher) được chạy để viết câu trả lời hoặc chuỗi lập luận từng bước cho một tập câu hỏi, pipeline lọc giữ lại các mẫu đúng, rồi dùng chúng làm dữ liệu huấn luyện cho một mô hình nhỏ (student). Student nhận về thứ dễ đọc nhất là văn bản, không cần logits nội bộ của teacher.

Bước huấn luyện student giống hệt một lượt Supervised Fine-Tuning (SFT): cross-entropy chuẩn trên văn bản, chỉ khác là câu trả lời mục tiêu do teacher viết. Ưu điểm lớn là teacher không phải chạy song song với student trên GPU lúc huấn luyện, nên chưng cất được xuyên kiến trúc, ví dụ từ teacher MoE (Mixture of Experts, nhiều chuyên gia con mà mỗi token chỉ dùng một vài) sang student Dense (mọi tham số đều tham gia với mỗi token), và xuyên cả các bộ tokenizer khác nhau vì văn bản được đổi lại thành token bằng tokenizer của student.

Ví dụ đời thường: giống như ôn thi bằng tuyển tập bài văn mẫu điểm 10 và lời giải chi tiết của một giáo viên giỏi. Học sinh không cần ngồi cạnh đọc suy nghĩ trong đầu giáo viên, chỉ cần đọc và luyện viết theo các bài giải đã được tuyển chọn kỹ. Ví dụ dừng lại ở chỗ: nếu tuyển tập có bài giải sai thì học sinh học luôn cái sai, vì cuốn sách không tự biết bài nào sai.

2Luồng

Năm bước đầu là dựng dữ liệu rồi huấn luyện, bước cuối là phục vụ. Khác với chưng cất logits, teacher không cần chạy cùng lúc với student: nó chỉ tạo dataset một lần, nên hai model có thể khác tokenizer và kiến trúc. Chọn từng nút để mở bài liên quan.

Sơ đồ kiến trúc huấn luyện · 22 ô (1A → 5C)

Kiến trúc huấn luyện LLM · Ánh xạ với Bài Lab tổng hợp

Thứ tự đọc: 1A → 1B ở cột 1, 2A → 2D ở cột 2, 3A → 3E ở cột 3; mũi tên next batch từ 3E quay về cột 1 và mũi tên load weights đi xuống băng 5 (5A → 5C). Cột 4 không phải bước kế tiếp: 4A, 4B tiết kiệm bộ nhớ, còn 4C–4G là các phương pháp huấn luyện thay thế nhau. Di chuột hoặc bấm vào từng ô để đọc pop-over.

Sơ đồ kiến trúc huấn luyện LLM gồm 22 ô từ 1A đến 5C
4F4 · Scale & Training Methods
teacher soft labels → student

4F · Distillation

Mô hình nhỏ (student) học khớp phân phối xác suất của một mô hình lớn (teacher).

Nhận gì
Một mô hình teacher (lớn, đã huấn luyện) và một mô hình student nhỏ hơn, cùng dữ liệu.
Làm gì, vì sao
Student không chỉ học nhãn cứng mà học khớp phân phối xác suất mềm (soft label) của teacher, đo bằng KL (độ lệch giữa hai phân phối). Nhiệt độ T làm phân phối phẳng hơn để lộ thêm thứ tự ưu tiên giữa các token.
Ra gì
Một student nhỏ, chạy nhanh hơn, bắt chước teacher. Checkpoint student dùng để suy luận.
Ví dụ, cách đọc ô
Nhãn ô: teacher soft labels → student. Ví dụ trong lab: teacher cho token đúng xác suất 0.996 còn nhãn cứng chỉ nói là 1; ở T = 2 con số đó thành 0.802 và phần còn lại lộ ra.
Lưu ý
Chất lượng student bị chặn bởi teacher và dữ liệu. Có biến thể distillation ở mức câu trả lời (response distillation), khi student học từ văn bản do teacher sinh ra.
Sơ đồ luồng (6 bước)
  1. Tạo tập prompt đại diện và tách tập đánh giá

    Prompt dùng để sinh dữ liệu và prompt dùng để đánh giá phải là hai tập khác nhau.

  2. Teacher sinh câu trả lời

    Ghi prompt, output và cấu hình sinh; có thể lấy nhiều ứng viên cho mỗi prompt.

  3. Kiểm tra và lọc chuỗi

    Loại trùng, sai và sai định dạng bằng bộ kiểm tra; giữ dữ liệu còn đại diện cho tác vụ.

  4. Chuẩn bị input và nhãn cho student

    Dùng tokenizer và template của student; kiểm tra chuỗi bị cắt cụt và áp mặt nạ câu trả lời.

  5. Fine-tune student rồi đánh giá độc lập

    Bước cập nhật giống SFT; kết quả đo trên prompt chưa thấy bằng đáp án độc lập.

  6. Phục vụ chỉ student

    Teacher không nằm trong đường phục vụ cuối; student chạy như mọi checkpoint.

Mã Mermaid
flowchart TD
  step1["Tạo tập prompt đại diện và tách tập đánh giá"]
  step2["Teacher sinh câu trả lời"]
  step3["Kiểm tra và lọc chuỗi"]
  step4["Chuẩn bị input và nhãn cho student"]
  step5["Fine-tune student rồi đánh giá độc lập"]
  step6["Phục vụ chỉ student"]
  step1 --> step2
  step2 --> step3
  step3 --> step4
  step4 --> step5
  step5 --> step6

3Giải pháp

Bài toán: có teacher giỏi nhưng không chạy được teacher mọi lúc, cũng không có logits

Nhiều teacher mạnh chỉ truy cập được qua giao diện văn bản (không xuất logits), hoặc có tokenizer khác student, hoặc quá lớn để nạp cạnh student lúc huấn luyện. Response distillation bỏ các ràng buộc đó: teacher chạy một lần để sinh dữ liệu, sau đó phần còn lại là fine-tuning quen thuộc. Đổi lại, student chỉ nhận được một đáp án cho mỗi mẫu chứ không thấy độ phân vân của teacher giữa các lựa chọn, nên mức thông tin mỗi mẫu ít hơn chưng cất logits.

Khái niệm tối thiểu cần nắm trước khi đi vào các bước

Prompt là yêu cầu gửi cho teacher; ứng viên (candidate) là một câu trả lời teacher sinh ra, có thể sinh nhiều ứng viên cho cùng prompt bằng cách lấy mẫu ngẫu nhiên. Bộ kiểm tra (verifier) là phần mềm quyết định một ứng viên đạt hay không, ví dụ so số cuối cùng với đáp án đúng. Tập đánh giá (held-out set) là tập prompt chưa từng dùng để sinh dữ liệu hay cập nhật trọng số. Cách chuyển văn bản thành token, mặt nạ câu trả lời và cross-entropy giống hệt SFT nên không nhắc lại đầy đủ ở đây.

Ví dụ chạy xuyên suốt cả bài

Ta dùng một prompt toán đơn giản, tự chọn để tính được bằng tay: "17 × 6 bằng bao nhiêu?" Đáp án đúng là 102. Teacher sinh bốn ứng viên: A là "17 × 6 = 102.", B là "17 × 6 = 112.", C là "Ta có 17 × 6 = 10 × 6 + 7 × 6 = 60 + 42 = 102." và D lặp lại y hệt A.

Bước 1 · Tạo tập prompt đại diện và tách tập đánh giá

Đầu vào là nguồn câu hỏi của bạn (log sản phẩm, bộ đề, câu hỏi tự viết). Thao tác: chọn prompt đại diện cho cái student sẽ làm lúc phục vụ về tác vụ, độ dài và định dạng, rồi tách ngay một phần làm tập đánh giá không dùng để sinh dữ liệu. Lý do: student chỉ học được từ những gì có trong dữ liệu; nếu prompt đánh giá lọt vào dữ liệu huấn luyện (contamination) thì điểm cuối đẹp giả. Cách kiểm tra: đếm các nhóm tác vụ và độ dài, kiểm tra trùng lặp giữa hai tập.

Bước 2 · Teacher sinh câu trả lời

Chạy teacher trên các prompt của tập huấn luyện với cấu hình sinh đã chọn (temperature, độ dài tối đa), thường lấy nhiều ứng viên cho mỗi prompt. Ghi lại prompt, output và cấu hình sinh để biết sau này student đã học từ đâu. Chi phí sinh thuộc ngân sách huấn luyện, không đổ cho phục vụ. Teacher không nhận gradient ở bước này; nó chỉ decode.

Bước 3 · Kiểm tra và lọc chuỗi

Teacher có thể sinh câu sai, lặp, dài dòng hoặc lỗi định dạng, và student học theo đúng cái đó. Vì vậy cần verifier. Với ví dụ xuyên suốt: verifier so số cuối cùng với 102, giữ A và C, loại B vì 112 sai, và loại D vì trùng A. Trong thực tế verifier có thể là bộ kiểm thử code, bộ chấm đáp án toán, hoặc quy tắc kiểm tra định dạng; còn đánh giá mềm bằng một model khác thì phải ghi rõ tiêu chí.

Cách đọc: đếm số mẫu được giữ và bị loại theo từng nguyên nhân, và kiểm tra các nhóm tác vụ còn đại diện sau khi lọc (loại hết câu khó khiến student chỉ giỏi câu dễ). Có thể trộn mẫu người viết với mẫu của teacher; tỉ lệ tốt phải đo bằng đánh giá chứ không có công thức chung.

Bước 4 · Chuẩn bị input và nhãn cho student

Dữ liệu đã lọc được ghép thành hội thoại qua chat template của student rồi tokenize bằng tokenizer của student, nên teacher và student không cần dùng chung từ điển. Nhãn là câu trả lời đã chọn, với mặt nạ chỉ chấm các token của câu trả lời. Kiểm tra độ dài: ngữ cảnh hoặc output dài của teacher có thể vượt ngân sách của student; chuỗi bị cắt cụt làm hỏng mẫu vì phần đáp án cuối biến mất, nên phải phát hiện và loại hoặc sửa chứ không để nhãn bị cắt âm thầm. Ví dụ minh họa: nếu lời giải của teacher dài 1.800 token nhưng student chỉ có ngân sách 1.024 token thì nhãn cuối bị mất, và model học dừng giữa chừng.

Bước 5 · Fine-tune student rồi đánh giá độc lập

Bước cập nhật giống SFT: forward, cross-entropy có mặt nạ, backward và AdamW trên student. Nếu student fine-tune trên câu trả lời của teacher thì quy trình vừa là response distillation vừa là SFT: hai tên mô tả hai khía cạnh của cùng một lượt huấn luyện, một cái nói nguồn tín hiệu và một cái nói cách cập nhật.

Đánh giá: so student trước và sau trên prompt chưa thấy, bằng đáp án độc lập hoặc bài kiểm thử, theo độ đúng và định dạng, và đo độ trễ cùng độ dài output. Student giống teacher không có nghĩa là đúng. Tính cả chi phí sinh và lọc dữ liệu của teacher vào tổng chi phí.

Phục vụ: chỉ student

Khi triển khai, request chạy trên student, không bắt buộc gọi teacher cho từng câu trả lời. Đường phục vụ giống mọi checkpoint: nạp trọng số, tokenizer và template của student; prefill; decode; dừng và giải mã. Tham khảo phần phục vụ ở bài chưng cất tri thức và bài SFT; điểm cần nhớ là template và token kết thúc phải khớp lúc huấn luyện, và response của student phản ánh những gì nó đã học, kể cả lỗi chép từ teacher.

Kết luận được rút ra và không được rút ra

Có thể kết luận: trên tập đánh giá độc lập đã chọn, student đạt độ đúng và định dạng đo được với chi phí phục vụ nhỏ hơn teacher. Không thể kết luận: student giữ toàn bộ khả năng của teacher. DeepSeek công bố các model DeepSeek-R1-Distill dựa trên Qwen hoặc Llama Dense được fine-tune bằng dữ liệu suy luận từ DeepSeek-R1; ví dụ cho thấy teacher MoE có thể chuyển tín hiệu qua dữ liệu sang student Dense, chứ không phải thu nhỏ trực tiếp từng expert, và cần đọc kết quả của từng checkpoint thay vì giả định.

Thực hành trên Bài Lab tổng hợp

Giai đoạn 11 (Distillation) của Bài Lab tổng hợp nối với giai đoạn 9 (SFT). Hãy tự lọc ví dụ xuyên suốt bằng tay trước, rồi xem lab xử lý dữ liệu teacher thế nào và so độ đúng của student trên tập giữ riêng, không chỉ độ giống teacher.

4Profiling

  • Dữ liệu và độ đúng độc lập

    Đếm mẫu giữ và loại theo nguyên nhân, trùng lặp, độ dài và nhóm tác vụ; kiểm tra tập đánh giá không lẫn vào dữ liệu huấn luyện.

  • Chất lượng và chi phí của student

    So student trước và sau trên prompt chưa thấy theo độ đúng và định dạng; đo độ trễ và độ dài output. Tính cả chi phí sinh và lọc dữ liệu bằng teacher.

  • Mức đa dạng của dữ liệu teacher

    Nếu teacher chỉ tạo một phong cách hẹp, student cũng hẹp theo. Kiểm tra độ đa dạng của câu hỏi và cách trả lời trong tập đã lọc.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Lọc bốn ứng viên

Dùng prompt "17 × 6 bằng bao nhiêu?" và bốn ứng viên A, B, C, D. Hãy dự đoán các mẫu còn lại. Đáp án: giữ A và C; loại B vì sai; loại D vì trùng A. Hệ quả: dữ liệu cuối có hai mẫu, một ngắn và một có lời giải từng bước, và student học cả hai kiểu.

Chuỗi bị cắt cụt

Một lời giải dài của teacher bị cắt khi tokenize cho student, mất dòng "= 102". Tự kiểm tra: bước nào lẽ ra phát hiện lỗi, và hậu quả nếu không? Đáp án: bước kiểm tra độ dài và phần nhãn ở bước 4; nếu không phát hiện, student học các lời giải không có đáp án cuối và có thể không biết dừng đúng chỗ.

DeepSeek-R1-Distill

Các checkpoint công khai minh họa fine-tuning student Dense trên dữ liệu teacher. Điều này không đảm bảo student giữ toàn bộ khả năng của teacher; cần đọc kết quả của từng checkpoint.

Tập hỏi đáp cho một ứng dụng

Teacher tạo vài đáp án cho mỗi câu hỏi, pipeline giữ đáp án đã kiểm tra rồi huấn luyện student. Khi triển khai, request chạy student và không bắt buộc gọi teacher để sinh từng câu trả lời. Tự kiểm tra: tại sao điểm cao trên chính các câu hỏi dùng để sinh dữ liệu không chứng minh gì? Đáp án: student có thể chỉ nhớ lại câu trả lời, nên phải đo trên prompt chưa thấy.

6Thuật ngữ

Response distillation (sequence-level)
Chuyển giao hành vi bằng văn bản teacher viết ra; student học nó bằng huấn luyện có giám sát, không cần logits của teacher.
Synthetic training data
Dữ liệu huấn luyện do model tạo; vẫn cần lọc và kiểm tra, không tự trở thành đáp án đúng.
Candidate (ứng viên)
Một trong nhiều câu trả lời teacher sinh cho cùng một prompt; pipeline chọn giữ hoặc loại từng ứng viên.
Verifier (bộ kiểm tra)
Chương trình hoặc quy tắc kiểm tra một câu trả lời, ví dụ so đáp án cuối với đáp án đúng hoặc chạy bài kiểm thử code.
Contamination
Câu hỏi của tập đánh giá lọt vào dữ liệu huấn luyện, khiến số đo đẹp giả.
Truncation
Cắt chuỗi quá dài khỏi ngân sách ngữ cảnh của student; phần nhãn bị cắt làm hỏng mẫu huấn luyện.
Tokenizer của student
Văn bản teacher được đổi lại thành token ID bằng tokenizer của student, nên hai model có thể khác từ điển và kiến trúc.
Mask câu trả lời
Chỉ token của câu trả lời teacher góp vào loss, còn prompt chỉ làm ngữ cảnh, giống SFT.
Đánh giá độc lập
Đo student bằng đáp án đúng hoặc bài kiểm tra bên ngoài trên prompt chưa thấy, không chỉ đo mức giống teacher.
Glossary (6)
Model weights
Các tham số số học được học và lưu trong checkpoint.
Checkpoint
Bản lưu trạng thái model; phạm vi states phụ thuộc mục đích serving hay resume.
Tokenizer
Bộ chuyển đổi văn bản và chuỗi mã token theo bảng từ vựng.
Logits
Điểm số chưa chuẩn hóa cho các token ứng viên trước khi chọn token.
Latency
Thời gian chờ để nhận một kết quả hoặc một bước kết quả.
Context
Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.

7Bài liên quan

8Nguồn