- Simple Self-Distillation (SSD) là phương pháp giúp mô hình ngôn ngữ lớn cải thiện hiệu năng bằng cách học lại từ chính đoạn mã do nó tự sinh ra, không cần mô hình giáo viên hay học tăng cường
- Trên mô hình Qwen3-30B-Instruct, SSD nâng điểm pass@1 trên LiveCodeBench v6 từ 42.4% lên 55.3%, với mức cải thiện +15.3 điểm phần trăm ở nhóm bài khó
- SSD giảm xung đột giữa độ chính xác và khám phá trong quá trình sinh mã, đồng thời ức chế xác suất đuôi theo ngữ cảnh nhưng vẫn giữ được tính đa dạng hữu ích
- Chỉ điều chỉnh nhiệt độ hay thay đổi chính sách giải mã không thể tái tạo cùng hiệu quả, vì SSD tái định hình chính phân bố nội tại của mô hình
- Đây là quy trình học hậu xử lý đơn giản có thể áp dụng mà không cần dữ liệu hay bước kiểm chứng bên ngoài, đưa ra một lựa chọn thay thế thực tiễn để nâng cao chất lượng sinh mã của LLM
Tự chưng cất đơn giản (Simple Self-Distillation, SSD)
- SSD (Simple Self-Distillation) là phương pháp giúp mô hình ngôn ngữ lớn (LLM) cải thiện hiệu năng bằng cách sử dụng chính đầu ra mã do nó tự sinh ra, không cần mô hình giáo viên, bộ kiểm chứng hay học tăng cường
- Mô hình sinh mẫu với thiết lập nhiệt độ (temperature) và cắt ngưỡng (truncation) nhất định, rồi học lại kết quả đó bằng fine-tuning có giám sát chuẩn (SFT)
- Không cần dữ liệu gán nhãn bên ngoài, mô hình phần thưởng hay môi trường thực thi
- Mô hình Qwen3-30B-Instruct được nâng điểm pass@1 trên LiveCodeBench v6 từ 42.4% lên 55.3% (+12.9 điểm phần trăm, +30% cải thiện tương đối)
- Mức cải thiện lớn nhất xuất hiện ở nhóm bài khó (hard split) với +15.3 điểm phần trăm
- Kết quả này khái quát tốt trên nhiều mô hình 4B, 8B, 30B thuộc cả họ Qwen và Llama
- SSD hoạt động bằng cách làm dịu xung đột chính xác-khám phá (precision-exploration)
- Trong quá trình sinh mã, một số token đòi hỏi độ chính xác cao (“lock”), trong khi số khác cần khám phá đa dạng (“fork”)
- SSD ức chế phần phân bố đuôi không cần thiết theo ngữ cảnh nhưng vẫn giữ lại sự đa dạng hữu ích
1. Bối cảnh nghiên cứu
- Thiếu tín hiệu giám sát chất lượng cao (ví dụ: mã do con người viết) khiến việc cải thiện năng lực sinh mã của LLM bị hạn chế
- Hạn chế của các cách tiếp cận hiện có
- Chưng cất dựa trên mô hình giáo viên: kế thừa giới hạn hiệu năng của chính mô hình giáo viên
- Học tăng cường (RL): cần mô hình phần thưởng và kiểm chứng dựa trên thực thi, đồng thời thiếu ổn định
- Các phương án không giám sát (ví dụ: bỏ phiếu đa số, tối thiểu hóa entropy): có nguy cơ sụp đổ trong huấn luyện dài hạn
- SSD chứng minh rằng có thể cải thiện chỉ bằng đầu ra của chính mô hình, không cần dữ liệu hay kiểm chứng bên ngoài
2. Phương pháp SSD
-
Tổng hợp dữ liệu
- Với tập prompt bài toán X cho trước, lấy mẫu từ mô hình pθ bằng nhiệt độ Ttrain và thiết lập cắt ngưỡng ρtrain (top-k, top-p)
- Đầu ra sinh ra (y) được dùng nguyên trạng làm dữ liệu huấn luyện (DSSD) mà không qua kiểm chứng
- Trong đa số trường hợp, N=1 (một mẫu cho mỗi bài) là đủ
-
Huấn luyện
- Thực hiện fine-tuning có giám sát bằng hàm mất mát cross-entropy chuẩn
- L(θ) = −E(x,y)∼DSSD Σ log pθ(yt | x, y<t)
-
Suy luận
- Giải mã mô hình đã huấn luyện pθ* bằng nhiệt độ đánh giá Teval và thiết lập cắt ngưỡng ρeval
3. Thực nghiệm
-
Cấu hình mô hình
- Llama-3.1-8B-Instruct, Qwen3-4B/30B (Instruct, Thinking) cùng 5 mô hình
- 2 họ mô hình (Llama, Qwen), 3 quy mô (4B, 8B, 30B), 2 kiểu suy luận (Instruct, Thinking)
-
Dữ liệu
- Sử dụng khoảng 10K bài lập trình thi đấu từ bộ dữ liệu rSTARcoder
- Chỉ áp dụng lọc cú pháp đơn giản, không kiểm chứng đáp án đúng/sai
-
Thiết lập huấn luyện
- Dựa trên Megatron-LM, dùng 8×B200 GPU
- Bộ tối ưu AdamW, độ dài chuỗi tối đa 65,536
- Mô hình Instruct huấn luyện 2,500 bước, mô hình Thinking huấn luyện 300 bước
-
Đánh giá
- Dùng LiveCodeBench v6 (LCB v6) làm benchmark chính
- Đánh giá theo pass@1, pass@5 và chia theo độ khó (Easy/Medium/Hard)
4. Kết quả chính
-
Cải thiện hiệu năng tổng thể
- Qwen3-30B-Instruct: 42.4% → 55.3% pass@1 (+12.9 điểm phần trăm)
- Qwen3-4B-Instruct: +7.5 điểm phần trăm, Llama-8B: +3.5 điểm phần trăm
- Các mô hình Thinking cũng tăng +2~3 điểm phần trăm
-
Cải thiện theo độ khó
- Qwen3-30B-Instruct: Easy +6.5 điểm phần trăm / Medium +14.2 điểm phần trăm / Hard +15.3 điểm phần trăm
- Với mô hình Thinking, nhóm Hard cũng là nơi cải thiện lớn nhất
-
Duy trì tính đa dạng
- Mức tăng của pass@5 lớn hơn pass@1 → tính đa dạng sinh đầu ra được duy trì và còn được cải thiện
- Ví dụ: Qwen3-30B-Instruct pass@5 +18.1 điểm phần trăm (Hard +23.0 điểm phần trăm)
-
Khái quát theo miền
- Ngoài lập trình thi đấu, hiệu năng cũng được giữ vững ở các tác vụ toán học, mã tổng quát và hiểu nội dung
5. So sánh chính sách giải mã
-
Chỉ chỉnh nhiệt độ không thể tái tạo hiệu ứng của SSD
- Kết quả quét nhiệt độ trên mô hình gốc: biên độ thay đổi pass@1 chỉ khoảng 1.5–3.0 điểm phần trăm
- Trong cùng điều kiện, SSD cải thiện tới +11.8 điểm phần trăm trên Qwen3-30B-Instruct
- Khoảng cách này đặc biệt lớn ở bài Hard và chỉ số pass@5
- SSD thay đổi chính phân bố nội tại của mô hình, nên không thể thay thế chỉ bằng điều chỉnh giải mã đơn thuần
6. Tương tác siêu tham số
- Tích của nhiệt độ huấn luyện (Ttrain) và nhiệt độ đánh giá (Teval), tức Teff = Ttrain × Teval, là yếu tố quyết định hiệu năng
- Hiệu năng cao nhất xuất hiện quanh Teff ≈ 1.2
- Ttrain càng cao thì mô hình càng nhạy với thay đổi của Teval
- Thêm cắt ngưỡng (truncation) giúp nâng trần hiệu năng
- Thiết lập tối ưu: Ttrain=2.0, Teval=1.1, top-k=10 → pass@1 49.7% (+7.3 điểm phần trăm)
- Cắt ngưỡng mang lại cải thiện bổ sung nhờ loại bỏ phần đuôi xác suất thấp
7. Cơ chế hoạt động của SSD
-
Xung đột chính xác-khám phá (Precision–Exploration)
- Lock: vị trí mà đáp án gần như cố định về mặt cú pháp → cần nhiệt độ thấp
- Fork: vị trí có thể tồn tại nhiều cách giải → cần nhiệt độ cao
- Rất khó để một mức nhiệt độ duy nhất thỏa mãn đồng thời cả hai yêu cầu
-
Vai trò của SSD
- Ở Lock, SSD ức chế xác suất đuôi để tăng độ chính xác
- Ở Fork, SSD làm phẳng xác suất giữa các ứng viên hàng đầu để duy trì tính đa dạng khám phá
- Kết quả là mô hình thực hiện tái định hình phân bố phụ thuộc ngữ cảnh
8. Kiểm chứng thực nghiệm
-
Thí nghiệm trong môi trường mô phỏng
- Áp dụng SSD trong môi trường đơn giản có cấu trúc 1 lần Fork + 3 lần Lock
- Sau SSD, xác suất thành công tăng lên và khoảng nhiệt độ tối ưu được mở rộng
- Điều này xác nhận rằng huấn luyện và giải mã bổ trợ cho nhau
-
Phân tích trên mô hình thực
- Sau SSD, xác suất tích lũy của các token hàng đầu tăng, còn xác suất đuôi giảm
- Ngay cả ở Teval cao, số lượng ứng viên hàng đầu hiệu quả tăng và entropy tăng
- Nói cách khác, SSD đồng thời đạt được loại bỏ phần đuôi và mở rộng phân bố phần đầu
9. Phân tích lý thuyết
- Hàm mất mát huấn luyện của SSD được phân rã thành ba thành phần
- Support Compression: loại bỏ xác suất đuôi
- Within-Support Reshaping: tái định hình phân bố trong phần hỗ trợ
- Alignment to Base Model: duy trì căn chỉnh với mô hình gốc
- Ở Lock, thành phần thứ nhất chiếm ưu thế → loại bỏ đuôi
- Ở Fork, thành phần thứ hai phát huy tác dụng → làm phẳng phân bố phần đầu
- Entropy tổng thể giảm, nhưng entropy khám phá hữu ích vẫn được giữ lại
- Việc chỉ điều chỉnh giải mã đơn thuần không thể thực hiện kiểu tái định hình theo từng ngữ cảnh này
10. Thí nghiệm với dữ liệu bất thường
- Với Ttrain=2.0, không cắt ngưỡng, có tới 62% dữ liệu sinh ra là nhiễu vô nghĩa (gibberish)
- Dù vậy, sau khi áp dụng SSD
- pass@1: 42.4% → 48.1% (+5.7 điểm phần trăm)
- pass@5: 53.5% → 64.0% (+10.5 điểm phần trăm)
- Ở bài Hard, tăng +7.3 điểm phần trăm / +13.8 điểm phần trăm
- Điều này cho thấy SSD có thể tạo ra cải thiện không phải nhờ chất lượng đáp án đúng, mà nhờ học cấu trúc phân bố
Kết luận
- Simple Self-Distillation (SSD)
- giúp cải thiện hiệu năng sinh mã chỉ bằng đầu ra của chính mô hình, không cần giáo viên hay kiểm chứng bên ngoài
- giảm xung đột giữa độ chính xác và khám phá, đồng thời đạt được cải thiện có tính khái quát thông qua tái định hình phân bố
- SSD là một phương pháp post-training đơn giản nhưng mạnh mẽ, có thể áp dụng ở giai đoạn hậu huấn luyện,
và đưa ra một lựa chọn thay thế thực tiễn để nâng cao chất lượng sinh mã của LLM
1 bình luận
Ý kiến trên Hacker News
Điều khiến bài báo này thú vị là nó đã hiện thực hóa khái niệm giải mã nhận biết ngữ cảnh (context-aware decoding)
Bài viết giải thích rằng trong quá trình sinh mã, các điểm ‘fork’ (nhánh sáng tạo nơi có nhiều cách diễn giải) và điểm ‘lock’ (quyết định cú pháp đòi hỏi độ chính xác) xuất hiện xen kẽ
Điều ấn tượng là kỹ thuật SSD(Simple Self-Distillation) cải thiện thứ hạng của token tối ưu trong cả hai tình huống, giúp mô hình hoạt động sáng tạo hơn khi cần khám phá và chính xác hơn khi cần độ chuẩn xác
Ngay cả bộ não con người cũng đã được nghiên cứu hàng nghìn năm mà vẫn còn nhiều phần chưa thể lý giải
Ngay cả emergent behavior của luồng giao thông cũng chỉ đến gần đây mới được hiểu rõ
Vì vậy việc tiếp tục khám phá các đặc tính mới của LLM là điều tự nhiên
Nếu dùng lấy mẫu dựa trên ngữ pháp hoặc grammar-aware decoding, thì những token duy nhất theo ngữ pháp có thể được chèn thẳng vào mà không cần gọi mô hình
Nhưng trong các hệ thống đang được dùng rộng rãi hiện nay, cách này hầu như không được áp dụng
Tôi tự hỏi liệu có thể có một cách tiếp cận tổng quát hơn, trong đó các lựa chọn quan trọng dùng nhiều tính toán hơn, còn các token hiển nhiên thì dùng ít tính toán hơn
Tôi đang cân nhắc liệu khi suy luận có nên áp dụng cùng cách đó không
Trong mã, điểm khác biệt chỉ là cấu trúc rõ ràng hơn; còn cơ chế fork/lock thì dùng được trên nhiều miền bài toán khác nhau
Self-Distillation có vẻ là hướng đi cốt lõi cho sự phát triển của LLM
Nghiên cứu Self-Distillation Fine-Tuning(SDFT) do nhóm MIT và ETH công bố đã cho thấy hiệu quả cao
SSD(Simple Self-Distillation) trong bài này thực chất gần như là phần nối dài của hướng đó, chỉ khác tên gọi
Cái tên SSD cũng gây rối vì trùng với SSD(ổ lưu trữ thể rắn)
Tôi ước gì bài này thừa nhận rõ hơn nguồn gốc và phả hệ từ nghiên cứu SDFT gốc
Gần đây tôi xem một video chạy Gemma 4 cục bộ với tốc độ 50 token mỗi giây
Nó đã cho thấy năng lực ở mức Sonnet 3x~4
Nếu cộng thêm các kỹ thuật như SSD, có lẽ đến khoảng năm 2028 các mô hình code rẻ mà mạnh sẽ trở nên phổ biến
Các lập trình viên lành nghề rất có thể sẽ chạy mô hình riêng như một trình chuyển mã không tất định biến ngôn ngữ tự nhiên thành mã
Bây giờ cảm giác như đang ‘xây nhà trên đống đinh’
Giả thuyết cốt lõi của SSD là xung đột precision–exploration tương tự với vấn đề mà Adaptive Decoding đang cố giải quyết
Có vẻ hiển nhiên rằng trong lúc suy luận, những thời điểm cần tư duy sáng tạo thì phải dùng temperature cao, còn những thời điểm cần độ chính xác cú pháp thì phải dùng temperature thấp
Chỉ cần lặp đi lặp lại câu hỏi “đây có phải giải pháp thanh nhã nhất không?” thôi cũng đã cải thiện đầu ra của LLM một cách thấy rõ
Nếu mô hình có thể dễ dàng tìm ra câu trả lời tốt hơn như thế, thì tại sao nó không làm vậy ngay từ đầu?
Trước tiên phải tạo ra một lời giải chạy được, rồi tinh chỉnh nhiều lần thì cuối cùng mới trở nên gọn gàng
Có người suy nghĩ nửa ngày rồi mới viết mã, có người triển khai ngay lời giải đầu tiên
LLM hiện tại gần với kiểu thứ hai hơn
Nghiên cứu này rất có thể sẽ dẫn tới các mô hình sinh mã tốt hơn
Nhưng chúng ta vẫn chưa thật sự hiểu điều gì đang diễn ra trong không gian nhiều chiều
Rốt cuộc, chúng ta vẫn đang khám phá theo kiểu ‘ném thử rồi xem có dính không’
Những đột phá trong machine learning thường trông khá đơn giản từ bên ngoài
Transformer cũng vậy, và SSD lần này cũng thế
Có lẽ là vì chúng ta vẫn chưa có được nền tảng lý thuyết đủ sâu
Sự phức tạp nhiều khi là tín hiệu cho thấy mức độ hiểu biết còn thiếu
Theo kinh nghiệm lập trình của tôi, đây là một quy luật khá đáng tin
Trớ trêu thay, Apple vẫn công bố nghiên cứu AI còn OpenAI thì không
Có người tóm tắt bài báo này là “một mô hình được fine-tune để chỉ cho ra kết quả tốt trên benchmark code”, nhưng thực tế không phải vậy
Sau đó, mô hình với thiết lập giải mã đã điều chỉnh (temp, top-k) cho kết quả tốt hơn bản gốc
Nói cách khác, đây không phải fine-tune để bám benchmark đơn thuần mà là cải thiện hiệu năng dựa trên chính đầu ra của mô hình
Có thể ví nghiên cứu này với luyện tập golf
Sau khi đánh bóng hàng nghìn lần để tự động hóa cú swing cơ bản, người ta sẽ có thể tự tin thử các cú đánh sáng tạo và mạo hiểm hơn trong thi đấu thực tế
SSD cũng là một cách tiếp cận như vậy: củng cố các mẫu nền tảng để tạo thêm dư địa cho những lựa chọn sáng tạo