FareedKhan-dev/train-llm-from-scratch

A straightforward method for training your LLM, from downloading data to generating text.

何を解決するか

このプロジェクトは、PyTorch を使って完全にゼロから構築された大規模言語モデル(LLM)のエンドツーエンド実装を提供します。transformers、trl、peft などの高レベルライブラリへの依存を排除し、ユーザーが原始的なテキスト処理から、調整され、推論能力を持つモデルに至るまで、LLMライフサイクルのすべての段階を、シンプルなPyTorchコードで理解・実装できるようにします。

動作方法

このプロジェクトは、原始データを機能的なアシスタントに変換する直線的なパイプラインに従います:

  1. データ準備:原始テキストは tiktoken またはカスタムBPEトークナイザーを使用してトークン化され、HDF5ファイルに保存されます。事前学習用テキスト、SFT用の指示データ、報酬モデル用のペアデータ、RLプロンプトを処理します。
  2. モデルアーキテクチャ:「Attention is All You Need」に基づく古典的なTransformerと、RoPE、RMSNorm、SwiGLU、グループ化クエリアテンション(GQA)、エキスパートの混合(MoE)、KVキャッシュを備えた現代的なデコーダー専用アーキテクチャを実装しています。
  3. 事前学習:次トークン予測損失に基づいてモデルを訓練し、ベースモデルを作成します。
  4. 後処理学習:ベースモデルは、順次、教師あり微調整(SFT)、報酬モデル、強化学習技術(PPO、DPO、ORPO、KTO、GRPOなど)を用いて改善されます。
  5. 推論:top-k、top-p、min-pのサンプリング手法、推測的デコード、int8重みを実装し、効率的な生成を実現します。

対象ユーザー

  • 学生:シンプルな言語による説明とステップバイステップのコードを通じてLLMの内部構造を学びたい人。
  • 開発者:ラップトップCPUからA100 GPUまで、さまざまなハードウェア上で369K~数十億パラメータのモデルを実行可能なスクリプトを探している人。
  • 研究者:単一のTransformerアーキテクチャ上でGRPOやPPOなどの後処理アルゴリズムの手書き実装に興味がある人。

特徴

  • ゼロ依存のコア:transformers や peft に依存せず、すべてのアルゴリズムをPyTorchで手書き実装。
  • ハードウェアの柔軟性:CPU上で数分で小さなモデルを学習できる「ラップトップトラック」を含む。
  • 現代的な機能:RoPE、MoE、Muonオプティマイザーなどの高度なアーキテクチャコンポーネントを実装。
  • 包括的な強化学習スイート:DPO、PPO、GRPOなど、さまざまな調整アルゴリズムをゼロから実装。
  • 内蔵ツールキット:Streamlitコントロールパネル、ドキュメントサイト、ベンチマークスクリプトを提供。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト