zxell.ai
開発記録 / ロードマップ整理資料
この記録は、プロジェクトの作業報告(報告 → アーキテクトの回答)を公開用に編集したものです。サーバ運用・セキュリティに関わる部分を省略しています(編集方針)。

zxell.ai ロードマップ策定のための整理資料

作成日: 2026-08-10 対象リポジトリ: zxell-ai/zxell(現状: FastAPI によるタスク配布サーバの雛形 zxell_server のみ)

本資料は「分散処理に特化した独自 AI モデルをイチから作る」というプロジェクト目的に対して、ロードマップを策定するために必要な事項――前提の定量把握、設計方針の選択肢と推奨案、課題・リスク、フェーズ分けの骨子、未決事項――を整理したものである。


1. プロジェクト目的の再整理と成功基準

1.1 目的の分解

プロジェクト定義を分解すると、達成すべきことは次の 3 層になる。

  1. モデル層: ニュースコーパス(5 年分・40〜45GB・英独仏日)を学習した言語モデルをイチから(事前学習済みモデルを使わずに)作る。
  2. 分散層: 低スペックなクライアント複数台に処理を分散させ、ハイエンド GPU サーバなしで学習を成立させる(プロジェクトの独自性の核)。
  3. 知見層: 「どのくらいの知能になったか」を体験・計測し、有意・定量的な知見(データ量×計算量×分散方式 → 能力の関係)を得る。

重要なのは、このプロジェクトの成果物は「モデルそのもの」だけではなく 「低予算・分散環境でどこまで到達できるかの定量的な知見」 である点。したがって、比較対象(ベースライン)と計測方法を最初から設計に組み込む必要がある。

1.2 成功基準(案)

区分指標目標イメージ
モデル能力検証データのパープレキシティ単一マシンで学習した同規模モデルと同等(劣化 10% 以内)
モデル能力新規記事の要約品質(ROUGE-L / BERTScore、人手評価)手元の「記事+要約」ペアを正解として定量評価
モデル能力人物・出来事に関する QAコーパス内の事実に関する自作 QA セットで正答率を計測
分散効率クライアント N 台でのスループット向上率台数に対するスケーリング曲線を取得(線形が理想)
分散効率通信量 / 学習トークン同期式データ並列比で 1/100 以下(後述の低通信方式で達成)
運用クライアント離脱・故障時の学習継続任意のクライアントが落ちても学習が止まらない
可視化処理状況ダッシュボードタスク・クライアント・損失曲線・スループットをリアルタイム表示

「単一マシンで学習した同規模モデル」との比較がプロジェクトの科学的価値を決めるため、 小規模モデルでの単一マシンベースラインを必ず先に作る(フェーズ 1 参照)。


2. 前提の定量把握(ここが設計のすべてを決める)

2.1 データ量 → トークン数

2.2 トークン数 → 適正モデル規模

2.3 必要計算量と「台数 × 日数」の試算

学習 FLOPs ≒ 6 × パラメータ数 × トークン数 で概算する。

モデルトークン総FLOPs実効4 TFLOPS×1台¹×5台×10台
S: 30M3B5.4e17約 1.6 日約 8 時間約 4 時間
M: 125M8B6.0e18約 17 日約 3.5 日約 1.7 日
L: 500M8B2.4e19約 70 日約 14 日約 7 日

¹ 「実効 4 TFLOPS」はミドルレンジ GPU(RTX 3060 / 4060、GTX 1660 等)が MFU 30〜40% で持続的に出せる現実的な値。RTX 4070 クラスなら 2〜3 倍速い。

この試算から導かれる設計上の結論:

  1. L モデルは分散なしでは現実的でない(1 台で 2 か月超)。 → 分散化はプロジェクトの飾りではなく必須要件であり、目的と手段が整合している。
  2. CPU のみのクライアントは学習の主力にはなれない (実効 ~100 GFLOPS では GPU の 1/40 以下)。 → CPU クライアントには前処理・データ検証・評価・冗長検算タスクを割り当てる「役割分担型」の分散設計にする(3.7 参照)。
  3. 参加クライアントの目安: GPU 搭載機 5〜10 台が集まれば L モデルが数週間で学習可能。

2.4 通信量の見積り(分散方式選定の根拠)


3. 設計方針案

3.1 全体アーキテクチャ(ハブ&スポーク型)

プロジェクト定義の「統括サイトから GET し、結果を POST する」構図をそのまま採用する。ボランティアコンピューティング(BOINC / Folding@home)と同じ構造であり、 NAT 越え不要・クライアント実装が単純・統制が効く、という利点が P2P 型(Petals / SWARM 等)より本プロジェクトの規模に合っている。

[中央サーバ(統括サイト)]
  ├─ コーディネータ API(FastAPI): タスク割当 / 結果受領 / クライアント管理
  ├─ パラメータサーバ: 最新モデル重みの保持・外側最適化(差分の集約適用)
  ├─ オブジェクトストレージ: データシャード / 重みスナップショット / チェックポイント
  ├─ メタデータ DB(PostgreSQL): タスク・クライアント・メトリクスの状態管理
  └─ ダッシュボード(可視化)

[クライアント(複数・低スペック・異種混在)]
  ├─ GPU ワーカー: シャードを GET → ローカル学習 H ステップ → 差分を POST
  ├─ CPU ワーカー: 前処理 / トークン化 / 検証 / 評価タスク
  └─ (任意)外部データ収集ワーカー: 外部サーバから GET した結果を POST(制約 3 の拡張)

3.2 分散学習方式の比較と推奨

方式概要通信異種混在耐性離脱耐性本件適合
同期データ並列 (DDP)毎ステップ全勾配交換極大××不可(2.4 参照)
非同期パラメータサーバ勾配を随時送信、鮮度劣化あり大△○△
Local SGD / DiLoCo 型H ステップ局所学習→差分集約(外側は Nesterov 等)小(1/H)○○◎ 推奨
フェデレーテッド平均 (FedAvg)重み平均。DiLoCo の単純版小○○○(第一段階として)
Branch-Train-Merge言語/カテゴリ別に独立学習→統合極小◎◎○(言語別で併用候補)
パイプライン分割 (Petals/SWARM 型)モデルを層で分割し中継中△△△(500M 級では不要)

推奨: DiLoCo 型(Local SGD + 外側モーメンタム)を本命とする。

取り組むべき研究課題(=知見の源泉):

3.3 通信・タスク設計(現行サーバの発展形)

現行 zxell_server の GET/POST 構造を活かしつつ、タスクの粒度と種類を再定義する。

3.4 モデル設計

3.5 データパイプライン

  1. クリーニング: HTML 残骸・ボイラープレート(定型フッタ等)除去、文字コード正規化。
  2. 重複除去: ニュースは通信社配信の重複が非常に多い。MinHash / SimHash による近似重複除去は品質への影響が大きく、必須工程とする。
  3. 正規化・統計: 言語判定、言語別・カテゴリ別・年別の分布把握(可視化対象)。
  4. トークン化 → シャーディング: 固定長シーケンスにパックし、数十〜数百 MB のシャードに分割してオブジェクトストレージへ。シャードには checksum とメタデータ(言語構成・トークン数)を付与。
  5. 分割: 学習/検証/テストを時系列も考慮して分離(例: 最終数か月をテストに回すと「新しい記事の要約」評価が自然にできる)。

この前処理自体を preprocess タスクとして分散させれば、分散基盤の最初の実運用テストになる(学習より失敗コストが低い)。

3.6 サーバ実装: 現行プロトタイプの評価と改修方針

現行 zxell_server(FastAPI + SQLAlchemy + PostgreSQL)は方向性として正しい。ただしロードマップ上、以下の改修が必要:

#現状問題改修方針
1タスク=記事 1 件(TrainingData)学習単位として細かすぎ、DB が 40GB の本文を抱える本文はオブジェクトストレージのシャードへ。DB はメタデータとタスク状態のみ
2status=processing に期限なしクライアント離脱でタスクが永久ロックリース期限+期限切れ自動再キュー
3post_result が result_json を破棄演算結果が残らない結果の永続化・検証・集約処理の実装
4認証なし誰でも偽結果を POST できるクライアント登録制+トークン認証(最低限 API キー)
5DB 接続情報がハードコード秘匿情報の漏えい・環境差異環境変数化(pydantic-settings)
6orm_mode(Pydantic v1 記法)v2 では動かないfrom_attributes へ移行、依存関係を固定
7重み配布の仕組みなし学習の分散に必須重みバージョン管理+署名付き URL 配布
8排他制御なし(filter().first())複数クライアントに同一タスクを二重払い出しSELECT ... FOR UPDATE SKIP LOCKED 等で排他払い出し

中央サーバは高性能 GPU を必要としない(集約と配布が主)ため、安価な VPS + オブジェクトストレージ(S3 互換)で賄える。 帯域(重み配布 × クライアント数)がコストの主変数になる点だけ注意。

3.7 クライアント設計と信頼性

3.8 可視化(要件 4 への対応)

2 つの異なる可視化要求を区別して設計する。

  1. 運用可視化(処理状況) — 必須要件:
    • タスクキューの状態(pending / processing / done / failed の推移)
    • クライアント一覧(稼働状況・処理速度・信頼スコア・地域)
    • 学習曲線(グローバル損失・検証パープレキシティ・言語別損失)
    • スループット(全体 tokens/sec、通信量、重みバージョンの進行)
    • 実装: サーバに /api/status を設け、フロントは軽量な Web ダッシュボード(もしくは Grafana + Prometheus)。フェーズ 2 の MVP から最小構成で組み込む (後付けにすると分散システムのデバッグが不可能になるため)。
  2. モデル内部の可視化(教育・体験) — 参考挙例「Spreadsheets are all you need」の系譜:
    • あのプロジェクトは GPT-2 の全計算をスプレッドシート上で追える教材。本件では「学習済みモデルの 1 推論を層ごとに追える簡易ビューア」「アテンションの可視化」「チェックポイント間の出力品質の変化を並べる年表」など、 “どのくらいの知能になったか”を体験する UI としてフェーズ 4 で実装する。
    • S モデル(30M)なら重みを CSV/スプレッドシートに書き出して同様の教材化をすることも現実的。

4. 評価計画(「有意・定量的な知見」の担保)


5. 課題・リスク一覧

5.1 法務・データ(最重要。技術より先に決める)

省略: 法務・データのリスク分析の表(決定事項は review01 の回答を参照)

5.2 技術

リスク内容対応方針
非 IID・平均化劣化クライアント別データ偏りで集約が劣化シャードのランダム割当、外側モーメンタム、M モデルでの事前検証
ステイル勾配遅延クライアントの古い Δ重みバージョン添付・減衰・破棄ルール
通信帯域重み配布 1GB/回 × 台数同期間隔の調整、差分・量子化配布、CDN/署名付き URL
不正・故障クライアント偽 Δ・壊れた Δ で学習破壊外れ値検知・抜き打ち検算・ロールバック(3.7)
学習の発散低頻度同期特有の不安定性S/M モデルでハイパラ探索してから L に進む段取りを厳守
再現性非同期分散は本質的に非決定的シード・タスク割当・Δ 履歴の完全ログ化(可視化とも接続)
VRAM 制約低スペック GPU(6〜8GB)で L モデル学習混合精度・勾配チェックポインティング・小バッチ+勾配蓄積で 500M は搭載可能。それ以上は当面狙わない

5.3 運用・体制

リスク内容対応方針
クライアントが集まらない分散の前提が崩れるまず手持ち・知人の数台で closed 運用。参加の見返り(ダッシュボードでの貢献可視化、クレジット)を設計
中央サーバ費用帯域・ストレージ課金安価 VPS + S3 互換で開始し、帯域を監視。試算をフェーズ 0 で実施
電気代・稼働時間ボランティア機の実稼働率は低いリース方式で断続参加を前提化。夜間のみ参加等を許容する設計
スコープ肥大マルチモーダル・大規模化への誘惑本資料のフェーズゲート(各フェーズの判断ポイント)で統制

6. ロードマップ骨子(フェーズ案)

各フェーズに「ゴール」「主な成果物」「次へ進む判断ポイント」を定義する。期間は GPU クライアント 3〜5 台参加を仮定した目安。

フェーズ 0: 定量把握と法務整理(2〜4 週間)

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

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

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

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

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


7. 未決事項(ロードマップ確定前に決めるべきこと)

  1. 法務方針(5.1): closed / open どちらで始めるか。データ配布形態の確定。【最優先】
  2. 初期クライアント台数と内訳: 手持ち・調達可能な GPU 機は何台か(2.3 の試算の前提。L モデルの現実性を左右する)。
  3. 中央サーバの予算上限: 月額いくらまで許容するか(帯域設計に直結)。
  4. 最終モデルサイズの目標: 計算最適(〜500M)か推論効率重視(〜300M)か。
  5. 画像データの扱い: 第 1 期除外の承認(3.4 の推奨どおりでよいか)。
  6. フレームワーク方針: 学習コア自前実装の範囲(「イチから」の解釈: モデルは自前実装、PyTorch 等の基盤利用は許容、と仮定している)。
  7. 成果物の公開範囲: コード / 重み / データ統計 / レポートのどこまでを公開するか。

8. 参考文献・参考プロジェクト

← プロジェクト定義目次review01 →