FareedKhan-dev/train-llm-from-scratch

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

何を解決するか

このプロジェクトは、PyTorchを用いて完全にゼロから構築された大規模言語モデル(LLM)のエンドツーエンド実装を提供します。transformerstrlpeftなどの高レベルなライブラリに依存せず、ユーザーが原始的なテキスト処理から、人間の好みに合わせられた推論スタイルのモデルに至るまで、すべてのパイプラインを理解し実装できるようにします。

動作方法

このプロジェクトは、原始的なテキストを機能するアシスタントに変換するための順次的なパイプラインに従います:

  1. データ準備:OpenAIのtiktokenを使用して原始的なテキストをトークン化し、HDF5ファイルに保存します。これには、事前学習データ、SFT用の指示データ、報酬モデリング用の好みペア、RLプロンプトが含まれます。
  2. モデルアーキテクチャ:基本的なPyTorchモジュールから構築されたTransformerモデルで、マルチレイヤーパーセプトロン(MLP)、因果マスキング付きシングルヘッドアテンション、マルチヘッドアテンション、プレノーマルリジッド接続付きTransformerブロックを含みます。
  3. 事前学習:The Pileなどのデータセットを使用して、次のトークン予測損失に基づいてベースモデルを訓練します。
  4. 後処理:ベースモデルをアシスタントに変換する複数の段階を経ます:
    • SFT(教師あり微調整):損失マスクを使用して、アシスタントの応答のみに焦点を当てて指示データで訓練します。
    • 報酬モデリング:好みペア上でブレッドリー・テリー報酬モデルを訓練します。
    • 整合性調整:PPO(近接方策最適化)、DPO(直接好み最適化)、ORPO、KTO、GRPO(グループ相対方策最適化)などの技術を適用し、モデルを人間の好みと推論能力に合わせます。

対象ユーザー

  • 学生:各コードブロックの平易な説明と期待される出力が含まれる、ステップバイステップのガイドを希望する人。
  • 開発者:実行可能なスクリプトと明確なファイルパスを求める人で、独自のLLMを実装したい人。
  • 研究者:PPO、DPO、GRPOなどの後処理アルゴリズムを小さなTransformer上でゼロから実装することに興味がある人。

特徴

  • ゼロ依存のコアtransformerspeftライブラリを使用せずに、純粋なPyTorchで実装されています。
  • 完全なパイプライン:原始的なテキスト → トークン → ベースモデル → SFT → 報酬モデル → RLHF/整合性調整 → 評価までをカバーしています。
  • スケーラブル:利用可能なGPUメモリに応じて、1300万から数十億パラメータのモデルの訓練をサポートします。
  • 統合ツールキット:管理用のStreamlitコントロールパネルと、理論と図解を提供する専用ドキュメントサイトを備えています。

関連

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