jingyaogong/minimindPublic

๐Ÿง ใ€Œๅคงๆจกๅž‹ใ€2ๅฐๆ—ถๅฎŒๅ…จไปŽ0่ฎญ็ปƒ64M็š„ๅฐๅ‚ๆ•ฐLLM๏ผTrain a 64M-parameter LLM from scratch in just 2h!

AI summary: A lightweight, from-scratch implementation of an LLM training pipeline.

Stars
54.4K
+84 today
Forks
7.1K
Watchers
248
Open issues
25
Open PRs
23
Contributors
~12
Commits
360
Branches
2

PythonApache-2.0Created Jul 27, 2024Last push 1d agoLatest release v2+339 stars this week+413 this month

Star history

since Aug 25, 2024
020K40KAug 2024Apr 2025Dec 2025Aug 2026
54.4K stars as of Aug 7, 2026, tracked back to Aug 25, 2024. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 1 commit2025-10-17: 3 commits2025-10-18: 1 commit2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 3 commits2025-10-22: 0 commits2025-10-23: 12 commits2025-10-24: 2 commits2025-10-25: 0 commits2025-10-26: 3 commits2025-10-27: 1 commit2025-10-28: 1 commit2025-10-29: 3 commits2025-10-30: 6 commits2025-10-31: 1 commit2025-11-01: 0 commits2025-11-02: 1 commit2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 2 commits2025-11-07: 1 commit2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 1 commit2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 1 commit2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 2 commits2025-11-19: 2 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 1 commit2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 2 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 1 commit2025-12-06: 1 commit2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 1 commit2025-12-10: 0 commits2025-12-11: 1 commit2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 1 commit2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 2 commits2025-12-23: 1 commit2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 1 commit2025-12-28: 1 commit2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 8 commits2026-01-01: 1 commit2026-01-02: 1 commit2026-01-03: 0 commits2026-01-04: 1 commit2026-01-05: 2 commits2026-01-06: 3 commits2026-01-07: 4 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 1 commit2026-01-14: 2 commits2026-01-15: 2 commits2026-01-16: 0 commits2026-01-17: 2 commits2026-01-18: 2 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 2 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 3 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 3 commits2026-03-25: 0 commits2026-03-26: 2 commits2026-03-27: 2 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 1 commit2026-04-01: 1 commit2026-04-02: 2 commits2026-04-03: 0 commits2026-04-04: 2 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 5 commits2026-04-10: 2 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 3 commits2026-04-20: 0 commits2026-04-21: 2 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 2 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 3 commits2026-04-28: 1 commit2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 1 commit2026-05-02: 0 commits2026-05-03: 1 commit2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 3 commits2026-05-07: 1 commit2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 1 commit2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 1 commit2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 1 commit2026-06-01: 1 commit2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 1 commit2026-07-22: 0 commits2026-07-23: 2 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
139 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    54,439 stars

  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What minimind does

minimind is a minimal implementation of a Large Language Model architecture and training pipeline built from scratch. It is designed to be highly readable and educational, stripping away the complexity of production-grade frameworks. The project covers the core components of transformer architecture, tokenization, and the training loop, making it easier for learners to grasp the fundamentals. It provides a complete end-to-end example of how language models operate under the hood.

It is primarily for students, educators, and ML enthusiasts wanting to understand the inner workings of LLMs. Developers looking for a simple starting point to build custom toy models will also benefit from it.

  • From-scratch transformer architecture: It implements the transformer model without relying on heavy ML libraries.
  • Minimalist training loop: It provides a straightforward script for pretraining on custom datasets.
  • Educational code structure: The code is heavily commented and structured for readability.
  • Lightweight package dependencies: It requires minimal setup and external packages to run.
  • End-to-end example generation: It includes tokenization, modeling, and text generation.

Where teams use it

LLM Fundamentals

Studying the bare-bones implementation of a transformer-based language model.

Algorithm Experimentation

Testing modifications to the core attention mechanism or architecture.

Educational Demonstrations

Teaching the concepts of LLMs in academic or tutorial settings.

Custom Toy Models

Training very small, specific models for niche applications.

Getting started: git clone https://github.com/jingyaogong/minimind.git

README

master branch

logo

visitors GitHub Repo stars GitHub Code License GitHub last commit GitHub pull request Collection

GitHub Trend

"ๅคง้“่‡ณ็ฎ€"

ไธญๆ–‡ | English

  • ๆญคๅผ€ๆบ้กน็›ฎๆ—จๅœจๅฎŒๅ…จไปŽ 0 ๅผ€ๅง‹๏ผŒไป…็”จ 3 ๅ—้’ฑๆˆๆœฌไธŽ 2 ๅฐๆ—ถ่ฎญ็ปƒๆ—ถ้—ด๏ผŒๅณๅฏ่ฎญ็ปƒๅ‡บ่ง„ๆจก็บฆไธบ 64M ็š„่ถ…ๅฐ่ฏญ่จ€ๆจกๅž‹ MiniMindใ€‚
  • MiniMind ็ณปๅˆ—ๆžๅ…ถ่ฝป้‡๏ผŒไธป็บฟๆœ€ๅฐ็‰ˆๆœฌไฝ“็งฏ็บฆไธบ GPT-3 ็š„ $\frac{1}{2700}$๏ผŒๅŠ›ๆฑ‚่ฎฉๆ™ฎ้€šไธชไบบ GPU ไนŸ่ƒฝๅฟซ้€ŸๅฎŒๆˆ่ฎญ็ปƒไธŽๅค็Žฐใ€‚
  • ้กน็›ฎๅŒๆ—ถๅผ€ๆบไบ†ๅคงๆจกๅž‹็š„ๆž็ฎ€็ป“ๆž„ไธŽๅฎŒๆ•ด่ฎญ็ปƒ้“พ่ทฏ๏ผŒ่ฆ†็›– MoEใ€ๆ•ฐๆฎๆธ…ๆด—ใ€้ข„่ฎญ็ปƒ๏ผˆPretrain๏ผ‰ใ€็›‘็ฃๅพฎ่ฐƒ๏ผˆSFT๏ผ‰ใ€LoRAใ€RLHF๏ผˆDPO๏ผ‰ใ€RLAIF๏ผˆPPO / GRPO / CISPO๏ผ‰ใ€Tool Useใ€Agentic RLใ€่‡ช้€‚ๅบ”ๆ€่€ƒไธŽๆจกๅž‹่’ธ้ฆ็ญ‰ๅ…จ่ฟ‡็จ‹ไปฃ็ ใ€‚
  • MiniMind ๅŒๆ—ถๆ‹“ๅฑ•ไบ†่ง†่ง‰ๆจกๆ€ๆจกๅž‹ MiniMind-Vใ€ๅคšๆจกๆ€ Omni ๆจกๅž‹ MiniMind-Oใ€ๆ‰ฉๆ•ฃ่ฏญ่จ€ๆจกๅž‹๏ผˆMiniMind-dLM๏ผ‰ใ€็บฟๆ€งๆจกๅž‹๏ผˆMiniMind-Linear๏ผ‰๏ผŒ่ฏฆ่ง Discussionใ€‚
  • ้กน็›ฎๆ‰€ๆœ‰ๆ ธๅฟƒ็ฎ—ๆณ•ไปฃ็ ๅ‡ไปŽ 0 ไฝฟ็”จ PyTorch ๅŽŸ็”Ÿๅฎž็Žฐ๏ผŒไธไพ่ต–็ฌฌไธ‰ๆ–นๅบ“ๆไพ›็š„้ซ˜ๅฑ‚ๆŠฝ่ฑกๆŽฅๅฃใ€‚
  • ่ฟ™ไธไป…ๆ˜ฏไธ€ไธชๅคง่ฏญ่จ€ๆจกๅž‹ๅ…จ้˜ถๆฎตๅผ€ๆบๅค็Žฐ้กน็›ฎ๏ผŒไนŸๆ˜ฏไธ€ๅฅ—้ขๅ‘ LLM ๅ…ฅ้—จไธŽๅฎž่ทต็š„ๆ•™็จ‹ใ€‚
  • ๅธŒๆœ›ๆญค้กน็›ฎ่ƒฝไธบๆ›ดๅคšไบบๆไพ›ไธ€ไธชๅฏๅค็Žฐใ€ๅฏ็†่งฃใ€ๅฏๆ‰ฉๅฑ•็š„่ตท็‚น๏ผŒไธ€่ตทๆ„Ÿๅ—ๅˆ›้€ ็š„ไน่ถฃ๏ผŒๅนถๆŽจๅŠจๆ›ดๅนฟๆณ› AI ็คพๅŒบ็š„่ฟ›ๆญฅใ€‚

ๆณจ๏ผšๆœฌ้กน็›ฎๅŸบไบŽ Apache 2.0 ๅ่ฎฎๅผ€ๆบ๏ผŒๅฎŒๅ…จๅ…่ดนใ€‚โ€œ2 ๅฐๆ—ถโ€ ๆŒ‡ SFT ้˜ถๆฎตๅœจๅ•ๅผ  NVIDIA 3090 ไธŠ่ท‘ๅฎŒ 1 epoch ็š„ๅฎžๆต‹่€—ๆ—ถ๏ผŒโ€œ3 ๅ—้’ฑโ€ ๆŒ‡ๅฏนๅบ”ๆ—ถๆฎต็š„ GPU ็งŸ็”จๆˆๆœฌใ€‚



๐Ÿ“Œ ้กน็›ฎไป‹็ป

ๅคง่ฏญ่จ€ๆจกๅž‹๏ผˆLarge Language Model, LLM๏ผ‰็š„ๅ‡บ็Žฐ๏ผŒๅผ•ๅ‘ไบ†ๅ…จ็ƒ่Œƒๅ›ดๅ†…ๅฏน AI ็š„็ฉบๅ‰ๅ…ณๆณจใ€‚ๆ— ่ฎบๆ˜ฏ ChatGPTใ€DeepSeek ่ฟ˜ๆ˜ฏ Qwen๏ผŒ้ƒฝไปฅๆƒŠ่‰ณ็š„ๆ•ˆๆžœ่ฎฉไบบ็œŸๅˆ‡ๆ„Ÿๅ—ๅˆฐ่ฟ™ๅœบๆŠ€ๆœฏๆตชๆฝฎ็š„ๅ†ฒๅ‡ปๅŠ›ใ€‚็„ถ่€Œ๏ผŒๅŠจ่พ„ๆ•ฐ็™พไบฟๅ‚ๆ•ฐ็š„ๆจกๅž‹่ง„ๆจก๏ผŒไฝฟๅพ—ๅฎƒไปฌๅฏนไธชไบบ่ฎพๅค‡่€Œ่จ€ไธไป…้šพไปฅ่ฎญ็ปƒ๏ผŒ็”š่‡ณ่ฟž้ƒจ็ฝฒ้ƒฝๆ˜พๅพ—้ฅไธๅฏๅŠใ€‚ๆ‰“ๅผ€ๅคงๆจกๅž‹็š„โ€œ้ป‘็›’ๅญโ€๏ผŒ็œŸๆญฃๅŽป็†่งฃๅ…ถๅ†…้ƒจ่ฟไฝœๆœบๅˆถ๏ผŒๆœฌๅบ”ๆ˜ฏไธ€ไปถไปคไบบๅฟƒๆฝฎๆพŽๆนƒ็š„ไบ‹ใ€‚้—ๆ†พ็š„ๆ˜ฏ๏ผŒ็ปๅคงๅคšๆ•ฐๆŽข็ดขๆœ€็ปˆ้ƒฝๆญขๆญฅไบŽไฝฟ็”จ LoRA ็ญ‰ๆŠ€ๆœฏๅฏน็Žฐๆœ‰ๅคงๆจกๅž‹ๅšๅฐ‘้‡ๅพฎ่ฐƒ๏ผŒๅญฆไน ไธ€ไบ›ๆ–ฐๆŒ‡ไปคๆˆ–็‰นๅฎšไปปๅŠกใ€‚่ฟ™ๆ›ดๅƒๆ˜ฏๅœจๆ•™็‰›้กฟๅฆ‚ไฝ•ไฝฟ็”จ 21 ไธ–็บช็š„ๆ™บ่ƒฝๆ‰‹ๆœบโ€”โ€”่™ฝ็„ถๆœ‰่ถฃ๏ผŒๅดๅ็ฆปไบ†็†่งฃ็‰ฉ็†ๆœฌ่ดจ็š„ๅˆ่กทใ€‚

ไธŽๆญคๅŒๆ—ถ๏ผŒ็ฌฌไธ‰ๆ–น็š„ๅคงๆจกๅž‹ๆก†ๆžถไธŽๅทฅๅ…ทๅบ“๏ผŒๅฆ‚ transformers / trl / peft ็ญ‰๏ผŒๅพ€ๅพ€ๅชๆšด้œฒๅ‡บ้ซ˜ๅบฆๆŠฝ่ฑก็š„ๆŽฅๅฃใ€‚ๅช้œ€็Ÿญ็Ÿญๅๅ‡ ่กŒไปฃ็ ๏ผŒๅฐฑๅฏไปฅๅฎŒๆˆโ€œๅŠ ่ฝฝๆจกๅž‹ + ๅŠ ่ฝฝๆ•ฐๆฎ้›† + ๆŽจ็† + ๅผบๅŒ–ๅญฆไน โ€็š„ๅ…จๆต็จ‹่ฎญ็ปƒใ€‚่ฟ™็ง้ซ˜ๆ•ˆๅฐ่ฃ…ๅ›บ็„ถไพฟๅˆฉ๏ผŒๅดไนŸๅœจไธ€ๅฎš็จ‹ๅบฆไธŠๆŠŠๅผ€ๅ‘่€…ไธŽๅบ•ๅฑ‚ๅฎž็Žฐ้š”็ฆปๅผ€ๆฅ๏ผŒๅ‰Šๅผฑไบ†ๆทฑๅ…ฅ็†่งฃ LLM ๆ ธๅฟƒไปฃ็ ็š„ๆœบไผšใ€‚ๆˆ‘่ฎคไธบ โ€œ็”จไน้ซ˜่‡ชๅทฑๆ‹ผๅ‡บไธ€ๆžถ้ฃžๆœบ๏ผŒ่ฟœๆฏ”ๅๅœจๅคด็ญ‰่ˆฑ้‡Œ้ฃž่กŒๆ›ด่ฎฉไบบๅ…ดๅฅ‹โ€๏ผŒ็„ถ่€Œๆ›ด็Žฐๅฎž็š„้—ฎ้ข˜ๆ˜ฏ๏ผŒไบ’่”็ฝ‘ไธŠๅ……ๆ–ฅ็€ๅคง้‡ไป˜่ดน่ฏพ็จ‹ๅ’Œ่ฅ้”€ๅ†…ๅฎน๏ผŒ็”จๆผๆดž็™พๅ‡บใ€ไธ€็ŸฅๅŠ่งฃ็š„่ฎฒ่งฃๅŒ…่ฃ…ๆ‰€่ฐ“็š„ AI ๆ•™็จ‹ใ€‚ๆญฃๅ› ๅฆ‚ๆญค๏ผŒๆœฌ้กน็›ฎ็š„ๅˆ่กทๅฐฑๆ˜ฏๅฐฝๅฏ่ƒฝ้™ไฝŽ LLM ็š„ๅญฆไน ้—จๆง›๏ผŒ่ฎฉๆฏไธชไบบ้ƒฝ่ƒฝไปŽ็†่งฃๆฏไธ€่กŒไปฃ็ ๅผ€ๅง‹๏ผŒไปŽ 0 ๅผ€ๅง‹ไบฒๆ‰‹่ฎญ็ปƒไธ€ไธชๆžๅฐ็š„่ฏญ่จ€ๆจกๅž‹ใ€‚ๆ˜ฏ็š„๏ผŒไปŽ้›ถๅผ€ๅง‹่ฎญ็ปƒ๏ผŒ่€Œไธๆ˜ฏไป…ไป…ๅœ็•™ๅœจๆŽจ็†ๅฑ‚้ขใ€‚ๆœ€ไฝŽๅช้œ€ไธๅˆฐ 3 ๅ—้’ฑ็š„ๆœๅŠกๅ™จๆˆๆœฌ๏ผŒๅฐฑ่ƒฝไบฒ่บซไฝ“้ชŒไปŽ 0 ๅˆฐ 1 ๆž„ๅปบไธ€ไธช่ฏญ่จ€ๆจกๅž‹็š„ๅ…จ่ฟ‡็จ‹ใ€‚

๐Ÿ˜Š ไธ€่ตทๆ„Ÿๅ—ๅˆ›้€ ็š„ไน่ถฃๅง๏ผ


๐ŸŽ‰ ๆœฌ้กน็›ฎๅŒ…ๅซไปฅไธ‹ๅ†…ๅฎน

  • ๆไพ›ๅฎŒๆ•ด็š„ MiniMind-LLM ็ป“ๆž„ไปฃ็ ๏ผˆDense + MoE๏ผ‰๏ผŒๅฝ“ๅ‰ไธป็บฟ็ป“ๆž„ๅฏน้ฝ Qwen3 / Qwen3-MoE ็”Ÿๆ€ใ€‚
  • ๆไพ› Tokenizer ไธŽๅˆ†่ฏๅ™จ่ฎญ็ปƒไปฃ็ ๏ผŒๆ”ฏๆŒ <tool_call>ใ€<tool_response>ใ€<think> ็ญ‰ๆจกๆฟๆ ‡่ฎฐใ€‚
  • ่ฆ†็›– Pretrainใ€SFTใ€LoRAใ€RLHF-DPOใ€RLAIF๏ผˆPPO / GRPO / CISPO๏ผ‰ใ€Tool Useใ€Agentic RLใ€่‡ช้€‚ๅบ”ๆ€่€ƒไธŽๆจกๅž‹่’ธ้ฆ็ญ‰ๅฎŒๆ•ด่ฎญ็ปƒๆต็จ‹ใ€‚
  • ๆไพ›ๅ…จ้˜ถๆฎตๅผ€ๆบๆ•ฐๆฎ๏ผŒ่ฆ†็›–ๆ”ถ้›†ใ€่’ธ้ฆใ€ๆธ…ๆด—ไธŽๅŽป้‡ๅŽ็š„้ซ˜่ดจ้‡ๆ•ฐๆฎ้›†ใ€‚
  • ๅ…ณ้”ฎ่ฎญ็ปƒ็ฎ—ๆณ•ไธŽๆ ธๅฟƒๆจกๅ—ๅ‡ไปŽ 0 ๅฎž็Žฐ๏ผŒไธไพ่ต–็ฌฌไธ‰ๆ–นๆก†ๆžถๅฐ่ฃ…ใ€‚
  • ๅ…ผๅฎน transformersใ€trlใ€peft ็ญ‰ไธปๆตๆก†ๆžถ๏ผŒไปฅๅŠ llama.cppใ€vllmใ€ollama ็ญ‰ๅธธ็”จๆŽจ็†ๅผ•ๆ“ŽไธŽ Llama-Factory ็ญ‰่ฎญ็ปƒๆก†ๆžถใ€‚
  • ๆ”ฏๆŒๅ•ๆœบๅ•ๅกไธŽๅ•ๆœบๅคšๅก๏ผˆDDPใ€DeepSpeed๏ผ‰่ฎญ็ปƒ๏ผŒๆ”ฏๆŒ wandb / swanlab ๅฏ่ง†ๅŒ–ไธŽๅŠจๆ€ๅฏๅœ่ฎญ็ปƒใ€‚
  • ๆ”ฏๆŒๅœจ C-Evalใ€C-MMLUใ€OpenBookQA ็ญ‰็ฌฌไธ‰ๆ–นๆต‹่ฏ„้›†ไธŠ่ฟ›่กŒ่ฏ„ๆต‹๏ผŒๅนถๆ”ฏๆŒ้€š่ฟ‡ YaRN ๅฎž็Žฐ RoPE ้•ฟๆ–‡ๆœฌๅค–ๆŽจใ€‚
  • ๆไพ›ๅ…ผๅฎน OpenAI API ๅ่ฎฎ็š„ๆž็ฎ€ๆœๅŠก็ซฏ๏ผŒไพฟไบŽๆŽฅๅ…ฅ FastGPTใ€Open-WebUI ็ญ‰็ฌฌไธ‰ๆ–น Chat UI๏ผŒๅนถๆ”ฏๆŒ reasoning_contentใ€tool_callsใ€open_thinkingใ€‚
  • ๆไพ›ๅŸบไบŽ Streamlit ็š„ๆž็ฎ€่Šๅคฉ WebUI๏ผŒๆ”ฏๆŒๆ€่€ƒๅฑ•็คบใ€ๅทฅๅ…ท้€‰ๆ‹ฉไธŽๅคš่ฝฎ Tool Callใ€‚
  • ๅŒ…ๅซๅฎž้ชŒๆ€งๆ‹“ๅฑ•๏ผš็ฆปๆ•ฃๆ‰ฉๆ•ฃ่ฏญ่จ€ๆจกๅž‹๏ผˆdLM๏ผ‰ไธŽ็บฟๆ€งๆณจๆ„ๅŠ›ๆจกๅž‹๏ผˆLinear Attention๏ผ‰๏ผŒๅ‡ๅฏๅŸบไบŽไธป็บฟ AR ๆจกๅž‹่ฟ›่กŒ็ปญ่ฎญใ€‚

๐ŸŽ‰ ๅทฒๅ‘ๅธƒๆจกๅž‹ๅˆ—่กจ

ๆจกๅž‹ ๅ‚ๆ•ฐ้‡ Release
minimind-3 64M 2026.04.01
minimind-3-moe 198M-A64M 2026.04.01
minimind2-small 26M 2025.04.26
minimind2-moe 145M 2025.04.26
minimind2 104M 2025.04.26
minimind-v1-small 26M 2024.08.28
minimind-v1-moe 4ร—26M 2024.09.17
minimind-v1 108M 2024.09.01

๐Ÿ“ ๆ›ดๆ–ฐๆ—ฅๅฟ—

๐Ÿ”ฅ 2026-04-01
  • ๅ‘ๅธƒ minimind-3 / minimind-3-moe๏ผš็ป“ๆž„ใ€Tokenizerใ€่ฎญ็ปƒ้“พ่ทฏใ€ๆŽจ็†ๆŽฅๅฃไธŽ้ป˜่ฎค้…็ฝฎๅ…จ้ขๆ›ดๆ–ฐ
  • ็ป“ๆž„ไธป็บฟๅฏน้ฝ Qwen3 / Qwen3-MoE ็”Ÿๆ€๏ผšDense ็บฆ 64M๏ผŒMoE ็บฆ 198M-A64M๏ผŒๅนถ็งป้™คไบ† shared expert ่ฎพ่ฎก
  • ้ป˜่ฎค่ฎญ็ปƒๆ•ฐๆฎๅˆ‡ๆขไธบ pretrain_t2t(_mini).jsonlใ€sft_t2t(_mini).jsonlใ€rlaif.jsonlใ€agent_rl.jsonl ไธŽ agent_rl_math.jsonl
  • ็งป้™ค็‹ฌ็ซ‹ train_reason.py๏ผ›ๆ€่€ƒ่ƒฝๅŠ›็ปŸไธ€็”ฑ chat_template + <think> ไธŽ open_thinking ่‡ช้€‚ๅบ”ๅผ€ๅ…ณๆŽงๅˆถ
  • toolcall ่ƒฝๅŠ›ๅทฒๆททๅ…ฅ sft_t2t / sft_t2t_mini ไธป็บฟๆ•ฐๆฎ๏ผŒ้ป˜่ฎค full_sft ๅณๅ…ทๅค‡ๅŸบ็ก€ Tool Call ่ƒฝๅŠ›๏ผ›ๅŒๆ—ถๆ–ฐๅขž scripts/chat_api.py ็ญ‰ๆŽจ็†็คบไพ‹
  • ๆ–ฐๅขžๅŽŸ็”Ÿ Agentic RL ่ฎญ็ปƒ่„šๆœฌ train_agent.py๏ผŒๆ”ฏๆŒๅคš่ฝฎ Tool-Use ๅœบๆ™ฏไธ‹็š„ GRPO / CISPO
  • RLAIF / Agentic RL ่ฎญ็ปƒๆต็จ‹ๅฎŒๆˆ rollout engine ่งฃ่€ฆ๏ผŒๆ”ฏๆŒๆ›ด็ตๆดปๅœฐๅˆ‡ๆข็”ŸๆˆๅŽ็ซฏ
  • serve_openai_api.py ไธŽ web_demo.py ๆ–ฐๅขž reasoning_content / tool_calls / open_thinking ๆ”ฏๆŒ
  • Tokenizer ๅŸบไบŽ BPE + ByteLevel ๆ›ดๆ–ฐ๏ผŒๅนถๆ–ฐๅขžๅทฅๅ…ท่ฐƒ็”จไธŽๆ€่€ƒๆ ‡่ฎฐ๏ผŒ้ข„็•™ buffer token ไพฟไบŽๅŽ็ปญๆ‰ฉๅฑ•
  • ๆ–ฐๅขž LoRA ๆƒ้‡ๅˆๅนถๅฏผๅ‡บๆต็จ‹๏ผŒๅฏ้€š่ฟ‡ scripts/convert_model.py ๅฐ†ๅŸบ็ก€ๆจกๅž‹ไธŽ LoRA ๆƒ้‡ๅˆๅนถไธบๆ–ฐ็š„ๅฎŒๆ•ดๆจกๅž‹ๆƒ้‡
  • ็ป“ๆž„ๅ›พ่ต„ๆบๆ›ดๆ–ฐ๏ผŒREADME ๅคง้ข็งฏๆ›ดๆ–ฐ
2025-10-24
  • ๐Ÿ”ฅ ๆ–ฐๅขžRLAIF่ฎญ็ปƒ็ฎ—ๆณ•๏ผšPPOใ€GRPOใ€SPO๏ผˆไปŽ0ๅŽŸ็”Ÿๅฎž็Žฐ๏ผ‰
  • ๆ–ฐๅขžๆ–ญ็‚น็ปญ่ฎญๅŠŸ่ƒฝ๏ผšๆ”ฏๆŒ่ฎญ็ปƒ่‡ชๅŠจๆขๅคใ€่ทจGPUๆ•ฐ้‡ๆขๅคใ€wandb่ฎฐๅฝ•่ฟž็ปญๆ€ง
  • ๆ–ฐๅขžRLAIFๆ•ฐๆฎ้›†๏ผšrlaif-mini.jsonl๏ผˆไปŽSFTๆ•ฐๆฎ้šๆœบ้‡‡ๆ ท1ไธ‡ๆก๏ผ‰๏ผ›็ฎ€ๅŒ–DPOๆ•ฐๆฎ้›†๏ผŒๅŠ ๅ…ฅไธญๆ–‡ๆ•ฐๆฎ
  • ๆ–ฐๅขžYaRN็ฎ—ๆณ•๏ผšๆ”ฏๆŒRoPE้•ฟๆ–‡ๆœฌๅค–ๆŽจ๏ผŒๆๅ‡้•ฟๅบๅˆ—ๅค„็†่ƒฝๅŠ›
  • Adaptive Thinking๏ผšReasonๆจกๅž‹ๅฏ้€‰ๆ˜ฏๅฆๅฏ็”จๆ€่€ƒ้“พ
  • chat_templateๅ…จ้ขๆ”ฏๆŒTool Callingๅ’ŒReasoningๆ ‡็ญพ๏ผˆ<tool_call>ใ€<think>็ญ‰๏ผ‰
  • ๆ–ฐๅขžRLAIFๅฎŒๆ•ด็ซ ่Š‚ใ€่ฎญ็ปƒๆ›ฒ็บฟๅฏนๆฏ”ใ€็ฎ—ๆณ•ๅŽŸ็†ๆŠ˜ๅ ่ฏดๆ˜Ž
  • SwanLabๆ›ฟไปฃWandB๏ผˆๅ›ฝๅ†…่ฎฟ้—ฎๅ‹ๅฅฝ๏ผŒAPIๅฎŒๅ…จๅ…ผๅฎน๏ผ‰
  • ่ง„่ŒƒๅŒ–ๆ‰€ๆœ‰ไปฃ็  & ไฟฎๅคไธ€ไบ›ๅทฒ็Ÿฅbugs
2025-04-26
  • ้‡่ฆๆ›ดๆ–ฐ
  • ๅฆ‚ๆœ‰ๅ…ผๅฎนๆ€ง้œ€่ฆ๏ผŒๅฏ่ฎฟ้—ฎ๐Ÿ”—ๆ—งไป“ๅบ“ๅ†…ๅฎน๐Ÿ”—ใ€‚
  • MiniMindๆจกๅž‹ๅ‚ๆ•ฐๅฎŒๅ…จๆ”นๅ๏ผŒๅฏน้ฝTransformersๅบ“ๆจกๅž‹๏ผˆ็ปŸไธ€ๅ‘ฝๅ๏ผ‰ใ€‚
  • generateๆ–นๅผ้‡ๆž„๏ผŒ็ปงๆ‰ฟ่‡ชGenerationMixin็ฑปใ€‚
  • ๐Ÿ”ฅๆ”ฏๆŒllama.cppใ€vllmใ€ollama็ญ‰็ƒญ้—จไธ‰ๆ–น็”Ÿๆ€ใ€‚
  • ่ง„่Œƒไปฃ็ ๅ’Œ็›ฎๅฝ•็ป“ๆž„ใ€‚
  • ๆ”นๅŠจ่ฏ่กจ<s></s>-><|im_start|><|im_end|>
ไธบๅ…ผๅฎน็ฌฌไธ‰ๆ–นๆŽจ็†ๆก†ๆžถllama.cppใ€vllm๏ผŒๆœฌๆฌกๆ›ดๆ–ฐ้œ€ไป˜ๅ‡บไธ€ไบ›ๅฏ่ง‚ไปฃไปทใ€‚
ๆœฌๆฌกๆ›ดๆ–ฐไธๅ†ๆ”ฏๆŒใ€Œ็›ดๆŽฅใ€ๅŠ ่ฝฝ25-04-26ไปฅๅ‰็š„ๆ—งๆจกๅž‹่ฟ›่กŒๆŽจ็†ใ€‚
็”ฑไบŽLlamaไฝ็ฝฎ็ผ–็ ๆ–นๅผไธŽminimindๅญ˜ๅœจๅŒบๅˆซ๏ผŒๅฏผ่‡ดๆ˜ ๅฐ„Llamaๆจกๅž‹ๅŽQKๅ€ผๅญ˜ๅœจๅทฎๅผ‚
minimind2็ณปๅˆ—ๆ—งๆจกๅž‹ๅ‡็ป่ฟ‡ๆƒ้‡ๆ˜ ๅฐ„+๏ผˆๅพฎ่ฐƒ่ฎญ็ปƒ๏ผ‰QKVO็บฟๆ€งๅฑ‚ๆ กๅ‡†ๆขๅค่€Œๆฅใ€‚
ๆœฌๆฌกๆ›ดๆ–ฐๅŽๅฐ†ๆ”พๅผƒๅฏน`minimind-v1`ๅ…จ็ณปๅˆ—็š„็ปดๆŠค๏ผŒๅนถๅœจไป“ๅบ“ไธญไธ‹็บฟใ€‚
More...

2025-02-09

  • ่ฟŽๆฅๅ‘ๅธƒไปฅๆฅ้‡ๅคงๆ›ดๆ–ฐ๏ผŒRelease minimind2 Seriesใ€‚
  • ไปฃ็ ๅ‡ ไนŽๅ…จ้ƒจ้‡ๆž„๏ผŒไฝฟ็”จๆ›ด็ฎ€ๆดๆ˜Žไบ†็š„็ปŸไธ€็ป“ๆž„ใ€‚ ๅฆ‚ๆœ‰ๆ—งไปฃ็ ็š„ๅ…ผๅฎนๆ€ง้œ€่ฆ๏ผŒๅฏ่ฎฟ้—ฎ๐Ÿ”—ๆ—งไป“ๅบ“ๅ†…ๅฎน๐Ÿ”—ใ€‚
  • ๅ…ๅŽปๆ•ฐๆฎ้ข„ๅค„็†ๆญฅ้ชคใ€‚็ปŸไธ€ๆ•ฐๆฎ้›†ๆ ผๅผ๏ผŒๆ›ดๆขไธบjsonlๆ ผๅผๆœ็ปๆ•ฐๆฎ้›†ไธ‹่ฝฝๆททไนฑ็š„้—ฎ้ข˜ใ€‚
  • minimind2็ณปๅˆ—ๆ•ˆๆžœ็›ธๆฏ”MiniMind-V1ๆ˜พ่‘—ๆๅ‡ใ€‚
  • ๅฐ้—ฎ้ข˜๏ผš{kv-cacheๅ†™ๆณ•ๆ›ดๆ ‡ๅ‡†ใ€MoE็š„่ดŸ่ฝฝๅ‡่กกloss่ขซ่€ƒ่™‘็ญ‰็ญ‰}
  • ๆไพ›ๆจกๅž‹่ฟ็งปๅˆฐ็งๆœ‰ๆ•ฐๆฎ้›†็š„่ฎญ็ปƒๆ–นๆกˆ๏ผˆๅŒป็–—ๆจกๅž‹ใ€่‡ชๆˆ‘่ฎค็Ÿฅๆ ทไพ‹๏ผ‰ใ€‚
  • ็ฒพ็ฎ€้ข„่ฎญ็ปƒๆ•ฐๆฎ้›†๏ผŒๅนถๅคงๅน…ๆๅ‡้ข„่ฎญ็ปƒๆ•ฐๆฎ่ดจ้‡๏ผŒๅคงๅน…็ผฉ็Ÿญไธชไบบๅฟซ้€Ÿ่ฎญ็ปƒๆ‰€้œ€ๆ—ถ้—ด๏ผŒๅ•ๅก3090ๅณๅฏ2ๅฐๆ—ถๅค็Žฐ๏ผ
  • ๆ›ดๆ–ฐ๏ผšLoRAๅพฎ่ฐƒ่„ฑ็ฆปpeftๅŒ…่ฃ…๏ผŒไปŽ0ๅฎž็ŽฐLoRA่ฟ‡็จ‹๏ผ›DPO็ฎ—ๆณ•ไปŽ0ไฝฟ็”จPyTorchๅŽŸ็”Ÿๅฎž็Žฐ๏ผ›ๆจกๅž‹็™ฝ็›’่’ธ้ฆๅŽŸ็”Ÿๅฎž็Žฐใ€‚
  • minimind2-DeepSeek-R1็ณปๅˆ—่’ธ้ฆๆจกๅž‹่ฏž็”Ÿ๏ผ
  • minimind2ๅ…ทๅค‡ไธ€ๅฎš็š„่‹ฑๆ–‡่ƒฝๅŠ›๏ผ
  • ๆ›ดๆ–ฐminimind2ไธŽ็ฌฌไธ‰ๆ–นๆจกๅž‹็š„ๅŸบไบŽๆ›ดๅคšๅคงๆจกๅž‹ๆฆœๅ•ๆต‹่ฏ•ๆ€ง่ƒฝ็š„็ป“ๆžœใ€‚

2024-10-05

  • ไธบMiniMindๆ‹“ๅฑ•ไบ†ๅคšๆจกๆ€่ƒฝๅŠ›ไน‹---่ง†่ง‰
  • ็งปๆญฅๅญช็”Ÿ้กน็›ฎminimind-vๆŸฅ็œ‹่ฏฆๆƒ…๏ผ

2024-09-27

  • 09-27ๆ›ดๆ–ฐpretrainๆ•ฐๆฎ้›†็š„้ข„ๅค„็†ๆ–นๅผ๏ผŒไธบไบ†ไฟ่ฏๆ–‡ๆœฌๅฎŒๆ•ดๆ€ง๏ผŒๆ”พๅผƒ้ข„ๅค„็†ๆˆ.bin่ฎญ็ปƒ็š„ๅฝขๅผ๏ผˆ่ฝปๅพฎ็‰บ็‰ฒ่ฎญ็ปƒ้€Ÿๅบฆ๏ผ‰ใ€‚
  • ็›ฎๅ‰pretrain้ข„ๅค„็†ๅŽ็š„ๆ–‡ไปถๅ‘ฝๅไธบ๏ผšpretrain_data.csvใ€‚
  • ๅˆ ้™คไบ†ไธ€ไบ›ๅ†—ไฝ™็š„ไปฃ็ ใ€‚

2024-09-17

  • ๆ›ดๆ–ฐminimind-v1-moeๆจกๅž‹
  • ไธบไบ†้˜ฒๆญขๆญงไน‰๏ผŒไธๅ†ไฝฟ็”จmistral_tokenizerๅˆ†่ฏ๏ผŒๅ…จ้ƒจ้‡‡็”จ่‡ชๅฎšไน‰็š„minimind_tokenizerไฝœไธบๅˆ†่ฏๅ™จใ€‚

2024-09-01

  • ๆ›ดๆ–ฐminimind-v1 (108M)ๆจกๅž‹๏ผŒ้‡‡็”จminimind_tokenizer๏ผŒ้ข„่ฎญ็ปƒ่ฝฎๆฌก3 + SFT่ฝฎๆฌก10๏ผŒๆ›ดๅ……ๅˆ†่ฎญ็ปƒ๏ผŒๆ€ง่ƒฝๆ›ดๅผบใ€‚
  • ้กน็›ฎๅทฒ้ƒจ็ฝฒ่‡ณModelScopeๅˆ›็ฉบ้—ด๏ผŒๅฏไปฅๅœจๆญค็ฝ‘็ซ™ไธŠไฝ“้ชŒ๏ผš
  • ๐Ÿ”—ModelScopeๅœจ็บฟไฝ“้ชŒ๐Ÿ”—

2024-08-27

  • ้กน็›ฎ้ฆ–ๆฌกๅผ€ๆบ

๐Ÿ“Œ ๅฟซ้€Ÿๅผ€ๅง‹

ๆœฌไบบ็š„่ฝฏ็กฌไปถ้…็ฝฎ๏ผˆไพ›ๅ‚่€ƒ๏ผ‰
  • CPU: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
  • RAM: 128 GB
  • GPU: NVIDIA GeForce RTX 3090 (24GB) * 8
  • Ubuntu==20.04
  • CUDA==12.2
  • Python==3.10.16
  • requirements.txt

็ฌฌ0ๆญฅ

# ๅ…‹้š†ไป“ๅบ“ใ€ๅฎ‰่ฃ…ไพ่ต–
git clone --depth 1 https://github.com/jingyaogong/minimind
cd minimind && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

โ…  ๐Ÿš€ ๆจกๅž‹ๆŽจ็†

1' ไธ‹่ฝฝๆจกๅž‹

ๅœจ้กน็›ฎๆ น็›ฎๅฝ•๏ผš

# ๆ–นๅผ1
modelscope download --model gongjy/minimind-3 --local_dir ./minimind-3
# ๆ–นๅผ2
git clone https://huggingface.co/jingyaogong/minimind-3

2' CLI ๆŽจ็†

# ๆ–นๅผ1๏ผšไฝฟ็”จ Transformers ๆ ผๅผๆจกๅž‹
python eval_llm.py --load_from ./minimind-3
# ๆ–นๅผ2๏ผšๅŸบไบŽ PyTorch ๆจกๅž‹๏ผˆ็กฎไฟ./out็›ฎๅฝ•ไธ‹ๆœ‰ๅฏนๅบ”ๆƒ้‡๏ผ‰
python eval_llm.py --load_from ./model --weight full_sft

3'๏ผˆๅฏ้€‰๏ผ‰WebUI

# ๅฏ่ƒฝ้œ€่ฆ`python>=3.10`๏ผŒๅฎ‰่ฃ… `pip install streamlit`
# โš ๏ธ ้กปๅ…ˆๅฐ† transformers ๆ ผๅผๆจกๅž‹ๆ–‡ไปถๅคนๅคๅˆถๅˆฐ ./scripts/ ็›ฎๅฝ•ไธ‹๏ผˆไพ‹ๅฆ‚๏ผšcp -r minimind-3 ./scripts/minimind-3๏ผ‰๏ผŒweb_demo ่„šๆœฌไผš่‡ชๅŠจๆ‰ซๆ่ฏฅ็›ฎๅฝ•ไธ‹ๅŒ…ๅซๆƒ้‡ๆ–‡ไปถ็š„ๅญๆ–‡ไปถๅคน๏ผŒๅฆ‚ไธๅญ˜ๅœจๅˆ™ๆŠฅ้”™
cd scripts && streamlit run web_demo.py

4'๏ผˆๅฏ้€‰๏ผ‰็ฌฌไธ‰ๆ–นๆŽจ็†ๆก†ๆžถ

# ollama
ollama run jingyaogong/minimind-3
# vllm
vllm serve /path/to/model --served-model-name "minimind"

โ…ก ๐Ÿ› ๏ธ ๆจกๅž‹่ฎญ็ปƒ

ๆณจ๏ผšๆๅ‰็กฎ่ฎค Torch ็š„ๅฏ็”จๅŽ็ซฏ
import torch
print(torch.cuda.is_available())

่‹ฅไฝ ่ฎกๅˆ’ไฝฟ็”จ CUDA ่ฎญ็ปƒ๏ผŒๅปบ่ฎฎๅ…ˆ็กฎ่ฎคๅฝ“ๅ‰็Žฏๅขƒๆ˜ฏๅฆๅทฒๆญฃ็กฎ่ฏ†ๅˆซ GPUใ€‚
่‹ฅ cuda ไธๅฏ็”จ๏ผŒไนŸไปๅฏๆ นๆฎ่‡ช่บซ่ฎพๅค‡้€‰ๆ‹ฉ CPU ๆˆ– MPS ่ฟ่กŒ๏ผŒไฝ†่ฎญ็ปƒ้€ŸๅบฆไธŽๅ…ผๅฎนๆ€งไผšๆœ‰้žๅธธๅคง็š„ๅทฎๅผ‚ใ€‚
ๅฆ‚้œ€ๅฎ‰่ฃ…ๆˆ–ๆ›ดๆข PyTorch ็‰ˆๆœฌ๏ผŒๅฏๅ‚่€ƒ torch_stable ไธŽ้“พๆŽฅ

1' ไธ‹่ฝฝๆ•ฐๆฎ

ไปŽไธ‹ๆ–‡ๆไพ›็š„ๆ•ฐๆฎ้›†ไธ‹่ฝฝ้“พๆŽฅ ไธ‹่ฝฝๆ‰€้œ€ๆ•ฐๆฎๆ–‡ไปถ๏ผŒๅนถๆ”พๅ…ฅ ./dataset ็›ฎๅฝ•

ๅฝ“ๅ‰้ป˜่ฎคไป…้œ€ไธ‹่ฝฝ pretrain_t2t_mini.jsonl ไธŽ sft_t2t_mini.jsonl๏ผŒๅณๅฏ่พƒๅฟซๅค็Žฐ MiniMind Zero ๅฏน่ฏๆจกๅž‹ใ€‚ ๅฆ‚ๆœ‰ๆ›ดๅคš้œ€ๆฑ‚๏ผŒไธ‹ๆ–‡ๆไพ›ๅคš็งๆญ้…ๆ–นๆกˆ๏ผŒๅฏๆ นๆฎ่‡ช่บซไปปๅŠก็›ฎๆ ‡ไธŽ GPU ่ต„ๆบ็ตๆดป้€‰ๆ‹ฉใ€‚

2' ๅผ€ๅง‹่ฎญ็ปƒ

๐Ÿ’ก ๆฃ€ๆŸฅ็‚นๆš‚ๅœ็ปญ่ฎญ

ๆ‰€ๆœ‰่ฎญ็ปƒ่„šๆœฌๅ‡ๆ”ฏๆŒๆฃ€ๆŸฅ็‚นไฟๅญ˜ใ€‚ๆทปๅŠ  --from_resume 1 ๅ‚ๆ•ฐๅŽ๏ผŒๅณๅฏ่‡ชๅŠจๆฃ€ๆต‹ๅนถๆขๅค่ฎญ็ปƒ่ฟ›ๅบฆ๏ผš

python train_pretrain.py --from_resume 1
python train_full_sft.py --from_resume 1
# ...

ๆ–ญ็‚น็ปญ่ฎญ่ฏดๆ˜Ž๏ผš

  • ่ฎญ็ปƒ่ฟ‡็จ‹ไผš่‡ชๅŠจๅœจ ./checkpoints/ ็›ฎๅฝ•ไฟๅญ˜ๅฎŒๆ•ดๆฃ€ๆŸฅ็‚น๏ผˆๆจกๅž‹ใ€ไผ˜ๅŒ–ๅ™จใ€่ฎญ็ปƒ่ฟ›ๅบฆ็ญ‰๏ผ‰
  • ๆฃ€ๆŸฅ็‚นๆ–‡ไปถๅ‘ฝๅ๏ผš<ๆƒ้‡ๅ>_<็ปดๅบฆ>_resume.pth๏ผˆๅฆ‚๏ผšfull_sft_512_resume.pth๏ผ‰
  • ๆ”ฏๆŒ่ทจไธๅŒ GPU ๆ•ฐ้‡ๆขๅค๏ผˆ่‡ชๅŠจ่ฐƒๆ•ด step๏ผ‰
  • ๆ”ฏๆŒ wandb ่ฎญ็ปƒ่ฎฐๅฝ•่ฟž็ปญๆ€ง๏ผˆ่‡ชๅŠจๆขๅคๅŒไธ€ไธช run๏ผ‰

้€‚ๅˆ้•ฟๆ—ถ้—ด่ฎญ็ปƒๆˆ–ไธ็จณๅฎš็Žฏๅขƒ๏ผŒๆ— ้œ€ๆ‹…ๅฟƒ่ฎญ็ปƒไธญๆ–ญๅฏผ่‡ด่ฟ›ๅบฆไธขๅคฑ

2.1 ้ข„่ฎญ็ปƒ๏ผˆๅฟ…้กป๏ผ‰

cd trainer && python train_pretrain.py

่ฎญ็ปƒๅŽ๏ผŒๅฐ†ๅพ—ๅˆฐ out/pretrain_*.pth ไฝœไธบ่พ“ๅ‡บๆƒ้‡๏ผˆๅ…ถไธญ * ไธบๆจกๅž‹ dimension๏ผŒ้ป˜่ฎคไธบ 768๏ผ‰

2.2 ๆŒ‡ไปคๅพฎ่ฐƒ๏ผˆๅฟ…้กป๏ผ‰

cd trainer && python train_full_sft.py

่ฎญ็ปƒๅŽ๏ผŒๅฐ†ๅพ—ๅˆฐ out/full_sft_*.pth ไฝœไธบ่พ“ๅ‡บๆƒ้‡๏ผˆๅ…ถไธญ full ่กจ็คบๅ…จๅ‚ๆ•ฐๅพฎ่ฐƒ๏ผ‰

2.3 ๆต‹่ฏ•ๅทฒ่ฎญ็ปƒๆจกๅž‹๏ผˆๅฏ้€‰๏ผ‰

็กฎไฟๅพ…ๆต‹่ฏ•็š„ๆจกๅž‹ *.pth ๆ–‡ไปถไฝไบŽ ./out/ ็›ฎๅฝ•ไธ‹๏ผ›ไนŸๅฏ็›ดๆŽฅๅ‰ๅพ€ๆญคๅค„ไธ‹่ฝฝๆˆ‘ๅทฒ่ฎญ็ปƒๅฅฝ็š„ *.pth ๆƒ้‡ใ€‚

python eval_llm.py --weight full_sft

--weight ็”จไบŽๆŒ‡ๅฎšๆƒ้‡ๅ็งฐๅ‰็ผ€๏ผŒไพ‹ๅฆ‚ pretrainใ€full_sft ็ญ‰๏ผ›ๆ›ดๅคšๅ‚ๆ•ฐๅฏ็›ดๆŽฅๅ‚่€ƒ eval_llm.py

ๆณจ๏ผšๅ…ถๅฎƒ้กป็Ÿฅ

1ใ€ๆ‰€ๆœ‰่ฎญ็ปƒ่„šๆœฌๅ‡ๅŸบไบŽ PyTorch ๅŽŸ็”Ÿๅฎž็Žฐ๏ผŒๅนถๆ”ฏๆŒๅคšๅกๅŠ ้€Ÿใ€‚

2ใ€่‹ฅไฝ ็š„่ฎพๅค‡ๆœ‰ N (N > 1) ๅผ ๆ˜พๅก๏ผŒๅฏ้€š่ฟ‡ไปฅไธ‹ๆ–นๅผๅฏๅŠจๅ•ๆœบ N ๅก่ฎญ็ปƒ๏ผˆDDP๏ผŒไนŸๆ”ฏๆŒๆ‰ฉๅฑ•ๅˆฐๅคšๆœบๅคšๅก๏ผ‰๏ผš

torchrun --nproc_per_node N train_xxx.py

3ใ€ๅฏๆ นๆฎ้œ€่ฆๅผ€ๅฏ wandb ่ฎฐๅฝ•่ฎญ็ปƒ่ฟ‡็จ‹ใ€‚

... train_xxx.py --use_wandb

2025 ๅนด 6 ๆœˆๅŽ๏ผŒๅ›ฝๅ†…็ฝ‘็ปœ็Žฏๅขƒ้€šๅธธๆ— ๆณ•็›ด่ฟž WandBใ€‚MiniMind ๅฝ“ๅ‰้ป˜่ฎค่ฝฌไธบไฝฟ็”จ SwanLab ไฝœไธบ่ฎญ็ปƒๅฏ่ง†ๅŒ–ๅทฅๅ…ท๏ผŒๅ…ถๆŽฅๅฃไธŽ WandB ๅŸบๆœฌๅ…ผๅฎน๏ผ›้€šๅธธๅช้œ€ๅฐ† import wandb ๆ›ฟๆขไธบ import swanlab as wandb๏ผŒๅ…ถไฝ™่ฐƒ็”จๆ–นๅผๅŸบๆœฌๆ— ้œ€ๆ”นๅŠจใ€‚


๐Ÿ“Œ ๆ•ฐๆฎไป‹็ป

โ…  Tokenizer

ๅˆ†่ฏๅ™จๅฏไปฅ็ฒ—็•ฅ็†่งฃๆˆ LLM ไฝฟ็”จ็š„ไธ€ๆœฌโ€œ่ฏๅ…ธโ€๏ผŒ่ดŸ่ดฃๆŠŠ่‡ช็„ถ่ฏญ่จ€ๆ˜ ๅฐ„ๆˆ token id๏ผŒๅ†ๆŠŠ token id ่งฃ็ ๅ›žๆ–‡ๆœฌ๏ผ›้กน็›ฎไธญไนŸๆไพ›ไบ†train_tokenizer.pyไฝœไธบ่ฏ่กจ่ฎญ็ปƒ็คบไพ‹ใ€‚ไธๅปบ่ฎฎ้‡ๆ–ฐ่ฎญ็ปƒ tokenizer๏ผŒๅ› ไธบ่ฏ่กจๅ’Œๅˆ‡ๅˆ†่ง„ๅˆ™ไธ€ๆ—ฆๅ˜ๅŒ–๏ผŒๆจกๅž‹ๆƒ้‡ใ€ๆ•ฐๆฎๆ ผๅผใ€ๆŽจ็†ๆŽฅๅฃไธŽ็คพๅŒบ็”Ÿๆ€็š„ๅ…ผๅฎนๆ€ง้ƒฝไผšไธ‹้™๏ผŒไนŸไผšๅ‰Šๅผฑๆจกๅž‹็š„ไผ ๆ’ญๆ€งใ€‚ๅŒๆ—ถ๏ผŒtokenizer ่ฟ˜ไผšๅฝฑๅ“ PPL ่ฟ™็ฑปๆŒ‰ token ็ปŸ่ฎก็š„ๆŒ‡ๆ ‡๏ผŒๅ› ๆญค่ทจ tokenizer ๆฏ”่พƒๆ—ถ๏ผŒBPB๏ผˆBits Per Byte๏ผ‰ๅพ€ๅพ€ๆ›ดๆœ‰ๅ‚่€ƒไปทๅ€ผ๏ผŒๅฏๅ‚่€ƒ่ฟ™็ฏ‡ใ€‚ ๅฏน MiniMind ่ฟ™็ฑปๅฐๆจกๅž‹ๆฅ่ฏด๏ผŒ่ฏ่กจๅคงๅฐ่ฟ˜ไผš็›ดๆŽฅๅฝฑๅ“ embedding ๅฑ‚ๅ’Œ่พ“ๅ‡บๅฑ‚็š„ๅ‚ๆ•ฐๅ ๆฏ”๏ผŒๅ› ๆญคไฟๆŒ่ฏ่กจ็ฒพ็ฎ€้€šๅธธๆ˜ฏๆ›ดๅˆ้€‚็š„ๅ–่ˆใ€‚

Tokenizerไป‹็ป

็ฌฌไธ‰ๆ–นๅผบๅคง็š„ๅผ€ๆบๆจกๅž‹ไพ‹ๅฆ‚ Yiใ€Qwen2ใ€ChatGLMใ€Mistralใ€Llama 3 ็š„ tokenizer ่ฏ่กจ้•ฟๅบฆๅฆ‚ไธ‹๏ผš

Tokenizerๆจกๅž‹่ฏ่กจๅคงๅฐๆฅๆบ
Yi64,00001ไธ‡็‰ฉ๏ผˆไธญๅ›ฝ๏ผ‰
Qwen2151,643้˜ฟ้‡Œไบ‘๏ผˆไธญๅ›ฝ๏ผ‰
ChatGLM151,329ๆ™บ่ฐฑAI๏ผˆไธญๅ›ฝ๏ผ‰
Mistral32,000Mistral AI๏ผˆๆณ•ๅ›ฝ๏ผ‰
Llama 3128,000Meta๏ผˆ็พŽๅ›ฝ๏ผ‰
MiniMind6,400่‡ชๅฎšไน‰

ๅฝ“ๅ‰ไธป็บฟไธบ้ฟๅ…ๅކๅฒ็‰ˆๆœฌๆญงไน‰ๅนถๆŽงๅˆถๆ•ดไฝ“ไฝ“็งฏ๏ผŒ็ปŸไธ€ไฝฟ็”จ minimind_tokenizer๏ผŒไธๅ†็ปดๆŠค mistral_tokenizer ็‰ˆๆœฌใ€‚

ๅฐฝ็ฎก minimind_tokenizer ็š„่ฏ่กจๅชๆœ‰ 6400๏ผŒ็ผ–่งฃ็ ๆ•ˆ็އๅผฑไบŽ qwen2ใ€glm ็ญ‰ๆ›ดๅไธญๆ–‡ๅ‹ๅฅฝ็š„ tokenizer๏ผŒไฝ†ๅฎƒ่ƒฝๆ˜พ่‘—ๅŽ‹็ผฉ embedding ๅฑ‚ๅ’Œ่พ“ๅ‡บๅฑ‚็š„ๅ‚ๆ•ฐๅ ๆฏ”๏ผŒๆ›ด้€‚ๅˆ MiniMind ่ฟ™็ฑปๅฐๆจกๅž‹็š„ไฝ“็งฏ็บฆๆŸใ€‚ ไปŽๅฎž้™…ไฝฟ็”จๆ•ˆๆžœ็œ‹๏ผŒ่ฟ™ๅฅ— tokenizer ๅนถๆฒกๆœ‰ๆ˜Žๆ˜พๅธฆๆฅ็”Ÿๅƒป่ฏ่งฃ็ ๅคฑ่ดฅ็š„้—ฎ้ข˜๏ผŒๆ•ดไฝ“ไป็„ถ่ถณๅคŸ็จณๅฎšๅฏ็”จ๏ผ›ๅ› ๆญคๅฝ“ๅ‰ไธป็บฟ่ฎญ็ปƒไนŸ็ปŸไธ€ๆฒฟ็”จ่ฟ™ๅฅ—่ฏ่กจ๏ผŒ่€Œไธๅ†้ขๅค–ๅˆ†ๅ‰็ปดๆŠคๅ…ถไป– tokenizer ็‰ˆๆœฌใ€‚

โ…ก Pretrainๆ•ฐๆฎ

MiniMind-3 ๅฝ“ๅ‰ไธป็บฟ้ข„่ฎญ็ปƒๆ•ฐๆฎไธบ pretrain_t2t.jsonl / pretrain_t2t_mini.jsonlใ€‚
่ฟ™ไธคไปฝๆ•ฐๆฎๅทฒ็ปๆ•ด็†ๆˆ็ปŸไธ€็š„ text -> next token prediction ่ฎญ็ปƒๆ ผๅผ๏ผŒ็›ฎๆ ‡ๆ˜ฏๅœจ่พƒๅฐ็ฎ—ๅŠ›ไธ‹ๅ…ผ้กพ๏ผš

  • ๆ–‡ๆœฌ่ดจ้‡๏ผ›
  • ้•ฟๅบฆๅˆ†ๅธƒ๏ผ›
  • ไธญ่‹ฑๆททๅˆ่ƒฝๅŠ›๏ผ›
  • ไธŽๅŽ็ปญ SFT / Tool Calling / RLAIF ้˜ถๆฎต็š„ๆจกๆฟ่ก”ๆŽฅใ€‚

ๆ•ฐๆฎๆฅๆบๅŒ…ๆ‹ฌไฝ†ไธ้™ไบŽ้€š็”จๆ–‡ๆœฌ่ฏญๆ–™ใ€ๅฏน่ฏๆ•ด็†่ฏญๆ–™ใ€่’ธ้ฆ่กฅๅ……่ฏญๆ–™๏ผŒไปฅๅŠๅ„็ฑปๅฎฝๆพๅผ€ๆบๅ่ฎฎๅฏ็”จ็š„ๆ•ฐๆฎ้›†๏ผ›ไธป็บฟๆ•ฐๆฎไผšๅœจๆธ…ๆด—ใ€ๅŽป้‡ใ€้•ฟๅบฆๆŽงๅˆถไธŽๆ ผๅผ็ปŸไธ€ๅŽๅ†่ฟ›ๅ…ฅ่ฎญ็ปƒใ€‚ไธป่ฆๆฅๆบๅŒ…ๆ‹ฌ๏ผšๅŒ ๆ•ฐๅคงๆจกๅž‹ๆ•ฐๆฎ้›†ใ€Magpie-Align ็ญ‰ๅ…ฌๅผ€ๆ•ฐๆฎๆบใ€‚

ๅ…ถไธญ๏ผš

  • pretrain_t2t_mini.jsonl ๆ›ด้€‚ๅˆๅฟซ้€Ÿๅค็Žฐ๏ผ›
  • pretrain_t2t.jsonl ๆ›ด้€‚ๅˆๅฎŒๆ•ด่ฎญ็ปƒ MiniMind-3 ไธป็บฟๆจกๅž‹ใ€‚

ๆ–‡ไปถๆ•ฐๆฎๆ ผๅผไธบ

{"text": "ๅฆ‚ไฝ•ๆ‰่ƒฝๆ‘†่„ฑๆ‹–ๅปถ็—‡๏ผŸๆฒปๆ„ˆๆ‹–ๅปถ็—‡ๅนถไธๅฎนๆ˜“๏ผŒไฝ†ไปฅไธ‹ๅปบ่ฎฎๅฏ่ƒฝๆœ‰ๆ‰€ๅธฎๅŠฉใ€‚"}
{"text": "ๆธ…ๆ™จ็š„้˜ณๅ…‰้€่ฟ‡็ช—ๅธ˜ๆด’่ฟ›ๆˆฟ้—ด๏ผŒๆกŒไธŠ็š„ไนฆ้กต่ขซ้ฃŽ่ฝป่ฝป็ฟปๅŠจใ€‚"}
{"text": "Transformer ้€š่ฟ‡่‡ชๆณจๆ„ๅŠ›ๆœบๅˆถๅปบๆจกไธŠไธ‹ๆ–‡ๅ…ณ็ณป๏ผŒๆ˜ฏ็Žฐไปฃๅคง่ฏญ่จ€ๆจกๅž‹็š„้‡่ฆๅŸบ็ก€็ป“ๆž„ใ€‚"}

โ…ข SFTๆ•ฐๆฎ

MiniMind-3 ๅฝ“ๅ‰ไธป็บฟ SFT ๆ•ฐๆฎไธบ sft_t2t.jsonl / sft_t2t_mini.jsonlใ€‚็›ธๆฏ”ๆ›ดๆ—ฉๆœŸ็š„ sft_512 / sft_1024 / sft_2048 ๆ–นๆกˆ๏ผŒๅฝ“ๅ‰็‰ˆๆœฌๆ›ดๅผบ่ฐƒ๏ผš

  • ็ปŸไธ€ๆจกๆฟ๏ผ›
  • ๆ›ด้€‚ๅˆๅฏน่ฏ + ๆ€่€ƒๆ ‡็ญพ + Tool Calling ็š„ๆททๅˆ่ฎญ็ปƒ๏ผ›
  • ๅฐฝ้‡ๅ‡ๅฐ‘ๆ•ฐๆฎ้ข„ๅค„็†ๅˆ†ๅ‰๏ผŒ้™ไฝŽๅค็Žฐๆˆๆœฌใ€‚

ๅ…ถๆ•ฐๆฎๆฅๆบๅŒ…ๆ‹ฌไฝ†ไธ้™ไบŽ้ซ˜่ดจ้‡ๆŒ‡ไปค่ทŸ้šๆ•ฐๆฎใ€ๅ…ฌๅผ€ๅฏน่ฏๆ•ฐๆฎใ€ๆจกๅž‹่’ธ้ฆๅˆๆˆๆ•ฐๆฎ๏ผŒไปฅๅŠๅ่ฎฎๅ‹ๅฅฝ็š„ๅผ€ๆบๆ•ฐๆฎ้›†๏ผ›ๅœจ่ฟ›ๅ…ฅ t2t ไธป็บฟๅ‰๏ผŒไผš็ปŸไธ€ไธบๅฝ“ๅ‰ไป“ๅบ“ไฝฟ็”จ็š„ๅคš่ฝฎๅฏน่ฏๆ ผๅผใ€‚ๅฝ“ๅ‰ไธป็บฟไธญไนŸๅŒ…ๅซๅคง้‡ๅˆๆˆๆ•ฐๆฎ๏ผŒไพ‹ๅฆ‚ๆœฌไบบๅŸบไบŽ qwen3-4b ๅˆๆˆ็š„็บฆ 10w ๆก tool call ๆ•ฐๆฎ๏ผŒไปฅๅŠ qwen3 ็ณปๅˆ—็š„ reasoning ๆ•ฐๆฎ็ญ‰ใ€‚ๅ…ถไธญ็คพๅŒบไธป่ฆๆฅๆบๆœ‰๏ผšๅŒ ๆ•ฐๅคงๆจกๅž‹ๆ•ฐๆฎ้›†ใ€Magpie-Alignใ€R1-Distill-SFTใ€COIGใ€Step-3.5-Flash-SFT ็ญ‰ใ€‚ๅ…ฌๅธƒ็‰ˆๆœฌไผš็กฎไฟๆ•ฐๆฎๆฅๆบไธŽๅค„็†้“พ่ทฏ็ฌฆๅˆๅฏนๅบ”ๅผ€ๆบๅ่ฎฎ็š„ๅฏไผ ้€’ๆ€ง็บฆๆŸ๏ผŒๅนถ้ตๅฎˆ Apache-2.0ใ€CC-BY-NC-2.0 ็ญ‰็›ธๅ…ณๅ่ฎฎ่ฆๆฑ‚ใ€‚

ๅ…ถไธญ๏ผš

  • sft_t2t_mini.jsonl๏ผš้€‚ๅˆๅฟซ้€Ÿ่ฎญ็ปƒๅฏน่ฏๆจกๅž‹๏ผ›
  • sft_t2t.jsonl๏ผš้€‚ๅˆๅฎŒๆ•ดๅค็Žฐไธป็บฟ็‰ˆๆœฌ๏ผ›
  • toolcall ่ƒฝๅŠ›ๅทฒ็ปๅนถๅ…ฅไธป็บฟ SFT ๆ•ฐๆฎใ€‚

ๆ‰€ๆœ‰ SFT ๆ–‡ไปถๆ•ฐๆฎๆ ผๅผๅ‡ไธบ๏ผˆๅŒ…ๅซๅฏน่ฏๆ•ฐๆฎใ€Tool Use ๆ•ฐๆฎ๏ผ‰

{
    "conversations": [
        {"role": "user", "content": "ไฝ ๅฅฝ"},
        {"role": "assistant", "content": "ไฝ ๅฅฝ๏ผ"},
        {"role": "user", "content": "ๅ†่ง"},
        {"role": "assistant", "content": "ๅ†่ง๏ผ"}
    ]
}
{
    "conversations": [
        {"role": "system", "content": "# Tools ...", "tools": "[...]"},
        {"role": "user", "content": "ๆŠŠ'ไฝ ๅฅฝไธ–็•Œ'็ฟป่ฏ‘ๆˆenglish"},
        {"role": "assistant", "content": "", "tool_calls": "[{\"name\":\"translate_text\",\"arguments\":{\"text\":\"ไฝ ๅฅฝไธ–็•Œ\",\"target_language\":\"english\"}}]"},
        {"role": "tool", "content": "{\"translated_text\":\"Hello World\"}"},
        {"role": "assistant", "content": "Hello World"}
    ]
}

โ…ฃ RL ๆ•ฐๆฎ

MiniMind ๅฝ“ๅ‰ไธป็บฟ RL ๆ•ฐๆฎไธบ dpo.jsonlใ€‚ๆ•ฐๆฎๆŠฝๆ ท่‡ช DPO-En-Zh-20kใ€‚

ไธป็บฟไธญไผšๅฐ†่ฟ™้ƒจๅˆ†ๆ ทๆœฌ็ปŸไธ€้‡็ป„ไธบๅฝ“ๅ‰ไป“ๅบ“ไฝฟ็”จ็š„ๅๅฅฝๅญฆไน ๆ ผๅผ๏ผŒ็”จไบŽๅฅ–ๅŠฑๆจกๅž‹ๆˆ–ๅๅฅฝไผ˜ๅŒ–้˜ถๆฎต่ฎญ็ปƒ๏ผ›ๅ…ถไธญ chosen ่กจ็คบๆ›ด็ฌฆๅˆๅๅฅฝ็š„ๅ›žๅค๏ผŒrejected ่กจ็คบ็›ธๅฏน่พƒๅทฎ็š„ๅ›žๅคใ€‚

ๅ…ถไธญ dpo.jsonl ๆ•ฐๆฎๆ ผๅผไธบ

{
  "chosen": [
    {"content": "Q", "role": "user"}, 
    {"content": "good answer", "role": "assistant"}
  ], 
  "rejected": [
    {"content": "Q", "role": "user"}, 
    {"content": "bad answer", "role": "assistant"}
  ]
}

้™คๆญคไน‹ๅค–๏ผŒๅ…ถไป– RL ๆ•ฐๆฎไธŽ SFT ๆ•ฐๆฎๆ ผๅผไฟๆŒไธ€่‡ด๏ผŒ้€šๅธธๆ˜ฏไปŽ SFT ๆ•ฐๆฎไธญๆŒ‰ๆ€ป้•ฟๅบฆๅ’Œๅฏน่ฏ่ฝฎๆฌก็ญ›้€‰ๅพ—ๅˆฐ๏ผŒๅนถๅฐ†ๆœ€ๅŽไธ€ไธช assistant ไฝ็ฝฎ็•™็ฉบ๏ผŒไพ› rollout ้˜ถๆฎต็ปญๅ†™ไฝฟ็”จใ€‚

โ…ค MiniMind ่ฎญ็ปƒๆ•ฐๆฎ้›†

Note

ๅฝ“ๅ‰ไธป็บฟ่ฎญ็ปƒๆ‰€้œ€็š„ๆ ธๅฟƒๆ•ฐๆฎ้›†ๅทฒๅผ€ๆบ๏ผŒๅ› ๆญคๆ— ้œ€ๅ†่‡ช่กŒ้ข„ๅค„็†ๅคง่ง„ๆจกๆ•ฐๆฎ้›†๏ผŒ้ฟๅ…้‡ๅคๆ€ง็š„ๆ•ฐๆฎๅค„็†ๅทฅไฝœใ€‚

MiniMind่ฎญ็ปƒๆ•ฐๆฎ้›†ไธ‹่ฝฝๅœฐๅ€๏ผš ModelScope | HuggingFace

ๆ— ้œ€ๅ…จ้ƒจclone๏ผŒๅฏๅ•็‹ฌไธ‹่ฝฝๆ‰€้œ€็š„ๆ–‡ไปถ

ๅฐ†ไธ‹่ฝฝ็š„ๆ•ฐๆฎ้›†ๆ–‡ไปถๆ”พๅˆฐ./dataset/็›ฎๅฝ•ไธ‹๏ผˆโœจไธบๆŽจ่็š„ๅฟ…้กป้กน๏ผ‰

./dataset/
โ”œโ”€โ”€ agent_rl.jsonl (86MB)
โ”œโ”€โ”€ agent_rl_math.jsonl (18MB)
โ”œโ”€โ”€ dpo.jsonl (53MB)
โ”œโ”€โ”€ pretrain_t2t_mini.jsonl (1.2GB, โœจ)
โ”œโ”€โ”€ pretrain_t2t.jsonl (10GB)
โ”œโ”€โ”€ rlaif.jsonl (24MB, โœจ)
โ”œโ”€โ”€ sft_t2t_mini.jsonl (1.6GB, โœจ)
โ””โ”€โ”€ sft_t2t.jsonl (14GB)
ๆณจ๏ผšๅ„ๆ•ฐๆฎ้›†็ฎ€ไป‹
  • agent_rl.jsonl --Agentic RL ไธป็บฟ่ฎญ็ปƒๆ•ฐๆฎ๏ผŒ็”จไบŽ train_agent.py ็š„ๅคš่ฝฎ Tool-Use / CISPO / GRPO ่ฎญ็ปƒ
  • agent_rl_math.jsonl --Agentic RL ็บฏๆ•ฐๅญฆ่กฅๅ……ๆ•ฐๆฎ๏ผŒ้€‚ๅˆๅธฆๆœ€็ปˆๆ ก้ชŒ็›ฎๆ ‡็š„ๅคš่ฝฎๆŽจ็†/ๅทฅๅ…ทไฝฟ็”จๅœบๆ™ฏ๏ผˆ็”จไบŽRLVR๏ผ‰
  • dpo.jsonl --RLHF้˜ถๆฎตๅๅฅฝ่ฎญ็ปƒๆ•ฐๆฎ๏ผˆDPO๏ผ‰
  • pretrain_t2t_miniโœจ --minimind-3 ่ฝป้‡้ข„่ฎญ็ปƒๆ•ฐๆฎ๏ผŒ้€‚ๅˆๅฟซ้€Ÿๅค็Žฐ๏ผˆๆŽจ่่ฎพ็ฝฎmax_seq_lenโ‰ˆ768๏ผ‰
  • pretrain_t2t --minimind-3 ไธป็บฟ้ข„่ฎญ็ปƒๆ•ฐๆฎ๏ผˆๆŽจ่่ฎพ็ฝฎmax_seq_lenโ‰ˆ380๏ผ‰
  • rlaif.jsonlโœจ --RLAIF่ฎญ็ปƒๆ•ฐๆฎ้›†๏ผŒ็”จไบŽPPO/GRPO/CISPO็ญ‰ๅผบๅŒ–ๅญฆไน ็ฎ—ๆณ•่ฎญ็ปƒ
  • sft_t2t_mini.jsonlโœจ --minimind-3 ่ฝป้‡SFTๆ•ฐๆฎ๏ผˆ็”จไบŽๅฟซ้€Ÿ่ฎญ็ปƒZeroๆจกๅž‹๏ผ‰๏ผŒๆŽจ่่ฎพ็ฝฎmax_seq_lenโ‰ˆ768๏ผŒๅ…ถไธญๅทฒๆททๅ…ฅไธ€้ƒจๅˆ† Tool Call ๆ ทๆœฌ
  • sft_t2t.jsonl --minimind-3 ไธป็บฟSFTๆ•ฐๆฎ๏ผŒ้€‚ๅˆๅฎŒๆ•ดๅค็Žฐ๏ผŒๅ…ถไธญๅŒๆ ทๅทฒๆททๅ…ฅ Tool Call ๆ ทๆœฌ

่ฎญ็ปƒๅ‚ๆ•ฐ max_seq_len ็›ฎๅ‰ๆŒ‡็š„ๆ˜ฏ tokens ้•ฟๅบฆ๏ผŒ่€Œ้ž็ปๅฏนๅญ—็ฌฆๆ•ฐใ€‚ ๆœฌ้กน็›ฎtokenizerๅœจไธญๆ–‡ๆ–‡ๆœฌไธŠๅคง็บฆ1.5~1.7 ๅญ—็ฌฆ/token๏ผŒ็บฏ่‹ฑๆ–‡็š„ๅŽ‹็ผฉๆฏ”ๅœจ4~5 ๅญ—็ฌฆ/token๏ผŒไธๅŒๆ•ฐๆฎๅˆ†ๅธƒไผšๆœ‰ๆณขๅŠจใ€‚ ๆ•ฐๆฎ้›†ๅ‘ฝๅๆ ‡ๆณจ็š„โ€œๆœ€ๅคง้•ฟๅบฆโ€ๅ‡ไธบๅญ—็ฌฆๆ•ฐ๏ผŒ100้•ฟๅบฆ็š„ๅญ—็ฌฆไธฒๅฏ็ฒ—็•ฅๆข็ฎ—ๆˆ100/1.5โ‰ˆ67็š„tokens้•ฟๅบฆใ€‚

ไพ‹ๅฆ‚๏ผš

  • ไธญๆ–‡๏ผš็™ฝๆ—ฅไพๅฑฑๅฐฝ5ไธชๅญ—็ฌฆๅฏ่ƒฝ่ขซๆ‹†ๅˆ†ไธบ[็™ฝๆ—ฅ,ไพ,ๅฑฑ,ๅฐฝ] 4ไธชtokens๏ผ›
  • ่‹ฑๆ–‡๏ผšThe sun sets in the west24ไธชๅญ—็ฌฆๅฏ่ƒฝ่ขซๆ‹†ๅˆ†ไธบ[The ,sun ,sets ,in ,the,west] 6ไธชtokens

โ€œๆŽจ่่ฎพ็ฝฎโ€็ป™ๅ‡บไบ†ๅ„ไธชๆ•ฐๆฎ้›†ไธŠๆœ€ๅคงtokens้•ฟๅบฆ็š„็ฒ—็•ฅไผฐ่ฎกใ€‚ ้กป็Ÿฅ max_seq_len ๅฏไปฅๆฟ€่ฟ› / ไฟๅฎˆ / ๅ‡่กกๅœฐ่ฐƒๆ•ด๏ผŒๅ› ไธบๆ›ดๅคงๆˆ–ๆ›ดๅฐๅ‡ๆ— ๆณ•้ฟๅ…ๅ‰ฏไฝœ็”จ๏ผšไธ€ไบ›ๆ ทๆœฌ็ŸญไบŽ max_seq_len ๅŽ่ขซ padding ๆตช่ดน็ฎ—ๅŠ›๏ผŒไธ€ไบ›ๆ ทๆœฌ้•ฟไบŽ max_seq_len ๅŽ่ขซๆˆชๆ–ญ่ฏญไน‰ใ€‚

ๅœจ็ฎ—ๅŠ›ๆ•ˆ็އไธŽ่ฏญไน‰ๅฎŒๆ•ดๆ€งไน‹้—ดๆ‰พๅˆฐๅนณ่กก็‚นๅณๅฏ

dataset

MiniMind ไธป็บฟ่ฎญ็ปƒๆ•ฐๆฎ็ป„ๆˆไธŽๆŽจ่็ป„ๅˆ็คบๆ„ๅ›พ

่ฏดๆ˜Ž & ๆŽจ่่ฎญ็ปƒๆ–นๆกˆ
  • minimind-3 ไธป็บฟๆŽจ่้‡‡็”จ pretrain_t2t + sft_t2t + rlaif/agent_rl ็š„้˜ถๆฎตๅผ่ฎญ็ปƒ็ป„ๅˆใ€‚

  • ๆƒณ่ฆๆœ€ๅฟซ้€ŸๅบฆไปŽ0ๅฎž็ŽฐZeroๆจกๅž‹๏ผŒๆŽจ่ไฝฟ็”จpretrain_t2t_mini.jsonl + sft_t2t_mini.jsonl ็š„ๆ•ฐๆฎ็ป„ๅˆ

  • ๆŽจ่ๅ…ทๅค‡ไธ€ๅฎš็ฎ—ๅŠ›่ต„ๆบๆˆ–ๆ›ดๅœจๆ„ๆ•ˆๆžœ็š„ๆœ‹ๅ‹ๅฎŒๆ•ดๅค็Žฐ minimind-3๏ผ›ไป…ๆœ‰ๅ•ๅกGPUๆˆ–ๆ›ดๅœจๆ„ๅฟซ้€Ÿๅค็Žฐ็š„ๆœ‹ๅ‹ๅผบ็ƒˆๆŽจ่ mini ็ป„ๅˆใ€‚

  • ๅฝ“ๅ‰ sft_t2t / sft_t2t_mini ๅทฒ็ปๆททๅ…ฅ Tool Call ๆ•ฐๆฎ๏ผŒๅ› ๆญค้€šๅธธไธ้œ€่ฆๅ†้ขๅค–ๅšไธ€่ฝฎ็‹ฌ็ซ‹็š„ Tool Calling ็›‘็ฃๅพฎ่ฐƒใ€‚

๐Ÿ“Œ ๆจกๅž‹

็ป“ๆž„

minimind-3 Dense ไฝฟ็”จ Transformer Decoder-Only ็ป“ๆž„๏ผŒๆ•ดไฝ“้…็ฝฎๅทฒ็ปๅ‘ Qwen3 ็”Ÿๆ€ๅฏน้ฝ๏ผŒๆ–นไพฟๅŽ็ปญ่ฝฌๆขๅˆฐ transformers / llama.cpp / ollama / vllm๏ผš

  • ้‡‡็”จ้ข„ๆ ‡ๅ‡†ๅŒ–๏ผˆPre-Norm๏ผ‰+ RMSNormใ€‚
  • ไฝฟ็”จ SwiGLU ๆฟ€ๆดปๅ‡ฝๆ•ฐใ€‚
  • ไฝฟ็”จ RoPE ๆ—‹่ฝฌไฝ็ฝฎ็ผ–็ ๏ผŒๅนถๆ”ฏๆŒ YaRN ๅค–ๆŽจใ€‚
  • q_heads=8ใ€kv_heads=4๏ผŒmax_position_embeddings=32768๏ผŒrope_theta=1e6ใ€‚

minimind-3-moe ๅœจ็›ธๅŒ็ป“ๆž„ไธŠๆ‰ฉๅฑ• MoE ๅ‰้ฆˆๅฑ‚๏ผŒๅฎž็ŽฐไธŠๅ…ผๅฎน Qwen3-MoE ้ฃŽๆ ผ้…็ฝฎ๏ผˆๅŽป้™ค shared expert๏ผ‰ใ€‚

  • ๅฝ“ๅ‰้ป˜่ฎค้…็ฝฎไธบ 4 experts / top-1 routing๏ผŒ็”จไบŽไปฅๆ›ดไฝŽๆฟ€ๆดปๅ‚ๆ•ฐ่Žทๅพ—ๆ›ด้ซ˜ๅฎน้‡ใ€‚
  • Experts ็ปง็ปญๅขžๅŠ ๅŽ๏ผŒๅฎž้™…่€—ๆ—ถๅพ€ๅพ€ๆฏ”ๅŒๅฐบๅฏธ่ง„ๆจก็š„ dense ๆจกๅž‹้ซ˜้žๅธธๅคš๏ผŒ่ฟ™ๅ’Œ โ€œMoE ๆŽจ็†ๆ›ดๅฟซโ€ ๆ”พๅœจไธ€่ตท็œ‹ไผšๆœ‰็‚นๅ็›ด่ง‰๏ผŒไฝ†่ฎญ็ปƒๆ—ถ token ๅ…ˆๆŒ‰ไธ“ๅฎถๅˆ†ๆกถใ€ๅ†ๅˆ†ๅˆซๅš forward๏ผŒๅŽŸ็”Ÿ่ฎญ็ปƒๆ—ถๅธฆๆฅ็š„ kernel ๅฏๅœๅ’Œ่ฐƒๅบฆๅผ€้”€ไผšๆ€ฅๅ‰งๅ˜้‡๏ผŒ่ฟ™ๆœฌ่บซๆ˜ฏๅพˆ่‡ช็„ถ็š„ไบ‹ๆƒ…ใ€‚ๅพ—้ ๆ”ฏๆŒ MoE kernel-fused ็š„็ฎ—ๅญๅบ“ๆฅไผ˜ๅŒ–๏ผŒๆฏ”ๅฆ‚ๅŸบไบŽ Triton ็š„่‡ชๅฎšไน‰ kernelใ€DeepSpeed-MoEใ€Megatron-LM ็ญ‰็ญ‰ใ€‚ๅฝ“็„ถ๏ผŒ่ฟ™ไธช้กน็›ฎ่ฟ˜ๆ˜ฏๅธŒๆœ›ไฟ็•™ๅŽŸ็”Ÿ PyTorch ็š„ๆ™ฎ้€‚ๆ€ง๏ผŒๆ‰€ไปฅ่ฟ™้‡Œๅš็š„ๆ˜ฏ็Žฐๅฎž็š„ๆŠ˜ไธญ๏ผŒๅœจๅฝ“ๅ‰ๅฎž็Žฐไธ‹๏ผŒ4 experts / top-1 ่ฟ™ไธช็”œ็‚น้…็ฝฎๅคง็บฆๅชๆฏ” dense ๆจกๅž‹ๆ…ข 50% ๅทฆๅณใ€‚

minimind-3 ็ณปๅˆ—็ป“ๆž„ๅฆ‚ไธ‹ๅ›พ๏ผš

structure structure-moe

ไฟฎๆ”นๆจกๅž‹้…็ฝฎ่ง./model/model_minimind.py๏ผŒๅ‚่€ƒๆจกๅž‹ๅ‚ๆ•ฐ็‰ˆๆœฌ่งไธ‹่กจ๏ผš

Model Name params len_vocab max_pos rope_theta n_layers d_model kv_heads q_heads note
minimind-3 64M 6400 32768 1e6 8 768 4 8 Dense
minimind-3-moe 198M-A64M 6400 32768 1e6 8 768 4 8 4 experts / top-1
minimind2-small 26M 6400 32768 1e6 8 512 2 8 ๅކๅฒ็‰ˆๆœฌ
minimind2-moe 145M 6400 32768 1e6 8 640 2 8 ๅކๅฒ็‰ˆๆœฌ
minimind2 104M 6400 32768 1e6 16 768 2 8 ๅކๅฒ็‰ˆๆœฌ

ๆจกๅž‹้…็ฝฎ

ๅ…ณไบŽ LLM ็š„ๅ‚ๆ•ฐ้…็ฝฎ๏ผŒMobileLLM ๅฏนๅฐๆจกๅž‹ๅš่ฟ‡ไธ€็ป„ๅพˆๆœ‰ไปฃ่กจๆ€ง็š„็ณป็ปŸ็ ”็ฉถใ€‚ๅฏน MiniMind ่ฟ™็ฑป็™พM็บงๆจกๅž‹่€Œ่จ€๏ผŒd_model ไธŽ n_layers ็š„ๅ–่ˆไธๅชๆ˜ฏๅ‚ๆ•ฐๅˆ†้…้—ฎ้ข˜๏ผŒไนŸไผš็›ดๆŽฅๅฝฑๅ“่ฎญ็ปƒ็จณๅฎšๆ€งไธŽๆœ€็ปˆๆ•ˆๆžœใ€‚

ๅฝ“ๅ‰ minimind-3 ไธป็บฟ้€‰ๆ‹ฉ dim=768, n_layers=8๏ผŒๆœฌ่ดจไธŠๆ˜ฏไธ€็งๅทฅ็จ‹ๅ–่ˆ๏ผšๆ›ดๆต…็š„็ฝ‘็ปœ่ฎญ็ปƒๆ›ดๅฟซ๏ผŒๅŒๆ—ถ dim ไนŸไธ่‡ณไบŽ่ฟ‡ๅฐ่€Œๅฏผ่‡ดๆจกๅผๅดฉๆบƒ๏ผŒๅ› ๆญค่ƒฝๅœจ่ฎญ็ปƒๆ•ˆ็އใ€็จณๅฎšๆ€งไธŽๆœ€็ปˆๆ•ˆๆžœไน‹้—ดๅ–ๅพ—็›ธๅฏนๅ‡่กกใ€‚

ๆŸฅ็œ‹่ฏฆ็ป†่ฏดๆ˜Ž

Scaling Law ๅœจๅฐๆจกๅž‹ไธŠๅพ€ๅพ€ไผšๅ‘ˆ็Žฐๅ‡บไธ€ไบ›ไธๅŒไบŽๅคงๆจกๅž‹็š„็Žฐ่ฑกใ€‚ๅ†ณๅฎš Transformer ๅ‚ๆ•ฐ่ง„ๆจกๅ˜ๅŒ–็š„ๆ ธๅฟƒๅ‚ๆ•ฐ๏ผŒ้€šๅธธไธป่ฆๅฐฑๆ˜ฏ d_model ๅ’Œ n_layers๏ผš

  • d_modelโ†‘ + n_layersโ†“ -> ็Ÿฎ่ƒ–ๅญ
  • d_modelโ†“ + n_layersโ†‘ -> ็˜ฆ้ซ˜ไธช

็ปๅ…ธ Scaling Law ๆ›ดๅผบ่ฐƒ่ฎญ็ปƒๆ•ฐๆฎ้‡ใ€ๅ‚ๆ•ฐ้‡ๅ’Œ่ฎญ็ปƒๆญฅๆ•ฐ็š„ๅ†ณๅฎšๆ€งไฝœ็”จ๏ผŒ้€šๅธธไผšๅผฑๅŒ–ๆžถๆž„ๅทฎๅผ‚ๆœฌ่บซ็š„ๅฝฑๅ“๏ผ›ไฝ†ๅœจๅฐๆจกๅž‹ๅŒบ้—ด๏ผŒ่ฟ™ไธช็ป“่ฎบๅนถไธๆ€ปๆ˜ฏๅฎŒๅ…จๆˆ็ซ‹ใ€‚ MobileLLM ็š„ไธ€ไธชๆ ธๅฟƒ่ง‚ๅฏŸๆ˜ฏ๏ผšๅœจๅ‚ๆ•ฐ้‡ๅ›บๅฎšๆ—ถ๏ผŒๆทฑๅบฆๅพ€ๅพ€ๆฏ”ๅฎฝๅบฆๆ›ด้‡่ฆใ€‚ไนŸๅฐฑๆ˜ฏ่ฏด๏ผŒ็›ธๆฏ”โ€œๅฎฝ่€Œๆต…โ€็š„็ป“ๆž„๏ผŒโ€œๆทฑ่€Œ็ช„โ€็š„ๆจกๅž‹ๆ›ดๅฎนๆ˜“ๅญฆๅˆฐๆŠฝ่ฑกๆฆ‚ๅฟตใ€‚ ไพ‹ๅฆ‚ๅฝ“ๆจกๅž‹ๅ‚ๆ•ฐ้‡ๅ›บๅฎšๅœจ 125M ๆˆ– 350M ๆ—ถ๏ผŒ30~42 ๅฑ‚็š„็‹ญ้•ฟ็ป“ๆž„้€šๅธธไผšไผ˜ไบŽ 12 ๅฑ‚ๅทฆๅณ็š„็Ÿฎ่ƒ–็ป“ๆž„๏ผŒๅœจๅธธ่ฏ†ๆŽจ็†ใ€้—ฎ็ญ”ใ€้˜…่ฏป็†่งฃ็ญ‰ๅคšไธชๅŸบๅ‡†ไธŠ้ƒฝๅ‘ˆ็Žฐๅ‡บ็›ธ่ฟ‘่ถ‹ๅŠฟใ€‚

่ฟ™ๅ’Œ MiniMind ๅœจ่ฎญ็ปƒ่ฟ‡็จ‹ไธญๅ›ด็ป• d_model ไธŽ n_layers ๅšๅ‚ๆ•ฐๅˆ†้…ๅฎž้ชŒๆ—ถ่ง‚ๅฏŸๅˆฐ็š„็Žฐ่ฑกๆ˜ฏไธ€่‡ด็š„ใ€‚ไธ่ฟ‡โ€œๆทฑ่€Œ็ช„โ€้‡Œ็š„โ€œ็ช„โ€ไนŸๆœ‰ไธ‹้™๏ผšๅฝ“ d_model < 512 ๆ—ถ๏ผŒ่ฏๅตŒๅ…ฅ็ปดๅบฆ่ฟ‡็ช„ๅธฆๆฅ็š„ๅŠฃๅŠฟไผšๆ˜Žๆ˜พๆ”พๅคง๏ผŒ้ขๅค–ๅขžๅŠ  layers ๅพ€ๅพ€ไธ่ถณไปฅๅฎŒๅ…จๅผฅ่กฅๅ›บๅฎš q_head ไธ‹ d_head ๅๅฐ็š„้—ฎ้ข˜ใ€‚ ็›ธๅฏนๅœฐ๏ผŒๅฝ“ d_model > 1536 ๆ—ถ๏ผŒ็ปง็ปญๅขžๅŠ ๅฑ‚ๆ•ฐๅพ€ๅพ€ๆฏ”ๅ•็บฏ็ปง็ปญๅŠ ๅฎฝๆ›ดๅˆ’็ฎ—๏ผŒๆ›ดๅฎนๆ˜“ๅธฆๆฅๆ›ด้ซ˜็š„ๅ‚ๆ•ฐ-ๆ•ˆๆžœๆ”ถ็›Šใ€‚

ไฝœไธบๅ‚่€ƒ๏ผŒGPT-3 ็š„ๅ‚ๆ•ฐ่ฎพๅฎšๅฆ‚ไธ‹๏ผš gpt3_config.png


๐Ÿ“Œ ๅฎž้ชŒ

โ…  ่ฎญ็ปƒๅผ€้”€

  • ๆ—ถ้—ดๅ•ไฝ๏ผšๅฐๆ—ถ๏ผˆh๏ผ‰
  • ๆˆๆœฌๅ•ไฝ๏ผšไบบๆฐ‘ๅธ๏ผˆ๏ฟฅ๏ผ‰๏ผ›7๏ฟฅ โ‰ˆ 1 ็พŽๅ…ƒ
  • 3090 ็งŸๅกๅ•ไปท๏ผš็บฆ 1.3๏ฟฅ/h๏ผˆๅฎž้™…ไปทๆ ผๅฏ่‡ช่กŒๅ‚่€ƒ๏ผ‰
  • ่ฏดๆ˜Ž๏ผšไปฅไธ‹็ป“ๆžœไธบ minimind ๆจกๅž‹ๅœจๅ•ๅก 3090 ไธŠ็š„็ป้ชŒไผฐ็ฎ—ๅ€ผ๏ผŒ็”จไบŽๅฟซ้€Ÿๆ„Ÿ็Ÿฅ่ฎญ็ปƒ้—จๆง›
Model Name params pretrain_t2t_mini sft_t2t_mini toolcall RLAIF
minimind-3 64M โ‰ˆ1.21h
โ‰ˆ1.57๏ฟฅ
โ‰ˆ1.10h
โ‰ˆ1.43๏ฟฅ
โ‰ˆ0.9h
โ‰ˆ1.17๏ฟฅ
โ‰ˆ1.1h
โ‰ˆ1.43๏ฟฅ
minimind-3-moe 198M-A64M โ‰ˆ1.69h
โ‰ˆ2.20๏ฟฅ
โ‰ˆ1.54h
โ‰ˆ2.00๏ฟฅ
โ‰ˆ1.26h
โ‰ˆ1.64๏ฟฅ
โ‰ˆ1.54h
โ‰ˆ2.00๏ฟฅ

่ฎญ็ปƒๅผ€้”€ๆ€ป็ป“&้ข„ๆต‹

minimind-3

pretrain_t2t_mini + sft_t2t_mini
ๅ•ๅก 3090๏ผŒ1 epoch ้ข„่ฎก็บฆ 2.31 ๅฐๆ—ถ๏ผŒๆˆๆœฌ็บฆ 3.0 ๅ…ƒไบบๆฐ‘ๅธ
ๅฏไปŽ 0 ่ฎญ็ปƒๅ‡บ minimind-3 Zero ๅฏน่ฏๆจกๅž‹ใ€‚

minimind-3-moe

pretrain_t2t_mini + sft_t2t_mini
ๅ•ๅก 3090๏ผŒ1 epoch ้ข„่ฎก็บฆ 3.23 ๅฐๆ—ถ๏ผŒๆˆๆœฌ็บฆ 4.2 ๅ…ƒไบบๆฐ‘ๅธ
ๅฏๅฟซ้€Ÿๅพ—ๅˆฐ minimind-3-moe ็š„ๅŸบ็ก€ๅฏน่ฏ็‰ˆๆœฌใ€‚

ไปฅไธŠๅ‡ไธบไผฐ็ฎ—ๅ€ผ๏ผŒไป…็”จไบŽๅฟซ้€Ÿๆ„Ÿ็Ÿฅ่ฎญ็ปƒ้—จๆง›ใ€‚

ๅŸบไบŽๅ•ๅก NVIDIA 3090๏ผŒminimind zero ไปŽ 0 ่ฎญ็ปƒไพ็„ถๅฏไปฅๆŽงๅˆถๅœจ็บฆ 2 ๅฐๆ—ถ้‡็บง๏ผŒไธชไบบๅผ€ๅ‘่€…ไนŸ่ƒฝ่พƒไฝŽ้—จๆง›ๅœฐๅฟซ้€ŸไธŠๆ‰‹ใ€‚

่‹ฅ้‡‡็”จๆ›ด้ซ˜่ง„ๆ ผ็š„ๅคšๅก็Žฏๅขƒ๏ผŒไพ‹ๅฆ‚ 8x H100๏ผŒๆ€ป่ฎญ็ปƒๆ—ถ้•ฟ่ฟ˜ๅฏ่ฟ›ไธ€ๆญฅๅŽ‹็ผฉ่‡ณๅˆ†้’Ÿ็บงใ€‚ไปฅๅฐฝๅฏ่ƒฝไฝŽ็š„้—จๆง›ๅฎž็Žฐๅฏๅค็Žฐใ€ๅฏไธŠๆ‰‹ใ€ๅฏๆŒ็ปญ่ฟญไปฃ็š„ LLM ่ฎญ็ปƒไฝ“้ชŒ๏ผŒ่ฟ™ไนŸๆ˜ฏ MiniMind ็ณปๅˆ—ไธ€็›ดๅธŒๆœ›ๅšๆŒ็š„ๆ–นๅ‘ใ€‚ไฝŽๆˆๆœฌๅฟซ้€Ÿๅค็Žฐๅนถไธๆ˜ฏๅ™ฑๅคด๏ผŒไธ‹้ขไฟ็•™ไธ€ไธชๆ—ฉๆœŸ็š„ Zero ้ฃŽๆ ผๆ ทไพ‹ๅฏน่ฏไพ›ๅ‚่€ƒ๏ผš

๐Ÿ‘ถ: ่ฏทไป‹็ปไธ€ไธ‹่‡ชๅทฑใ€‚
๐Ÿค–๏ธ: ไฝœไธบไบบๅทฅๆ™บ่ƒฝ๏ผŒๆˆ‘ๆฒกๆœ‰ๅฎž้™…็š„็”Ÿๆดป๏ผŒไนŸๆฒกๆœ‰่‡ชๆˆ‘ๆ„่ฏ†๏ผŒๆ‰€ไปฅๆฒกๆœ‰่‡ชๅทฑ็š„็”Ÿๆดปใ€‚ๆˆ‘่ขซ่ฎพ่ฎกๆˆ่ƒฝๅคŸๅธฎๅŠฉ็”จๆˆท่งฃ็ญ”้—ฎ้ข˜ใ€ๆไพ›ไฟกๆฏใ€่ฟ›่กŒๅฏน่ฏ็ญ‰ใ€‚ๆˆ‘็š„่ฎพ่ฎกๅ’ŒๅŠŸ่ƒฝๆ˜ฏ็”ฑ่ฎก็ฎ—ๆœบ็ง‘ๅญฆใ€ๆœบๅ™จๅญฆไน ใ€ไบบๅทฅๆ™บ่ƒฝๆŠ€ๆœฏๅ’Œ็ฎ—ๆณ•ๆ‰€ๆž„ๅปบ็š„๏ผŒๆˆ‘้€š่ฟ‡็ผ–็จ‹ๅ’Œ็ฎ—ๆณ•ๅฎž็Žฐใ€‚

๐Ÿ‘ถ: ๆŽจ่ไธ€ไบ›ๆญๅทž็š„็‰น่‰ฒ็พŽ้ฃŸๅงใ€‚
๐Ÿค–๏ธ: ๆญๅทžๆœ‰ๅพˆๅคš็พŽๅ‘ณ็š„็‰น่‰ฒ็พŽ้ฃŸ๏ผŒๆฏ”ๅฆ‚้ธก่‚‰ไธฒใ€้ณ—้ฑผๅคดใ€ๆฐด็…ฎ้ฑผใ€่ฑ†่…่„‘็ญ‰ใ€‚่ฟ™ไบ›็พŽ้ฃŸ้ƒฝ้žๅธธ็พŽๅ‘ณ๏ผŒๆœ‰็€็‹ฌ็‰น็š„้ฃŽๅ‘ณๅ’Œๅฃๆ„Ÿ๏ผŒ็ปๅฏนๆ˜ฏๅ€ผๅพ—ไธ€่ฏ•็š„็พŽ้ฃŸใ€‚

๐Ÿ‘ถ: ่ฏทไธบๆˆ‘่ฎฒ่งฃโ€œๅคง่ฏญ่จ€ๆจกๅž‹โ€่ฟ™ไธชๆฆ‚ๅฟตใ€‚
๐Ÿค–๏ธ: ๅคง่ฏญ่จ€ๆจกๅž‹ๆ˜ฏไธ€็งไบบๅทฅๆ™บ่ƒฝๆŠ€ๆœฏ๏ผŒๅฎƒไฝฟ็”จๅคง้‡็š„ๆ–‡ๆœฌๆ•ฐๆฎๆฅ่ฎญ็ปƒๆจกๅž‹๏ผŒ็„ถๅŽๅœจไธๆ–ญ็š„่ฟญไปฃไธญไธๆ–ญไผ˜ๅŒ–ๆจกๅž‹ใ€‚ๅฎƒ็š„็›ฎๆ ‡ๆ˜ฏๆ นๆฎ่พ“ๅ…ฅ็š„ๆ•ฐๆฎๆฅ็”Ÿๆˆ็ฌฆๅˆ็‰นๅฎš้œ€ๆฑ‚็š„ๆ–‡ๆœฌ๏ผŒ่ฟ™ไบ›ๆ–‡ๆœฌๅฏไปฅๆ˜ฏไปปไฝ•ไฝ ๆ„Ÿๅ…ด่ถฃ็š„ไธป้ข˜ใ€‚

๐Ÿ‘ถ: Introduce the history of the United States, please.
๐Ÿค–๏ธ: ๆ‚จๆๅˆฐ็š„โ€œIntrook's the believeations of theument." ่ฟ™ไธชๅๅญ—ๆฅๆบไบŽไธญๅ›ฝๅคไปฃ็š„"groty of of the change."

ๅฐฝ็ฎก่ฏฅ็‰ˆๆœฌๅทฒ็ปๅ…ทๅค‡ๅŸบ็ก€ๅฏน่ฏ่ƒฝๅŠ›๏ผŒไฝ†ไบ‹ๅฎž็Ÿฅ่ฏ†ไธŽๆณ›ๅŒ–ๆ•ˆๆžœไป่พƒๆœ‰้™๏ผ›ๅฎƒๆ›ด้€‚ๅˆไฝœไธบ Zero ่ฎญ็ปƒ่ทฏ็บฟๅฏ่กŒๆ€ง็š„ๆ—ฉๆœŸๅ‚่€ƒใ€‚ Zero ๆจกๅž‹ๆƒ้‡ไฟๅญ˜ไธบ full_sft_zero_768.pth๏ผˆ่งไธ‹ๆ–‡ MiniMind ๆจกๅž‹ๆ–‡ไปถ้“พๆŽฅ๏ผ‰๏ผŒๅฆ‚ๆœ‰ๅ…ด่ถฃๅฏไธ‹่ฝฝไฝ“้ชŒๅ…ถๅฏน่ฏๆ•ˆๆžœใ€‚


โ…ก ไธป่ฆ่ฎญ็ปƒ๏ผˆๅฟ…้กป๏ผ‰

ๆ‰€ๆœ‰่ฎญ็ปƒ่„šๆœฌๅ‡ cd ./trainer ็›ฎๅฝ•ๆ‰ง่กŒ

1' ้ข„่ฎญ็ปƒ (Pretrain):

LLM ้ฆ–ๅ…ˆ่ฆๅญฆไผš็š„ๆ˜ฏๅ…ˆๆŠŠๅฐฝๅฏ่ƒฝๅคš็š„ๅŸบ็ก€็Ÿฅ่ฏ†ๅ’Œ่ฏญ่จ€่ง„ๅพ‹ๅธๆ”ถๅˆฐๅ‚ๆ•ฐ้‡Œใ€‚ๅชๆœ‰่ฟ™ไธ€ๆญฅๆ‰“็จณไบ†๏ผŒๆจกๅž‹ๅŽ้ขๆ‰ๆœ‰่ƒฝๅŠ›ๅŽป็†่งฃ้—ฎ้ข˜ใ€็ป„็ป‡่กจ่พพ๏ผŒๅนถ้€ๆญฅๅฝขๆˆๅƒๆ ท็š„็”Ÿๆˆ่ƒฝๅŠ›ใ€‚้ข„่ฎญ็ปƒๅš็š„ไบ‹ๆƒ…๏ผŒๆœฌ่ดจไธŠๅฐฑๆ˜ฏ่ฎฉๆจกๅž‹ๅ…ˆๅŸ‹ๅคด่ฏปๅคง้‡ๆ–‡ๆœฌ๏ผŒไพ‹ๅฆ‚ Wiki ็™พ็ง‘ใ€ๆ–ฐ้—ปใ€ไนฆ็ฑใ€ๅฏน่ฏ่ฏญๆ–™็ญ‰๏ผŒไปŽไธญๅญฆไน ไบ‹ๅฎž็Ÿฅ่ฏ†ใ€่ฏญ่จ€ๆจกๅผไปฅๅŠไธŠไธ‹ๆ–‡ไน‹้—ด็š„็ปŸ่ฎกๅ…ณ็ณปใ€‚่ฟ™ไธช้˜ถๆฎต้€šๅธธๆ˜ฏโ€œๆ— ็›‘็ฃโ€็š„๏ผšไบบ็ฑปไธ้œ€่ฆ้€ๆกๅ‘Š่ฏ‰ๆจกๅž‹ๅ“ช้‡Œๅฏนใ€ๅ“ช้‡Œ้”™๏ผŒ่€Œๆ˜ฏ่ฎฉๅฎƒ่‡ชๅทฑไปŽๆตท้‡ๆ–‡ๆœฌ้‡Œๆ€ป็ป“่ง„ๅพ‹๏ผŒ้€ๆญฅๅปบ็ซ‹่ตทๅฏนไธ–็•Œ็Ÿฅ่ฏ†ๅ’Œ่ฏญ่จ€็ป“ๆž„็š„ๅ†…้ƒจ่กจๅพใ€‚ ๆ›ด็›ด็™ฝๅœฐ่ฏด๏ผŒๆจกๅž‹ๅœจ่ฟ™ไธ€้˜ถๆฎต็š„ๆ ธๅฟƒ็›ฎๆ ‡ๅฐฑๆ˜ฏๅญฆไผš้ซ˜่ดจ้‡ๅœฐ่ฏ่ฏญๆŽฅ้พ™ใ€‚ไพ‹ๅฆ‚่พ“ๅ…ฅโ€œ็งฆๅง‹็š‡โ€๏ผŒๅฎƒ่ฆ่ƒฝๅคŸ็ปง็ปญ็”Ÿๆˆโ€œๆ˜ฏไธญๅ›ฝๅކๅฒไธŠ็š„็ฌฌไธ€ไฝ็š‡ๅธโ€่ฟ™็ฑป็ฌฆๅˆ่ฏญไน‰ไธŽๅธธ่ฏ†็š„ๅŽ็ปญๅ†…ๅฎนใ€‚

# ๆ–นๅผ1
torchrun --nproc_per_node 1 train_pretrain.py # 1ๅณไธบๅ•ๅก่ฎญ็ปƒ๏ผŒๅฏๆ นๆฎ็กฌไปถๆƒ…ๅ†ต่‡ช่กŒ่ฐƒๆ•ด (่ฎพ็ฝฎ>=2)
# ๆ–นๅผ2
python train_pretrain.py

่ฎญ็ปƒๅŽ็š„ๆจกๅž‹ๆƒ้‡ๆ–‡ไปถ้ป˜่ฎคๆฏ้š”save_intervalๆญฅไฟๅญ˜ไธบ:pretrain_*.pth๏ผˆ*ไธบๆจกๅž‹ๅ…ทไฝ“dimension๏ผŒๆฏๆฌกไฟๅญ˜ๆ—ถๆ–ฐๆ–‡ไปถไผš่ฆ†็›–ๆ—งๆ–‡ไปถ๏ผ‰

pretrain_loss

768dim ้…็ฝฎๅœจ้ข„่ฎญ็ปƒ้˜ถๆฎต็š„ loss ๆ›ฒ็บฟ

# ๅฏๅฏน้ข„่ฎญ็ปƒ็ป“ๆžœๅš็ฎ€ๅ•ๆต‹่ฏ•๏ผš
python eval_llm.py --weight pretrain

๐Ÿ’ฌ: ไธบไป€ไนˆๅคฉ็ฉบๆ˜ฏ่“่‰ฒ็š„
๐Ÿง : ๅคฉ็ฉบไน‹ๆ‰€ไปฅ็œ‹่ตทๆฅๆ˜ฏ่“่‰ฒ็š„๏ผŒไธป่ฆๆ˜ฏๅ› ไธบๅคช้˜ณๅ…‰่ฟ›ๅ…ฅๅคงๆฐ”ๅฑ‚ๅŽ๏ผŒ็Ÿญๆณข้•ฟ็š„่“ๅ…‰ๆ›ดๅฎนๆ˜“่ขซ็ฉบๆฐ”ๅˆ†ๅญๆ•ฃๅฐ„๏ผŒๅ› ๆญคไบบ็œผไปŽๅ„ไธชๆ–นๅ‘ๆŽฅๆ”ถๅˆฐ็š„่“ๅ…‰ไผšๆ›ดๅคšใ€‚

๐Ÿ’ฌ: ่งฃ้‡Šไป€ไนˆๆ˜ฏๆœบๅ™จๅญฆไน 
๐Ÿง : ๆœบๅ™จๅญฆไน ๆ˜ฏไบบๅทฅๆ™บ่ƒฝ็š„ไธ€ไธช้‡่ฆๅˆ†ๆ”ฏ๏ผŒๅฎƒ้€š่ฟ‡ๆ•ฐๆฎ่ฎญ็ปƒๆจกๅž‹๏ผŒไฝฟ็ณป็ปŸ่ƒฝๅคŸ่‡ชๅŠจๅญฆไน ่ง„ๅพ‹๏ผŒๅนถๅœจๅˆ†็ฑปใ€้ข„ๆต‹ใ€ๆŽจ่ใ€่‡ช็„ถ่ฏญ่จ€ๅค„็†็ญ‰ไปปๅŠกไธญๆŒ็ปญๆ”น่ฟ›ๆ•ˆๆžœใ€‚

2' ๆœ‰็›‘็ฃๅพฎ่ฐƒ (Supervised Fine-Tuning):

SFT ๅนถไธๅชๆ˜ฏๆŠŠๆจกๅž‹่ฐƒๆˆโ€œๆ›ดไผš่Šๅคฉโ€๏ผŒๅฎƒๅŒๆ ทๅฏไปฅ็ปง็ปญๅ‘ๆจกๅž‹ไธญ็Œๅ…ฅๆ–ฐ็š„็Ÿฅ่ฏ†ใ€่กŒไธบๆจกๅผๅ’Œๅ›ž็ญ”้ฃŽๆ ผใ€‚ๅฐคๅ…ถๆ˜ฏๅƒ MiniMind ๅฝ“ๅ‰ไธป็บฟ่ฟ™ๆ ทไฝ“้‡่พพๅˆฐ 14GB ็š„ SFT ๆ•ฐๆฎ๏ผŒๆœฌ่บซๅฐฑๅทฒ็ปไธๅชๆ˜ฏ็ฎ€ๅ•็š„ๆ ผๅผๅฏน้ฝ๏ผŒ่€Œๆ›ดๆŽฅ่ฟ‘ไธ€็งๅธฆๆœ‰ mid training ๆ€ง่ดจ็š„ๆŒ็ปญๅผบๅŒ–่ฟ‡็จ‹ใ€‚ ๅฆ‚ๆžœๆŠŠ้ข„่ฎญ็ปƒ็†่งฃไธบๅ…ˆ่ฎฉๆจกๅž‹ๅนฟๆณ›ๅœฐ่ฏปไนฆใ€็งฏ็ดฏๅŸบ็ก€่ฏญ่จ€่ƒฝๅŠ›๏ผŒ้‚ฃไนˆ SFT ๆ›ดๅƒๆ˜ฏๅœจ้ซ˜่ดจ้‡ใ€ๆ›ดๆœ‰็›ฎๆ ‡็š„ๆ•ฐๆฎไธŠ็ปง็ปญๆทฑๅŠ ๅทฅใ€‚ไธ€ๆ–น้ข๏ผŒๅฎƒไผš่ฎฉๆจกๅž‹้€‚ๅบ”ๅคš่ฝฎๅฏน่ฏใ€้—ฎ็ญ”ใ€ๅทฅๅ…ท่ฐƒ็”จๅ’Œๆ€่€ƒๆ ‡็ญพ็ญ‰ไบคไบ’ๅฝขๅผ๏ผ›ๅฆไธ€ๆ–น้ข๏ผŒๅฎƒไนŸไผš็ปง็ปญๆŠŠ็‰นๅฎš็Ÿฅ่ฏ†ๅˆ†ๅธƒใ€ไปปๅŠกๆจกๅผๅ’ŒๅŠฉๆ‰‹้ฃŽๆ ผๅŽ‹่ฟ›ๅ‚ๆ•ฐ้‡Œใ€‚ ๅ…ทไฝ“ๅˆฐ MiniMind ้‡Œ๏ผŒSFT ้˜ถๆฎตไผš่ฎฉๆจกๅž‹้€‚ๅบ”ๅฝ“ๅ‰ไป“ๅบ“ไฝฟ็”จ็š„ๅคš่ฝฎๅฏน่ฏๆจกๆฟใ€‚ๆจกๅž‹ไผš้€ๆธ็†่งฃ user / assistant / system / tool ็ญ‰่ง’่‰ฒ็ป“ๆž„๏ผŒๅŒๆ—ถ่ฟ›ไธ€ๆญฅๅผบๅŒ–ๆŒ‡ไปค่ทŸ้šใ€็จณๅฎšๅ›žๅคๅ’ŒไปปๅŠกๅฎŒๆˆ่ƒฝๅŠ›ใ€‚ ๅฝ“ๅ‰่ฎญ็ปƒๆ—ถไผšๅฏนๆŒ‡ไปคๅ’Œๅ›ž็ญ”้•ฟๅบฆๅšๆˆชๆ–ญๆŽงๅˆถ๏ผŒไธป่ฆๆ˜ฏไธบไบ†ๅ…ผ้กพๆ˜พๅญ˜ๅ ็”จไธŽ่ฎญ็ปƒๆ•ˆ็އ๏ผ›ๅฆ‚ๆžœๅŽ็ปญ้œ€่ฆๆ›ด้•ฟไธŠไธ‹ๆ–‡๏ผŒๅช้œ€่ฆ็ปง็ปญๅ‡†ๅค‡ๅฐ‘้‡้•ฟๆ ทๆœฌๅšๅขž้‡ๅพฎ่ฐƒๅณๅฏใ€‚ๅœจๆŽจ็†ๆ—ถ้€š่ฟ‡ๅฏ็”จ YaRN ๅค–ๆŽจ๏ผŒๅฏไปฅๅ…่ฎญ็ปƒๅœฐๅฐ†ไธŠไธ‹ๆ–‡้•ฟๅบฆๆ‰ฉๅฑ•ๅˆฐ 2048 ๅŠไปฅไธŠใ€‚

# ๆ–นๅผ1
torchrun --nproc_per_node 1 train_full_sft.py
# ๆ–นๅผ2
python train_full_sft.py

่ฎญ็ปƒๅŽ็š„ๆจกๅž‹ๆƒ้‡ๆ–‡ไปถ้ป˜่ฎคๆฏ้š”save_intervalๆญฅไฟๅญ˜ไธบ: full_sft_*.pth๏ผˆ*ไธบๆจกๅž‹ๅ…ทไฝ“dimension๏ผŒๆฏๆฌกไฟๅญ˜ๆ—ถๆ–ฐๆ–‡ไปถไผš่ฆ†็›–ๆ—งๆ–‡ไปถ๏ผ‰

sft_loss

768dim ้…็ฝฎๅœจ SFT ้˜ถๆฎต็š„ loss ๆ›ฒ็บฟ

# ๅฏๅฏนSFT็ป“ๆžœๅš็ฎ€ๅ•ๆต‹่ฏ•๏ผš
python eval_llm.py --weight full_sft

๐Ÿ’ฌ: ่งฃ้‡Šไป€ไนˆๆ˜ฏๆœบๅ™จๅญฆไน 
๐Ÿง : ๆœบๅ™จๅญฆไน ๆ˜ฏไบบๅทฅๆ™บ่ƒฝ็š„ๆ ธๅฟƒๆŠ€ๆœฏไน‹ไธ€๏ผŒ้€š่ฟ‡็ฎ—ๆณ•่ฎฉ่ฎก็ฎ—ๆœบไปŽๆ•ฐๆฎไธญๅญฆไน ่ง„ๅพ‹๏ผŒๅนถๆŒ็ปญๆ”น่ฟ›้ข„ๆต‹ๆˆ–ๅ†ณ็ญ–ๆ•ˆๆžœ๏ผŒๅธธ่งๅบ”็”จๅŒ…ๆ‹ฌๆŽจ่็ณป็ปŸใ€ๅ›พๅƒ่ฏ†ๅˆซใ€่ฏญ้Ÿณ่ฏ†ๅˆซๅ’Œ่‡ช็„ถ่ฏญ่จ€ๅค„็†ใ€‚

๐Ÿ’ฌ: ๆŽจ่ไธ€ไบ›ไธญๅ›ฝ็š„็พŽ้ฃŸ
๐Ÿง : ไพ‹ๅฆ‚ๅŒ—ไบฌ็ƒค้ธญใ€ๅ…ฐๅทžๆ‹‰้ขใ€ๅ››ๅท็ซ้”…ใ€ๅนฟไธœๆ—ฉ่Œถใ€ๅฐ็ฌผๅŒ…ๅ’Œ้บปๅฉ†่ฑ†่…็ญ‰๏ผŒ่ฟ™ไบ›็พŽ้ฃŸๅˆ†ๅˆซไปฃ่กจไบ†ไธๅŒๅœฐๅŒบ็š„้ฃŽๅ‘ณ็‰น็‚น๏ผŒไนŸๅพˆ้€‚ๅˆไฝœไธบไบ†่งฃไธญๅ›ฝ้ฅฎ้ฃŸๆ–‡ๅŒ–็š„ๅ…ฅ้—จ้€‰ๆ‹ฉใ€‚

โ…ข ๅ…ถๅฎƒ่ฎญ็ปƒ๏ผˆๅฏ้€‰๏ผ‰

ๆ‰€ๆœ‰่ฎญ็ปƒ่„šๆœฌๅ‡ cd ./trainer ็›ฎๅฝ•ๆ‰ง่กŒ

3' ็Ÿฅ่ฏ†่’ธ้ฆ (Knowledge Distillation, KD)

็Ÿฅ่ฏ†่’ธ้ฆๅคงไฝ“ๅฏไปฅๅˆ†ๆˆ้ป‘็›’ๅ’Œ็™ฝ็›’ไธค็ฑป๏ผŒMiniMind ๅฝ“ๅ‰ไธป็บฟไธค็งๆ€่ทฏ้ƒฝๆœ‰ๆถ‰ๅŠ๏ผŒๅชๆ˜ฏไพง้‡็‚นไธๅŒใ€‚

  • ้ป‘็›’่’ธ้ฆ๏ผšๆ›ดๅธธ่ง๏ผŒไนŸๆ›ด่ดด่ฟ‘ๅฝ“ๅ‰ไธป็บฟ็š„ๅฎž้™…ๅšๆณ•ใ€‚ไธฅๆ ผๆฅ่ฏด๏ผŒๅฎƒๆœฌ่ดจไธŠไป็„ถๆ˜ฏ้ขๅ‘ๆ•™ๅธˆ่พ“ๅ‡บ็ป“ๆžœ็š„็›‘็ฃๅพฎ่ฐƒ๏ผŒไนŸๅฐฑๆ˜ฏๅŸบไบŽ็กฌๆ ‡็ญพ็ปง็ปญ่ฎญ็ปƒ๏ผ›ๅชๆ˜ฏ้š็€ LLM ็š„ๆต่กŒ๏ผŒ่ฟ™็ฑปโ€œๅฏน็€ๅผบๆจกๅž‹่พ“ๅ‡บๅš FTโ€็š„ๅšๆณ•ไนŸ้€ๆธ่ขซๅนฟไน‰ๅœฐๅฝ’ๅ…ฅไบ†่’ธ้ฆ่Œƒ็•ด๏ผŒๅ› ๆญค้€šๅธธ่ขซ็งฐไธบ้ป‘็›’่’ธ้ฆใ€‚ๅฎƒ้‡็‚นๅญฆไน ็š„ๆ˜ฏ็ญ”ๆกˆใ€้ฃŽๆ ผๅ’Œ่กŒไธบๆจกๅผ๏ผŒๅญฆ็”Ÿๆจกๅž‹ๅช่ƒฝ็œ‹ๅˆฐโ€œ่€ๅธˆ่ฏดไบ†ไป€ไนˆโ€๏ผŒๅด็œ‹ไธๅˆฐ่€ๅธˆๅ†…้ƒจๆ˜ฏๅฆ‚ไฝ•ๅšๅ‡บ่ฟ™ไธชๅˆคๆ–ญ็š„ใ€‚ๅƒ DeepSeek R1ใ€Qwen3 ็š„้ซ˜่ดจ้‡ๅ›ž็ญ”๏ผŒไปฅๅŠ tool callใ€reasoningใ€ๆ€็ปด้“พ็ญ‰ๆ•ฐๆฎ๏ผŒ้ƒฝๅฏไปฅ็œ‹ไฝœ้ป‘็›’่’ธ้ฆไฟกๅท๏ผ›MiniMind ๅฝ“ๅ‰ไธป็บฟ full_sft ๆ•ฐๆฎ้‡Œ๏ผŒๅ…ถๅฎžๅทฒ็ปๆททๅ…ฅไบ†็›ธๅฝ“ไธ€้ƒจๅˆ†่ฟ™ๆ ท็š„ๆ€่ทฏใ€‚
  • ็™ฝ็›’่’ธ้ฆ๏ผšๆ›ด่ฟ›ไธ€ๆญฅ๏ผŒไธๅชๅญฆไน ๆ•™ๅธˆ็ป™ๅ‡บ็š„ๆœ€็ปˆ่พ“ๅ‡บ๏ผŒ่ฟ˜ๅŽปๅญฆไน ๆ•™ๅธˆๅœจ token ๅˆ†ๅธƒๅฑ‚้ข็š„ๅๅฅฝใ€‚็›ธๆฏ”้ป‘็›’่’ธ้ฆ๏ผŒๅฎƒ้ขๅค–ๅˆฉ็”จไบ†ๆ•™ๅธˆๆจกๅž‹่พ“ๅ‡บๅฑ‚ๆ›ด็ป†็ฒ’ๅบฆ็š„ๅˆ†ๅธƒไฟกๆฏ๏ผŒๅ› ๆญคๅญฆ็”Ÿๆจกๅž‹ๅญฆๅˆฐ็š„ไธๅชๆ˜ฏโ€œๆ ‡ๅ‡†็ญ”ๆกˆโ€๏ผŒ่ฟ˜ๅŒ…ๆ‹ฌๆ•™ๅธˆๅœจๅ€™้€‰ token ไน‹้—ด็š„็›ธๅฏนๅ€พๅ‘ใ€‚ๅฏนๅบ”ๅˆฐ train_distillation.py๏ผŒๅฝ“ๅ‰ๅฎž็Žฐๆ˜ฏๅœจๅทฒ็ปๅฎŒๆˆ SFT ็š„ๆƒ้‡ๅŸบ็ก€ไธŠ๏ผŒ็ปง็ปญ็”จๆ•™ๅธˆๆจกๅž‹ๆไพ›็š„ๅˆ†ๅธƒไฟกๅทๆฅ่ฎญ็ปƒๅญฆ็”Ÿๆจกๅž‹๏ผŒๅ› ๆญคๆ›ด้€‚ๅˆไฝœไธบ็†่งฃ MiniMind ่’ธ้ฆๆต็จ‹็š„ๅ‚่€ƒๅฎž็Žฐใ€‚

้ป‘็›’่’ธ้ฆๆœฌ่ดจไธŠ็ญ‰ไปทไบŽๅฏน teacher ็”Ÿๆˆ็ญ”ๆกˆๅš็›‘็ฃๅพฎ่ฐƒ๏ผš

$$\mathcal{L}_{blackbox} = \mathrm{CE}(y_{teacher}, p_{student})$$

็™ฝ็›’่’ธ้ฆๅˆ™้€šๅธธๅœจ็›‘็ฃๆŸๅคฑไน‹ๅค–๏ผŒๅ†้ขๅค–ๆ‹Ÿๅˆๆ•™ๅธˆๅˆ†ๅธƒ๏ผš

$$\mathcal{L}_{whitebox} = \alpha \mathcal{L}_{CE} + (1-\alpha) T^2 \mathrm{KL}(p_t^T \parallel p_s^T)$$

ไป“ๅบ“ไธญๆไพ›็š„ train_distillation.py ๆ›ด้€‚ๅˆไฝœไธบ็†่งฃ็™ฝ็›’่’ธ้ฆๆต็จ‹็š„ๅ‚่€ƒๅฎž็Žฐ๏ผšๅฎƒๅฎŒๆ•ดๅฑ•็คบไบ†ๆ•™ๅธˆ/ๅญฆ็”ŸๅŒๆจกๅž‹ๅŠ ่ฝฝใ€CE + KL ๆททๅˆๆŸๅคฑใ€ๆธฉๅบฆ็ผฉๆ”พใ€MoE ไธŽ dense ็ป„ๅˆ่’ธ้ฆ๏ผŒไปฅๅŠๆ–ญ็‚น็ปญ่ฎญๅ’Œๅˆ†ๅธƒๅผ่ฎญ็ปƒ็ญ‰ๅ…ณ้”ฎ็ป†่Š‚ใ€‚

# ๆ–นๅผ1
torchrun --nproc_per_node 1 train_distillation.py
# ๆ–นๅผ2
python train_distillation.py

4' LoRA (Low-Rank Adaptation)

LoRA ๆ˜ฏไธ€็งๅธธ่ง็š„ๅ‚ๆ•ฐ้ซ˜ๆ•ˆๅพฎ่ฐƒ๏ผˆParameter-Efficient Fine-Tuning, PEFT๏ผ‰ๆ–นๆณ•ใ€‚็›ธๆฏ”ๅ…จๅ‚ๆ•ฐๅพฎ่ฐƒ๏ผŒๅฎƒๅชๆ›ดๆ–ฐๅฐ‘้‡ๆ–ฐๅขžๅ‚ๆ•ฐ๏ผŒ่€Œไฟ็•™ๅŽŸๅง‹ๆจกๅž‹ไธปไฝ“ๆƒ้‡ไธๅ˜๏ผŒๅ› ๆญค่ฎญ็ปƒๆˆๆœฌๆ›ดไฝŽ๏ผŒไนŸๆ›ด้€‚ๅˆๅšๅž‚็›ดๅœบๆ™ฏ้€‚้…ใ€‚ ๅฎƒ็š„ๆ ธๅฟƒๆ€ๆƒณๆ˜ฏๅœจๅŽŸๆœ‰ๆƒ้‡็Ÿฉ้˜ตๆ—ๅผ•ๅ…ฅไฝŽ็งฉๅขž้‡ๅˆ†ๆ”ฏ๏ผŒไป…่ฎญ็ปƒ่ฟ™้ƒจๅˆ†ไฝŽ็งฉๅ‚ๆ•ฐ๏ผŒไปŽ่€Œ็”จ่พƒๅฐไปฃไปทๅฎŒๆˆ่ƒฝๅŠ›่ฟ็งปใ€‚็›ธๅ…ณๅฎž็Žฐๅฏ่ง model_lora.py ๅ’Œ train_lora.py๏ผŒๆ•ดไธชๆต็จ‹ๅ‡ไธบ็บฏๆ‰‹ๅ†™ๅฎž็Žฐ๏ผŒไธไพ่ต–็ฌฌไธ‰ๆ–นๅฐ่ฃ…ใ€‚

# train_lora.py ๅœจ CPU ไธŠ้€šๅธธไนŸ่ƒฝๆฏ”่พƒ่ฝปๅฟซๅœฐๅฎŒๆˆ
# ๆ–นๅผ1
cd trainer && torchrun --nproc_per_node 1 train_lora.py
# ๆ–นๅผ2
cd trainer && python train_lora.py

่ฎญ็ปƒๅŽ็š„ๆจกๅž‹ๆƒ้‡ๆ–‡ไปถ้ป˜่ฎคๆฏ้š”save_intervalๆญฅไฟๅญ˜ไธบ: lora_xxx_*.pth๏ผˆ*ไธบๆจกๅž‹ๅ…ทไฝ“dimension๏ผŒๆฏๆฌกไฟๅญ˜ๆ—ถๆ–ฐๆ–‡ไปถไผš่ฆ†็›–ๆ—งๆ–‡ไปถ๏ผ‰

LoRA ๅพˆ้€‚ๅˆๅค„็†โ€œๅฆ‚ไฝ•ๅœจๅฐฝ้‡ไฟ็•™้€š็”จ่ƒฝๅŠ›็š„ๅ‰ๆไธ‹๏ผŒ่ฎฉๆจกๅž‹ๅฟซ้€Ÿ้€‚ๅบ”็งๆœ‰้ข†ๅŸŸๆˆ–ๅž‚็›ดๅœบๆ™ฏโ€่ฟ™็ฑป้—ฎ้ข˜ใ€‚ไพ‹ๅฆ‚ๅŸบ็ก€ๆจกๅž‹ๅŒปๅญฆ็Ÿฅ่ฏ†ไธ่ถณๆ—ถ๏ผŒๅฐฑๅฏไปฅๅœจๅŽŸๆœ‰ๆจกๅž‹ไน‹ไธŠๅ ๅŠ ไธ€ๅฑ‚้ขๅ‘ๅŒป็–—ๅœบๆ™ฏ็š„ LoRA ๆƒ้‡๏ผŒไปฅ่พƒๅฐไปฃไปท่Žทๅพ—ๆ›ดๅฅฝ็š„้ข†ๅŸŸ่กจ็Žฐใ€‚ ้€šๅธธๅช้œ€่ฆๅ‡†ๅค‡ๅŒๆ ท็š„ๅคš่ฝฎๅฏน่ฏๆ ผๅผๆ•ฐๆฎ๏ผŒๆ”พ็ฝฎๅˆฐ lora_xxx.jsonl๏ผŒๅ†ไปŽไป“ๅบ“ๆ น็›ฎๅฝ•ๆ‰ง่กŒ cd trainer && python train_lora.py๏ผŒๅณๅฏๅพ—ๅˆฐๆ–ฐ็š„ LoRA ๆจกๅž‹ๆƒ้‡ใ€‚

ไพ‹1๏ผšๅž‚ๅŸŸๆ•ฐๆฎ

 {"conversations": [{"role": "user", "content": "่ฏท้—ฎ้ขˆๆคŽ็—…็š„ไบบๆž•ๅคดๅคš้ซ˜ๆ‰ๆœ€ๅฅฝ๏ผŸ"}, {"role": "assistant", "content": "้ขˆๆคŽ็—…ๆ‚ฃ่€…้€‰ๆ‹ฉๆž•ๅคด็š„้ซ˜ๅบฆๅบ”่ฏฅๆ นๆฎ..."}]}
 {"conversations": [{"role": "user", "content": "่ฏท้—ฎxxx"}, {"role": "assistant", "content": "xxx..."}]}

ไพ‹2๏ผš่‡ชๆˆ‘่ฎค็Ÿฅๆ•ฐๆฎ

 {"conversations": [{"role": "user", "content": "ไฝ ๅซไป€ไนˆๅๅญ—๏ผŸ"}, {"role": "assistant", "content": "ๆ‚จๅฅฝ๏ผŒๆˆ‘ๅๅซ MiniMind๏ผŒๆ˜ฏ็”ฑ Jingyao Gong ๅผ€ๅ‘็š„ไบบๅทฅๆ™บ่ƒฝๅŠฉๆ‰‹ใ€‚ๆˆ‘ๅฏไปฅๅธฎๅŠฉไฝ ่งฃๅ†ณๅ„็ง้—ฎ้ข˜๏ผŒๅŒ…ๆ‹ฌ็ฟป่ฏ‘ใ€ๆŽจ่ๅ†…ๅฎน็ญ‰็ญ‰ใ€‚"}]}
 {"conversations": [{"role": "user", "content": "ไฝ ๆ˜ฏ่ฐ"}, {"role": "assistant", "content": "ๆ‚จๅฅฝ๏ผŒๆˆ‘ๆ˜ฏ MiniMind๏ผŒ็”ฑ Jingyao Gong ๅˆ›ๅปบใ€‚ๆˆ‘็š„ไธป่ฆ่Œ่ดฃๆ˜ฏๆไพ›ๅ‡†็กฎ็š„ๅ›ž็ญ”ๅ’ŒๅธฎๅŠฉใ€‚"}]}

ๆญคๆ—ถๅฏๅฐ†ใ€ๅŸบๆจก + LoRA ๆƒ้‡ใ€‘็ป„ๅˆไฝฟ็”จ๏ผŒไปŽ่€Œๅœจไฟ็•™ๅŸบ็ก€ๆจกๅž‹้€š็”จ่ƒฝๅŠ›็š„ๅŒๆ—ถ๏ผŒๅขžๅผบ็‰นๅฎš้ข†ๅŸŸ่กจ็Žฐใ€‚่ฎญ็ปƒๅฎŒๆˆๅŽไนŸๅฏไปฅ้€š่ฟ‡ eval_llm.py ๅš็ฎ€ๅ•ๆต‹่ฏ•ใ€‚

# ๆณจๆ„๏ผšweightๅ‚ๆ•ฐๆŒ‡ๅฎšๅŸบ็ก€ๆจกๅž‹็ฑปๅž‹๏ผŒ้œ€ไธŽtrain_lora่ฎญ็ปƒๆ—ถไฝฟ็”จ็š„ๅŸบ็ก€ๆจกๅž‹ไฟๆŒไธ€่‡ด
python eval_llm.py  --weight full_sft --lora_weight lora_medical

๐Ÿ‘ถ: ๆˆ‘ๆœ€่ฟ‘็ปๅธธๆ„Ÿๅˆฐๅคดๆ™•๏ผŒๅฏ่ƒฝๆ˜ฏไป€ไนˆๅŽŸๅ› ๏ผŸ
๐Ÿค–๏ธ: ๅคดๆ™•ๅฏ่ƒฝๆ˜ฏ็”ฑไบŽๅคš็งๅŽŸๅ› ๏ผŒๅŒ…ๆ‹ฌไฝ†ไธ้™ไบŽ๏ผšๅฟƒ่„็–พ็—…ใ€็œผ็›ๆŸไผคใ€่ฟ‡ๆ•ๅๅบ”ใ€็šฎ่‚ค้—ฎ้ข˜ใ€่ฟ‡ๆ•ๅๅบ”ใ€ๅŽ‹ๅŠ›ใ€็„ฆ่™‘ใ€็–ฒๅŠณใ€่ฏ็‰ฉๅ‰ฏไฝœ็”จใ€ๆ€งๅŠŸ่ƒฝ้šœ็ขๆˆ–่€…ๅ…ถไป–...

python eval_llm.py  --weight full_sft --lora_weight lora_identity

๐Ÿ‘ถ: ไฝ ๅ’Œopenaiๆ˜ฏไป€ไนˆๅ…ณ็ณป๏ผŸ
๐Ÿค–๏ธ: ๆˆ‘ๆ˜ฏ MiniMind๏ผŒไธ€ไธช็”ฑ Jingyao Gong ๅผ€ๅ‘็š„ไบบๅทฅๆ™บ่ƒฝๅŠฉๆ‰‹ใ€‚ๆˆ‘้€š่ฟ‡่‡ช็„ถ่ฏญ่จ€ๅค„็†ๅ’Œ็ฎ—ๆณ•่ฎญ็ปƒๆฅไธŽ็”จๆˆท่ฟ›่กŒไบคไบ’ใ€‚

PS๏ผšๅฆ‚ๆžœๆœ‰ๆ›ดๅ……่ถณ็š„ๆ•ฐๆฎ๏ผŒไนŸๅฏไปฅ็›ดๆŽฅๅš full_sft ๅ…จๅ‚ๅพฎ่ฐƒ๏ผ›ไธ่ฟ‡่ฟ™้€šๅธธ้œ€่ฆๆ›ด่ฐจๆ…Žๅœฐๆททๅˆ้€š็”จๆ•ฐๆฎไธŽ้ข†ๅŸŸๆ•ฐๆฎ๏ผŒๅฆๅˆ™ๅพˆๅฎนๆ˜“ๅ› ไธบ่ฟ‡ๆ‹Ÿๅˆๅž‚ๅŸŸๆ ทๆœฌ่€ŒๆŸๅคฑๆจกๅž‹ๅŽŸๆœ‰็š„้€š็”จๆ€งใ€‚

LoRA ๆƒ้‡ๅฏๅˆๅนถๅ›žๅŸบ็ก€ๆจกๅž‹ๅนถๅฏผๅ‡บไธบๆ–ฐ็š„ๅฎŒๆ•ดๆจกๅž‹ๆƒ้‡๏ผŒๅฏไฝฟ็”จ scripts/convert_model.py ไธญ็š„ convert_merge_base_lora๏ผš

cd scripts && python convert_model.py

5' ๅทฅๅ…ท่ฐƒ็”จ & ่‡ช้€‚ๅบ”ๆ€่€ƒ

2026-03 ่ตท๏ผŒไป“ๅบ“็งป้™คไบ†็‹ฌ็ซ‹็š„ train_reason.pyใ€‚
ๅฝ“ๅ‰็‰ˆๆœฌไธๅ†ๅ•็‹ฌ็ปดๆŠค reason_*.pth ๆƒ้‡๏ผŒ่€Œๆ˜ฏ็ปŸไธ€้€š่ฟ‡ chat_templateใ€<think> ๆ ‡็ญพใ€open_thinking ๅผ€ๅ…ณไปฅๅŠๅŽ็ปญ SFT / RLAIF ๆต็จ‹ๆฅๅปบๆจกโ€œๆ˜ฏๅฆๆ˜พๅผ่พ“ๅ‡บๆ€่€ƒ่ฟ‡็จ‹โ€ใ€‚

5.1 Tool Calling

ๅฝ“ๅ‰ toolcall ่ƒฝๅŠ›ๅทฒ็ปๅนถๅ…ฅ sft_t2t / sft_t2t_mini ไธป็บฟๆ•ฐๆฎ๏ผŒๅ› ๆญค้€šๅธธไธๅ†้œ€่ฆ้ขๅค–ๅ•็‹ฌ่ฎญ็ปƒไธ€่ฝฎ Tool Calling๏ผ›้ป˜่ฎค็š„ full_sft ๆƒ้‡ๅทฒ็ปๅ…ทๅค‡ๅŸบ็ก€ Tool Call ่ƒฝๅŠ›ใ€‚ๅฝ“ๅ‰่ฟ™้ƒจๅˆ†่ฎญ็ปƒๆ•ฐๆฎไธป่ฆ็”ฑ qwen3-4b ้‡‡ๆ ท็บฆ 10w ๆกๆž„ๆˆ๏ผŒๅทฅๅ…ทๅˆ—่กจไนŸไธป่ฆ่ฆ†็›–็บฆ 10 ไธชๆจกๆ‹Ÿ็š„่‡ชๅฎšไน‰ๅทฅๅ…ท๏ผˆไพ‹ๅฆ‚ๆŸฅ่ฏขๆ—ถ้—ดใ€ๆ•ฐๅญฆ่ฎก็ฎ—ใ€่Žทๅ–ๅคฉๆฐ”็ญ‰๏ผ‰๏ผŒๅ› ๆญค็›ฎๅ‰่ฟ˜่ฐˆไธไธŠๆ˜Ž็กฎ็š„ๆณ›ๅŒ–่ƒฝๅŠ›ใ€‚ๅ…ถไธญ Tool Calling ๆ ทๆœฌ็ปŸไธ€ๆฒฟ็”จไบ† OpenAI ้ฃŽๆ ผ็š„ๅคš่ฝฎๆถˆๆฏๆ ผๅผ๏ผš

{
  "conversations": [
    {"role": "system", "content": "# Tools ...", "tools": "[...]"},
    {"role": "user", "content": "ๅธฎๆˆ‘็ฎ—ไธ€ไธ‹ 256 ไน˜ไปฅ 37 ็ญ‰ไบŽๅคšๅฐ‘"},
    {"role": "assistant", "content": "", "tool_calls": "[{\"name\":\"calculate_math\",\"arguments\":{\"expression\":\"256 * 37\"}}]"},
    {"role": "tool", "content": "{\"result\":\"9472\"}"},
    {"role": "assistant", "content": "256 ไน˜ไปฅ 37 ็ญ‰ไบŽ 9472ใ€‚"}
  ]
}

ๅ…ถไธญ tools ๆŒ‚ๅœจ system ๆถˆๆฏไธŠ๏ผŒtool_calls ๆŒ‚ๅœจ assistant ๆถˆๆฏไธŠ๏ผ›่ฎญ็ปƒๆ—ถๅ†็”ฑ chat_template ่‡ชๅŠจๅฑ•ๅผ€ไธบ <tool_call>...</tool_call> ไธŽ <tool_response>...</tool_response> ็‰‡ๆฎต๏ผŒๅ› ๆญค็Žฐๅœจๅฏไปฅ็›ดๆŽฅๅญฆไน ๅŽŸ็”Ÿ tool call ๆ ผๅผใ€‚

Tool Calling ็š„ chat template ๅทฒ็ปŸไธ€ๆ”ฏๆŒ่งฃๆžไธบ๏ผš

<tool_call>{"name": "...", "arguments": {...}}</tool_call>
<tool_response>{...tool result...}</tool_response>

ไนŸๅฏไปฅ็›ดๆŽฅ้€š่ฟ‡ eval_toolcall.py ๅš็ฎ€ๅ•ๆต‹่ฏ•๏ผš

python eval_toolcall.py --weight full_sft

๐Ÿ’ฌ: ็Žฐๅœจๅ‡ ็‚นไบ†๏ผŸ
๐Ÿง : <tool_call>{"name": "get_current_time", "arguments": {"timezone": "Asia/Shanghai"}}</tool_call>
๐Ÿ“ž [Tool Calling]: get_current_time
โœ… [Tool Called]: {"datetime": "2026-03-15 17:18:22", "timezone": "Asia/Shanghai"}
๐Ÿง : ็Žฐๅœจๆ˜ฏ2026ๅนด3ๆœˆ15ๆ—ฅ17ๆ—ถ18ๅˆ†22็ง’ใ€‚

5.2 Adaptive Thinking

minimind ๅฐ†ๆ˜พๅผๆ€่€ƒ่ƒฝๅŠ›็ปŸไธ€ๅˆฐไบ†ๆจกๆฟๅฑ‚๏ผŒ่ฟ™ไนŸๅ’Œๅฝ“ๅ‰ๅพˆๅคšไธปๆตๅคงๆจกๅž‹็š„ๆจกๆฟ่ฎพ่ฎกไฟๆŒไธ€่‡ด๏ผš

  • open_thinking=0๏ผš้ป˜่ฎคๆณจๅ…ฅ็ฉบ็š„ <think>\n\n</think>๏ผŒๆจกๅž‹ๆ›ดๅ€พๅ‘ไบŽ็›ดๆŽฅๅ›ž็ญ”๏ผ›
  • open_thinking=1๏ผšๆจกๆฟไผš้ข„ๅ…ˆๆณจๅ…ฅ <think> ่ตทๅง‹ๆ ‡็ญพ๏ผŒๆจกๅž‹ๅ†็ปง็ปญ่พ“ๅ‡บๆ˜พๅผๆ€่€ƒ่ฟ‡็จ‹ไธŽๆœ€็ปˆๅ›ž็ญ”๏ผ›
  • CLIใ€OpenAI-APIใ€WebUI ไธ‰ไธชๅ…ฅๅฃๅ‡ๆ”ฏๆŒ่ฏฅๅผ€ๅ…ณใ€‚

ๆ›ดๅ‡†็กฎๅœฐ่ฏด๏ผŒ็›ฎๅ‰ไธๅ†โ€œๅ•็‹ฌ่ฎญไธ€ไธชๆ€่€ƒๆจกๅž‹โ€๏ผŒ่€Œๆ˜ฏๆŠŠโ€œๆ˜ฏๅฆๆ˜พๅผๆ€่€ƒโ€ไธ‹ๆฒ‰ๅˆฐ chat_templateใ€‚ๆจกๆฟๅฑ‚ไผšๅ…ˆ้ข„็•™ <think></think> ่ฟ™ไธ€็ป“ๆž„๏ผŒๅŒไธ€ไธชๆจกๅž‹ๅœจๆŽจ็†ๆ—ถๅ†้€š่ฟ‡ open_thinking ๅŠจๆ€ๅˆ‡ๆข๏ผ›ๅœจ่ฎญ็ปƒๆ—ถ๏ผŒๅˆ™้€š่ฟ‡ๆททๅˆ็ฉบ thinkใ€ๆ˜พๅผ reasoning_content ไธŽ thinking_ratio ้‡‡ๆ ท๏ผŒ่ฎฉๆจกๅž‹้€ๆญฅ่ง่ฟ‡โ€œ่ฏฅๆƒณๆ—ถๆƒณใ€่ฏฅ็›ด็ญ”ๆ—ถ็›ด็ญ”โ€็š„ๆททๅˆๆจกๅผใ€‚

# ๆต‹่ฏ•ๅ›ž็ญ”
python eval_llm.py --load_from ./minimind-3 --open_thinking 1

OpenAI-API-SDK ็”จๆณ•๏ผš

response = client.chat.completions.create(
    model="minimind",
    messages=[{"role": "user", "content": "ไฝ ๆ˜ฏ่ฐ๏ผŸ"}],
    # ...
    extra_body={"chat_template_kwargs": {"open_thinking": True}} # ๆ€่€ƒๅผ€ๅ…ณ
)

ๆณจ๏ผšๅฝ“ๅ‰ๅŒๆ—ถๅผ€ๅฏ Tool Call ไธŽๆ˜พๅผๆ€่€ƒๆ—ถ๏ผŒๆจกๅž‹้€šๅธธๅนถไธๅคชไผš็จณๅฎšๅœฐ่พ“ๅ‡บๆ€่€ƒ่ฟ‡็จ‹ใ€‚ๅŽŸๅ› ๅœจไบŽ็Žฐ้˜ถๆฎต่ฎญ็ปƒๆ•ฐๆฎ้‡Œ่ฟ˜็ผบๅฐ‘โ€œreasoning ไธŽ tool call ๅŒๆ—ถๅญ˜ๅœจโ€็š„่”ๅˆ่’ธ้ฆๆ ทๆœฌ๏ผŒๅ› ๆญคๆจกๅž‹ๅฐšๆœชๅ……ๅˆ†ๅญฆไผš่ฟ™ไธค็ง่ƒฝๅŠ›็š„ๅๅŒ่กจ่พพใ€‚

โ…ฃ ๅผบๅŒ–ๅญฆไน ๏ผˆๅฏ้€‰๏ผ‰

ๅœจ LLM ็š„ๅŽ่ฎญ็ปƒๅฎž่ทตไธญ๏ผŒๅธธ่ง็š„ๅผบๅŒ–ๅญฆไน ่ทฏๅพ„ไธป่ฆๆœ‰ไธคๆก๏ผš

  1. ๅŸบไบŽไบบ็ฑปๅ้ฆˆ็š„ๅผบๅŒ–ๅญฆไน  (Reinforcement Learning from Human Feedback, RLHF)
  • ้€š่ฟ‡ไบบ็ฑปๅฏนๆจกๅž‹่พ“ๅ‡บ็š„ๅๅฅฝ่ฟ›่กŒ่ฏ„ไปทๆฅ่ฎญ็ปƒๆจกๅž‹๏ผŒไฝฟๅ…ถ็”Ÿๆˆๆ›ด็ฌฆๅˆไบบ็ฑปไปทๅ€ผ่ง‚ๅ’Œๅๅฅฝ็š„ๅ†…ๅฎนใ€‚
  1. ๅŸบไบŽAIๅ้ฆˆ็š„ๅผบๅŒ–ๅญฆไน  (Reinforcement Learning from AI Feedback, RLAIF)
  • ไฝฟ็”จAIๆจกๅž‹ๆˆ–ๅ…ถไป–ๅฏ่‡ชๅŠจ้ชŒ่ฏ็š„ๆœบๅˆถๆฅๆไพ›ๅ้ฆˆ๏ผŒ่€Œไธ็›ดๆŽฅไพ่ต–ไบบ็ฑปๆ ‡ๆณจใ€‚
  • ่ฟ™้‡Œ็š„โ€œAI feedbackโ€ๅœจๅนฟไน‰ไธŠไนŸๅฏไปฅๆ‰ฉๅฑ•ๅˆฐ่ง„ๅˆ™ๅฅ–ๅŠฑใ€Ground Truth ๆ ก้ชŒใ€ไปฃ็ ่งฃ้‡Šๅ™จใ€็Žฏๅขƒๅ้ฆˆ็ญ‰่‡ชๅŠจๅŒ–ไฟกๅทใ€‚
็ฑปๅž‹ ่ฃๅˆค ไผ˜็‚น ็ผบ็‚น
RLHF ไบบ็ฑป ๆ›ด่ดด่ฟ‘็œŸๅฎžไบบ็ฑปๅๅฅฝ ๆˆๆœฌ้ซ˜ใ€ๆ•ˆ็އไฝŽ
RLAIF ๆจกๅž‹ ่‡ชๅŠจๅŒ–ใ€ๅฏๆ‰ฉๅฑ•ๆ€งๅผบ ๅฏ่ƒฝๅ็ฆปไบบ็ฑป็œŸๅฎžๅๅฅฝ

ไบŒ่€…ๆœฌ่ดจไธŠ้ƒฝๅฑžไบŽๅˆฉ็”จๆŸ็งๅฝขๅผ็š„"ๅ้ฆˆ"ๆฅไผ˜ๅŒ–ๆจกๅž‹่กŒไธบ็š„ๅผบๅŒ–ๅญฆไน ่Œƒๅผใ€‚

ไธ่ฟ‡ๅœจๅ…ทไฝ“ๅฎž่ทต้‡Œ๏ผŒๅฎƒไปฌๅนถไธๅชๆ˜ฏๅ้ฆˆๆฅๆบไธๅŒ๏ผšๅฅ–ๅŠฑๆ˜ฏๅฆๅฏ้ชŒ่ฏใ€ๆ˜ฏๅฆ่ฟž็ปญใ€ๆ˜ฏๅฆไพ่ต–็Žฏๅขƒไบคไบ’ใ€ๆ˜ฏๅฆๅปถ่ฟŸๅˆฐๆ•ด่ฝฎ็ป“็ฎ—๏ผŒ้ƒฝไผš็›ดๆŽฅๅฝฑๅ“่ฎญ็ปƒๅฝขๆ€ไธŽๅทฅ็จ‹ๅฎž็Žฐใ€‚

๐Ÿ‘€ PO็ฎ—ๆณ•็š„็ปŸไธ€่ง†่ง’

ๅœจไป‹็ปๅฎž็Žฐๅ…ทไฝ“็ฎ—ๆณ•ไน‹ๅ‰๏ผŒๆˆ‘ๅ…ˆไปฅไธชไบบ็†่งฃ็š„ๆž็ฎ€่ง†่ง’๏ผŒ้˜่ฟฐๆ‰€ๆœ‰Policy Optimization (PO)็ฎ—ๆณ•็š„็ปŸไธ€ๅ…ฑๆ€งใ€‚

ๆ‰€ๆœ‰RL็ฎ—ๆณ•็š„ๆœฌ่ดจ้ƒฝๅชๆ˜ฏๅœจไผ˜ๅŒ–ไธ€ไธชๆœŸๆœ›๏ผš

$$\mathcal{J}_{PO} = \mathbb{E}_{q \sim P(Q), o \sim \pi(O|q)} \left[ \underbrace{f(r_t)}_{\text{็ญ–็•ฅ้กน}} \cdot \underbrace{g(A_t)}_{\text{ไผ˜ๅŠฟ้กน}} - \underbrace{h(\text{KL}_t)}_{\text{ๆญฃๅˆ™้กน}} \right]$$

่ฎญ็ปƒๆ—ถ๏ผŒๅช้œ€ๆœ€ๅฐๅŒ–่ดŸ็›ฎๆ ‡ๅ‡ฝๆ•ฐ๏ผŒๅณ: $\mathcal{L}{PO} = -\mathcal{J}{PO}$

่ฟ™ไธชๆก†ๆžถๅชๅŒ…ๅซไธ‰ไธชๆ ธๅฟƒ็ป„ไปถ๏ผš

  • ็ญ–็•ฅ้กน $f(r_t)$: ๅฆ‚ไฝ•ไฝฟ็”จๆฆ‚็އๆฏ” $r_t$? ๅณๅ‘Š่ฏ‰ๆจกๅž‹ๆ–ฐๆ—ง็ญ–็•ฅๅๅทฎๆœ‰ๅคšๅคง๏ผŒๆ˜ฏๅฆๆŽข็ดขๅˆฐไบ†ๆ›ดๅฅฝ็š„token
  • ไผ˜ๅŠฟ้กน $g(A_t)$: ๅฆ‚ไฝ•่ฎก็ฎ—ไผ˜ๅŠฟ $A_t$, ่ฟ™ๅพˆ้‡่ฆ๏ผๅคงๆจกๅž‹็ฎ—ๅฏนๅฎš็งฏๅˆ†ไนŸไธ่ถณไธบๅฅ‡๏ผŒๅฐๆจกๅž‹ๅ›ž็ญ”ๅฏนๅŠ ๅ‡ๆณ•ไผ˜ๅŠฟ้€šๅธธ้ƒฝๆ˜ฏๆญฃ็š„
  • ๆญฃๅˆ™้กน $h(\text{KL}_t)$: ๅฆ‚ไฝ•็บฆๆŸๅ˜ๅŒ–ๅน…ๅบฆ $\text{KL}_t$, ๆ—ข้˜ฒๆญข่ท‘ๅๅˆ้˜ฒๆญข็ฎก็š„ๅคชๆญป
๏ผˆๅฑ•ๅผ€๏ผ‰็ฌฆๅท่ฏดๆ˜Ž
็ฌฆๅท ๅซไน‰ ่ฏดๆ˜Ž ๅ€ผๅŸŸ
$q$ ้—ฎ้ข˜/ๆ็คบ่ฏ ไปŽๆ•ฐๆฎ้›† $P(Q)$ ไธญ้‡‡ๆ ท -
$o$ ๆจกๅž‹่พ“ๅ‡บๅบๅˆ— ็”ฑ็ญ–็•ฅ $\pi$ ็”Ÿๆˆ -
$r_t$ ๆฆ‚็އๆฏ” $r_t = \frac{\pi_\theta(o_t \mid q, o_{&lt;t})}{\pi_{ref}(o_t \mid q, o_{&lt;t})}$ $(0, +\infty)$
$A_t$ ไผ˜ๅŠฟๅ‡ฝๆ•ฐ ่กก้‡ๆŸไธชๅŠจไฝœ็›ธๆฏ”ๅŸบ็บฟๆœ‰ๅคšๅฅฝ $(-\infty, +\infty)$
$\text{KL}_t$ KLๆ•ฃๅบฆ ้˜ฒๆญข็ญ–็•ฅๅ็ฆปๅ‚่€ƒๆจกๅž‹ๅคช่ฟœ $[0, +\infty)$

ไธๅŒ็š„xxPO็ฎ—ๆณ•ๆœฌ่ดจไธŠๅชๆ˜ฏๅฏน่ฟ™ไธ‰ไธช็ป„ไปถ็š„ไธๅŒ่ฎพ่ฎก็š„ๅฎžไพ‹ๅŒ–๏ผ


6' ๅŸบไบŽไบบ็ฑปๅ้ฆˆ็š„ๅผบๅŒ–ๅญฆไน  (Reinforcement Learning from Human Feedback, RLHF)

ๅœจๅ‰้ข็š„่ฎญ็ปƒๆญฅ้ชคไธญ๏ผŒๆจกๅž‹ๅทฒ็ปๅ…ทๅค‡ไบ†ๅŸบๆœฌ็š„ๅฏน่ฏ่ƒฝๅŠ›๏ผŒไฝ†ๆ˜ฏ่ฟ™ๆ ท็š„่ƒฝๅŠ›ๅฎŒๅ…จๅŸบไบŽๅ•่ฏๆŽฅ้พ™๏ผŒ็ผบๅฐ‘ๆญฃๅๆ ทไพ‹็š„ๆฟ€ๅŠฑใ€‚ ๆจกๅž‹ๆญคๆ—ถๅฐšๆœช็Ÿฅไป€ไนˆๅ›ž็ญ”ๆ˜ฏๅฅฝ็š„๏ผŒไป€ไนˆๆ˜ฏๅทฎ็š„ใ€‚ๅธŒๆœ›ๅฎƒ่ƒฝๅคŸๆ›ด็ฌฆๅˆไบบ็š„ๅๅฅฝ๏ผŒ้™ไฝŽ่ฎฉไบบ็ฑปไธๆปกๆ„็ญ”ๆกˆ็š„ไบง็”Ÿๆฆ‚็އใ€‚ ่ฟ™ไธช่ฟ‡็จ‹ๅฐฑๅƒๆ˜ฏ่ฎฉๆจกๅž‹ๅ‚ๅŠ ๆ–ฐ็š„ๅŸน่ฎญ๏ผŒไปŽไผ˜็ง€ๅ‘˜ๅทฅ็š„ไฝœไธบไพ‹ๅญ๏ผŒๆถˆๆžๅ‘˜ๅทฅไฝœไธบๅไพ‹๏ผŒๅญฆไน ๅฆ‚ไฝ•ๆ›ดๅฅฝๅœฐๅ›žๅคใ€‚

6.1 Direct Preference Optimization

็›ดๆŽฅๅๅฅฝไผ˜ๅŒ–๏ผˆDPO๏ผ‰็ฎ—ๆณ•๏ผŒๆŸๅคฑไธบ๏ผš

$$\mathcal{L}_{DPO} = -\mathbb{E}\left[\log \sigma\left(\beta \left[\log \frac{\pi_\theta(y_w|x)}{\pi_{ref}(y_w|x)} - \log \frac{\pi_\theta(y_l|x)}{\pi_{ref}(y_l|x)}\right]\right)\right]$$

ๅ…ถไธญ๏ผš

  • ็ญ–็•ฅ้กน: $f(r_t) = \log r_w - \log r_l$ (ๅฏนๆฏ”chosen vs rejected็š„ๆฆ‚็އๆฏ”)
  • ไผ˜ๅŠฟ้กน: $g(A_t)$ = ๆ— ๆ˜พๅผไผ˜ๅŠฟ้กน๏ผˆ้€š่ฟ‡ๅๅฅฝๅฏนๆฏ”้šๅผไฝ“็Žฐ๏ผ‰
  • ๆญฃๅˆ™้กน: $h(\text{KL}_t)$ = ้šๅซๅœจ $\beta$ ไธญ (ๆŽงๅˆถๅ็ฆปๅ‚่€ƒๆจกๅž‹็จ‹ๅบฆ)

็‰นๅˆซๅœฐ๏ผŒ

  • DPOไปŽPPOๅธฆKL็บฆๆŸ็š„็›ฎๆ ‡ๆŽจๅฏผๅ‡บๅฏนๅๅฅฝๅฏน็š„่งฃๆž่ฎญ็ปƒ็›ฎๆ ‡๏ผŒ็›ดๆŽฅๆœ€ๅคงๅŒ–"chosenไผ˜ไบŽrejected"็š„ๅฏนๆ•ฐๅ‡ ็އ๏ผ›ๆ— ้œ€ๅŒๆญฅ่ฎญ็ปƒReward/Valueๆจกๅž‹ใ€‚DPOๅช้œ€่ท‘actorไธŽrefไธคไธชๆจกๅž‹๏ผŒๆ˜พๅญ˜ๅ ็”จไฝŽใ€ๆ”ถๆ•›็จณๅฎšใ€ๅฎž็Žฐ็ฎ€ๅ•ใ€‚
  • ่ฎญ็ปƒ่Œƒๅผ๏ผšoffโ€‘policy๏ผŒไฝฟ็”จ้™ๆ€ๅๅฅฝๆ•ฐๆฎ้›†๏ผŒๅฏๅๅคๅคš่ฝฎepoch๏ผ›Refๆจกๅž‹ๅ›บๅฎš๏ผˆ้ข„ๅ…ˆ็ผ“ๅญ˜่พ“ๅ‡บ๏ผ‰ใ€‚
  • DPO็š„ๅฑ€้™ๅœจไบŽไธๅšๅœจ็บฟๆŽข็ดข๏ผŒๆ›ดๅคš็”จไบŽ"ๅๅฅฝ/ๅฎ‰ๅ…จ"็š„ไบบ็ฑปไปทๅ€ผๅฏน้ฝ๏ผ›ๅฏน"่ƒฝไธ่ƒฝๅšๅฏน้ข˜"็š„ๆ™บๅŠ›่ƒฝๅŠ›ๆๅ‡ๆœ‰้™๏ผˆๅฝ“็„ถ่ฟ™ไนŸๅ–ๅ†ณไบŽๆ•ฐๆฎ้›†๏ผŒๅคง่ง„ๆจกๆ”ถ้›†ๆญฃๅๆ ทๆœฌๅนถไบบ็ฑป่ฏ„ไผฐๅพˆๅ›ฐ้šพ๏ผ‰ใ€‚
# ๆ–นๅผ1
torchrun --nproc_per_node 1 train_dpo.py
# ๆ–นๅผ2
python train_dpo.py

่ฎญ็ปƒๅŽ็š„ๆจกๅž‹ๆƒ้‡ๆ–‡ไปถ้ป˜่ฎคๆฏ้š”save_intervalๆญฅไฟๅญ˜ไธบ: dpo_*.pth๏ผˆ*ไธบๆจกๅž‹ๅ…ทไฝ“dimension๏ผŒๆฏๆฌกไฟๅญ˜ๆ—ถๆ–ฐๆ–‡ไปถไผš่ฆ†็›–ๆ—งๆ–‡ไปถ๏ผ‰

7' ๅŸบไบŽ AI ๅ้ฆˆ็š„ๅผบๅŒ–ๅญฆไน  (Reinforcement Learning from AI Feedback, RLAIF)

็จๅพฎ่Šฑ็ฏ‡ๅน…่งฃ้‡Šไธ€ไธ‹๏ผŒๆˆ‘่ฟ˜ๆ˜ฏๆ›ดๆƒณๆŠŠ่ฟ™ไธ€่Š‚ๅซไฝœ RLAIF๏ผŒ่™ฝ็„ถไธฅๆ ผๆฅ่ฏด๏ผŒ่ฟ™ไธชๅ‘ฝๅๅนถไธๅฎŒๅ…จๅ‡†็กฎใ€‚ๅƒ RLVR ่ฟ™็ฑปไพ่ต–ๅฏ้ชŒ่ฏๅฅ–ๅŠฑ็š„่ทฏ็บฟ๏ผŒๆœฌ่บซๆœ‰็›ธๅฏน็‹ฌ็ซ‹็š„่„‰็ปœ๏ผŒๅพˆ้šพ่ขซ็ฎ€ๅ•ๅนถ่ฟ›็‹ญไน‰็š„ AI feedback ้‡Œใ€‚ ไฝ†ๅฆ‚ๆžœๆŠŠโ€œAIโ€็†่งฃๅพ—็จๅพฎๅฎฝไธ€็‚น๏ผŒๆˆ‘ๅˆ่ง‰ๅพ—่ฟ™ไธชๅๅญ—ๅนถ้žๅฎŒๅ…จ่ฏดไธ้€š๏ผšๅฅ–ๅŠฑๆ—ขๅฏไปฅๆฅ่‡ชๅฅ–ๅŠฑๆจกๅž‹ใ€judge model ่ฟ™็ฑปๆ˜พๅผ็š„ๆ™บ่ƒฝไฝ“๏ผŒไนŸๅฏไปฅๆฅ่‡ช่ง„ๅˆ™ๅ‡ฝๆ•ฐใ€Ground Truthๆ ก้ชŒใ€ๅทฅๅ…ท่ฐƒ็”จ็ป“ๆžœใ€็Žฏๅขƒ่ฟ”ๅ›ž็Šถๆ€่ฟ™็ฑปๅฏ่‡ชๅŠจ่Žทๅพ—็š„ไฟกๅทใ€‚่ง„ๅˆ™่ถณๅคŸๅคๆ‚ใ€็ฌฆๅท็ณป็ปŸ่ถณๅคŸไธฐๅฏŒๆ—ถ๏ผŒๅฎƒไปฌๅ’Œโ€œๆ™บ่ƒฝๅ้ฆˆโ€ไน‹้—ด็š„่พน็•Œ๏ผŒๆœฌๆฅๅฐฑๆœชๅฟ…้‚ฃไนˆๆณพๆธญๅˆ†ๆ˜Žใ€‚ ๅ› ๆญค่ฟ™ไธ€็ซ ๆ›ดๆƒณ่ฎจ่ฎบ็š„๏ผŒๅ…ถๅฎžๆ˜ฏ LLM ๅœจ SFT ไน‹ๅŽ๏ผŒๅ€ŸๅŠฉๅ„็ง้žไบบๅทฅใ€ๅฏ่‡ชๅŠจ่Žทๅพ—็š„ๅ้ฆˆไฟกๅท็ปง็ปญๅšๅผบๅŒ–ๅญฆไน ไผ˜ๅŒ–็š„ๆ–นๆณ•ใ€‚ๆฏ”ๅฆ‚ๆ•ฐๅญฆ้ข˜็ญ”ๆกˆๆ˜ฏๅฆๆญฃ็กฎใ€ๅทฅๅ…ท่ฐƒ็”จๆ‰ง่กŒไปฃ็ ่ƒฝๅฆ้€š่ฟ‡ๆต‹่ฏ•็”จไพ‹ใ€ๆŽจ็†่ฟ‡็จ‹ๆ˜ฏๅฆ็ฌฆๅˆๆ ผๅผ...้ƒฝๅฏไปฅ่‡ชๅŠจๅŒ–ๅˆคๆ–ญใ€‚ ๅฏนไบŽๅ•่ฝฎๅฏ้ชŒ่ฏไปปๅŠก๏ผŒ่ฟ™็ฑปๅ้ฆˆๅพ€ๅพ€ๆ›ดๆŽฅ่ฟ‘โ€œๅณๆ—ถๆ‰“ๅˆ†โ€๏ผ›่€Œๅœจ Agentic RL ๅœบๆ™ฏไธญ๏ผŒๅฅ–ๅŠฑๅˆ™ๆ›ดๅธธ่กจ็Žฐไธบๅคšๆญฅไบคไบ’ๅŽ็š„ๅปถ่ฟŸ็ป“็ฎ—๏ผŒ็”š่‡ณ็›ดๆŽฅๆฅ่‡ช็Žฏๅขƒๆœฌ่บซใ€‚ ๅฎƒไปฌๅ…ฑๅŒ็š„็‰น็‚น้€šๅธธ้ƒฝๆ˜ฏOn-PolicyไธŽๅฏๆ‰ฉๅฑ•ๆ€งๅผบโ€”โ€”ไธ้œ€่ฆๆ˜‚่ดต็š„ไบบๅทฅๆ ‡ๆณจ๏ผŒๅฏไปฅ็”Ÿๆˆๆตท้‡่ฎญ็ปƒๆ ทๆœฌ๏ผŒ่ฎฉๆจกๅž‹ๅœจๅœจ็บฟๅคง้‡่ฏ•้”™ไธญๅฟซ้€Ÿ่ฟ›ๅŒ–ใ€‚

MiniMind ็€ๆ‰‹ๅฎž็Žฐ2+N็งๅŸบๆœฌ+ๅ‰ๆฒฟ็š„RLAIFๆ–นๆณ•๏ผš

  • PPOใ€GRPO ่ขซๅคง่ง„ๆจก้ชŒ่ฏ็š„็ปๅ…ธRL็ฎ—ๆณ•
  • N็งๅ‰ๆฒฟRL็ฎ—ๆณ•๏ผˆไธๅฎšๆœŸไปฅExpๆ€ง่ดจๆ›ดๆ–ฐ๏ผ‰

1๏ธโƒฃ ๆ•ฐๆฎ้›†ๅ‡†ๅค‡ (ๅฟ…้กป)

ๅฝ“ๅ‰ไธป็บฟไฝฟ็”จ rlaif.jsonl ไฝœไธบ RLAIF ่ฎญ็ปƒๆ•ฐๆฎ๏ผŒไฝ“้‡็บฆ 20MB๏ผŒๆฏ”ๆ—ฉๆœŸ rlaif-mini.jsonl ๆ›ดๅฎŒๆ•ด๏ผŒๆ›ด้€‚ๅˆ็›ดๆŽฅ้ชŒ่ฏ PPO / GRPO / CISPO ็š„่ฎญ็ปƒๆ•ˆๆžœใ€‚

ๆ•ฐๆฎๆ ผๅผไธŽ SFT ไธ€่‡ด๏ผŒไฝ† assistant ๅญ—ๆฎตไธ้œ€่ฆ็œŸๅฎžๅ†…ๅฎน๏ผŒๅ› ไธบ่ฎญ็ปƒ่ฟ‡็จ‹ไธญๅฎŒๅ…จ็”ฑ $\Pi$ ็ญ–็•ฅๆจกๅž‹ๅฎžๆ—ถ้‡‡ๆ ท็”Ÿๆˆใ€‚ๅ› ๆญคๅฝขๅฆ‚๏ผš

{
    "conversations": [
        {"role": "user", "content": "่ฏท่งฃ้‡Šไธ€ไธ‹ไป€ไนˆๆ˜ฏๅ…‰ๅˆไฝœ็”จ๏ผŸ"},
        {"role": "assistant", "content": "ๆ— "}
    ]
}

RLAIF็š„่ฎญ็ปƒ่ฟ‡็จ‹ไธญ๏ผŒๆจกๅž‹ไผšๅŸบไบŽuser็š„้—ฎ้ข˜็”Ÿๆˆ1ๆˆ–ๅคšไธชๅ€™้€‰ๅ›ž็ญ”๏ผŒ็„ถๅŽ็”ฑๅฅ–ๅŠฑๅ‡ฝๆ•ฐ/ๆจกๅž‹ๅฏนๅ›ž็ญ”ๆ‰“ๅˆ†๏ผŒ ๅˆ†ๆ•ฐ้ซ˜็š„ๅ›ž็ญ”ไผš่ขซ้ผ“ๅŠฑ๏ผˆๅขžๅŠ  $\Pi$ ็ญ–็•ฅๆฆ‚็އ๏ผ‰๏ผŒๅˆ†ๆ•ฐไฝŽ็š„ๅ›ž็ญ”ไผš่ขซๆŠ‘ๅˆถ๏ผˆ้™ไฝŽ $\Pi$ ็ญ–็•ฅๆฆ‚็އ๏ผ‰ใ€‚่ฟ™ไธช"ๆ‰“ๅˆ†->่ฐƒๆ•ด"็š„ๅพช็Žฏๅฐฑๆ˜ฏๅผบๅŒ–ๅญฆไน ็š„ๆ ธๅฟƒใ€‚

2๏ธโƒฃ ๅฅ–ๅŠฑๆœบๅˆถๅ‡†ๅค‡ (ๅฟ…้กป)

RLAIF่ฎญ็ปƒ้œ€่ฆๆŸ็งๅฏ่ฎก็ฎ—็š„ๅฅ–ๅŠฑไฟกๅท๏ผ›ๅฎƒๅฏไปฅๆฅ่‡ชๅฅ–ๅŠฑๆจกๅž‹๏ผŒไนŸๅฏไปฅๆฅ่‡ช่ง„ๅˆ™ๅ‡ฝๆ•ฐใ€Ground Truth ๆ ก้ชŒๆˆ–็Žฏๅขƒๅ้ฆˆใ€‚MiniMind ๅฝ“ๅ‰้ป˜่ฎคๆผ”็คบ็š„ๆ˜ฏ Reward Model ่ทฏ็บฟใ€‚

ๆญคๅค„้€‰ๅ–ๅฐๅž‹ไธ”้ซ˜่ดจ้‡็š„ InternLM2-1.8B-Reward (ModelScope | HuggingFace) ไฝœไธบๅŸบ็ก€ๅฅ–ๅŠฑๆจกๅž‹ใ€‚

ไธ‹่ฝฝๅฅ–ๅŠฑๆจกๅž‹ๅŽ้œ€่ฆๆ”พ็ฝฎๅœจminimind้กน็›ฎ็š„ๅŒ็บง็›ฎๅฝ•ไธ‹๏ผŒๆŽจ่็ป“ๆž„ๅฆ‚ไธ‹๏ผš

root/
โ”œโ”€โ”€ minimind/                    # MiniMind้กน็›ฎ
โ”‚   โ”œโ”€โ”€ model/
โ”‚   โ””โ”€โ”€ ...
โ””โ”€โ”€ internlm2-1_8b-reward/       # ๅฅ–ๅŠฑๆจกๅž‹
    โ”œโ”€โ”€ config.json
    โ”œโ”€โ”€ model.safetensors
    โ””โ”€โ”€ ...
ๅฅ–ๅŠฑๆœบๅˆถ้€‰ๆ‹ฉไธŽMiniMind้™ๅˆถ่ฏดๆ˜Ž๏ผˆ็‚นๅ‡ปๅฑ•ๅผ€๏ผ‰

1. ๅฅ–ๅŠฑๆœบๅˆถ็š„ๅคšๆ ทๆ€ง

RLAIFไธญ็š„"ๅฅ–ๅŠฑไฟกๅท"ๆฅๆบๅฏไปฅ้žๅธธ็ตๆดป๏ผš

  • Model-basedๅฅ–ๅŠฑ๏ผšๅฏไฝฟ็”จไธ“้—จ็š„Reward Model๏ผˆๅฆ‚InternLM2-Reward๏ผ‰๏ผŒไนŸๅฏไฝฟ็”จ้€š็”จLLM+ๆ็คบ่ฏ่ฟ›่กŒๆ‰“ๅˆ†๏ผˆๅฆ‚Qwen3-as-a-Judge๏ผ‰ใ€‚ๅฅ–ๅŠฑๆจกๅž‹่ง„ๆจกๅ’Œๆžถๆž„ๅ‡ๅฏ่‡ช็”ฑ้€‰ๆ‹ฉใ€‚

  • Rule-basedๅฅ–ๅŠฑ๏ผšๅฏไปฅๅŸบไบŽ่ง„ๅˆ™ๅ‡ฝๆ•ฐๆž„้€ ๅฅ–ๅŠฑไฟกๅท๏ผŒไพ‹ๅฆ‚๏ผš

    • ๆ•ฐๅญฆ้ข˜็ญ”ๆกˆๆญฃ็กฎๆ€ง้ชŒ่ฏ๏ผˆGround Truthๅฏนๆฏ”๏ผ‰
    • SQLๆ‰ง่กŒๆˆๅŠŸ็އไธŽ็ป“ๆžœๅ‡†็กฎๆ€ง
    • ไปฃ็ ่งฃ้‡Šๅ™จ่ฟ่กŒ็ป“ๆžœ๏ผˆpass@k๏ผ‰
    • ๅทฅๅ…ท่ฐƒ็”จ่ฟ”ๅ›ž็Šถๆ€๏ผˆAPIๆˆๅŠŸ/ๅคฑ่ดฅ๏ผ‰
    • ๆ ผๅผๅˆ่ง„ๆ€งๆฃ€ๆŸฅ๏ผˆJSON/XML่งฃๆž๏ผ‰
    • ๆŽจ็†้“พๅฎŒๆ•ดๆ€ง่ฏ„ไผฐ๏ผˆCoTๆญฅ้ชคๆ•ฐ๏ผ‰
  • Environment-basedๅฅ–ๅŠฑ๏ผšๅœจAgentๅœบๆ™ฏไธญ๏ผŒ็Žฏๅขƒๅ้ฆˆๆœฌ่บซๅณไธบๅคฉ็„ถๅฅ–ๅŠฑ๏ผˆๅฆ‚ๆธธๆˆๅพ—ๅˆ†ใ€ResearchๅฎŒๆ•ดๅบฆใ€ไปปๅŠกๅฎŒๆˆๅบฆ๏ผ‰ใ€‚

ไปปไฝ•่ƒฝๅคŸ้‡ๅŒ–"ๅ›ž็ญ”่ดจ้‡"็š„ๆœบๅˆถ้ƒฝๅฏไฝœไธบRL็š„ๅฅ–ๅŠฑๆฅๆบใ€‚DeepSeek R1ๅฐฑๆ˜ฏๅ…ธๅž‹ๆกˆไพ‹๏ผšไฝฟ็”จ่ง„ๅˆ™ๅ‡ฝๆ•ฐ้ชŒ่ฏๆ•ฐๅญฆ็ญ”ๆกˆๆญฃ็กฎๆ€งไฝœไธบๅฅ–ๅŠฑ๏ผŒๆ— ้œ€้ขๅค–็š„Reward Modelใ€‚

2. MiniMind้™ๅˆถ๏ผšๅฅ–ๅŠฑ็จ€็–้—ฎ้ข˜

RLAIF่ฎญ็ปƒๆ—ขๅฏไปฅ้’ˆๅฏนๆŽจ็†ๆจกๅž‹ไนŸๅฏไปฅ้’ˆๅฏน้žๆŽจ็†ๆจกๅž‹๏ผŒๅŒบๅˆซไป…ๅœจไบŽๆ ผๅผใ€‚

็„ถ่€ŒๅฏนไบŽ MiniMind ่ฟ™็ง 0.1B ๅ‚ๆ•ฐ้‡ใ€่ƒฝๅŠ›่พƒๅผฑ็š„ๆจกๅž‹๏ผŒๅœจ้€š็”จไปปๅŠก๏ผˆๅฆ‚ R1 ้ฃŽๆ ผ็š„ๆ•ฐๅญฆๆ•ฐๆฎ้›†๏ผ‰ไธŠไผš้‡ๅˆฐไธฅ้‡็š„ๅฅ–ๅŠฑ็จ€็–๏ผˆReward Sparsity๏ผ‰้—ฎ้ข˜๏ผš

  • ็Žฐ่ฑก๏ผšๆจกๅž‹็”Ÿๆˆ็š„ๅ€™้€‰ๅ›ž็ญ”ๅ‡ ไนŽๅ…จ้ƒจ้”™่ฏฏ๏ผŒๅฏผ่‡ดๆ‰€ๆœ‰ๅฅ–ๅŠฑๅˆ†ๆ•ฐ $r(x,y) \approx 0$
  • ๅŽๆžœ๏ผšไผ˜ๅŠฟๅ‡ฝๆ•ฐ $A(x,y) = r(x,y) - b(x) \approx 0$๏ผŒ็ญ–็•ฅๆขฏๅบฆไฟกๅทๆถˆๅคฑ๏ผŒๆ— ๆณ•ๆœ‰ๆ•ˆๆ›ดๆ–ฐๅ‚ๆ•ฐ $\theta$

ๅฆ‚ๅŒ่ฎฉๅฐๅญฆ็”Ÿๅš้ซ˜่€ƒๆ•ฐๅญฆ้ข˜๏ผŒๆ— ่ฎบๅฐ่ฏ•ๅคšๅฐ‘ๆฌก้ƒฝๅพ—้›ถๅˆ†๏ผŒๆ— ๆณ•้€š่ฟ‡ๅˆ†ๆ•ฐๅทฎๅผ‚ๅญฆไน ๆ”น่ฟ›็ญ–็•ฅใ€‚่ฟ™ๅฑžไบŽ RL ็ฎ—ๆณ•ๅœจๅฅ–ๅŠฑ็จ€็–ๅœบๆ™ฏไธ‹็š„ๆ นๆœฌ้™ๅˆถใ€‚

ไธบ็ผ“่งฃๆญค้—ฎ้ข˜๏ผŒMiniMind็š„ๅฎž็Žฐ้€‰ๆ‹ฉไบ†model-based็š„่ฟž็ปญๆ€งๅฅ–ๅŠฑไฟกๅท๏ผš

  • Reward Model่พ“ๅ‡บ่ฟž็ปญๅˆ†ๆ•ฐ๏ผˆๅฆ‚-2.5ๅˆฐ+3.0๏ผ‰๏ผŒ่€Œ้žไบŒๅ…ƒ็š„0/1
  • ๅณไฝฟๅ›ž็ญ”่ดจ้‡้ƒฝๅทฎ๏ผŒไนŸไป่ƒฝๅŒบๅˆ†โ€œๆ›ดๅทฎโ€(-3.0)ๅ’Œโ€œๆฒก้‚ฃไนˆๅทฎโ€(-2.8)็š„็ป†ๅพฎๅทฎๅผ‚ใ€‚ๆ‰€ไปฅ่ฟ™็ง็จ ๅฏ†ไธ”่ฟž็ปญ็š„ๅฅ–ๅŠฑไฟกๅท่ƒฝๅคŸไธบไผ˜ๅŠฟๅ‡ฝๆ•ฐ $A(x,y)$ ๆไพ›้ž้›ถๆขฏๅบฆ๏ผŒไฝฟๅพ—็ญ–็•ฅ็ฝ‘็ปœๅพ—ไปฅๆธ่ฟ›ๅผไผ˜ๅŒ–
  • ไนŸๅฏไปฅๆททๅˆๅคš็งๅฅ–ๅŠฑๆบ: $r_{\text{total}} = \alpha \cdot r_{\text{model}} + \beta \cdot r_{\text{rule}}$ (ไพ‹ๅฆ‚ๆ—ขๅฏไปฅๆฃ€ๆต‹ thinking ๆ ‡็ญพๆ ผๅผๅฅ–ๅŠฑ๏ผŒๅˆๅฏไปฅ็ปผๅˆๅ›ž็ญ”ๆœฌ่บซ่ดจ้‡็š„ reward ๅˆ†ๆ•ฐ)
  • MiniMind ๅฎž่ทตไธญ้ฟๅ…็›ดๆŽฅไฝฟ็”จ rule-based ไบŒๅ…ƒๅฅ–ๅŠฑ + ่ถ…็บฒ้šพๅบฆๆ•ฐๆฎ๏ผˆๅฆ‚ MATH500๏ผ‰๏ผŒๆ˜“ๅฏผ่‡ดๅฅ–ๅŠฑๅ…จ้›ถ๏ผ›
  • ็›‘ๆŽง่ฎญ็ปƒๆ—ถ่ง‚ๅฏŸๅฅ–ๅŠฑๅˆ†ๆ•ฐ็š„ๆ–นๅทฎ $\text{Var}(r)$๏ผŒ่‹ฅๆŒ็ปญๆŽฅ่ฟ‘0ๅˆ™้œ€่ฐƒๆ•ดๆ•ฐๆฎๆˆ–ๅฅ–ๅŠฑๆœบๅˆถ

ๅฏนไบŽ็”Ÿไบง็บงๅคงๆจกๅž‹็š„Agentic RLๅœบๆ™ฏ๏ผš

ๅœจ็œŸๅฎžAgent็ณป็ปŸ๏ผˆไปฃ็ ็”Ÿๆˆใ€ๅทฅๅ…ท่ฐƒ็”จใ€ๆฃ€็ดข-่ง„ๅˆ’-ๆ‰ง่กŒ็š„ๅคš่ฝฎ้“พ่ทฏ๏ผ‰ไธญ๏ผŒๅฅ–ๅŠฑๆ˜ฏโ€œๅปถ่ฟŸๆ•ด่ฝฎ็ป“็ฎ—โ€็š„ไธๅŒ่Œƒๅผ๏ผš

  • LLM้œ€่ฆ้€token็”Ÿๆˆๅทฅๅ…ท่ฐƒ็”จๆŒ‡ไปค๏ผˆtool_call๏ผ‰๏ผŒ็ปๅކ่งฃๆž๏ผˆtool_parse๏ผ‰ใ€ๅทฅๅ…ทๆ‰ง่กŒ๏ผˆtool_exec๏ผ‰๏ผŒๅ†ๆŠŠ็ป“ๆžœๆ‹ผๆŽฅๅ›žไธŠไธ‹ๆ–‡็ปง็ปญไธ‹ไธ€ๆญฅ๏ผ›ๅพช็Žฏๅพ€ๅค็›ดๅˆฐๅฎŒๆˆใ€‚
  • ไธ€ๆฌกๅฎŒๆ•ด็š„ไปปๅŠก้“พ่ทฏๅŒ…ๅซๅคšๆฌก่ฐƒ็”จ+ๆ€่€ƒ๏ผŒ็›ดๅˆฐ็ปˆๆญขๆกไปถๆปก่ถณๆ—ถ่ฎก็ฎ—ไธ€ๆฌกๆ€ปreward๏ผˆๅฆ‚ไปปๅŠกๆ˜ฏๅฆๅฎŒๆˆใ€ๆต‹่ฏ•ๆ˜ฏๅฆ้€š่ฟ‡ใ€็›ฎๆ ‡ๆ˜ฏๅฆๅ‘ฝไธญ๏ผ‰ใ€‚

ๅ› ๆญค๏ผŒAgentic RLๆ›ดๆŽฅ่ฟ‘็จ€็–/ๅปถ่ฟŸๅฅ–ๅŠฑ่ฎพๅฎš๏ผšๆขฏๅบฆๅ›žไผ ๅœจโ€œๆ•ด่ฝฎ็ป“ๆŸๅŽโ€ๆ‰ๅ‘็”Ÿ๏ผŒๅ’Œ้žAgentic RLไปปๅŠกๅœจๅฏน่ฏๅ•่ฝฎไธŠโ€œๅณๆ—ถ่ฏ„ๅˆ†ๅณๆ—ถๆ›ดๆ–ฐโ€ๆœ‰ๅพˆๅคงไธๅŒใ€‚ ่ฟ™ไนŸ่งฃ้‡Šไบ†AgentไปปๅŠกไธŠๆ›ดๅๅ‘็Žฏๅขƒๅ้ฆˆ๏ผˆenvironment-based reward๏ผ‰๏ผŒ่€Œ้žๅ‡ญReward Model่ฟ›่กŒ้™ๆ€ๆ‰“ๅˆ†ใ€‚

  • ็Žฏๅขƒไบคไบ’ๅ้ฆˆ๏ผšๆœ€็ปˆไปฅๆ‰ง่กŒ็ป“ๆžœไธบๅ‡†๏ผˆไปฃ็ ๆ˜ฏๅฆ่ท‘้€šใ€APIๆ˜ฏๅฆ่ฟ”ๅ›žๆˆๅŠŸใ€ๅญ็›ฎๆ ‡ๆ˜ฏๅฆๅฎŒๆˆ๏ผ‰๏ผ›
  • Model-basedๅฅ–ๅŠฑๅฑ€้™๏ผšๅฏน้•ฟ้“พ่ทฏใ€ๅฏๆ‰ง่กŒ่ฏญไน‰็š„ๅ…จ่ฒŒๆ•ๆ‰ๆœ‰้™๏ผŒไธ”ๅคงๆฆ‚็އๅ’Œ็œŸๅฎž็Žฏๅขƒๅ้ฆˆไธไธ€่‡ด๏ผˆreward hacking๏ผ‰ใ€‚

PPO ๆ˜ฏ 2017 ๅนด OpenAI ๆๅ‡บ็š„้žๅธธ็ปๅ…ธ็š„ๅผบๅŒ–ๅญฆไน ็ฎ—ๆณ•๏ผŒไนŸๆ˜ฏ LLM RL ้ข†ๅŸŸๆœ€ๅธธ่ง็š„ๅŸบ็บฟๆ–นๆณ•ไน‹ไธ€ใ€‚

PPOๆŸๅคฑ๏ผš $$\mathcal{L}_{PPO} = -\mathbb{E}\left[\min(r_t \cdot A_t, \text{clip}(r_t, 1-\varepsilon, 1+\varepsilon) \cdot A_t)\right] + \beta \cdot \mathbb{E}[\text{KL}]$$

ๅ…ถไธญ๏ผš

  • ็ญ–็•ฅ้กน: $f(r_t) = \min(r_t, \text{clip}(r_t, 1-\varepsilon, 1+\varepsilon))$ (่ฃๅ‰ชๆฆ‚็އๆฏ”้˜ฒๆญขๆ›ดๆ–ฐ่ฟ‡ๆฟ€)
  • ไผ˜ๅŠฟ้กน: $g(A_t) = R - V(s)$ (้€š่ฟ‡Critic็ฝ‘็ปœไผฐ่ฎกไปทๅ€ผๅ‡ฝๆ•ฐ)
  • ๆญฃๅˆ™้กน: $h(\text{KL}_t) = \beta \cdot \mathbb{E}[\text{KL}]$ (ๅ…จๅฑ€KLๆ•ฃๅบฆ็บฆๆŸ)

ๅฏนๆฏ”DPO่€Œ่จ€๏ผŒ

  • DPO (Off-Policy)๏ผš่ฎญ็ปƒๆ•ฐๆฎๆ˜ฏ้™ๆ€ๅๅฅฝๅฏน๏ผˆchosen vs rejected๏ผ‰๏ผŒๅฏไปฅๅๅคไฝฟ็”จๅŒไธ€ๆ‰นๆ•ฐๆฎ่ฎญ็ปƒๅคšไธช epoch๏ผŒๅƒไผ ็ปŸ็›‘็ฃๅญฆไน ไธ€ๆ ทใ€‚ๆ•ฐๆฎๆ•ˆ็އ้ซ˜ใ€ๆˆๆœฌไฝŽ๏ผŒไธ”ๆ— ้œ€ Reward Modelใ€‚
  • PPO (On-Policy)๏ผšๅฟ…้กป็”จๅฝ“ๅ‰็ญ–็•ฅๅฎžๆ—ถ้‡‡ๆ ทๆ–ฐๆ•ฐๆฎ๏ผŒๆ—ง็ญ–็•ฅๆ•ฐๆฎๅช่ƒฝๆœ‰้™ๅค็”จ๏ผŒๅฆๅˆ™ๅฐฑไผšๅ‡บ็Žฐ distribution shiftใ€‚่™ฝ็„ถ importance sampling ๅ’Œ clip ๅ…่ฎธ่ฝปๅพฎๅ็งป๏ผŒไฝ†ๆœฌ่ดจไธŠไป่ฆๆฑ‚ๆ•ฐๆฎๆฅ่‡ช่พƒๆ–ฐ็š„็ญ–็•ฅใ€‚ๆ•ฐๆฎๆ•ˆ็އๆ›ดไฝŽ๏ผŒไฝ†ๆ›ด้€‚ๅˆๆŽข็ดขๅผๅญฆไน ใ€‚

็ฎ€ๅ•ๆฅ่ฏด๏ผš

  • ๅ‰่€…ๆŒ‰็ฆป็บฟ้ข„ๅฎš็š„ใ€Œๅฅฝ/ๅๆ ‡ๅ‡†ใ€ๅญฆไน ๏ผ›
  • ๅŽ่€…ๅˆ™ๅŸบไบŽๆœ€ๆ–ฐ policy ๅœจ็บฟ้‡‡ๆ ทๅนถๅฎžๆ—ถ็บ ๅใ€‚

MiniMind ็š„ PPO ๅฎž็ŽฐๅŒ…ๅซ Actor๏ผˆ็”Ÿๆˆๅ›ž็ญ”๏ผ‰ใ€Critic๏ผˆ่ฏ„ไผฐๅ›ž็ญ”ไปทๅ€ผ๏ผ‰ไปฅๅŠๅฎŒๆ•ด็š„ GAE๏ผˆGeneralized Advantage Estimation๏ผ‰ไผ˜ๅŠฟๅ‡ฝๆ•ฐ่ฎก็ฎ—ใ€‚

่ฎญ็ปƒๆ–นๅผ๏ผš

# ๆ–นๅผ1
torchrun --nproc_per_node N train_ppo.py
# ๆ–นๅผ2
python train_ppo.py

่ฎญ็ปƒๅŽ็š„ๆจกๅž‹ๆƒ้‡ๆ–‡ไปถ้ป˜่ฎคๆฏ้š”save_intervalๆญฅไฟๅญ˜ไธบ: ppo_actor_*.pth๏ผˆ*ไธบๆจกๅž‹ๅ…ทไฝ“dimension๏ผ‰

ppo_loss

MiniMind ๅœจ PPO ่ฎญ็ปƒ้˜ถๆฎต็š„ไผ˜ๅŒ–่ตฐๅŠฟ

ไปŽ่ฎญ็ปƒๆ›ฒ็บฟๅฏไปฅ็œ‹ๅ‡บ๏ผŒPPOๅญ˜ๅœจrewardๆๅ‡็ผ“ๆ…ข็š„้—ฎ้ข˜ใ€‚็งไปฅไธบ่ฟ™ไธป่ฆๆบไบŽPPOๅŒ็ฝ‘็ปœ่”ๅˆไผ˜ๅŒ–ๆ–นๆณ•๏ผšCritic้œ€่ฆ้€ๆญฅๆ”ถๆ•›ไปฅๅ‡†็กฎไผฐ่ฎกไปทๅ€ผๅ‡ฝๆ•ฐ๏ผŒ่€ŒActor็š„็ญ–็•ฅๆ›ดๆ–ฐไพ่ต–Criticๆไพ›็š„ไผ˜ๅŠฟไผฐ่ฎก๏ผŒไธค่€…็›ธไบ’ไพ่ต–ๅฝขๆˆๅคๆ‚็š„ไผ˜ๅŒ–่ฟ‡็จ‹ใ€‚่ฎญ็ปƒๅˆๆœŸCriticไผฐ่ฎกไธๅ‡†ไผšๅฝฑๅ“Actorๆขฏๅบฆๆ–นๅ‘๏ผŒๅฏผ่‡ดๆ•ดไฝ“ๆ”ถๆ•›็ผ“ๆ…ขใ€‚ๆญคๅค–๏ผŒPPO ้œ€่ฆๅŒๆ—ถ็ปดๆŠคไธคไธช็ฝ‘็ปœ๏ผŒๅœจๅฝ“ๅ‰ๅฎž็Žฐไธ‹ๆ˜พๅญ˜ๅ ็”จ็บฆไธบๅ•็ฝ‘็ปœๆ–นๆณ•็š„ 1.5โ€“2 ๅ€ใ€‚

2025 ๅนดๅˆ๏ผŒ้š็€ DeepSeek-R1 ็ซ็ˆ†ๅ‡บๅœˆ๏ผŒๆฅ่‡ช DeepSeekMath ่ฎบๆ–‡็š„ GRPO ไนŸ่ฟ…้€Ÿ่ฟ›ๅ…ฅไธปๆต่ง†้‡Ž๏ผŒไธ€ๅบฆๆˆไธบๆœ€ๅ—ๅ…ณๆณจ็š„ RL ็ฎ—ๆณ•ไน‹ไธ€ใ€‚ไธ่ฟ‡ AI ้ข†ๅŸŸๅ‘ๆฅ่ฟญไปฃๆžๅฟซใ€‚ๆ—ถ่‡ณไปŠๆ—ฅ๏ผŒGRPO ๆ›ดๅคšๅทฒ็ปๆผ”ๅ˜ๆˆๅ„็ฑป XXPO ๅ˜ไฝ“๏ผˆๅฆ‚ DAPOใ€GSPOใ€CISPO ็ญ‰๏ผ‰็š„ๅ…ฑๅŒๅŸบ็บฟใ€‚ไธ€ๅฅ่ฏๆฆ‚ๆ‹ฌๅฎƒ็š„ๆ ธๅฟƒๅˆ›ๆ–ฐ๏ผŒๅฐฑๆ˜ฏโ€œๅˆ†็ป„็›ธๅฏนไปทๅ€ผไผฐ่ฎกโ€ใ€‚

GRPOๆŸๅคฑ๏ผš

$$\mathcal{L}_{GRPO} = -\mathbb{E}\left[\min(r_t \cdot A_t, \mathrm{clip}(r_t, 1-\varepsilon, 1+\varepsilon

(README truncated)

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 45

Releases and announcements

2 total
  1. MiniMind Docsv2Oct 21, 2025

    https://minimind.readthedocs.io

  2. ModelScope-MiniMind-V1minimind-v1Sep 2, 2024

    https://www.modelscope.cn/studios/gongjy/minimind

Code frequency

additions and deletions
+33.7K-33.7KWeek of 2025-08-10: +0 linesWeek of 2025-08-10: -0 linesWeek of 2025-08-17: +0 linesWeek of 2025-08-17: -0 linesWeek of 2025-08-24: +0 linesWeek of 2025-08-24: -0 linesWeek of 2025-08-31: +0 linesWeek of 2025-08-31: -0 linesWeek of 2025-09-07: +0 linesWeek of 2025-09-07: -0 linesWeek of 2025-09-14: +0 linesWeek of 2025-09-14: -0 linesWeek of 2025-09-21: +0 linesWeek of 2025-09-21: -0 linesWeek of 2025-09-28: +0 linesWeek of 2025-09-28: -0 linesWeek of 2025-10-05: +0 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +732 linesWeek of 2025-10-12: -696 linesWeek of 2025-10-19: +33,744 linesWeek of 2025-10-19: -32,148 linesWeek of 2025-10-26: +1,728 linesWeek of 2025-10-26: -1,836 linesWeek of 2025-11-02: +12 linesWeek of 2025-11-02: -3 linesWeek of 2025-11-09: +35 linesWeek of 2025-11-09: -1 linesWeek of 2025-11-16: +14 linesWeek of 2025-11-16: -20 linesWeek of 2025-11-23: +23 linesWeek of 2025-11-23: -8 linesWeek of 2025-11-30: +78 linesWeek of 2025-11-30: -30 linesWeek of 2025-12-07: +6 linesWeek of 2025-12-07: -7 linesWeek of 2025-12-14: +50 linesWeek of 2025-12-14: -25 linesWeek of 2025-12-21: +28 linesWeek of 2025-12-21: -41 linesWeek of 2025-12-28: +175 linesWeek of 2025-12-28: -126 linesWeek of 2026-01-04: +371 linesWeek of 2026-01-04: -387 linesWeek of 2026-01-11: +169 linesWeek of 2026-01-11: -178 linesWeek of 2026-01-18: +72 linesWeek of 2026-01-18: -68 linesWeek of 2026-01-25: +3 linesWeek of 2026-01-25: -4 linesWeek of 2026-02-01: +43 linesWeek of 2026-02-01: -13 linesWeek of 2026-02-08: +0 linesWeek of 2026-02-08: -0 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +0 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +0 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +23,458 linesWeek of 2026-03-22: -22,228 linesWeek of 2026-03-29: +36 linesWeek of 2026-03-29: -23 linesWeek of 2026-04-05: +63 linesWeek of 2026-04-05: -35 linesWeek of 2026-04-12: +0 linesWeek of 2026-04-12: -0 linesWeek of 2026-04-19: +63 linesWeek of 2026-04-19: -50 linesWeek of 2026-04-26: +126 linesWeek of 2026-04-26: -122 linesWeek of 2026-05-03: +148 linesWeek of 2026-05-03: -146 linesWeek of 2026-05-10: +1 linesWeek of 2026-05-10: -1 linesWeek of 2026-05-17: +8 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +26 linesWeek of 2026-05-31: -10 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +38 linesWeek of 2026-06-28: -25 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +52 linesWeek of 2026-07-19: -38 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesAug 10, 2025Aug 2, 2026
+61.3K lines added, -58.3K removed over the last year.

Commits per week

last 52 weeks
170Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 5 commitsWeek of 2025-10-19: 17 commitsWeek of 2025-10-26: 15 commitsWeek of 2025-11-02: 4 commitsWeek of 2025-11-09: 2 commitsWeek of 2025-11-16: 4 commitsWeek of 2025-11-23: 1 commitsWeek of 2025-11-30: 4 commitsWeek of 2025-12-07: 2 commitsWeek of 2025-12-14: 1 commitsWeek of 2025-12-21: 4 commitsWeek of 2025-12-28: 11 commitsWeek of 2026-01-04: 10 commitsWeek of 2026-01-11: 7 commitsWeek of 2026-01-18: 2 commitsWeek of 2026-01-25: 2 commitsWeek of 2026-02-01: 3 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 7 commitsWeek of 2026-03-29: 6 commitsWeek of 2026-04-05: 7 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 7 commitsWeek of 2026-04-26: 5 commitsWeek of 2026-05-03: 5 commitsWeek of 2026-05-10: 1 commitsWeek of 2026-05-17: 1 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 2 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 1 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 3 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 10, 2025Aug 2, 2026
139 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 โ€” 0 commitsSun 1:00 โ€” 0 commitsSun 2:00 โ€” 0 commitsSun 3:00 โ€” 0 commitsSun 4:00 โ€” 0 commitsSun 5:00 โ€” 0 commitsSun 6:00 โ€” 0 commitsSun 7:00 โ€” 1 commitsSun 8:00 โ€” 0 commitsSun 9:00 โ€” 1 commitsSun 10:00 โ€” 1 commitsSun 11:00 โ€” 2 commitsSun 12:00 โ€” 1 commitsSun 13:00 โ€” 4 commitsSun 14:00 โ€” 3 commitsSun 15:00 โ€” 6 commitsSun 16:00 โ€” 4 commitsSun 17:00 โ€” 1 commitsSun 18:00 โ€” 5 commitsSun 19:00 โ€” 0 commitsSun 20:00 โ€” 5 commitsSun 21:00 โ€” 3 commitsSun 22:00 โ€” 3 commitsSun 23:00 โ€” 9 commitsMon 0:00 โ€” 3 commitsMon 1:00 โ€” 0 commitsMon 2:00 โ€” 0 commitsMon 3:00 โ€” 0 commitsMon 4:00 โ€” 0 commitsMon 5:00 โ€” 0 commitsMon 6:00 โ€” 0 commitsMon 7:00 โ€” 0 commitsMon 8:00 โ€” 0 commitsMon 9:00 โ€” 2 commitsMon 10:00 โ€” 2 commitsMon 11:00 โ€” 3 commitsMon 12:00 โ€” 1 commitsMon 13:00 โ€” 2 commitsMon 14:00 โ€” 0 commitsMon 15:00 โ€” 1 commitsMon 16:00 โ€” 4 commitsMon 17:00 โ€” 2 commitsMon 18:00 โ€” 3 commitsMon 19:00 โ€” 1 commitsMon 20:00 โ€” 5 commitsMon 21:00 โ€” 2 commitsMon 22:00 โ€” 5 commitsMon 23:00 โ€” 5 commitsTue 0:00 โ€” 0 commitsTue 1:00 โ€” 4 commitsTue 2:00 โ€” 1 commitsTue 3:00 โ€” 1 commitsTue 4:00 โ€” 0 commitsTue 5:00 โ€” 0 commitsTue 6:00 โ€” 0 commitsTue 7:00 โ€” 0 commitsTue 8:00 โ€” 0 commitsTue 9:00 โ€” 0 commitsTue 10:00 โ€” 1 commitsTue 11:00 โ€” 3 commitsTue 12:00 โ€” 2 commitsTue 13:00 โ€” 5 commitsTue 14:00 โ€” 1 commitsTue 15:00 โ€” 3 commitsTue 16:00 โ€” 3 commitsTue 17:00 โ€” 4 commitsTue 18:00 โ€” 2 commitsTue 19:00 โ€” 0 commitsTue 20:00 โ€” 1 commitsTue 21:00 โ€” 3 commitsTue 22:00 โ€” 0 commitsTue 23:00 โ€” 11 commitsWed 0:00 โ€” 4 commitsWed 1:00 โ€” 0 commitsWed 2:00 โ€” 0 commitsWed 3:00 โ€” 0 commitsWed 4:00 โ€” 0 commitsWed 5:00 โ€” 0 commitsWed 6:00 โ€” 0 commitsWed 7:00 โ€” 0 commitsWed 8:00 โ€” 0 commitsWed 9:00 โ€” 1 commitsWed 10:00 โ€” 6 commitsWed 11:00 โ€” 2 commitsWed 12:00 โ€” 4 commitsWed 13:00 โ€” 1 commitsWed 14:00 โ€” 3 commitsWed 15:00 โ€” 2 commitsWed 16:00 โ€” 8 commitsWed 17:00 โ€” 4 commitsWed 18:00 โ€” 3 commitsWed 19:00 โ€” 0 commitsWed 20:00 โ€” 6 commitsWed 21:00 โ€” 4 commitsWed 22:00 โ€” 5 commitsWed 23:00 โ€” 5 commitsThu 0:00 โ€” 1 commitsThu 1:00 โ€” 0 commitsThu 2:00 โ€” 0 commitsThu 3:00 โ€” 0 commitsThu 4:00 โ€” 0 commitsThu 5:00 โ€” 0 commitsThu 6:00 โ€” 0 commitsThu 7:00 โ€” 0 commitsThu 8:00 โ€” 2 commitsThu 9:00 โ€” 3 commitsThu 10:00 โ€” 3 commitsThu 11:00 โ€” 4 commitsThu 12:00 โ€” 0 commitsThu 13:00 โ€” 3 commitsThu 14:00 โ€” 2 commitsThu 15:00 โ€” 7 commitsThu 16:00 โ€” 1 commitsThu 17:00 โ€” 1 commitsThu 18:00 โ€” 2 commitsThu 19:00 โ€” 6 commitsThu 20:00 โ€” 5 commitsThu 21:00 โ€” 1 commitsThu 22:00 โ€” 4 commitsThu 23:00 โ€” 11 commitsFri 0:00 โ€” 5 commitsFri 1:00 โ€” 3 commitsFri 2:00 โ€” 0 commitsFri 3:00 โ€” 0 commitsFri 4:00 โ€” 0 commitsFri 5:00 โ€” 0 commitsFri 6:00 โ€” 0 commitsFri 7:00 โ€” 0 commitsFri 8:00 โ€” 0 commitsFri 9:00 โ€” 0 commitsFri 10:00 โ€” 4 commitsFri 11:00 โ€” 3 commitsFri 12:00 โ€” 2 commitsFri 13:00 โ€” 2 commitsFri 14:00 โ€” 1 commitsFri 15:00 โ€” 1 commitsFri 16:00 โ€” 5 commitsFri 17:00 โ€” 5 commitsFri 18:00 โ€” 1 commitsFri 19:00 โ€” 4 commitsFri 20:00 โ€” 6 commitsFri 21:00 โ€” 5 commitsFri 22:00 โ€” 3 commitsFri 23:00 โ€” 3 commitsSat 0:00 โ€” 3 commitsSat 1:00 โ€” 0 commitsSat 2:00 โ€” 0 commitsSat 3:00 โ€” 0 commitsSat 4:00 โ€” 0 commitsSat 5:00 โ€” 0 commitsSat 6:00 โ€” 1 commitsSat 7:00 โ€” 1 commitsSat 8:00 โ€” 0 commitsSat 9:00 โ€” 0 commitsSat 10:00 โ€” 4 commitsSat 11:00 โ€” 1 commitsSat 12:00 โ€” 3 commitsSat 13:00 โ€” 2 commitsSat 14:00 โ€” 7 commitsSat 15:00 โ€” 1 commitsSat 16:00 โ€” 2 commitsSat 17:00 โ€” 1 commitsSat 18:00 โ€” 3 commitsSat 19:00 โ€” 3 commitsSat 20:00 โ€” 2 commitsSat 21:00 โ€” 0 commitsSat 22:00 โ€” 2 commitsSat 23:00 โ€” 5 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits133 (91%)
Community commits13 (9%)

146 commits in total over the last year.

DateListRankStars gained
Mar 24, 2026daily#25+107