zxell.ai
この資料は、プロジェクト内部のレポートを公開用に編集したものです。サーバ運用・セキュリティに関わる部分と、コーパスの詳細は省略しています(省略箇所には印があります)。

zxell.ai ロードマップ(清書版 v2)

作成日: 2026-08-12(改訂: 2026-09-05 = 10 章、2026-10-04 = 11 章)原本: ロードマップ整理資料(2026-08-10)本書は原本に、その後の決定事項(review01〜08 の往復)とフェーズ0 実測値を反映して清書したもの。


1. プロジェクト目的と成功基準

1.1 目的(3 層)

  1. モデル層: ニュースコーパス(英独仏日・約 800 万記事)を学習した言語モデルをイチから作る(事前学習済みモデルは使わない。モデルは自前実装、PyTorch 等の基盤利用は許容 — 確定)。
  2. 分散層: 低スペックなクライアント複数台に処理を分散させ、ハイエンド GPU なしで学習を成立させる。
  3. 知見層: 「どのくらいの知能になったか」を体験・計測し、データ量 × 計算量 × 分散方式 → 能力の関係を定量的な知見として得る。

成果物は「モデルそのもの」だけでなく 「低予算・分散環境でどこまで到達できるかの定量的知見」。比較対象(単一マシンベースライン)と計測方法を最初から設計に組み込む。

1.2 成功基準

区分指標目標イメージ
モデル能力検証パープレキシティ(言語別)単一マシン学習の同規模モデル比で劣化 10% 以内
モデル能力要約品質(ROUGE-L / BERTScore + 人手)記事+付属要約(description)ペアで定量評価
モデル能力コーパス内事実の QA自作 QA セットで正答率を計測
分散効率台数スケーリング台数に対するスループット曲線を取得
分散効率通信量 / 学習トークン同期式データ並列比 1/100 以下
運用離脱耐性任意クライアントが落ちても学習継続
可視化運用ダッシュボードタスク・クライアント・損失・スループットを表示(管理者用)

2. 確定事項(決定ログ)

review01〜08 で確定した方針。以後の設計はこれを前提とする。

#項目決定内容出典
1法務方針closed 運用(クライアントは自己管理端末に限定)/ 配布はトークン化・シャッフル・パック済みシャードのみ / 法的整理まで不特定多数の募集はしないreview01
2初期クライアントWindows 2 台(NVIDIA GeForce GTX 1050, VRAM 2GB × 2)。進捗を見て追加検討review01, 08
3中央サーバ自前(現マシン)。https://api.zxell.ai で公開済み(省略: 公開経路の構成)review04〜08
4モデル規模S(≈30M)/ M(≈125M)/ L(≈500M)の 3 段階。最終目標は L: 500Mreview01
5画像第 1 期は学習対象外(棚卸しのみ実施済み。第 2 期候補)review01, 03
6公開範囲コードのみ公開(GitHub zxell-ai/zxell を public 化予定)。学習可視化・重み・データは管理者/開発者用review01, 08
7リポジトリ構成モノレポ。zxell_server/ + zxell_client/(予定)。非公開フォルダは Git 管理外review02, 08
8データソースMySQL の feed_items を直接読む(スナップショットは取らない)。content_alive/content_locked は無視して全件対象review03, phase0
9フィールドの使い方本文=content_text、要約=description、言語=feed_channels.language 先頭 2 文字。title は varchar(100) 切り詰めのまま使用review03
10重複除去主キー = link(補助 = guid。guid は 21.6% 空欄)review03, phase0
11日本語の扱い自然比率で全言語混合 + 日本語のみ title+description+content_text を連結(他言語は content_text のみ)phase0
12ストレージ(省略: サーバ上の保存場所)review02, phase0, 2026-10-02
13認証クライアント登録は承認制(pending→approved)。/api/status 含む全 API に認証review02, 03
14公開範囲コード+開発記録(編集版)を公開(review01 の「コードのみ」から拡大)。開発記録は reviews を原文尊重・削るだけで編集し、サーバ運用・障害対応・セキュリティ情報・コーパスの詳細・個人的事情を省く。法務は決定事項のみ。重み・データ統計・ダッシュボードは非公開のまま。公開先 https://zxell.ai/devlog/devlog_publish_plan.md, 2026-10-02
15トークナイザSentencePiece BPE・語彙 48k を採用(64k はトークン数を 3% 減らすだけで、S モデルの埋め込みが 33% 太る)review13, 19
16train/val/test の分割言語別・記事数ベース: 各言語の新しい側から test 8,000 記事、その直前 val 3,000 記事、残りを train(全言語共通の日付で切ると val/test が日本語だけになるため)review20
17シャード1 シャード = 5,000 万トークン固定(uint16 で約 100MB)。train は記事単位でシャッフルしてから切る(どのシャードも言語比率が全体とほぼ同じ)review22
18フェーズ 1→2 の段取りフェーズ 1 = RTX 3060 単独の S ベースライン(比較の物差し。シャード取得は API 経由)→ フェーズ 2 = 同じ S を API 配布で 3060 + 1050 の FedAvgreview22

3. 定量前提(フェーズ0 実測で更新)

3.1 コーパス実測値(2026-08-11 棚卸し。詳細: フェーズ0 データ棚卸しレポート)

原本の見積り(実効 6〜9B トークン)は 6.5B で実測確定。作業仮説からの修正は不要。

3.2 トークン数 → モデル規模

サイズパラメータ構成(目安)ctx役割
S≈30M6 層 / d=384 / 6 head1024パイプライン検証・スモーク・教材化
M≈125M12 層 / d=768 / 12 head1024分散方式の比較実験の主力
L≈500M24 層 / d=1280 / 20 head2048最終ターゲット(全データ)

語彙 48k〜64k の多言語 BPE、埋め込みと LM Head は重み共有。

3.3 計算量の再試算(GTX 1050 2GB × 2 台前提)【原本から下方修正】

GTX 1050 は FP32 ピーク ≈1.8 TFLOPS・Tensor Core なし。MFU 30% として実効 ≈0.5 TFLOPS/台(原本の想定「実効 4 TFLOPS のミドル GPU」の約 1/8)。学習 FLOPs ≒ 6 × パラメータ × トークン。

モデルトークン総FLOPs2 台(実効 1 TFLOPS 合算)
S: 30M3B5.4e17約 6 日
M: 125M6.5B4.9e18約 57 日
L: 500M6.5B2.0e19約 230 日(非現実的)

さらに VRAM 2GB の制約:

結論: 現有 2 台では S を完走させ分散方式の実証まで行う。M の本格比較実験・L の本番学習は GPU クライアントの増強(VRAM 6GB 以上を数台)が前提。これは原本 2.3 の結論「L は分散なしでは非現実的」をさらに強めるもので、フェーズ 3→4 のゲート条件に台数を明記する(6 章)。

3.4 通信量

500M の勾配 fp16 ≈1GB。同期式データ並列は家庭用回線で不成立(原本どおり)。ローカル H ステップ → 差分(擬似勾配)低頻度送信 + 8bit 量子化 + Top-k スパース化で 1/100〜1/500 に圧縮し、30〜60 分に 1 回の同期で運用する方針を維持。


4. アーキテクチャ

4.1 全体構成(ハブ&スポーク。稼働中の実体で更新)

[中央サーバ]  https://api.zxell.ai
  (省略: 公開経路の構成)
  ├─ コーディネータ API(FastAPI): 登録承認 / タスク払い出し(リース) / 結果受領
  ├─ パラメータサーバ: weight_versions(checksum 付き)+ 外側最適化(実装予定)
  ├─ ストレージ(シャード・重み・成果物 Δ)
  ├─ PostgreSQL 16: clients / tasks / results / weight_versions
  └─ ダッシュボード(実装予定。/api/status ベース・管理キー式)

[クライアント](当面 Windows 2 台・GTX 1050 2GB)
  ├─ GPU ワーカー: 重み GET → シャード GET → ローカル H ステップ → Δ を POST
  └─ CPU ワーカー: preprocess / eval / verify タスク

4.2 サーバ実装状況(原本 3.6 の 8 項目 → 全項目実装・コミット済み)

リース付き払い出し(FOR UPDATE SKIP LOCKED、期限切れ自動再キュー、max_attempts)、結果永続化(metrics JSON + 成果物ファイル)、承認制クライアント認証(X-API-Key)+ 管理 API(X-Admin-Key)、環境変数設定(pydantic-settings・必須化)、Pydantic v2、重みバージョン管理・配布、シャード配布。タスク種別は preprocess / train / eval / verify。 train の結果には base_weight_version 必須(ステイルネス対策の前提)。実 PostgreSQL でスモークテスト 15 項目 + 認証ヘッダ欠落 2 項目に合格済み。

4.3 分散学習方式(原本 3.2 の推奨を維持)

DiLoCo 型(Local SGD + 外側 Nesterov モーメンタム)を本命とし、段階導入する: FedAvg(単純平均)で MVP → 外側最適化 → Δ 圧縮(8bit / Top-k)。方式の差し替えによる品質変化そのものが本プロジェクトの知見となる。非 IID 対策(シャードのランダム割当で全クライアントが全言語を見る)、ステイルネス対策(基準重みバージョン添付・減衰・破棄)も原本どおり。

4.4 クライアント v1(次の実装対象)


5. データパイプライン(フェーズ0 の発見を反映)

  1. 正規化: link/guid の改行・タブ除去(実測 1.1 万件)、文字コード正規化、HTML 残骸確認。
  2. 重複除去: link 主キー(重複 5.3%)、guid 補助。MinHash/SimHash の近似重複除去は通信社配信の重複対策としてフェーズ 1 で効果を計測してから採否を決める。
  3. 日本語の連結: ja のみ title + description + content_text を連結(確定事項 11)。
  4. トークン化 → シャーディング: 多言語 BPE(48k〜64k)→ 固定長パック(1024/2048)→ 数十〜数百 MB のシャード + checksum + メタデータ(言語構成・トークン数)。置き場所: サーバのストレージ。
  5. 分割: 時系列を考慮(最終数か月をテストに回し「新しい記事の要約」評価を自然に行う)。
  6. 前処理自体を preprocess タスクとして分散させ、分散基盤の最初の実運用テストとする。
省略: サーバのディスクに関する注意(サーバ運用)

6. フェーズ計画(作成時点の現在地: フェーズ0 完了。最新は 11 章)

フェーズ 0: 定量把握と法務整理 — ✅ 完了(2026-08-11)

フェーズ 1: 単一マシンベースライン(3〜6 週間)← 次はここ

フェーズ 2: 分散基盤 MVP(4〜8 週間)

フェーズ 3: 低通信方式の実装と比較実験(4〜8 週間)

フェーズ 4: 本番学習と体験系(6〜12 週間)

フェーズ 5: 知見の公開と拡張判断


7. リスク(主要なもの。原本 5 章から現状に合わせ更新)

リスク現状評価対応
記事本文の再頒布(著作権)closed 運用 + トークン化シャード配布で当面回避(確定)open 化の際に再整理。コード公開はデータと分離済み
VRAM 2GB 制約顕在化(3.3)。M 以上は現有機で困難S で実証 → GPU 増強をフェーズ 3 ゲートに設定
非 IID・ステイルネス未検証シャードランダム割当・バージョン添付減衰(フェーズ 2〜3)
不正・故障クライアント当面は自己管理端末のみで低リスク検証機構はフェーズ 3 で実装
学習の発散(低頻度同期)未検証S/M でハイパラ探索してから L(段取り厳守)
再現性—シード・割当・Δ 履歴の完全ログ化
省略: 表の 2 行(回線とサーバのディスクに関するリスク)

8. 公開方針(確定事項 6 の具体化)

9. 参考文献

DiLoCo / Local SGD / FedAvg / Branch-Train-Merge / Hivemind / Petals / BOINC / Chinchilla / nanoGPT / Spreadsheets are all you need(原本 8 章と同一)。


10. 2026-09-05 改訂: 新サーバ移行とクライアント体制の変更

10-1. 起きたこと(review16〜18 とその後)

10-2. クライアント体制(確定事項 2 の更新)

RTX 3060(12GB, Ubuntu Server)+ GTX 1050(2GB, Windows)の 2 台。 (1050 の 1 台は退役し、代わりに 3060 を調達。3060 も memtest 済み)

学習対象旧見積(1050×2)新体制
S (30M)約 6 日3060 単独 約 1 日 / 分散実験は 3060+1050
M (125M)約 57 日(2GB に辛うじて載る)3060 単独 約 1 週間(1050 には載らない)
L (500M)約 230 日(非現実的)3060 単独 約 1 か月 — 実現可能に

10-3. フェーズ 1 の再構築状況(2026-09-05 時点)

故障 RAM 機の work/ 産物は全て破棄し、新サーバで作り直した:

次: S(30M)モデル実装 → 3060 での単一 GPU ベースライン(フェーズ 1 完了判定)。


11. 2026-10-04 改訂: フェーズ 1 の前処理の確定と S モデルの実装

11-1. シャード v2 — 分割方式の変更と日本語の重複除去(2026-09-27、review19〜21)

言語最終 pub_datetest 開始val 開始
en2023-05-282023-05-242023-05-23
de2023-05-282023-05-212023-05-18
fr2023-05-282023-05-132023-05-09
ja2024-02-122023-11-212023-10-19
分割シャードトークン記事数言語構成(トークン)
train1226.068B7,448,909en 64.8% / de 21.9% / fr 10.0% / ja 3.2%
val110.2M11,129en 61.2% / de 14.1% / fr 14.0% / ja 10.7%
test127.2M30,171en 60.1% / de 14.7% / fr 14.3% / ja 10.9%
合計1246.106B7,490,209

11-2. モデル本体の実装(2026-09-29、review22〜23)

zxell_model/ にモデル本体と学習・評価・生成コードを実装した(RMSNorm・RoPE・causal Self-Attention・SwiGLU・埋め込みと LM Head の重み共有。AdamW・warmup + cosine・bf16・チェックポイント/再開・言語別パープレキシティ評価)。

preset層 / d_model / head / ctxパラメータうち非埋め込み
S6 / 384 / 6 / 102429.1M10.6M
M12 / 768 / 12 / 1024121.8M85.0M
L24 / 1280 / 20 / 2048537.3M475.9M

11-3. S ベースラインの計画とフェーズ 2 への段取り(確定事項 18)

項目値
構成S(29.1M)、batch 32 × ctx 1024 = 32,768 トークン/ステップ
学習量90,000 ステップ ≈ 2.95B トークン(train の約半分)
所要(見込み)RTX 3060 で約 1 日(約 35,000〜40,000 トークン/秒)
評価500 ステップごとに val の言語別 PPL、終了時に val 全量。完了後に test

フェーズ 2 では同じ S を API 配布で 2 台(3060 + 1050)の FedAvg にかける。1 シャード(5,000 万トークン)の処理は 3060 で約 21 分、1050 で約 5 時間かかりリース(1 時間)を超えるため、1050 向けのタスクはシャードのトークン範囲で細かく切る。

11-4. 公開(確定事項 14 の実施)

11-5. 現在地(2026-10-04): フェーズ 1 進行中

フェーズ 1 の項目状態
トークナイザ(48k)完了
前処理パイプライン・シャード(v2)完了
S/M/L モデルと学習・評価コード完了(CPU スモーク合格)
評価ハーネス言語別パープレキシティは実装済み。ROUGE・QA は未着手
S ベースライン学習(RTX 3060)未着手(3060 機のセットアップ・クライアント登録から)

残り: 3060 機のセットアップ → S ベースライン学習(約 1 日)→ test の言語別 PPL と生成サンプルの確認 → フェーズ 1 の完了判定(「S がまともな文を生成し、評価が自動で回ること」)→ フェーズ 2(クライアントの train タスクを本物の局所学習に置き換え、2 台で FedAvg)。