SmolLM3 - LLM บริบทยาวขนาดเล็กที่รองรับหลายภาษา
(huggingface.co)- โมเดล SmolLM3 เป็น LLM โอเพนซอร์สที่มุ่งทั้งประสิทธิภาพและสมรรถนะในขนาด 3B พารามิเตอร์
- รองรับ 6 ภาษา ได้แก่ อังกฤษ ฝรั่งเศส สเปน เยอรมัน อิตาลี โปรตุเกส และขยายรองรับได้ถึง ความยาวคอนเท็กซ์ 128k
- มี โหมดคู่ (reasoning/non-reasoning) ที่สลับโหมดการให้เหตุผลได้ด้วยแฟลก /think, /no_think
- เปิดเผยทั้ง ขั้นตอนการฝึก ที่หลากหลายอย่าง pretraining, mid-training, post-training รวมถึงชุดข้อมูลและบลูพรินต์ด้านวิศวกรรมทั้งหมด
- ด้านประสิทธิภาพ เหนือกว่า Llama-3.2-3B และ Qwen2.5-3B และมีความสามารถแข่งขันได้ในระดับโมเดล 4B
ภาพรวม
SmolLM3 เป็นโมเดลภาษาขนาดใหญ่แบบโอเพนซอร์สที่มุ่งทั้งประสิทธิภาพและสมรรถนะในระดับ 3B พารามิเตอร์ จุดเด่นสำคัญคือมีขนาดเล็กและเร็ว แต่ยังรองรับทั้ง long-context หลายภาษา และการให้เหตุผลได้ครบถ้วน
- ฝึกด้วย 11 ล้านล้าน (11T) โทเค็น บนขนาด 3B พารามิเตอร์
- ทำผลงานได้ระดับ ล้ำสมัย (SoTA) และแข่งขันกับโมเดล 4B ได้
- โมเดลอินสตรักต์แบบโหมดคู่: รองรับการสลับ reasoning และ non-reasoning ผ่าน /think และ /no_think
- รองรับภาษาอังกฤษ ฝรั่งเศส สเปน เยอรมัน อิตาลี และโปรตุเกส
- รองรับคอนเท็กซ์ได้สูงสุด 128k ด้วย NoPE, YaRN
มีการเปิดเผยสถาปัตยกรรม กระบวนการผสมข้อมูล และสูตรในแต่ละขั้นของการฝึกทั้งหมดอย่างครบถ้วน
Pretraining
สถาปัตยกรรมและการตั้งค่าการฝึก
SmolLM3 ใช้พื้นฐานเป็น transformer decoder และปรับโครงสร้างแบบ Llama เพื่อเพิ่มประสิทธิภาพและยกระดับความสามารถกับบริบทยาว
- Grouped Query Attention(GQA) : ใช้หน่วยความจำได้มีประสิทธิภาพกว่า multi-head attention โดยคงประสิทธิภาพไว้ใกล้เคียงเดิม
- NoPE: ถอด rotary position embedding ออกทุกเลเยอร์ที่ 4 เพื่อปรับปรุงประสิทธิภาพกับคอนเท็กซ์ยาว
- การมาสก์ภายในเอกสาร: มาสก์เพื่อไม่ให้เอกสารต่างกัน attend ถึงกัน ช่วยให้การฝึก long-context เสถียรขึ้น
- ตัด weight decay ออกจาก embedding: เพื่อให้พฤติกรรมการฝึกมีเสถียรภาพ
องค์ประกอบการฝึกคือ:
- global batch 2.36M โทเค็น, sequence length 4096, learning rate 2e-4, AdamW(β1:0.9, β2:0.95), weight decay 0.1, gradient clipping 1
- WSD scheduler: warmup 2000 ขั้น และลดลงแบบเชิงเส้นใน 10% สุดท้าย
- ใช้เฟรมเวิร์ก nanotron สำหรับการฝึกแบบกระจาย, ข้อมูลจาก datatrove, และเครื่องมือประเมิน lighteval
- GPU H100 จำนวน 384 ตัว, ฝึก 24 วัน
การผสมข้อมูลและการฝึกแบบเป็นขั้น
พรีเทรน 3 ระยะ:
- ระยะ 1 (0T→8T) : เว็บ(85%, หลายภาษา 12%), โค้ด(12%), คณิตศาสตร์(3%)
- ระยะ 2 (8T→10T) : เว็บ(75%, หลายภาษา 12%), โค้ด(15%), คณิตศาสตร์(10%) - เพิ่มข้อมูลโค้ดและคณิตศาสตร์คุณภาพสูงกว่าเดิม
- ระยะ 3 (10T→11.1T) : เว็บ(63%, หลายภาษา 12%), โค้ด(24%), คณิตศาสตร์(13%) - อัปแซมเปิลโค้ดและคณิตศาสตร์คุณภาพสูง พร้อมเพิ่มข้อมูล instruction/การให้เหตุผล
สัดส่วนการผสมข้อมูลในแต่ละระยะถูกปรับให้เหมาะสมผ่านการทดลอง ablation จำนวนมาก
หลัง pretraining มีการทำ mid-training เพิ่มเติมเพื่อเสริมสมรรถนะด้าน long-context และ reasoning
Mid-training
การฝึก long-context
หลัง pretraining มีการป้อนเพิ่มอีก 100B โทเค็น เพื่อขยายความยาวคอนเท็กซ์เป็น 2 ขั้น (4k→32k→64k)
- ขยายความยาวด้วยการปรับ RoPE theta
- อัปแซมเปิลข้อมูล คณิตศาสตร์ โค้ด และ reasoning
- ปรับประสิทธิภาพกับซีเควนซ์ยาวด้วย NoPE และ decay mixture
- ระหว่างฝึกใช้ได้ถึง 64k และ ระหว่าง inference ใช้ YaRN เพื่อรองรับได้ถึง 128k
Mid-training สำหรับ reasoning
เพื่อเพิ่มความสามารถในการให้เหตุผล โมเดลถูกนำมาฝึกซ้ำด้วย 35B โทเค็น (เช่น OpenThoughts3-1.2M, Llama-Nemotron-Post-Training-Dataset)
- มุ่งเรียนรู้ความสามารถ reasoning ทั่วไป โดยไม่ยึดโดเมนเฉพาะ
- ใช้เทมเพลต ChatML และ wrapped packing
- รัน 4 epoch (~140B โทเค็น) แล้วบันทึก checkpoint
Post-training
แม้โมเดล reasoning ส่วนใหญ่จะต้องพึ่งกระบวนการ RL แบบปิดหรือซับซ้อน แต่ SmolLM3 สร้างโครงสร้าง dual instruction (reasoning/non-reasoning) ได้ด้วย ข้อมูลเปิดและสูตรที่ชัดเจน
เทมเพลตแชต
- ใส่แฟลก /think, /no_think ใน system prompt เพื่อสลับโหมด reasoning
- มีส่วน XML Tools และ Python Tools แยกต่างหากเพื่อรองรับการเรียกใช้โค้ด/เครื่องมือ
- ใช้ข้อความ system และ metadata(date, knowledge cut-off, reasoning mode) และสามารถ override ได้อย่างยืดหยุ่น
Supervised Finetuning(SFT)
หลัง reasoning mid-training ด้วยข้อมูล 140B ได้ทำ supervised finetuning ด้วย 1.8B โทเค็น (ข้อมูล SFT: การให้เหตุผลเชิงตรรกะ/ไม่ใช้การให้เหตุผล)
- เพื่อชดเชยโดเมน reasoning ที่พบไม่บ่อย มีการสร้างข้อมูล reasoning synthetic โดยใช้ Qwen3-32B
- ใช้เทคนิคอย่าง best-fit decreasing packing เพื่อเพิ่มประสิทธิภาพหน่วยความจำ/การฝึกสูงสุด
- มีแผนเปิดเผยข้อมูลทั้งหมดและสคริปต์การฝึก
Anchored Preference Optimization(APO)
- หลัง SFT มีการจัดแนวโมเดลด้วย APO ซึ่งเป็นรูปแบบดัดแปลงของ DPO โดยอิงจาก Tulu3 preference (non-reasoning) และ คู่ preference synthetic จาก Qwen3-32B/0.6B (reasoning)
- คำนวณ loss จาก triplet prompt + response เพื่อให้ได้ การปรับเหมาะที่เสถียรและผลลัพธ์ที่ดี
- พบว่าผลของ reasoning mid-training ทำให้ประสิทธิภาพ long-context ลดลง จึงแก้ด้วยการ merge โมเดล
การ merge โมเดล
- ใช้ไลบรารี MergeKit ทำ linear merge ระหว่าง checkpoint จาก APO modelsf(0.9) + checkpoint จาก mid-training(0.1)
- กู้คืนประสิทธิภาพ long-context 128k และคงประสิทธิภาพโดยรวมไว้
- ปล่อยโมเดลสุดท้ายจาก checkpoint ที่ดีที่สุด
การประเมิน
โมเดลฐาน
ใน 12 เบนช์มาร์กหลัก ทำผลงานได้ เหนือกว่าโมเดล 3B อื่นอย่างชัดเจน และใกล้เคียงโมเดล 4B
- มีจุดแข็งรอบด้านทั้งความเข้าใจเอกสาร การให้เหตุผล คณิตศาสตร์ และการเขียนโค้ด
- แสดงความสามารถด้านการขยายความยาวได้ชัดเจนใน RULER 64k เป็นต้น
- ยืนยันความสามารถ หลายภาษา ผ่าน Global MMLU, MLMM HellaSwag, Flores-200, Belebele เป็นต้น
- ให้ประสิทธิภาพสม่ำเสมอใน 5 ภาษายุโรปนอกเหนือจากอังกฤษ
โมเดล Dual Instruct / Reasoning
การประเมิน non-reasoning
SmolLM3 ทำได้ดีกว่า Llama3.2-3B Instruct และ Qwen2.5 3B Instruct พร้อมสมดุลทั้งประสิทธิภาพและสมรรถนะในระดับโมเดล reasoning 4B
การประเมิน reasoning
เมื่อเปิด /think ประสิทธิภาพจะเพิ่มขึ้นมากในเบนช์มาร์กส่วนใหญ่
- AIME 2025(36.7% vs 9.3%), LiveCodeBench(30.0% vs 15.2%), GPQA Diamond(41.7% vs 35.7%) และสามารถแก้โจทย์ยากได้
- reasoning ขนาด 3B ที่เทียบชั้น Qwen3 4B ได้ ทั้งด้านการให้เหตุผล คณิตศาสตร์ และการแก้ปัญหาซับซ้อน
โหมดคู่ ช่วยให้เลือกได้ระหว่างความเร็วกับการวิเคราะห์เชิงลึก
แนวทางใช้งานจริง
SmolLM3 รองรับอย่างเป็นทางการใน transformers v4.53.0 ขึ้นไป
- โหลดโมเดล เขียนพรอมป์ต์ และทำ inference ได้ด้วยโค้ดแบบง่าย
- สลับ reasoning/non-reasoning ได้ด้วยแฟลก
/think,/no_thinkใน system prompt
รองรับพารามิเตอร์ xml_tools, python_tools สำหรับการเรียกใช้เครื่องมือ (Agentic)
บทสรุป
SmolLM3 เป็นโมเดลแบบ fully open ขนาด 3B ที่รองรับครบทั้ง long-context หลายภาษา และ reasoning
- เปิดเผยบลูพรินต์ด้านวิศวกรรมทั้งหมด ทั้งสูตรการฝึกในแต่ละขั้น ชุดข้อมูล และบันทึกการฝึก
- ช่วยให้ชุมชนมีส่วนร่วมในการปรับปรุงและตรวจสอบได้สูงสุด
เอกสาร
- โมเดล สคริปต์ ชุดข้อมูล ฯลฯ: HuggingFaceTB/SmolLM3-3B
- งานวิจัย การประเมิน การทำให้เบา เครื่องมือ merge ฯลฯ ดูได้จากลิงก์ GitHub, Hugging Face และลิงก์บทความวิจัยแต่ละรายการ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
llama.cpp) ตอนนี้แทบไม่มีบริษัทไหนนอกจาก Microsoft ที่ยังมอง local AI อย่างจริงจังต่อเนื่อง ปกติผมไม่ค่อยพูดเรื่องแบบนี้ แต่ถึง HF จะเป็นพลเมืองที่ดีมากจริง ๆ การชูจุดเด่นของโมเดลอื่นโดยไม่พูดถึงซูเปอร์สตาร์เลย ก็เหมือนเป็นการเมินต่อ local SoTA ที่อยู่มานานในสายนี้ เพราะงั้นครั้งนี้เลยคิดว่าควรออกมาพูดllama.cppและ inference engine อื่น ๆ เอง ถ้าจะรันให้ใช้คำสั่งนี้./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99