rasbt/reasoning-from-scratch: 推論モデルをQwen3の上に自分で組み立てる教材リポジトリ
Implement a reasoning LLM in PyTorch from scratch, step by step
ひと目でわかる
- これは何?
- 推論機能を持つLLMを、事前学習済みのQwen3に推論時スケーリング、強化学習、蒸留を順に足していく形で学ぶJupyter Notebook集。書籍の公式コードであり、目的は性能ではなく仕組みの理解にある。
- 誰に向いている?
- 推論モデルがどのように作られるのかを手元のコードで確かめたい個人開発者や学生には向いている。逆に、すぐ本番で使える推論APIや学習済みチェックポイントを探している場合、このリポジトリは目的が違うので別を当たるべきだ。
- 商用利用できる?
- できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 9 日前です。
- 何の言語で書かれている?
- 主に Jupyter Notebook です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
このリポジトリが埋める穴: 推論という言葉と実装のあいだ
推論モデルという呼び名は広く使われているが、その中身をコードで追える教材は多くない。READMEは「reasoning is one of the most exciting and important recent advances in improving LLMs, but it's also one of the easiest to misunderstand if you only hear the term reasoning and read about it in theory」と述べ、理論だけを読んだ状態での誤解を出発点に置いている。対象読者は、Transformerの基本を一度は書いたことのある開発者だ。リポジトリはゼロから言語モデルを作るのではなく、事前学習済みのQwen3を土台として読み込み、その上に推論のための手法を足していく。姉妹書として、通常のベースLLMの実装を扱う Build a Large Language Model (From Scratch) が別に用意されており、役割が分かれている。つまり本書は、モデルの重みを作るところではなく、重みが与えられた後の振る舞いを変えるところを担当する。
章ごとに積み上がる4つの手法
目次を見ると、扱う手法は大きく4つに分かれる。Ch4の推論時スケーリング、Ch5の自己洗練による推論時スケーリング、Ch6とCh7の強化学習(GRPOとその改良)、Ch8の蒸留である。Ch2でQwen3によるテキスト生成を動かし、Ch3で推論モデルの評価を用意してから、手法に入る順序になっている。評価を手法より前に置いている点は実用的で、精度の測り方が決まっていない状態でGRPOを回しても改善を判断できない。Ch7はGRPOそのものではなく改良を扱うため、Ch6の実装を先に動かす前提がある。付録も本体と一体で、付録CはQwen3のソースコード、付録Dはより大きなLLMの利用、付録Eはバッチ処理とスループット、付録FはLLM評価の一般的な手法、付録Gはチャットインターフェースの構築を扱う。推論の手法だけでなく、動かして確かめるための周辺が同じリポジトリに揃っている。
Notebook中心という構成が意味すること
主要言語はJupyter Notebookで、各章は 01_main-chapter-code ディレクトリ配下の chNN_main.ipynb と、同じ階層の chNN_exercise-solutions.ipynb という2枚構成になっている。本文のコードと演習の解答が分離されているため、本文を読みながら手を動かし、詰まったら解答と突き合わせる進め方が想定されている。Notebookはセル単位で状態を保持するので、重みの読み込みやトークナイザの初期化を一度だけ実行して以降のセルで使い回せる。反面、セルの実行順を入れ替えると再現性が崩れる。上から順に実行する前提で書かれていると考えるのが安全だ。CIはLinux、macOS、Windowsの3環境で用意されているが、これはNotebookのコードテストが動くことの確認であり、学習が収束することや、生成される推論の質を保証するものではない。
動かすまでの手順と、READMEが示す範囲
入手はZIPのダウンロードか、READMEに記載された次のコマンドによる。
git clone --depth 1 https://github.com/rasbt/reasoning-from-scratch.git
--depth 1 は履歴を切り捨てて最新のツリーだけを取る指定で、書籍のコードを読む目的では十分だ。ただし特定の版に固定したい場合、この指定では過去のコミットに戻れない。Python環境の作り方については、Ch2にPythonのインストール、パッケージ管理、環境構築の追加のヒントがあるとREADMEが案内している。ここは本文の外に環境構築の説明を置かず、章の中で扱う方針だ。実行中に問題が出た場合は、リポジトリ直下の troubleshooting.md が用意されている。READMEで確認できる設定キーやコマンドはこの範囲に限られる。ハードウェアについては、本文のコードは「designed to mostly run on consumer hardware within a reasonable timeframe」で、専用のサーバ機材を必要とせず、GPUがあれば自動的に使うとされている。具体的なGPU名、メモリ量、学習時間はREADMEには書かれていないので、ここは自分の環境で確かめるしかない。
教材としての限界: 小さく、機能的で、教育用
READMEは作るものを「your own small-but-functional reasoning model for educational purposes」と明言している。これは謙遜ではなく設計上の境界だ。大規模な推論モデルと同じ手法をなぞるが、規模は意図的に小さく抑えられている。したがって、このリポジトリで得られるモデルをそのまま業務の推論タスクに投入する使い方は想定されていない。もう一つの制約は、前提がQwen3に固定されている点である。Ch2以降はQwen3の重みを読み込む流れで書かれており、別のモデルに差し替える場合はトークナイザやチャットテンプレートの差異を自分で吸収する必要がある。付録Dに「Using larger LLMs」の項目があるので、より大きなモデルを使う道は用意されているが、それは本文の章とは別の扱いになる。Notebook形式であることも、長時間走る学習を中断して再開する用途には向かない。
比較対象としてのLLMs-from-scratch
同じ著者による rasbt/LLMs-from-scratch は、通常のベースLLMを実装する書籍のコードである。READMEは両者の関係を明示している。前者は事前学習からモデルを組み立てるところを扱い、本リポジトリは推論の手法に焦点を絞る。アプローチの違いは出発点にある。LLMs-from-scratchは重みを作る過程を追うのに対し、reasoning-from-scratchはQwen3という既存の重みを所与として受け取り、その振る舞いを推論時スケーリング、強化学習、蒸留で変える。どちらを先に読むべきかは目的で決まる。アテンションや学習ループの実装を自分の手で書いた経験がないまま本リポジトリに入ると、Ch2で読み込むモデルの中身がブラックボックスに見えやすい。逆に、モデル構築は済んでいて推論側の設計に関心があるなら、本リポジトリのほうが近道だ。
ライセンスと保守の見通し
ライセンスはApache-2.0で、リポジトリはアーカイブされていない。最終プッシュは2026年9月6日、v1.0のリリースは2026年5月18日であり、書籍の刊行に合わせて版が切られている。目次には「In Progress」と付されているため、章の追加や改訂が続く前提で読むべきだ。Apache-2.0は商用利用を含む広い利用を許すが、著作権表示とライセンス表示の保持などの条件があり、また特許に関する条項も含む。ここで注意したいのは、リポジトリのコードのライセンスと、書籍の本文、そしてQwen3の重みのライセンスは別物だという点である。コードを自分のプロジェクトに取り込む場合でも、書籍の文章を転載できるわけではなく、重みの利用条件はQwen3側の定めに従う。個別の判断はライセンス文面と各配布元の条件を確認したうえで行う必要があり、ここで法的な助言はできない。保守面では、書籍の版とリポジトリの版が対応しているため、勝手に依存関係を最新へ上げるとNotebookのセルが動かなくなる可能性がある。
編集部の結論
推論モデルがどのように作られるのかを手元のコードで確かめたい個人開発者や学生には向いている。逆に、すぐ本番で使える推論APIや学習済みチェックポイントを探している場合、このリポジトリは目的が違うので別を当たるべきだ。導入前に確認すべきは、ch02から順にNotebookを開いてQwen3の重みを読み込めるかどうか、そして自分のGPUメモリで各章のセルが最後まで走るかどうかである。章を飛ばしてch06のGRPOだけを実行しようとすると、前提となる評価用のコードとデータが揃わない。
コミュニティノート