1 điểm bởi GN⁺ 2025-07-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mô hình SmolLM3 là một LLM mã nguồn mở theo đuổi đồng thời hiệu quả và hiệu năng ở quy mô 3B tham số
  • Hỗ trợ 6 ngôn ngữ gồm tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha, tiếng Đức, tiếng Ý, tiếng Bồ Đào Nha, và hỗ trợ mở rộng tới độ dài ngữ cảnh tối đa 128k
  • Với dual mode (reasoning/non-reasoning), có thể chuyển đổi chế độ suy luận bằng cờ /think, /no_think
  • Cung cấp đầy đủ các giai đoạn huấn luyện đa dạng gồm pretraining, mid-training, post-training cùng toàn bộ bộ dữ liệu đã công khai và blueprint kỹ thuật
  • Về hiệu năng, mô hình vượt Llama-3.2-3BQwen2.5-3B, đồng thời có sức cạnh tranh tương đương các mô hình 4B

Tổng quan

SmolLM3 là một mô hình ngôn ngữ lớn mã nguồn mở theo đuổi đồng thời hiệu quả và hiệu năng ở quy mô 3B tham số. Điểm khác biệt lớn là mô hình nhỏ gọn, nhanh, nhưng vẫn hỗ trợ đầy đủ long-context, đa ngôn ngữ và suy luận.

  • Huấn luyện 11 nghìn tỷ (11T) token với 3B tham số
  • Đạt hiệu năng hàng đầu (SoTA), có thể cạnh tranh với các mô hình 4B
  • Mô hình instruction chế độ kép: hỗ trợ chuyển giữa reasoning và non-reasoning qua /think và /no_think
  • Hỗ trợ tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha, tiếng Đức, tiếng Ý, tiếng Bồ Đào Nha
  • Áp dụng NoPE, YaRN để đạt tối đa 128k context

Toàn bộ kiến trúc, cách phối trộn dữ liệu và recipe theo từng giai đoạn trong quá trình huấn luyện đều được công khai hoàn toàn.

Pretraining

Kiến trúc và thiết lập huấn luyện

SmolLM3 dựa trên transformer decoder, đồng thời điều chỉnh cấu trúc Llama để nâng cao hiệu quả và hiệu năng trên ngữ cảnh dài.

  • Grouped Query Attention (GQA): hiệu quả bộ nhớ hơn multi-head attention nhưng vẫn giữ hiệu năng tương đương
  • NoPE: loại bỏ rotary position embedding ở mỗi lớp thứ 4 để cải thiện hiệu năng ngữ cảnh dài
  • Masking trong tài liệu: dùng masking để các tài liệu khác nhau không attention lẫn nhau, giúp hỗ trợ huấn luyện long-context ổn định
  • Loại bỏ weight decay ở embedding: đảm bảo hành vi huấn luyện ổn định

Cấu hình huấn luyện:

  • Global batch 2.36M token, độ dài chuỗi 4096, learning rate 2e-4, AdamW(β1:0.9, β2:0.95), weight decay 0.1, gradient clipping 1
  • WSD scheduler: warmup 2000, giảm tuyến tính ở 10% cuối
  • Dùng framework phân tán nanotron, dữ liệu từ datatrove, công cụ đánh giá lighteval
  • 384 GPU H100, huấn luyện trong 24 ngày

Phối trộn dữ liệu và huấn luyện theo giai đoạn

Pretraining gồm 3 giai đoạn:

  • Giai đoạn 1 (0T→8T): web (85%, 12% đa ngôn ngữ), code (12%), toán (3%)
  • Giai đoạn 2 (8T→10T): web (75%, 12% đa ngôn ngữ), code (15%), toán (10%) - bổ sung dữ liệu code và toán chất lượng cao hơn
  • Giai đoạn 3 (10T→11.1T): web (63%, 12% đa ngôn ngữ), code (24%), toán (13%) - upsample code và toán chất lượng cao, đưa thêm dữ liệu instruction/suy luận

Tỷ lệ phối trộn dữ liệu ở mỗi giai đoạn được tối ưu hóa thông qua nhiều thí nghiệm ablation.

Sau pretraining, mô hình tiếp tục được áp dụng quy trình mid-training để tăng cường hiệu năng long-context và reasoning.

Mid-training

Huấn luyện long-context

Sau pretraining, mô hình được huấn luyện thêm với 100B token để tăng độ dài ngữ cảnh qua 2 bước (4k→32k→64k).

  • Mở rộng độ dài bằng cách điều chỉnh RoPE theta
  • Upsample dữ liệu toán, code, suy luận
  • Tối ưu hiệu năng chuỗi dài bằng NoPE và decay mixture
  • Khi huấn luyện hỗ trợ tới 64k, và áp dụng YaRN khi suy luận để xử lý tới 128k

Mid-training cho reasoning

Để tăng khả năng suy luận, mô hình được huấn luyện lại bằng 35B token (OpenThoughts3-1.2M, Llama-Nemotron-Post-Training-Dataset, v.v.).

  • Học năng lực reasoning tổng quát, không thiên về miền cụ thể
  • Sử dụng template ChatML, wrapped packing
  • Chạy 4 epoch (~140B token) rồi lưu checkpoint

Post-training

Phần lớn các mô hình reasoning yêu cầu quy trình RL đóng hoặc phức tạp, nhưng SmolLM3 triển khai cấu trúc dual instruction (suy luận/không suy luận) bằng dữ liệu công khai và recipe rõ ràng.

Chat template

  • Đưa cờ /think, /no_think vào system prompt để chuyển đổi chế độ reasoning
  • Cung cấp các phần riêng cho XML Tools, Python Tools để hỗ trợ code/tool calling
  • Sử dụng system message, metadata (date, knowledge cut-off, reasoning mode) và có thể override linh hoạt

Supervised Finetuning (SFT)

Sau mid-training với 140B dữ liệu reasoning, mô hình được supervised finetuning bằng 1.8B token (dữ liệu SFT: suy luận logic/không suy luận).

  • Để bổ sung các miền reasoning hiếm, tạo dữ liệu reasoning synthetic bằng Qwen3-32B
  • Tối đa hóa bộ nhớ/hiệu quả bằng best-fit decreasing packing, v.v.
  • Dự kiến công khai toàn bộ dữ liệu và script huấn luyện

Anchored Preference Optimization (APO)

  • Sau SFT, dùng Tulu3 preference (non-reasoning) và các cặp preference synthetic từ Qwen3-32B/0.6B (reasoning) để căn chỉnh mô hình bằng APO, một biến thể của DPO
  • Loss được xây dựng từ triplet prompt + response, đảm bảo tối ưu ổn định và hiệu năng tốt
  • Do ảnh hưởng của reasoning mid-training, hiệu năng long-context bị suy giảm, nên được khắc phục bằng model merging

Model merging

  • Dùng thư viện MergeKit, thực hiện linear merge theo tỷ lệ checkpoint APO modelsoup (0.9) + checkpoint mid-training (0.1)
  • Khôi phục hiệu năng long-context 128k và duy trì hiệu năng tổng thể
  • Phát hành mô hình cuối cùng từ checkpoint tối ưu

Đánh giá

Mô hình base

Trên 12 benchmark chính, mô hình vượt trội các mô hình 3B khác và đạt hiệu năng tiệm cận mô hình 4B

  • Mạnh đồng đều ở hiểu tài liệu, suy luận, toán học và coding
  • Thể hiện rõ năng lực mở rộng độ dài trên RULER 64k và các bài kiểm tra tương tự
  • Chứng minh năng lực đa ngôn ngữ qua Global MMLU, MLMM HellaSwag, Flores-200, Belebele, v.v.
  • Hiệu năng nhất quán trên 5 ngôn ngữ châu Âu ngoài tiếng Anh

Mô hình Dual Instruct / Reasoning

Đánh giá non-reasoning

SmolLM3 vượt Llama3.2-3B Instruct và Qwen2.5 3B Instruct, đồng thời cân bằng tốt giữa hiệu quả và hiệu năng ở cấp độ các mô hình reasoning 4B

Đánh giá reasoning

Khi bật /think, hiệu năng tăng mạnh trên phần lớn benchmark

  • AIME 2025 (36.7% so với 9.3%), LiveCodeBench (30.0% so với 15.2%), GPQA Diamond (41.7% so với 35.7%) và nhiều bài toán khó khác
  • Khả năng suy luận 3B có thể so sánh với Qwen3 4B, gồm reasoning toán học và giải quyết vấn đề phức tạp

Chế độ kép cho phép chọn giữa tốc độ và phân tích chuyên sâu

Hướng dẫn sử dụng thực tế

SmolLM3 được hỗ trợ chính thức từ transformers v4.53.0 trở lên

  • Có thể tải mô hình, viết prompt và chạy suy luận bằng mã đơn giản
  • Có thể chuyển reasoning/non-reasoning bằng cờ /think, /no_think trong system prompt

Hỗ trợ tham số xml_tools, python_tools cho tool calling (Agentic)

Kết luận

SmolLM3 là một mô hình fully open ở quy mô 3B, hỗ trợ đồng thời long-context, đa ngôn ngữ và reasoning.

  • Công khai toàn diện blueprint kỹ thuật như recipe huấn luyện theo từng giai đoạn, dataset, log huấn luyện, v.v.
  • Có thể tối đa hóa sự tham gia của cộng đồng trong việc cải tiến và kiểm chứng

Tài liệu

  • Mô hình, script, dataset, v.v.: HuggingFaceTB/SmolLM3-3B
  • Bài báo, đánh giá, công cụ nén nhẹ, công cụ merging, v.v. tham khảo tại các liên kết GitHub, Hugging Face và bài báo tương ứng

1 bình luận

 
GN⁺ 2025-07-09
Ý kiến trên Hacker News
  • Có cảm giác đây là một mô hình hiếm hoi có thể đạt phần lớn hiệu năng SOTA ở quy mô 3B, đồng thời đường hoàng gia nhập câu lạc bộ các mô hình công khai hoàn toàn, từ code cho tới công thức tái hiện. Nếu tự huấn luyện thì có lẽ sẽ cần lượng thời gian GPU trị giá khoảng 1 triệu USD (theo mức 4000 GPU/24 ngày), và bộ tài liệu chia sẻ rất phong phú cũng gây ấn tượng mạnh; đây được đánh giá là một đóng góp tích cực và vững chắc cho ngành
    • Thực tế là chỉ cần chạy 384 chiếc H100 trong 24 ngày, nên chi phí còn chưa tới một nửa 1 triệu USD
    • Sáng nay tôi đã đối chiếu chéo với benchmark của Phi-4-mini khoảng 10 phút, thấy khá lạ khi mô hình này bị thiếu trong benchmark đó, và nhìn chung kết quả cho thấy nó luôn tụt lại phía sau. Nói thêm là tôi đang phát triển một client LLM, và mục tiêu cốt lõi là thu hẹp tối đa khoảng cách giữa local và cloud (dùng llama.cpp). Hiện giờ ngoài Microsoft ra thì gần như không có công ty nào tiếp tục nghiêm túc với AI local. Bình thường tôi hay bỏ qua những chuyện này, nhưng dù HF thực sự là một công dân rất tốt, việc chỉ nhấn mạnh sự xuất sắc của các mô hình khác mà không nhắc tới siêu sao thì theo tôi là đang dẫn tới việc làm ngơ local SoTA lâu năm trong lĩnh vực này, nên lần này tôi thấy việc lên tiếng là có ý nghĩa
  • Mô hình này nhỏ (3B) nhưng cho hiệu năng benchmark rất tốt. Nó rất hợp để triển khai trên edge/mobile nên có lợi thế lớn so với gemma3-4b. Có hỗ trợ chế độ kép suy luận/không suy luận, và còn công khai hoàn toàn toàn bộ phương pháp huấn luyện> Phát hành SmolLM3 cùng với bản thiết kế kỹ thuật. Bao gồm kiến trúc chi tiết, chiến lược pretraining 3 giai đoạn để dần nâng hiệu năng theo từng domain, cũng như phương pháp xây dựng mô hình suy luận hybrid. Thường để đạt được mức kết quả như vậy phải mất vài tháng reverse engineering, nhưng chúng tôi công khai toàn bộ phương pháp
  • Tôi đã tự sửa vấn đề chat template cho llama.cpp và các inference engine khác; để chạy hãy nhập lệnh sau ./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99
  • Hiệu năng gần chạm mức Qwen3 distill nhưng kích thước mô hình chỉ bằng 75%, điều này rất ấn tượng. Mô hình nền smollm vốn đã chất lượng cao nên tôi cũng dùng ổn định cho fine-tuning, và trong tương lai gần còn định dùng cho local agent hoặc hoàn thành mã. Thuật toán RL cũng trông rất thú vị. Từ trước tới nay tôi chủ yếu làm việc xoay quanh các thuật toán của OpenAI, nhưng có lẽ đã đến lúc kiểm tra lại SOTA mới nhất rồi (thật sự tốc độ ở mảng này điên rồ tới mức khó theo kịp)
  • Tôi muốn biết có khuyến nghị nào về mô hình nhỏ phù hợp để fine-tune trên nhiều bộ dữ liệu enterprise không; bộ phận kinh doanh của chúng tôi đang tìm một mô hình nhỏ có thể chạy trên browser và mobile, và muốn giải quyết bài toán mà không phải vật lộn với RAG và tài nguyên cloud
    • Mô hình nhỏ có điểm yếu trong việc tích lũy tri thức. Tôi không thật sự khuyến nghị cách fine-tune để nhồi kiến thức vào mô hình. Thay vào đó, có vẻ tốt hơn nếu triển khai một hệ thống RAG nhúng có thể chạy offline bằng wasm; đã có những trường hợp thành công theo hướng này
    • Điều quan trọng là tự mình thử nhiều mô hình khác nhau và có benchmark tử tế. ML không phải chuyên môn của tôi, nhưng ngay cả khi fine-tune bằng hướng dẫn và công cụ chính thức của Mistral 7B thì kết quả vẫn không đạt kỳ vọng. Tôi đã đưa vào những câu hỏi rất cụ thể từ dataset, nhưng dù biến thể fine-tune thế nào thì nó vẫn không trả lời đúng. So với kỳ vọng mô hình sẽ học thông tin, thì kết hợp vector search + keyword search hiệu quả hơn nhiều trong việc trích xuất ngữ cảnh. Tôi đã đi theo cách tiếp cận dataset huấn luyện sẵn, và cũng có thể cách tổng hợp Q&A từ dữ liệu rồi huấn luyện sẽ tốt hơn, nhưng tôi không có đủ thời gian để thử tới mức đó
    • Tôi đã fine-tune với Gemma 3N 2B và thấy hiệu năng tốt, chỉ là thời gian tải trên S23U hơi chậm. Khi đã khởi chạy thì chạy ổn. Tôi cũng thử SmolVLM 256M và 500M; chúng khởi động nhanh hơn nhiều và có thể đóng gói như asset trong app, nên nếu có chút kinh nghiệm thì khá dùng được. Tuy vậy các mô hình nhỏ vẫn bị giới hạn hiệu năng do giới hạn tham số. Ngoài ra trên Android, file trên 2GB không thể phân phối do vấn đề nén, nên phải tải mô hình riêng; hơn nữa cũng không thể load trực tiếp từ thư mục download mà phải chép sang thư mục riêng của app. Gemma 3N 2B nặng 3.14GB nên cần ít nhất 7GB dung lượng trống
    • Tôi tò mò mục đích mà bạn muốn đạt được khi fine-tune theo kiểu này là gì
  • Có một đoạn như thể chất liệu cho hài kịch phác thảo Anh quốc: "Cái này bảo là nhỏ mà vẫn là mô hình ngôn ngữ lớn à?" "Vâng, thật sự là nhỏ." "Nhưng làm sao vừa lớn vừa nhỏ được?" "Nếu xét theo tiêu chuẩn mô hình ngôn ngữ lớn thì... nó nhỏ." "Tức là nó lớn đúng không?" "Đúng, khá lớn." "Lớn so với cái gì?" "So với mô hình ngôn ngữ nhỏ." "Thế còn ChatGPT thì là gì? Lớn trong loại lớn à?" "Chính xác. LLLM."
    • Có cảm giác kiểu hài Úc, gợi nhớ phong cách Clarke and Dawe/Utopia
    • Bản thân tiêu chuẩn cũng thay đổi liên tục. GPT-2 từng là "lớn", nhưng giờ chỉ bằng một nửa kích thước mô hình này. Hơn nữa Sam Altman khi đó còn nói ngay cả GPT-2 cũng nguy hiểm đến mức không thể công bố. Theo tiêu chuẩn của tôi, nếu không chạy được trên thiết bị tiêu dùng thì là "lớn", còn tranh cãi về định nghĩa thì không có nhiều ý nghĩa
    • Tôi sẽ không đụng tới chú hamster vũ trụ khổng lồ tí hon (trò đùa từ game BG)
    • Không biết nên gọi là big little planet hay small big planet nữa
  • Theo những gì tôi nghe thì các mô hình llama3 có vẻ khá dễ fine-tune (nếu tôi sai hoặc có mô hình nào tốt hơn ở đây thì cứ chỉ ra). Tôi tò mò độ khó fine-tune của smollm3 ra sao; các LLM MoE có cảm giác đặc biệt thất thường ở khía cạnh đó
  • Điểm thú vị là họ không tự áp dụng RL trực tiếp mà fine-tune chỉ bằng reasoning trace từ một bộ dữ liệu lớn
    • Thực ra họ dùng các phương pháp offline như Anchored Preference Optimization; như đã thấy trong dự án Open R1, áp dụng multi-task RL cho mô hình nhỏ không phải chuyện dễ. Các phương pháp offline lấy việc tuyển chọn/tạo sinh dataset làm trọng tâm nên tốc độ lặp nhanh hơn nhiều. Đây là cách phù hợp với quy mô mô hình mà chúng tôi đang xử lý
  • Công việc rất tuyệt vời, xin gửi sự kính trọng tới anton và những người liên quan. Mong rằng các mô hình cỡ 50~100M tham số cũng sẽ tiếp tục được phát triển. Tôi nghĩ những mô hình có thể chạy xong nhanh trên CPU như test case Solve by LLM vẫn hoàn toàn có ý nghĩa