English · 日本語
zxell.ai

GPUクラスタなしで、言語モデルをイチから学習する。

低予算・低通信の分散学習実験。多言語ニュースコーパスと、 イチから実装した Transformer を、HTTPS で束ねたごく普通の家庭用マシン群で学習します。

The project

コーパスは英語・ドイツ語・フランス語・日本語の約800万件のニュース記事 (タイトル・要約・カテゴリ・本文)の私設アーカイブで、重複除去後で 約65億トークンあります。GPU クラスタを借りる代わりに、 小さな中央サーバが低スペックなマシン群へ学習タスクを配ります。

成果物はモデルそのものだけではありません。「イチから作るモデルが家庭用ハードウェアで どこまで到達できるか」の定量的な知見です: 単一マシンベースラインと比較したパープレキシティや 要約品質、クライアント台数に対するスケーリング曲線、そして同期通信量を桁で削ることの実コストを計測します。

How it works

ボランティアコンピューティング(BOINC、Folding@home)の系譜のハブ&スポーク構成:

[中央サーバ]
  ├─ コーディネータ API (FastAPI): 登録と承認、タスクのリース払い出し、結果の受領
  ├─ パラメータストア: バージョン管理されたグローバル重み(checksum 付き)
  ├─ シャードストレージ: トークン化・パック済みの学習シャード
  └─ メタデータ DB (PostgreSQL): clients / tasks / results / weight_versions

[クライアント](低スペック・混成)
  ├─ GPU ワーカー: 重み+シャードを GET → ローカルで H ステップ学習 → 圧縮した差分を POST
  └─ CPU ワーカー: 前処理 / 評価 / 検証タスク

同期式データ並列は家庭用回線では成立しません — 500M パラメータの勾配は 1 ステップあたり約 1GB にもなります。そこで学習は DiLoCo / Local SGD 系の方式に従います: 各クライアントは数百ステップをローカルで学習し、圧縮した重み差分だけを提出。 サーバは差分を外側オプティマイザで集約し、新しい重みバージョンを配布します。 タスクはリース式で自動再キューされるため、クライアントはいつ参加しても、離脱しても、故障しても構いません。

The model

イチから実装するデコーダオンリーの GPT 系 Transformer です(基盤フレームワークとして PyTorch を利用、事前学習済みの重みは不使用): RoPE 位置符号化、RMSNorm、SwiGLU FFN、 埋め込みと LM Head の重み共有、自前学習の多言語 BPE トークナイザ(語彙 48k〜64k)。

S — 約30Mパラメータ

6層 · d=384 · ctx 1024。パイプライン検証とスモークテスト。2GB の GPU でも動作。

M — 約125Mパラメータ

12層 · d=768 · ctx 1024。分散方式の比較実験の主力。

L — 約500Mパラメータ

24層 · d=1280 · ctx 2048。全コーパスで学習する最終ターゲット。

The model, in two diagrams

各図の隅のツールバーで拡大やライトボックス表示ができます。

1 — データパイプラインとネットワーク構造

2 — 推論: 質問 → 回答(1トークンずつの自己回帰生成)

Roadmap

フェーズ内容状態
0データ棚卸し、法務方針、サーバ構築と HTTPS 公開
まとめ資料: ロードマップ · データ棚卸し
完了
1トークナイザ、前処理パイプライン、単一マシンベースライン
まとめ資料: トークナイザ比較 · 基盤のメソッド一覧 · クライアント側のファイル構成
進行中
2分散 MVP: クライアント v1、複数台での FedAvg、ダッシュボード計画
3低通信学習(DiLoCo 型)、検証と信頼スコア計画
4L モデルの本番学習、要約 SFT、評価と可視化計画
5技術レポートの公開、拡張の判断計画

進捗と判断の経緯は開発記録で公開しています — 作業報告とアーキテクトの回答の往復を、サーバ運用やセキュリティに関わる部分を省くだけの編集で載せています。各フェーズで作成したレポートはフェーズ別まとめ資料にまとめています。

Participation & data

本プロジェクトは現在 closed 運用です: クライアントはプロジェクト自身が運用するマシンに限られ、 ニュースコーパスが再頒布されることはありません — 承認済みクライアントに届くのは、 トークン化・シャッフル・パック済みのシャードのみです。コーディネータサーバとクライアントのコードは オープンソースです(GitHub・GPL-3.0)。 モデルの重みとデータ統計は現段階では公開していません。