概要
RustGPTは、 外部MLフレームワーク不使用 でRustのみを用いてLLM(大規模言語モデル)を一から実装したプロジェクト。 ndarray ライブラリによる行列演算のみを使用。 トランスフォーマーベース のアーキテクチャを採用し、学習から対話まで一貫した機能を提供。 学習・推論・テスト がRust環境のみで完結。 教育・実験・拡張 に最適な構成。
RustGPT: Pure RustによるLLM実装
- Rustのみ でLLMを一から構築したプロジェクト
- 外部MLフレームワーク完全排除 (PyTorch, TensorFlow, Candle等不使用)
- ndarray による行列演算のみ使用
- トランスフォーマーアーキテクチャ の実装
- 事実ベースの事前学習 と 会話指向のInstruction Tuning を搭載
- 対話型テストモード による即時検証
主な構成ファイル
- src/main.rs :学習パイプライン、データ準備、対話モード
- src/llm.rs :LLMのコア実装(順伝播・逆伝播・学習ロジック)
モジュール構成
- embeddings.rs :トークン埋め込み層
- transformer.rs :トランスフォーマーブロック(自己注意+FFN)
- self_attention.rs :マルチヘッド自己注意
- feed_forward.rs :位置ごとのフィードフォワード
- output_projection.rs :出力線形層(語彙予測)
- vocab.rs :語彙管理・トークナイザー
- layer_norm.rs :レイヤーノルム
- adam.rs :Adamオプティマイザ
テストカバレッジ
- 各コンポーネントごとに 専用テストファイル を用意
- llm_test.rs :LLM全体
- transformer_test.rs :トランスフォーマーブロック
- self_attention_test.rs :自己注意
- feed_forward_test.rs :FFN
- embeddings_test.rs :埋め込み
- vocab_test.rs :語彙
- adam_test.rs :オプティマイザ
- output_projection_test.rs :出力層
RustGPTの学習プロセス
- 事前学習 :事実文の完了タスクで世界知識を獲得
- 例:「The sun rises in the east and sets in the west」
- Instruction Tuning :会話形式での応答パターンを学習
- 例:「User: How do mountains form? Assistant: Mountains are formed through tectonic forces...」
- 挨拶・説明・フォローアップ など多様な対話パターンに対応
クイックスタート
- リポジトリクローン
git clone https://github.com/tekaratzas/RustGPT.git cd RustGPT cargo run - 実行時フロー
- 語彙構築
- 事前学習(100エポック)
- Instruction Tuning(100エポック)
- 対話モード突入
対話モード例
- 入力例:「How do mountains form?」
- 出力例:「Mountains are formed through tectonic forces or volcanism over long geological time periods」
- 入力例:「What causes rain?」
- 出力例:「Rain is caused by water vapor in clouds condensing into droplets that become too heavy to remain airborne」
技術仕様・特徴
- 語彙サイズ :学習データから動的生成
- 埋め込み次元数 :128
- 隠れ層次元数 :256
- 最大系列長 :80トークン
- 構成 :3トランスフォーマーブロック+埋め込み+出力層
- オプティマイザ :Adam(勾配クリッピング有)
- 事前学習LR :0.0005(100エポック)
- Instruction Tuning LR :0.0001(100エポック)
- 損失関数 :クロスエントロピー
- 勾配クリッピング :L2ノルム5.0で制限
実装上の工夫
- 独自トークナイザー (句読点考慮)
- グリーディデコーディング によるテキスト生成
- 勾配クリッピング で学習安定化
- モジュラー設計 で拡張容易
- 全コンポーネントにテスト実装
開発・テスト
- 全体テスト:
cargo test - 個別テスト例:
cargo test --test llm_test - 最適化ビルド:
cargo build --release - 詳細出力付きテスト:
cargo test -- --nocapture
RustGPTで学べるML概念
- トランスフォーマーアーキテクチャ (注意機構・FFN・LayerNorm)
- ニューラルネットワークの逆伝播
- 言語モデル学習 (事前学習+微調整)
- トークナイザー・語彙管理
- Adamによる勾配最適化
依存関係
- ndarray :多次元配列・行列演算
- rand/rand_distr :初期化用乱数生成
- 外部MLフレームワーク一切不使用
コントリビューションガイド
- 貢献歓迎。学習・実験に最適なプロジェクト
- 優先度高:
- モデル永続化 (パラメータ保存/読込)
- 性能最適化 (SIMD、並列学習、メモリ効率化)
- 高度なサンプリング (ビームサーチ、top-k/p、温度制御)
- 評価指標 (パープレキシティ、ベンチマーク、可視化)
- 改善分野:
- 高度なアーキテクチャ (多頭注意、位置エンコーディング、RoPE)
- 学習手法拡張 (最適化手法、LRスケジューリング、正則化)
- データ処理強化 (大規模データ、トークナイザー改良、ストリーミング対応)
- モデル解析 (注意可視化、勾配解析、解釈性)
貢献方法
- リポジトリをFork
- フィーチャーブランチ作成
git checkout -b feature/model-persistence - 変更&テスト追加
- テスト実行:
cargo test - プルリクエスト送信(説明明記)
コードスタイル
- 標準Rust規約 (cargo fmt)遵守
- 新機能にはテスト追加必須
- ドキュメント・README更新
- 「from scratch」哲学維持 (重厚なML依存回避)
貢献アイデア例
- 初級 :モデル保存/読込、学習データ追加、設定ファイル対応
- 中級 :ビームサーチ、位置エンコーディング、学習チェックポイント
- 上級 :多頭注意、レイヤ並列化、独自最適化
サポート
- Issueやディスカッション で質問・提案受付
- 外部MLフレームワーク不使用 を徹底
RustGPTは、 Rustのみ でLLMの仕組みを深く理解・体験できる最良の教材・実験基盤。 機械学習の基礎から応用まで をRustで学びたい方に最適なプロジェクト。