現在、大規模言語モデル (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 のシンプルでわかりやすく、完全な入門を提供することを目的としていると述べました。したがって、作成者は、すでにトレーニングされたモデルの重みのみを使用してフォワード パス コードを実装します。
コードアドレス:
https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785/gpt2_pico.py#L3-L58
この項目について、アンドレイ・カルパシーは4つの言葉を与えました:遅れましたが、到着しました。当時、Karpathy によって構築された minGPT と nanoGPT には 300 行のコードが必要でした。
このチュートリアルは完全にゼロしきい値ではないことに注意してください。読者に理解してもらうために、著者はまず GPT とは何か、そのインプット、アウトプットなどの内容を詳しく紹介します。
GPT で何ができるかについて、著者はいくつかの例を挙げました。本を要約する、インスタグラムのキャプションのアイデアを提供する、5 歳児にブラック ホールについて説明する、SQL でコードを書くなど。 この部分をよく読むと、GPT の基本的な知識をおおよそ理解できます。この背景情報を踏まえて、次のステップはそれを設定する方法です。
#プロジェクト紹介設定
##この章では主にエンコーダ、ハイパーパラメータの設定方法を紹介します。そしてパラメータ。
##コード ベースのクローンを作成する必要があります:
次に依存関係をインストールします:
M1 Macbook を使用している場合は、pip install を実行する前に、requirements.txt で tensorflow を tensorflow-macos に変更する必要があることに注意してください。このプロジェクトの下のファイルには、encoder.py、utils.py、gpt2.py、gpt2_pico.py が含まれています。
##次に、次のコードを gpt2.py にコピーします。
上記のコードには 4 つの主要な部分が含まれています:
gpt2 関数は GPT を実装するために使用されます。今回は実際のコード;
その後、必要なモデルとトークナイザー ファイルが models/124M ファイルにダウンロードされます。
セットアップが完了したら、作成者はエンコーダ、ハイパーパラメータ、およびパラメータの詳細をいくつか紹介し始めます。エンコーダを例に挙げると、この記事のエンコーダは GPT-2 で使用される BPE トークナイザーと同じです。このエンコーダによってエンコードおよびデコードされたテキストの例をいくつか示します。
実際のトークンの長さこれは次のようになります:
トークンは単語 (例: Not) である場合と、単語の前にスペースが続く場合 (例: Ġall、Ġ) があることに注意してください。はスペースを表します)、単語の一部である場合もあります (例: capes は Ġcap と es に分割されます)、句読点である場合もあります (例: .)。
BPE の利点の 1 つは、任意の文字列をエンコードできることです。語彙に存在しない文字列が見つかった場合は、それを理解できる部分文字列に分割します。
詳細な内容については繰り返しません。次に、基本的なニューラル ネットワークを紹介しますが、この部分はさらに基本的なもので、主に GELU、Softmax 関数、Layer Normalization、Linear が含まれます。
各小さなセクションにコード例があります。たとえば、「線形」セクションでは、著者は標準行列を示しています。乗算オフセット:
線形層を 1 つのベクトル空間から別のベクトルに投影するためのコードスペースは次のとおりです:
GPT アーキテクチャ
このパートでは、GPT 自体の構造を紹介します。
トランスの構造は次のとおりです。
Transformer はデコーダー スタックのみを使用します (図の右側):
##エンコーダを削除したため、中間のクロスアテンション層も削除されることに注意してください。
##大まかに言うと、GPT アーキテクチャには次の 3 つの部分があります:
テキスト位置の埋め込み;
コード部分のスクリーンショット
次に、上記の 3 つの部分をそれぞれさらに詳しく分解します。ここでは詳しく説明しません。
上記は作成者による GPT の実装です。次のステップでは、これらを組み合わせてコードを実行し、gpt2.py を取得します。その全体の内容はわずか 120 行のコードです (コメントと空白を削除すると 60 行)。
著者は次の方法で結果をテストしました:
# #出力結果は次のとおりです:
##作者の言うとおり: この実験は成功しました。
元のリンク: https://jaykmody.com/blog/gpt-from-scratch/#basic-layers
以上が学部生は 60 行のコードを使用して、大規模な GPT モデルを手動で作成する方法を学びます。技術的な紹介はチュートリアルに匹敵します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。