State of GPT メモ

2023.5.24  に公開されたAndrej Karpathy氏（OpenAI）のプレゼンテーションから自分用メモ。
https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2

- GPTアシスタントモデルのトレーニングステージは4つに分かれている。
![スクリーンショット 2023-06-13 10.07.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/9d844a01-a393-3070-dfd2-1a3002bb24bd.png)

- 以下は、GPT-3(GPT-4の詳細は非公開のため)と、MetaがリリースしたLLaMAの比較を例としている。
単純にパラメータ数が多いGPT-3の方が良いということはなく、"Trained on 1-1.4T tokens"となっているLLaMAの方が優秀なモデルだと言える。
![スクリーンショット 2023-06-13 10.14.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/4df11ce7-459e-57c8-dde8-0ed8ab0ef2b2.png)
ちなみに、Tokens in Training Data　と Vocabulary Size の違いについてChatGPTに聞いてみた；
```
Why are tokens in training data and vocabulary size not same?
>> トレーニングデータのトークン数と語彙サイズは、言語モデルの異なる側面を表すため、同じではありません。

トレーニングデータのトークン数：
トレーニングデータのトークン数は、トレーニングに使用されるデータセット内のトークンの総数を表します。トレーニングデータは、大量のテキストから抽出され、単語やサブワード（部分単語）などの単位に分割されます。このトークン数には、重複するトークンも含まれます。つまり、同じ単語やトークンが複数回出現した場合でも、それぞれが別々のトークンとしてカウントされます。

語彙サイズ：
語彙サイズは、モデルが理解し、生成できる一意の単語やトークンの数を表します。語彙サイズは、モデルがテキスト内で認識できる個々の単語やトークンの数に関連しています。大まかに言えば、語彙サイズは、モデルが学習した単語やトークンの種類の総数です。一般的に、語彙サイズは数万から数十万に設定されます。

要約すると、トレーニングデータのトークン数は、実際のトレーニングデータセット内のトークンの数を表し、重複するトークンも含まれます。一方、語彙サイズは、モデルが認識および生成できる一意の単語やトークンの数を表します。これらの指標は、モデルのトレーニングと推論の異なる側面を反映しています。

Which is more important to make a better model, Tokens in Training data or Vocabulary Size?
>> トレーニングデータのトークン数と語彙サイズの両方が、優れた言語モデルを作成する上で重要な役割を果たします。ただし、その重要性は、モデルの具体的な目標や要件に依存します。

トレーニングデータのトークン数：
トレーニングデータのトークン数は、モデルの理解力と生成力に貢献します。トークン数が多いほど、モデルはより広範な言語パターンや意味、文脈情報を学習できます。大規模かつ多様なトレーニングデータセットは、モデルが異なるスタイルやジャンル、ニュアンスを捉えるのに役立ちます。包括的で代表的なトレーニングデータセットを用意することで、モデルの一般化能力が向上し、さまざまな入力シナリオに対応できるようになります。

語彙サイズ：
語彙サイズは、モデルが認識および生成できる単語やトークンの範囲を決定します。語彙サイズが大きいほど、モデルはより広範な単語やトークンを扱い、より多様で正確な応答を生成できます。大規模な語彙サイズは、モデルがレアな単語や特定のドメインに関連する語彙を捉え、出力の流暢さや一貫性を保つのに役立ちます。ただし、語彙サイズが過度に大きいと、計算上の複雑さやモデルのパフォーマンスに関する課題が生じる可能性もあります。

実際の運用では、トレーニングデータのトークン数と語彙サイズの両方を総合的に考慮する必要があります。バランスの取れたアプローチは、多様な言語表現をカバーする十分に大きな語彙サイズを確保するとともに、トレーニングデータにはレアな単語や特定の文脈に関連するトークンも含めることです。また、トレーニングデータの品質、モデルのアーキテクチャ、ファインチューニングの手法、タスク固定技術など、モデルの全体的なパフォーマンスに影響を与える要素も考慮する必要があります。

したがって、優れたパフォーマンスを達成するためには、トレーニングデータのトークン数と語彙サイズのバランスをとることが重要です。具体的な言語モデルの目標や制約を考慮しながら、最善のパフォーマンスを実現するために努力する必要があります。
```

- Pretrainingだけを行った段階をBase modelと呼んでいる。Base modelは「文を完成させたがっている（質問に答えたがっているわけではない）」ので、文末が未完成のドキュメントに見えるような入力を心がけると、いい回答をくれる傾向にある。
![スクリーンショット 2023-06-13 10.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/15d17f31-a391-8b90-5312-e42688f433da.png)
![スクリーンショット 2023-06-13 10.14.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/f44a007a-b0c1-cd77-c246-66e4db5b4bed.png)

- ちなみに、現在発表されているBase modelはこんなにたくさんある
![スクリーンショット 2023-06-13 10.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/26e90b5f-fd22-7c66-6f5c-5d12a11fbfe6.png)

- Base models can be prompteed into completing tasks　とはいえ、なかなか実用しづらいので、人間の質問に答えてくれるような'Assistant'にするために Supervised Finetuning, Reward Modeling, Reinforcement Learningのステップが必要になる。

- FinetuneやRLHF済みのモデルとBase modelを比べると、Base modelの方がエントロピーが高い。これは悪いということではなく、出力に多様性があることを意味する。適当な例を提示して、もっと例を挙げさせるようなタスクにはBase modelの方が適していると言える。
![スクリーンショット 2023-06-13 10.16.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/e6db26d7-ed80-1a92-fc2c-ddc80fc0c446.png)
![スクリーンショット 2023-06-13 10.17.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/4bc9ce12-6396-5bc1-d97a-85d357c0992a.png)

- ちなみに、現在発表されているAssistant modelはこんな感じ。
![スクリーンショット 2023-06-13 10.24.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/841d8d07-49e8-31ee-3260-78d3f8c66b79.png)

- プロンプトで、より良い結果が出るように工夫しよう。これを加えることでTransformerは、低品質な出力についての計算をhedgeする必要がなくなる。
![スクリーンショット 2023-06-13 11.22.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/34f53c86-d7e2-aa8a-4da7-45a0a6647e70.png)

- 従来の検索オンリーな世界から、メモリーオンリーな世界へと、対極に振れた。求められているのは、この間を埋める作業だ。 
![スクリーンショット 2023-06-13 11.23.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/5b9e4f7c-233a-6796-b082-32125247b75f.png)

- モデルのファインチューニングという選択肢もまだあります。データの準備や技術力が必要になります。SFTは可能だが、RLHFを個人で行うのは難しいだろう。
![スクリーンショット 2023-06-13 10.34.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/8391aaed-babb-6c61-4cac-e423333c0b3d.png)


- まとめ。
あくまでもアシスタントとしてAIを使用しましょう。知らないところで勝手に仕事を終わらせといてくれるエージェント扱いするのはまだ早い。人間の思考と合わせて利用すること。
![スクリーンショット 2023-06-13 10.34.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/3120487e-0ce3-db7c-dc6d-b2032055de7d.png)
![スクリーンショット 2023-06-13 11.26.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641587/1a8bb6e5-dcf6-bcb9-d88f-657820afe9e2.png)