学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

PHPz
リリース: 2023-04-11 23:49:01
転載
1295 人が閲覧しました

現在、大規模言語モデル (LLM) が人工知能の画期的な方向性であると考えられています。人々は、質問と回答、作成、数学的推論、コードの記述など、あらゆる種類の複雑なことを行うためにそれらを使用しようとしています。最近の ChatGPT の爆発はその最良の例です。

しかし、機械学習の専門家にとって、大規模モデルの敷居は非常に高いです。モデルは大きすぎてトレーニングが難しいため、この方向性は長い間大企業によって独占されてきました。 。ただし、最近では GPT モデルを簡素化する方法が増えています。 1 月中旬、元 Tesla AI シニア ディレクターの Andrej Karpathy 氏 (現在は OpenAI に復帰) が、GPT モデルをゼロから構築するための完全なチュートリアルをリリースしました。ただし、学習済みの GPT と OpenAI の GPT-3 を比較すると、両者のサイズの差は 10,000 ~ 100 万倍です。 最近、カナダのマクマスター大学のソフトウェア エンジニアリング学部生であるジェイ モディは、NumPy ライブラリをインポートした後、わずか 60 行のコードで GPT モデルを最初から実装しました。それだけでなく、トレーニングされた GPT-2 モデルの重みを実装にロードし、テキストを生成しました。 60 行のコードを以下に示します。

ただし、これを行うには、Python と NumPy などに精通している必要があります。ニューラル ネットワークのトレーニングに関する基本的な経験。著者は、このブログは GPT のシンプルでわかりやすく、完全な入門を提供することを目的としていると述べました。したがって、作成者は、すでにトレーニングされたモデルの重みのみを使用してフォワード パス コードを実装します。 学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

コードアドレス: 学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785/gpt2_pico.py#L3-L58

この項目について、アンドレイ・カルパシーは4つの言葉を与えました:遅れましたが、到着しました。当時、Karpathy によって構築された minGPT と nanoGPT には 300 行のコードが必要でした。

このチュートリアルは完全にゼロしきい値ではないことに注意してください。読者に理解してもらうために、著者はまず GPT とは何か、そのインプット、アウトプットなどの内容を詳しく紹介します。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

GPT で何ができるかについて、著者はいくつかの例を挙げました。本を要約する、インスタグラムのキャプションのアイデアを提供する、5 歳児にブラック ホールについて説明する、SQL でコードを書くなど。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

この部分をよく読むと、GPT の基本的な知識をおおよそ理解できます。この背景情報を踏まえて、次のステップはそれを設定する方法です。

#プロジェクト紹介

設定

##この章では主にエンコーダ、ハイパーパラメータの設定方法を紹介します。そしてパラメータ。

##コード ベースのクローンを作成する必要があります:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

次に依存関係をインストールします:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

M1 Macbook を使用している場合は、pip install を実行する前に、requirements.txt で tensorflow を tensorflow-macos に変更する必要があることに注意してください。このプロジェクトの下のファイルには、encoder.py、utils.py、gpt2.py、gpt2_pico.py が含まれています。

  • ##encoder.py: OpenAI BPE Tokenizer のコードが直接含まれています。 gpt-2 リポジトリから取得;
  • ##utils.py: GPT-2 モデルの重み、トークナイザー、およびハイパーパラメーターをダウンロードおよびロードするためのコードが含まれています;
  • gpt2.py: GPT モデルと生成されたコードが含まれており、Python スクリプトとして実行できます;
  • gpt2_pico.py: gpt2.py と同じですが、コード行が少なくなります。 。
  • #gpt2.py は最初から実装する必要があるため、最初に gpt2.py を削除し、空のファイルを再度作成する必要があります。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

##次に、次のコードを gpt2.py にコピーします。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

上記のコードには 4 つの主要な部分が含まれています:

gpt2 関数は GPT を実装するために使用されます。今回は実際のコード;

  • generate 関数は自己回帰復号アルゴリズムを実装します;
  • main 関数;
  • fire.Fire (main) ファイルを CLI アプリケーションに変換して、最終的にコードを実行できるようにします: python gpt2.py "some prompt here"。
  • main 関数には、encode、hparams、および params パラメータが含まれており、次のコードを実行します:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

その後、必要なモデルとトークナイザー ファイルが models/124M ファイルにダウンロードされます。

セットアップが完了したら、作成者はエンコーダ、ハイパーパラメータ、およびパラメータの詳細をいくつか紹介し始めます。エンコーダを例に挙げると、この記事のエンコーダは GPT-2 で使用される BPE トークナイザーと同じです。このエンコーダによってエンコードおよびデコードされたテキストの例をいくつか示します。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

実際のトークンの長さこれは次のようになります:

トークンは単語 (例: Not) である場合と、単語の前にスペースが続く場合 (例: Ġall、Ġ) があることに注意してください。はスペースを表します)、単語の一部である場合もあります (例: capes は Ġcap と es に分割されます)、句読点である場合もあります (例: .)。 学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

BPE の利点の 1 つは、任意の文字列をエンコードできることです。語彙に存在しない文字列が見つかった場合は、それを理解できる部分文字列に分割します。

詳細な内容については繰り返しません。次に、基本的なニューラル ネットワークを紹介しますが、この部分はさらに基本的なもので、主に GELU、Softmax 関数、Layer Normalization、Linear が含まれます。 学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

各小さなセクションにコード例があります。たとえば、「線形」セクションでは、著者は標準行列を示しています。乗算オフセット:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

線形層を 1 つのベクトル空間から別のベクトルに投影するためのコードスペースは次のとおりです:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

GPT アーキテクチャ

このパートでは、GPT 自体の構造を紹介します。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

トランスの構造は次のとおりです。

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

Transformer はデコーダー スタックのみを使用します (図の右側):

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

##エンコーダを削除したため、中間のクロスアテンション層も削除されることに注意してください。

##大まかに言うと、GPT アーキテクチャには次の 3 つの部分があります:

テキスト位置の埋め込み;

  • Transformer デコーダー スタック;
  • 語彙への投影。
  • コードは次のようになります:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

コード部分のスクリーンショット

次に、上記の 3 つの部分をそれぞれさらに詳しく分解します。ここでは詳しく説明しません。

上記は作成者による GPT の実装です。次のステップでは、これらを組み合わせてコードを実行し、gpt2.py を取得します。その全体の内容はわずか 120 行のコードです (コメントと空白を削除すると 60 行)。

著者は次の方法で結果をテストしました:

学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。 # #出力結果は次のとおりです:

##作者の言うとおり: この実験は成功しました。 学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。

この記事では、著者の考えに従って全体的なプロセスを簡単に紹介するだけです。さらに詳しく知りたい友人は、元のリンクを参照してください。

元のリンク: https://jaykmody.com/blog/gpt-from-scratch/#basic-layers

以上が学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!