ホームページ >テクノロジー周辺機器 >AI >お役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換します
少し前に、AI マスター Karpathy が立ち上げた AI コースは、すでにネットワーク全体で 150,000 回の視聴を獲得しました。
当時、一部のネチズンは、この 2 時間のコースの価値は大学 4 年間に相当すると言いました。
ここ数日、カルパシーは新しいアイデアを思いつきました:
will 2 The 13 -時間「Building a GPT Tokenizer from Scratch」ビデオ コンテンツは、「単語セグメンテーション」のトピックに焦点を当てた書籍の章またはブログ投稿に変換されます。
具体的な手順は次のとおりです。
- ビデオに字幕またはナレーション テキストを追加します。
#- ビデオを、一致する画像とテキストを含む段落に切り分けます。
#- 大規模な言語モデルのプロンプト エンジニアリング テクノロジを使用して、段落ごとに翻訳します。- 元のビデオの一部へのリンクを含む Web ページとして結果を出力します。
より広範には、このようなワークフローはあらゆるビデオ入力に適用でき、読みやすく、閲覧し、検索しやすい形式でさまざまなチュートリアルの「コンパニオン ガイド」を自動的に生成します。
これは実現可能に思えますが、非常に困難でもあります。
彼は、想像力を説明するために、GitHub プロジェクト minbpe の下に例を書きました。
#アドレス: https://github.com/karpathy/minbpe/blob/master/lecture.md
Karpathy 氏は、これはビデオを見てマークダウン形式の記事に翻訳するという手動で完了したタスクであると述べました。
「ビデオを約 4 分しか見ていません (つまり、3% 完了)、これを書くのにすでに約 30 分かかっています。このようなことができれば素晴らしいでしょう」自動的に行われます。非常に良いです。」
次は授業の時間です!
「LLM 単語分割」コースのテキスト版
残念ながら、「単語の分割」は最も高度な大規模モデルの比較的複雑で扱いにくいコンポーネントですが、それを詳細に理解する必要があります。
なぜなら、LLM の欠陥の多くはニューラル ネットワークやその他の一見不可解な要因に起因する可能性がありますが、これらの欠陥は実際には「単語の分割」にまで遡ることができるからです。
文字レベルの単語分割
それでは、単語分割とは何でしょうか?
実は、前のビデオ「ゼロから GPT を構築してみよう」ですでにトークン化を紹介しましたが、それは非常に単純な文字レベルのバージョンにすぎませんでした。
Google colab にアクセスしてビデオを確認すると、トレーニング データ (シェイクスピア) から始まることがわかります。これは Python の単なる大きな文字列です。
First Citizen: Before we proceed any further, hear me speak.All: Speak, speak.First Citizen: You are all resolved rather to die than to famish?All: Resolved. resolved.First Citizen: First, you know Caius Marcius is chief enemy to the people.All: We know't, we know't.
最初に、トレーニング セット全体で考えられるすべての文字の語彙を構築する必要があることがわかります:
# here are all the unique characters that occur in this textchars = sorted(list(set(text)))vocab_size = len(chars)print(''.join(chars))print(vocab_size)# !$&',-.3:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz# 65次に、上記の語彙に基づいて、単一の文字と整数の間で変換するためのルックアップ テーブルを作成します。このルックアップ テーブルは単なる Python 辞書です:
stoi = { ch:i for i,ch in enumerate(chars) }itos = { i:ch for i,ch in enumerate(chars) }# encoder: take a string, output a list of integersencode = lambda s: [stoi[c] for c in s]# decoder: take a list of integers, output a stringdecode = lambda l: ''.join([itos[i] for i in l])print(encode("hii there"))print(decode(encode("hii there")))# [46, 47, 47, 1, 58, 46, 43, 56, 43]# hii there文字列を一連の整数に変換すると、各整数がインデックスとして使用されることがわかります。トレーニング可能なパラメータの 2D 埋め込み。
語彙サイズは vocab_size=65 であるため、この埋め込みテーブルにも 65 行が含まれます:
class BigramLanguageModel(nn.Module):def __init__(self, vocab_size):super().__init__()self.token_embedding_table = nn.Embedding(vocab_size, n_embd)def forward(self, idx, targets=None):tok_emb = self.token_embedding_table(idx) # (B,T,C)
ここで、整数は埋め込みテーブルから行を「抽出」し、この行は単語のセグメンテーションを表すベクトルです。このベクトルは、対応するタイム ステップの入力として Transformer に供給されます。
「文字ブロック」の単語分割に BPE アルゴリズムを使用する
「文字レベル」の単純な設定言語モデル 言っておきますが、大丈夫です。
しかし実際には、最先端の言語モデルでは、より複雑なスキームを使用してこれらの表現語彙を構築しています。
具体的には、これらの解決策は文字レベルでは機能せず、「文字ブロック」レベルで機能します。これらのチャンク語彙を構築する方法は、バイト ペア エンコーディング (BPE) などのアルゴリズムを使用します。これについては、以下で詳しく説明します。
この手法の歴史的発展を簡単に振り返ってみましょう。言語モデルの単語分割にバイトレベルの BPE アルゴリズムを使用する論文は、OpenAI によって発行された GPT-2 論文「Language Models are Unsupervised」です。 2019 年。マルチタスク学習者。
#論文アドレス: https://d4mucfpksywv.cloudfront.net/better- language-models/ language_models_are_unsupervised_multitask_learners.pdf
セクション 2.2「入力表現」まで下にスクロールすると、このアルゴリズムの説明と動機が記載されています。このセクションの最後には、次のようなメッセージが表示されます:
語彙が 50,257 語に拡張されました。また、コンテキスト サイズを 512 トークンから 1024 トークンに増やし、より大きなバッチサイズ 512 を使用しました。
Transformer のアテンション層では、各トークンがシーケンス内の以前のトークンの限られたリストに関連付けられていることを思い出してください。
この記事では、GPT-2 モデルのコンテキスト長が GPT-1 の 512 トークンから 1024 トークンに増加したことを指摘しています。
言い換えれば、トークンは LLM 入力の基本的な「アトム」です。
「トークン化」とは、Python の元の文字列をトークン リストに変換する、またはその逆の変換を行うプロセスです。
この抽象化の普遍性を証明する別のよく知られた例があります。Llama 2 の論文で「トークン」を検索すると、63 件の一致結果が得られます。
たとえば、論文では、2 兆のトークンなどを使用してトレーニングしたと主張しています。
#論文アドレス: https://arxiv.org/pdf/2307.09288.pdf
##単語の分割の複雑さに関する簡単な説明
実装の詳細を掘り下げる前に、「単語の分割」について詳しく理解する必要性について簡単に説明しましょう。 " プロセス。単語のセグメンテーションは、LLM における非常に多くの奇妙な問題の中心であるため、無視しないことをお勧めします。
ニューラル ネットワーク アーキテクチャに関する一見問題の多くは、実際には単語の分割に関連しています。以下にいくつかの例を示します:
- LLM が単語を綴らないのはなぜですか? ——単語セグメンテーション
- LLM は、文字列の反転などの非常に単純な文字列処理タスクを実行できないのはなぜですか? ——単語セグメンテーション
#- 英語以外の言語 (日本語など) のタスクでは LLM が劣るのはなぜですか? ——分詞
#- なぜ LLM は単純な算術が苦手なのでしょうか? ——単語の分割
#- Python でコーディングするときに GPT-2 でさらに多くの問題が発生するのはなぜですか? ——単語の分割
- 文字列 を見つけると LLM が突然停止するのはなぜですか? ——分詞
- 「末尾の空白」について受け取ったこの奇妙な警告は何ですか? --分詞
#--LLM に「SolidGoldMagikarp」について尋ねると、なぜクラッシュしてしまうのでしょうか? ——単語の分割 #- JSON ではなく YAML と LLM を使用する必要があるのはなぜですか? ——単語のセグメンテーション #- LLM が真のエンドツーエンドの言語モデリングではないのはなぜですか? ——分詞 ビデオの最後でこれらの質問に戻ります。 単語分割の視覚的プレビュー 次に、この単語分割 WebApp をロードしましょう。 アドレス: https://tiktokenizer.vercel.app/ この Web アプリケーションの利点は、単語の分割が Web ブラウザーでリアルタイムに実行されるため、入力側でいくつかのテキスト文字列を簡単に入力し、右側で単語の分割結果を確認できることです。 上部では、現在 gpt2 トークナイザーを使用していることがわかり、この例で貼り付けられた文字列が現在 300 個のトークンにトークン化されていることがわかります。 ここでは、色付きで明確に示されています: たとえば、文字列「Tokenization」 token30642 にエンコードされ、その後にトークン 1634 が続きます。 トークン "is" (これは、前のスペースを含む 3 文字であることに注意してください。これは非常に重要です!) は 318 です。 スペースは文字列内に必ず存在し、他のすべての文字と一緒に記述する必要があるため、スペースの使用に注意してください。ただし、通常は、わかりやすくするために視覚化の際には省略されます。 アプリの下部で視覚化機能のオンとオフを切り替えることができます。同様に、トークン「at」は 379、「the」は 262 などとなります。 次に、簡単な算術例を示します。 ここでは、トークナイザーによる数値の分解に一貫性がない可能性があることがわかります。たとえば、数値 127 は 3 文字のトークンですが、数値 677 は、6 (ここでも前のスペースに注意してください) と 77 の 2 つのトークンがあるためです。 この恣意性を説明するために、私たちは LLM に依存しています。 パラメータ内とトレーニング中の両方で、これら 2 つのトークン (実際には 6 と 77 が結合して数字 677 になります) について学習する必要があります。 同様に、LLM がこの合計の結果が数値 804 であると予測したい場合、2 つのタイム ステップ以内に出力する必要があることがわかります。 最初にトークン「8」を発行し、次にトークン「04」を発行する必要があります。 これらの分割はすべて完全に恣意的に見えることに注意してください。以下の例では、 1275 は「12」、次に「75」、6773 は実際には 3 つのトークン「6」、「77」、「3」、そして 8041 は「8」と「041」であることがわかります。 (続きます...) (TODO: テキスト バージョンのコンテンツを継続したい場合は、ビデオから取得方法を確認してください(自動生成)
一部のネチズンもカルパシーにアドバイスを与えました: 「難しいように感じますが、LangChain を使用すると可能かもしれません。ささやき文字起こしを使用して、明確な章を持つ高レベルのアウトラインを生成し、コンテキスト内でそれらの章のチャンクを並行して処理できるかどうか疑問に思っていました。全体的な概要の中で、それぞれの章ブロックの特定の内容に焦点を当てます (並列処理される各章の図も生成します)。その後、生成されたすべての参照マークが LLM を通じて記事の最後にまとめられます。 誰かがこのためのパイプラインを作成しており、間もなくオープンソースになる予定です。 #ネチズンはオンラインでアドバイスを提供しています## #ネチズンは、素晴らしい、実際、私はビデオを見るよりもこれらの投稿を読む方が好きです、自分のペースを保つのが簡単だと言いました。
以上がお役立ち情報が満載!マスター カルパシーの 2 時間 AI コースの最初のテキスト バージョン、新しいワークフローがビデオを記事に自動的に変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。