GPT「生成前訓練トランス」は、変圧器アーキテクチャに基づいて構築された自己回帰言語モデリング機能を備えた自然言語処理に革命をもたらしたモデルのGPTシリーズの最初のバージョンです。
このプロジェクトは、Tensorflowを使用したゼロからGPT(生成事前トレーニングトランス)モデルの実装です。位置埋め込み、注意メカニズム、フィードフォワード層など、モデルのすべてのコンポーネントが含まれます。
重要な注意:このプロジェクトの目標は、GPTアーキテクチャとその内部の仕組みを深く理解することです。したがって、それは主に教育目的です。ここでは、このモデルの構造と作業メカニズムを完全に理解し、プロジェクトで実装したコンポーネントを使用できます。一般的に、プロジェクトを使用して言語モデルをビッグデータでトレーニングする場合は、ビッグデータをより効率的に処理できるようにデータセットファイルを変更する必要がある場合があります。私は今、この点に関してはそうではないので、主に大規模ではなく単純な、大規模なデータを処理するようにデータセットファイルを設計しました。
GPTにはいくつかのバージョンがあります。この実装は、主に「生成前のトレーニングによる言語理解の向上」の実装に焦点を当てています。
config.py :モデルハイパーパラメーター用の構成ファイル。decoder.pyデコーダー。positional_embeddings.py :位置埋め込み生成。embeddings.py :トークンエンミング生成。attention.py :自己関節メカニズム。feed_forward.py :フィードフォワードニューラルネットワーク。lr_schedule.py :学習率のスケジューリング。utils.py :トレーニングと推論のためのユーティリティ機能。loss_functions.py :カスタム損失関数。metrics.py :カスタム評価メトリック。streamer.py :効率的なトレーニング用のデータストリーマ。gpt_model.py :メインGPTモデルの実装。bpe_tokenizer.py (バイトペアエンコーディング)トークン化用のトークンザー。tokenizer.py :事前に訓練されたGPTトークネザー。prepare_dataset.py :データセットでいくつかの操作を実行するファイル(検証データ用の特別なフォルダーの作成)。inferance.py :入力プロンプトに基づいてモデルから文を生成するために必要なファイル。tmp/ :モデルチェックポイントを保存するためのディレクトリ。demo/ :プロジェクトのドキュメント。tokenizer/ :再訓練されたトークンザーを保存するためのディレクトリ。dummy_data/ :ストリーマーをテストするためにデータを配置するディレクトリ。 詳細なプロジェクトのドキュメントは、 demo/ディレクトリにあります。 GPTアーキテクチャ、トレーニング手順、およびさまざまな自然言語処理タスクにモデルを使用する方法の説明が含まれています。
リポジトリをクローンします:
git clone https://github.com/AliHaiderAhmad001/GPT-from-Scratch-with-Tensorflow.git
cd GPT-from-Scratch-with-Tensorflow仮想環境を作成します(オプションですが推奨):
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivateプロジェクトの依存関係をインストールします:
pip install -r requirements.txtデータセットをダウンロードして準備:デモを確認して確認できます。同じデータセットで作業したり、変更を変更したり、設定を調整したりできます。ただし、ここからデータセットを直接ダウンロードできます。次のコードを使用して、検証のためにその一部を取得できます。
python prepare_dataset.py aclImdb/test aclImdb/valid --num_files_to_move 2500私が使用するデータローダーには、検証セットが別のフォルダーにある必要があります。
python bpe_tokenizer.py aclImdb --batch_size 1000 --vocab_size 50357 --save --save_fp tokenizer/adapted-tokenizerpython train.pypython train.py --resumepython inferance.py " input_text_prompt " --sampler " greedy " # For greedy samplingpython inferance.py " input_text_prompt " --sampler " beam " --beam_width 5 # For beam search sampling with a beam width of 5 このプロジェクトは、MITライセンスの下でライセンスされています。詳細については、ライセンスファイルを参照してください。