1 คะแนน โดย GN⁺ 2025-07-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โมเดล 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 ความคิดเห็น

 
GN⁺ 2025-07-09
ความคิดเห็นบน Hacker News
  • ดูเหมือนว่าจะทำผลงานระดับ SOTA ได้เกือบทั้งหมดในขนาด 3B และยังเป็นอีกหนึ่งโมเดลหายากที่เปิดครบทั้งโมเดล โค้ด และสูตรการทำซ้ำแบบโปร่งใส ถ้าจะฝึกเองน่าจะต้องใช้เวลา GPU มูลค่าราวหนึ่งล้านดอลลาร์ (คิดจาก 4000 GPU/24 วัน) เอกสารที่แชร์มาอย่างละเอียดก็น่าประทับใจมาก ถือเป็นผลงานที่แข็งแรงและส่งผลบวกต่อวงการ
    • แต่ความจริงคือใช้ H100 จำนวน 384 ตัวรัน 24 วัน ดังนั้นค่าใช้จ่ายจริงไม่ถึงครึ่งของหนึ่งล้านดอลลาร์ด้วยซ้ำ
    • ตอนเช้าลองเอาไปเทียบกับเบนช์มาร์กของ Phi-4-mini อยู่ราว 10 นาทีแล้ว พบว่าแปลกที่โมเดลนี้ไม่ถูกรวมอยู่ในเบนช์มาร์ก และผลโดยรวมก็ดูตามหลังตลอดนะ อ้างอิงไว้ก่อนว่าผมกำลังพัฒนา LLM client อยู่ และเป้าหมายหลักคือทำให้ช่องว่างระหว่าง local กับ cloud เล็กที่สุดเท่าที่ทำได้ (ใช้ llama.cpp) ตอนนี้แทบไม่มีบริษัทไหนนอกจาก Microsoft ที่ยังมอง local AI อย่างจริงจังต่อเนื่อง ปกติผมไม่ค่อยพูดเรื่องแบบนี้ แต่ถึง HF จะเป็นพลเมืองที่ดีมากจริง ๆ การชูจุดเด่นของโมเดลอื่นโดยไม่พูดถึงซูเปอร์สตาร์เลย ก็เหมือนเป็นการเมินต่อ local SoTA ที่อยู่มานานในสายนี้ เพราะงั้นครั้งนี้เลยคิดว่าควรออกมาพูด
  • โมเดลนี้มีขนาดเล็ก (3B) และทำคะแนนเบนช์มาร์กได้ยอดเยี่ยม เหมาะมากกับการดีพลอยบน edge/mobile จึงได้เปรียบกว่า gemma3-4b มาก รองรับทั้งโหมด reasoning และ non-reasoning แบบคู่กัน และยังเปิดเผยวิธีฝึกทั้งหมดแบบครบถ้วน > เปิดตัว SmolLM3 พร้อม engineering blueprint ที่มีทั้งสถาปัตยกรรมอย่างละเอียด กลยุทธ์ pretraining 3 ระยะเพื่อค่อย ๆ ดันประสิทธิภาพตามโดเมน และวิธีสร้าง hybrid reasoning model ปกติถ้าจะได้ผลลัพธ์แบบนี้ต้องใช้เวลาหลายเดือนในการย้อนรอยวิธีทำ แต่เราเปิดเผย methodology ทั้งหมด
  • ผมเป็นคนแก้ปัญหา chat template สำหรับ llama.cpp และ inference engine อื่น ๆ เอง ถ้าจะรันให้ใช้คำสั่งนี้ ./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99
  • ประสิทธิภาพแทบจะไล่ทัน Qwen3 distill แต่ขนาดโมเดลมีแค่ 75% เท่านั้น นี่สุดยอดมาก base model ของ smollm มีคุณภาพดีอยู่แล้ว ผมเลยใช้ fine-tuning มาตลอด และในอนาคตอันใกล้ก็วางแผนจะเอาไปใช้กับ local agent หรือ code completion ด้วย อัลกอริทึม RL ก็ดูน่าสนใจเหมือนกัน ก่อนหน้านี้ผมทำงานกับอัลกอริทึมฝั่ง OpenAI เป็นหลัก แต่คงถึงเวลาต้องเช็ก SOTA ล่าสุดแล้ว (ฝั่งนี้เร็วแบบบ้าคลั่งจริง ๆ ตามแทบไม่ทัน)
  • อยากขอคำแนะนำเรื่องโมเดลเล็กที่เหมาะกับการ fine-tune บนชุดข้อมูล enterprise หลากหลายแบบ ตอนนี้หน่วยธุรกิจของเรากำลังหาโมเดลขนาดเล็กที่รันได้ทั้งบนเบราว์เซอร์และมือถือ โดยอยากหลีกเลี่ยงความยุ่งยากของ RAG และทรัพยากรบนคลาวด์
    • โมเดลเล็กมีจุดอ่อนเรื่องการสะสมความรู้ ผมไม่ค่อยอยากแนะนำให้ใช้ fine-tuning เพื่อยัดความรู้เข้าไปนัก ทางที่ดีกว่าน่าจะเป็นการทำ embedded RAG system ที่ดีพลอยแบบออฟไลน์ได้ด้วย wasm ซึ่งก็มีเคสที่ทำสำเร็จอยู่เหมือนกัน
    • สิ่งสำคัญคือคุณต้องลองหลาย ๆ โมเดลด้วยตัวเองและมีเบนช์มาร์กที่ดี แม้ machine learning จะไม่ใช่สายถนัดของผม แต่ตอนผม fine-tune ด้วยไกด์และเครื่องมือทางการของ Mistral 7B ผลก็ยังไม่ถึงที่หวัง ผมใส่คำถามที่เฉพาะมากจากชุดข้อมูลเข้าไป แต่ไม่ว่าจะแตกแขนงการ fine-tuning ยังไงก็ตอบไม่ได้ดีพอ ถ้าหวังให้โมเดลเรียนรู้ข้อมูลจริง ๆ วิธีผสม vector search + keyword search มีประสิทธิภาพในการดึงบริบทออกมามากกว่า ผมใช้แนวทางแบบ pretraining dataset และคิดว่าการสังเคราะห์ Q&A จากข้อมูลเพื่อเอามาฝึกอาจดีกว่า แต่ไม่มีเวลาพอจะลองถึงขั้นนั้น
    • ผมเคย fine-tune Gemma 3N 2B แล้วผลดีนะ แต่บน S23U โหลดช้า พอขึ้นมาแล้วกลับรันได้ดี ผมยังลองใช้ SmolVLM 256M กับ 500M ด้วย ซึ่งเริ่มทำงานได้เร็วกว่าเยอะและใส่รวมเป็น asset ในแอปได้ ถ้ามีประสบการณ์อยู่บ้างก็ใช้งานได้ดีพอสมควร แต่โมเดลเล็กก็ยังติดข้อจำกัดด้านพารามิเตอร์เลยทำให้ประสิทธิภาพไปได้ไม่ไกล อีกอย่างบน Android ถ้าไฟล์เกิน 2GB จะมีปัญหาเรื่องการบีบอัดจนดีพลอยไม่ได้ ดังนั้นต้องให้ดาวน์โหลดโมเดลแยกต่างหาก และเพราะมันโหลดจากโฟลเดอร์ดาวน์โหลดโดยตรงไม่ได้ ก็ต้องคัดลอกไปไว้ในโฟลเดอร์เฉพาะของแอปอีกที Gemma 3N 2B ขนาด 3.14GB แต่ต้องมีพื้นที่ว่างอย่างน้อย 7GB
    • อยากรู้ว่าจุดประสงค์ที่คุณจะ fine-tune แบบนี้คืออะไร
  • มีบางช่วงที่เหมือนมุกในสเก็ตช์คอเมดี้อังกฤษมาก "นี่บอกว่าเล็ก แต่ก็ยังเป็น large language model เหรอ?" "ใช่ เล็กจริง ๆ" "แล้วมันจะทั้งใหญ่ทั้งเล็กได้ยังไง?" "ถ้าเทียบตามมาตรฐาน large language model ก็ถือว่าเล็ก" "งั้นก็แปลว่ายังใหญ่สินะ?" "ใช่ ค่อนข้างใหญ่" "แล้วใหญ่กว่าอะไร?" "ใหญ่กว่า small language model" "แล้วอย่าง ChatGPT นี่เรียกว่าอะไร ใหญ่ในหมู่ใหญ่เหรอ?" "ถูกต้อง LLLM ไง"
    • ให้อารมณ์คอเมดี้ออสเตรเลีย แบบ Clarke and Dawe/Utopia
    • เกณฑ์มันเปลี่ยนตลอด GPT-2 เคยถูกมองว่าเป็น "large" แต่ตอนนี้มีขนาดแค่ครึ่งเดียวของโมเดลนี้เอง แถมตอนนั้น Sam Altman ยังบอกว่า GPT-2 อันตรายเกินกว่าจะเปิดเผยด้วยซ้ำ สำหรับผม ถ้ารันบนอุปกรณ์ผู้บริโภคไม่ได้ก็ถือว่า "ใหญ่" แล้ว การถกเถียงเรื่องนิยามจึงไม่ค่อยมีความหมาย
    • จะไม่ไปแตะ miniature giant space hamster หรอกนะ (มุกจากเกม BG)
    • สรุปแล้วมันคือ big little planet หรือ small big planet กันแน่ก็ยังงง
  • เท่าที่เคยได้ยินมา โมเดล llama3 fine-tune ได้ค่อนข้างง่าย (ถ้าผมเข้าใจผิด หรือมีโมเดลที่เหมาะกว่านี้ก็ช่วยทักได้) เลยสงสัยว่าความยากในการ fine-tune ของ smollm3 อยู่ระดับไหน พวก MoE LLM ดูเหมือนจะงอแงเป็นพิเศษในเรื่องนี้
  • จุดที่น่าสนใจคือพวกเขาไม่ได้ใช้ RL โดยตรงเอง แต่ fine-tune จาก reasoning trace ของชุดข้อมูลขนาดใหญ่แทน
    • จริง ๆ แล้วใช้วิธีออฟไลน์อย่าง Anchored Preference Optimization มากกว่า อย่างที่เห็นในโปรเจกต์ Open R1 การทำ multitask RL กับโมเดลเล็กไม่ใช่เรื่องง่ายเลย วิธีออฟไลน์จะทำรอบได้เร็วกว่ามากเพราะหัวใจอยู่ที่การคัดและสร้างชุดข้อมูล ซึ่งเหมาะกับสเกลของโมเดลที่เรากำลังทำอยู่
  • งานเยี่ยมมาก ขอแสดงความนับถือถึง anton และทุกคนที่เกี่ยวข้อง หวังว่าจะมีโมเดลขนาด 50~100M พารามิเตอร์ตามมาเรื่อย ๆ ด้วย ผมคิดว่าโมเดลที่จบงานได้เร็วบน CPU แบบกรณีทดสอบ Solve by LLM ก็มีคุณค่ามากพอเหมือนกัน