ゼロから大規模言語モデルを構築するための初心者ガイド
'ゼロから言語モデルを作る初心者ガイド'
はじめに
TwitterやLinkedInなどで、私は毎日多くの大規模言語モデル(LLMs)に関する投稿に出会います。これらの興味深いモデルに対してなぜこれほど多くの研究と開発が行われているのか、私は疑問に思ったこともあります。ChatGPTからBARD、Falconなど、無数のモデルの名前が飛び交い、その真の性質を解明したくなるのです。これらのモデルはどのように作成されるのでしょうか?大規模言語モデルを構築するにはどうすればよいのでしょうか?これらのモデルは、あなたが投げかけるほとんどの質問に答える能力を持つのはなぜでしょうか?これらの燃えるような疑問は私の心に長く残り、好奇心をかき立てています。この飽くなき好奇心は私の内に火をつけ、LLMsの領域に飛び込む原動力となっています。
私たちがLLMsの最先端について議論する刺激的な旅に参加しましょう。一緒に、彼らの開発の現状を解明し、彼らの非凡な能力を理解し、彼らが言語処理の世界を革新した方法に光を当てましょう。
学習目標
- LLMsとその最新の状況について学ぶ。
- 利用可能なさまざまなLLMsとこれらのLLMsをゼロからトレーニングするアプローチを理解する。
- LLMsのトレーニングと評価におけるベストプラクティスを探究する。
準備はいいですか?では、LLMsのマスタリングへの旅を始めましょう。
大規模言語モデルの簡潔な歴史
大規模言語モデルの歴史は1960年代にさかのぼります。1967年にMITの教授が、自然言語を理解するための最初のNLPプログラムであるElizaを作成しました。Elizaはパターンマッチングと置換技術を使用して人間と対話し理解することができます。その後、1970年にはMITチームによって、人間と対話し理解するための別のNLPプログラムであるSHRDLUが作成されました。
- Magic123とは、高品質で高解像度の3Dジオメトリとテクスチャを生成するために、二段階の粗-細最適化プロセスを使用する新しい画像から3Dへのパイプラインです
- スキル開発のための集中的な機械学習ブートキャンプ
- Google AIがFlan-T5をオープンソース化 NLPタスクにおいてテキスト対テキストアプローチを使用するトランスフォーマーベースの言語モデル
1988年には、テキストデータに存在するシーケンス情報を捉えるためにRNNアーキテクチャが導入されました。2000年代には、RNNを使用したNLPの研究が広範に行われました。RNNを使用した言語モデルは当時最先端のアーキテクチャでした。しかし、RNNは短い文にはうまく機能しましたが、長い文ではうまく機能しませんでした。そのため、2013年にはLSTMが導入されました。この時期には、LSTMベースのアプリケーションで大きな進歩がありました。同時に、アテンションメカニズムの研究も始まりました。
LSTMには2つの主要な懸念がありました。LSTMは長い文の問題をある程度解決しましたが、実際には非常に長い文とはうまく機能しませんでした。LSTMモデルのトレーニングは並列化することができませんでした。そのため、これらのモデルのトレーニングには長い時間がかかりました。
2017年には、NLPの研究において Attention Is All You Need という論文を通じてブレークスルーがありました。この論文はNLPの全体的な景色を変革しました。研究者たちはトランスフォーマーという新しいアーキテクチャを導入し、LSTMに関連する課題を克服しました。トランスフォーマーは、非常に多数のパラメータを含む最初のLLMであり、LLMsの最先端モデルとなりました。今日でも、LLMの開発はトランスフォーマーに影響を受けています。
次の5年間、トランスフォーマーよりも優れたLLMの構築に焦点を当てた重要な研究が行われました。LLMsのサイズは時間とともに指数関数的に増加しました。実験は、LLMsのサイズとデータセットの増加がLLMsの知識の向上につながることを証明しました。そのため、BERT、GPTなどのLLMsや、GPT-2、GPT-3、GPT 3.5、XLNetなどのバリアントが導入され、パラメータとトレーニングデータセットのサイズが増加しました。
2022年には、NLPにおいて別のブレークスルーがありました。 ChatGPT は、あなたが望むことを何でも答えることができる対話最適化されたLLMです。数か月後、GoogleはChatGPTの競合製品としてBARDを紹介しました。
過去1年間で、数百の大規模言語モデルが開発されました。オープンソースのLLMsのリストとその性能ランキングはこちらで入手できます。現在の最先端のLLMは、Falcon 40B Instructです。
大規模言語モデルとは何か?
簡単に言えば、大規模言語モデルとは、人間の言語を理解するために巨大なデータセットでトレーニングされたディープラーニングモデルです。その主な目的は、人間の言語を正確に学習して理解することです。大規模言語モデルにより、機械も私たち人間と同様に言語を解釈することが可能になります。
大規模言語モデルは、言語内の単語のパターンや関係を学習します。例えば、文法、単語の順序、単語やフレーズの意味など、言語の構文的および意味的な構造を理解します。これにより、言語全体を把握する能力を獲得します。
しかし、具体的には、言語モデルと大規模言語モデルはどのように異なるのでしょうか?
言語モデルと大規模言語モデルは、人間の言語を学習し理解しますが、主な違いはこれらのモデルの開発です。
言語モデルは一般的に、HMMや確率ベースのモデルを使用して開発された統計モデルですが、大規模言語モデルは非常に巨大なデータセットで訓練された数十億のパラメータを持つディープラーニングモデルです。
では、なぜ最初に大規模言語モデルが必要なのでしょうか?
なぜ大規模言語モデルが必要なのか?
この質問の答えは簡単です。LLMはタスクに依存しないモデルです。文字通り、これらのモデルは任意のタスクを解決する能力を持っています。例えば、ChatGPTはその典型的な例です。ChatGPTに何かを尋ねるたびに、驚かされるでしょう。
また、これらのLLMのもう1つの驚くべき特徴は、タスクに合わせてモデルを実際にファインチューニングする必要がないことです。モデルにプロンプトを与えるだけで、それが仕事をします。したがって、LLMはあなたが取り組んでいる任意の問題に即座の解決策を提供します。さらに、すべての問題とタスクに対して1つのモデルだけです。そのため、これらのモデルはNLPの基礎モデルとして知られています。
異なる種類のLLM
LLMは、タスクに応じて大まかに2つのタイプに分類できます:
- テキストの継続
- 対話最適化
テキストの継続
これらのLLMは、入力テキストの次の単語のシーケンスを予測するために訓練されます。彼らの手のタスクはテキストを続けることです。
例えば、「How are you」というテキストが与えられた場合、これらのLLMは「How are you doing?」や「How are you? I am fine.」のように文を完成させるかもしれません。
このカテゴリに属するLLMのリストには、Transformers、BERT、XLNet、GPT、およびGPT-2、GPT-3、GPT-4などのバリアントが含まれます。
これらのLLMの問題は、完了ではなく回答することに非常に優れていることです。時には、完了ではなく回答を期待することもあります。
先述のように、「How are you?」という入力が与えられた場合、LLMはdoing?またはI am fine.というテキストを完成させようとします。レスポンスは、完了または回答のいずれかになります。これが対話最適化LLMが導入された理由です。
2. 対話最適化
これらのLLMは、文を完成させるのではなく、回答として返答します。例えば、「How are you?」という入力に対して、これらのLLMは「I am doing fine.」という回答を返します。
対話最適化LLMのリストには、InstructGPT、ChatGPT、BARD、Falcon-40B-instructなどが含まれます。
では、スクラッチからLLMを訓練する際の課題について見ていきましょう。
LLMの訓練の課題は何ですか?
スクラッチからLLMを訓練することは非常に困難です。その理由としては、インフラストラクチャとコストの2つの主要な要素があります。
インフラストラクチャ
LLMは、少なくとも1000GBのサイズの巨大なテキストコーパスで訓練されます。これらのデータセットで訓練するために使用されるモデルは、数十億のパラメータを含む非常に大きなものです。巨大なテキストコーパスでこれらの大規模なモデルを訓練するためには、複数のGPUをサポートするインフラストラクチャ/ハードウェアをセットアップする必要があります。1つのGPUで1750億パラメータのGPT-3モデルを訓練するのにどれくらいの時間がかかるか想像できますか?
1つのNVIDIA Tesla V100 GPUでGPT-3を訓練するには355年かかります。
これは、単一のGPUでLLMを訓練することは不可能であることを明確に示しています。数千のGPUを使用した分散および並列計算が必要です。
ここで、人気のあるLLMの訓練に使用されるハードウェアをご紹介します。
- Falcon-40Bは384個のA100 40GB GPUを使用して訓練され、3Dパラレリズム戦略(TP=8、PP=4、DP=12)とZeROを組み合わせています。
- 研究者は、OpenAIが1,024x A100 GPUでわずか34日でGPT-3を訓練できると計算しました。
- PaLM(540B、Google):合計6144個のTPU v4チップが使用されました。
コスト
上記からはっきりとわかるように、LLMのトレーニングにはGPUインフラストラクチャが非常に必要です。このような規模のインフラストラクチャを構築するのは非常に高額です。企業や研究機関は数百万ドルを投資して、それを構築し、LLMをゼロからトレーニングしています。
GPT-3のトレーニングには約460万ドルかかったと推定されています
平均的に、7Bパラメータモデルをゼロからトレーニングするには、おおよそ25000ドルかかります。
それでは、どのようにしてLLMをゼロからトレーニングするか見ていきましょう
LLMをゼロからトレーニングする方法
LLMのトレーニングプロセスは、テキストを続けるタイプのLLMを構築するか、ダイアログを最適化するかによって異なります。LLMのパフォーマンスは、主に2つの要素に依存します:データセットとモデルアーキテクチャ。これら2つは、LLMのパフォーマンスの主な駆動要素です。
では、LLMのトレーニングに関わるさまざまなステップについて見ていきましょう。
1. テキストを続ける
テキストを続けるLLMのトレーニングプロセスは、LLMの事前トレーニングとして知られています。これらのLLMは、自己教師あり学習でトレーニングされ、テキストの次の単語を予測することが目的です。LLMをゼロからトレーニングするために必要なさまざまなステップを具体的に見ていきましょう。
a. データセットの収集
LLMのトレーニングの最初のステップは、大量のテキストデータのコーパスを収集することです。データセットは、LLMのパフォーマンスにおいて最も重要な役割を果たします。最近では、OpenChatが最新のダイアログ最適化の大規模言語モデルであり、LLaMA-13Bに触発されています。Vicuna GPT-4評価においてChatGPTスコアの105.7%を達成しています。その成功の理由を知っていますか?それは高品質のデータです。それはわずかな6Kのデータでファインチューニングされました。
トレーニングデータは、インターネット、ウェブサイト、ソーシャルメディアプラットフォーム、学術ソースなどをスクレイピングして作成されます。トレーニングデータはできるだけ多様性があることを確認してください。
最近の研究は、トレーニングデータセットの多様性の向上が、大規模言語モデルの一般的なクロスドメイン知識とダウンストリームの汎化能力を向上させることを示しています
何を言っているのかわかりますか?説明します。
あなたは「ChatGPTがJEEで失敗した」とか、「ChatGPTがUPSCに合格できなかった」という見出しを見たことがあるかもしれません。その可能性のある理由は何でしょうか?それは、必要なレベルの知性を欠いていたからです。これはトレーニングに使用されるデータに大きく依存しています。したがって、高品質のクロスドメインデータセットの需要は、異なるタスク間でのモデルの汎化に直接的な影響を与えるため、ますます高まっています。
高品質のデータでLLMのポテンシャルを引き出しましょう!
以前は、Common CrawlがLLMのトレーニングに使用されるデータセットとして利用されました。Common Crawlには、2008年以降の生のウェブページデータ、抽出されたメタデータ、およびテキスト抽出が含まれています。データセットのサイズはペタバイト単位です(1ペタバイト=1e6 GB)。このデータセットでトレーニングされた大規模言語モデルは効果的な結果を示しましたが、他のタスクに対してはうまく汎化できませんでした。そのため、22種類の異なる高品質データセットからなる新しいデータセットであるPileが作成されました。それは既存のデータソースと新しいデータセットの組み合わせであり、825 GBの範囲です。最近では、Common Crawlの改良版であるRefinedWebデータセットがリリースされました。GPT-3とGPT-4に使用されたデータセットは、他の競合他社に対する競争上の優位性を保つためにオープンソース化されていません。
b. データセットの前処理
次のステップは、データセットを前処理してクリーンにすることです。データセットは複数のウェブページや異なるソースからクロールされるため、データセットにはさまざまなニュアンスが含まれることがよくあります。これらのニュアンスを取り除き、モデルトレーニングに適した高品質なデータセットを準備する必要があります。
具体的な前処理のステップは、実際には使用しているデータセットによって異なります。一般的な前処理のステップには、HTMLコードの削除、スペルミスの修正、有害/偏ったデータの除去、絵文字をテキストに変換すること、およびデータの重複排除が含まれます。データの重複排除は、LLMのトレーニングにおいて最も重要な前処理のステップの1つです。データの重複排除とは、トレーニングコーパスから重複するコンテンツを削除するプロセスを指します。
トレーニングデータには重複したまたはほぼ同じ文が含まれていることは明らかです。なぜなら、さまざまなデータソースから収集されているからです。データの重複排除が必要な理由は2つあります。まず、モデルが同じデータを繰り返し記憶することを防ぐためです。また、トレーニングデータとテストデータには重複しない情報が含まれているため、LLMの評価をより正確に行うことができます。もし重複した情報が含まれている場合、トレーニングセットでモデルが見た情報がテストセットで出力として提供される可能性が非常に高いです。その結果、報告される数値が真実でない可能性があります。データの重複排除のテクニックについては、こちらをご覧ください。
c. データセットの準備
次のステップは、モデルの訓練のための入力と出力のペアを作成することです。事前学習フェーズでは、LLMはテキスト内の次のトークンを予測するために訓練されます。したがって、入力と出力のペアがそれに応じて作成されます。
例えば、以下のようなシンプルなコーパスを取りましょう。
- 例1: 私はDHS Chatbotです。
- 例2: DHSはDataHack Summitの略です。
- 例3: 私はDHSに関する情報を提供できます。
例1の場合、以下のような入力と出力のペアを作成することができます。
同様に、例2の場合、以下は入力と出力のペアのリストです。
それぞれの入力と出力のペアはモデルに渡されて訓練されます。では、次は何でしょうか?モデルのアーキテクチャを定義しましょう。
d. モデルのアーキテクチャ
次のステップは、モデルのアーキテクチャを定義し、LLMを訓練することです。
現在では、多くのLLMが開発されています。こちらで異なるLLMの概要をご覧いただけます。研究者たちは、LLMを構築する際に標準的なプロセスに従っています。ほとんどの研究者は、GPT-3などの既存の大規模言語モデルのアーキテクチャと、実際のモデルのハイパーパラメータを使用して開始します。そして、モデルのアーキテクチャとハイパーパラメータを微調整して、最先端のモデルアーキテクチャを作り出します。
例えば、Falconは最先端のLLMです。オープンソースのLLMランキングで1位を獲得しています。FalconはGPT-3のアーキテクチャを元にいくつかの変更を加えたものです。
e. ハイパーパラメータの探索
ハイパーパラメータのチューニングは、時間とコストの面で非常に費用のかかるプロセスです。10億パラメータモデルでこの実験を実行することを想像してみてください。それは実現可能ではありませんよね?したがって、理想的な方法は、現在の研究のハイパーパラメータを使用することです。たとえば、GPT-3のハイパーパラメータを使用して、対応するアーキテクチャで最適なハイパーパラメータを見つけるために小規模なスケールで実験し、最終的なモデルに適用することです。
実験には、重みの初期化、位置埋め込み、オプティマイザ、活性化関数、学習率、重み減衰、損失関数、シーケンス長、レイヤー数、アテンションヘッド数、パラメータ数、密なレイヤーと疎なレイヤー、バッチサイズ、ドロップアウトなどが含まれることがあります。
ここで人気のあるハイパーパラメータのベストプラクティスについて話しましょう。
ChatGPTは対話に最適化されたLLMです。ChatGPTのトレーニング方法は、上記で説明した手順と同様です。ただし、事前学習と教師ありファインチューニングに加えて、RLHFという追加のステップが含まれます。
しかし最近、LIMAという論文が公開されました。これによると、最初からRLHFは必要ありません。必要なのは大量のデータセットでの事前学習と、1000件程度の高品質データでの教師ありファインチューニングです。
現在、OpenChatはLLaMA-13Bに触発された最新の対話に最適化された大規模言語モデルです。Vicuna GPT-4の評価においてChatGPTのスコアの105.7%を達成しています。このモデルはわずか6,000件の高品質データでファインチューニングされました。
LLMの評価方法は?
LLMの評価は主観的ではなく、論理的なプロセスで行われる必要があります。
分類や回帰の問題の場合、真のラベルと予測されたラベルを持っており、それらを比較してモデルの性能を理解します。我々は混同行列を見ますよね?しかし、大規模な言語モデルはどうでしょう?それらは単にテキストを生成するだけです。
LLMを評価する方法は2つあります:内在的方法と外在的方法です。
内在的方法
従来の言語モデルは、内在的な方法(パープレキシティ、1文字あたりのビット数など)を使用して評価されていました。これらの指標は、モデルが次の単語を予測する能力など、言語の性能を追跡します。
外在的方法
現在のLLMの進歩により、外在的な方法がパフォーマンスの評価に好まれるようになりました。LLMの評価には、問題解決、推論、数学、コンピュータサイエンス、MIT、JEEなどの競技試験など、さまざまなタスクでのパフォーマンスを見ることが推奨されています。
EleutherAIは、LLMの比較と評価のためのフレームワークであるLanguage Model Evaluation Harnessをリリースしました。Hugging Faceは、コミュニティによって開発されたオープンソースのLLMを評価するために、この評価フレームワークを統合しました。
提案されたフレームワークは、4つの異なるデータセットでLLMを評価します。最終スコアは、各データセットからのスコアの集計です。
- AI2 Reasoning Challenge:小学生向けに設計された科学の問題集。
- HellaSwag:一般的な常識的な推論を行うことを要求するテストで、人間にとっては比較的簡単です(約95%の正答率)。
- MMLU:テキストモデルのマルチタスクの正確性を評価する包括的なテストです。基本的な数学、アメリカの歴史、コンピュータサイエンス、法律など、57の異なるタスクをカバーしています。
- TruthfulQA:モデルが正確な回答を生成し、オンラインでよく見られる偽情報を再現しない傾向を評価するために特別に作成されたテストです。
さらに読む:大規模言語モデル(LLM)の10のエキサイティングなプロジェクト
エンドノート
自分自身の大規模言語モデルを構築する準備ができたと思います!
どう思いますか?コメントを下に残してください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles