目次
1. 言語モデルの開発
言語モデル (Language Model、LM) の目標は、自然言語の確率分布をモデル化することであり、具体的な目標は、単語シーケンス w1、w2、...、wm の確率分布を構築すること、つまり、与えられた単語シーケンスが文として現れる確率 サイズ P(w1w2...wm)。ただし、結合確率 P のパラメータ量は N^m (m は文の長さを表し、N は可能な単語の数を表します) と非常に大きいため、単純化した考え方では、左から右へ文シーケンスの生成プロセスを使用します。結合確率を分解する権利:
つまり、単語列 w1w2...wm の生成過程は、i 番目の単語の確率が前の i-1 個の単語に依存すると仮定して、単語を 1 つずつ生成するものとみなします。この分解自体はモデルに必要なパラメータの数を減らすものではありませんが、この変換はその後の単純化への道を提供することに注意してください。
- 統計的言語モデル:N-gramモデル、つまりメタグラマーモデル。上記の仮定によれば、単語の確率は、歴史的影響と呼ばれる、前の i-1 単語の影響を受けます。この確率を推定する最も簡単な方法は、コーパス内に出現する単語シーケンスの頻度を計算することです。コーパス。
- ニューラル ネットワーク言語モデル(NNLM): n グラム言語モデルの次元障害を克服し、単語ベクトル (Word Embedding) で表される言語モデル FFN、RNN、LSTM の分散表現が登場しました。
- 事前トレーニング済み言語モデル(事前トレーニング済みモデル、PLM): ELMo は最初の事前トレーニング済み双方向 LSTM ネットワーク、Transformer はアテンション メカニズムに基づいており、BERT はマスク メカニズムを使用してコンテキストベースの予測に基づいて事前トレーニング タスクを構築します。中間語の
エンコーダ専用の事前トレーニング済みモデル: BERT モデルなど | デコーダ専用の事前トレーニング済みモデル: GPT モデルなど | エンコーダ デコーダ アーキテクチャに基づくエンコーダ デコーダ事前トレーニング モデル: BART モデルなどの Seq2Seq モデル。使用される事前トレーニング方法は、さまざまなノイズを含むテキストを入力し、モデルがノイズ除去と再構築を実行することです。 |
- 大規模言語モデル(大規模言語モデル、LLM)
2019 年に Google が T5 をリリースし、2020 年 1 月に OpenAI が発表した論文「ニューラル言語モデルのスケーリング則」では、クロスエントロピー損失に基づいた言語モデルのパフォーマンスの経験的なスケーリング則を研究し、したがって、効率的にトレーニングするための最適な方法は、中程度のデータセットで非常に大規模なモデルをトレーニングし、大幅な収束の前に早期に停止することです。
LLM を成功させるための重要なテクニックをいくつか示します。
- モデルのスケーリング (Scaling) : モデル サイズの拡大、トレーニング データの品質は、良好なパフォーマンスを達成する上で重要な役割を果たします。
- モデルトレーニング: さまざまな最適化フレームワークを使用して、DeepSpeed や Megatron-LM などの並列アルゴリズムをデプロイします。
- 能力の引き出し: 適切なタスク ステップとプロンプトを使用して、大規模な言語モデルをガイドして複雑なタスクを解決します。
- アライメントチューニング: 大規模な言語モデルは大量のデータを使用してトレーニングされているため、低品質のデータが原因で誤ったコンテンツや有害なコンテンツが生成される可能性があります。GPT は、慎重に設計されたラベルを通じて人間をトレーニング ループに統合することでこの問題を回避するために、人間によるフィードバックによる強化学習 (RLHF) の戦略を採用しています。
- ツール操作: プラグインなどの外部ツールにより、大規模な言語モデルの機能を拡張できます。
LLM は、基本 LLM と命令微調整 LLM の 2 種類に大別されます。基本的な LLM はテキストのトレーニング データに基づいており、次の単語の能力を予測するモデルをトレーニングします。このモデルは通常、インターネットやその他のソースからの大量のデータに基づいてトレーニングされます。命令調整された LLM のトレーニングは、通常、大量のテキスト データでトレーニングされた、すでにトレーニング済みのベース LLM から始まります。次に、入力が命令であり、出力が返すべき結果であるデータセットを使用して微調整され、その命令に従うように求められます。これは、RLHF (人間のフィードバックからの強化学習) と呼ばれる手法を使用してさらに改良され、システムが指示に従うのにさらに役立つようになります。
1.LLMトレーニング手法
基本的なプロセス:
学習前コーパスのソースは、一般コーパスと専門コーパスの2つに大別できます。
- 汎用コーパス: Web ページ、書籍、会話テキストなど。その大規模で多様でアクセスしやすい機能により、言語モデリングと大規模な言語モデルの一般化機能を強化できます。
- 専門的コーパス: 大規模な言語モデルの優れた一般化能力を考慮して、事前トレーニング コーパスを多言語データ、科学データ、コードなどのより専門的なデータセットに拡張して、大規模な言語モデルに特定のタスクを与える研究もあります。 -解決能力。
BERT で表される事前トレーニング済み言語モデルは、タスク データに応じて微調整する必要があります。このパラダイムは、数百万から数億の範囲のパラメーターを持つ事前トレーニング済みモデルに適用できます。しかし、数十億、さらには数百億の大規模モデルの場合、各タスクを微調整するための計算オーバーヘッドと時間コストは、ほとんど受け入れられません。
そこで、多数のさまざまなタイプのタスクを生成的自然言語理解フレームワークに統合し、微調整用のトレーニング コーパスを構築するために、命令微調整手法が作成されました。
命令の微調整を通じて、大規模モデルは人間の命令に応答する方法を学習し、命令に従って合理的な答えを直接生成できます。指示の微調整段階で多数のタスクがトレーニングされるため、大規模モデルのタスク機能をこれまでに見たことのないタスクに一般化することができ、これによりモデルは当初、人々が提案したあらゆる指示に応答できるようになります。この機能は、オープン ドメインで優れたパフォーマンスを発揮する大規模モデルにとって非常に重要です。
指示によって微調整されたモデルは、オープンフィールドタスクでは優れたパフォーマンスを発揮しますが、モデルの出力結果は通常、人間の答えとは大きく異なり、一言で言えば「非人間的」です。したがって、モデルの出力が人間の習慣と一致するようにモデルをさらに最適化する必要があります。最も代表的で大成功を収めた手法の 1 つは、OpenAI によって開発され、ChatGPT を形成したヒューマン フィードバックからの強化学習 (RLHF) です。
2.LLMメモリの節約方法
- FP16
- あなた8
- LoRA : 大規模言語モデルの低ランク適応は、大規模モデルの微調整を処理します。LoRA は、事前トレーニングされたモデルの重みを凍結し、各Transformer ブロックにトレーニング可能な層 (_ランク分解行列_) を注入することを提案しています。ほとんどのモデルの重みについて勾配を計算する必要がないため、トレーニングが必要なパラメーターの数が大幅に減り、GPU メモリ要件が軽減されます。
- Textual Inversion : いくつかの概念図を通じて、これらの概念は、テキスト画像生成モデルの Text Embedding 空間で擬似単語 (擬似単語) を学習することによって表現されます。次に、これらの擬似単語を自然言語文に組み合わせて、パーソナライズされた生成をガイドします。つまり、画像プロンプト
- 勾配チェックポイント設定
- トーチFSDP
- CPUオフロード
2.1 LoRA の低ランク適応微調整
LoRA は主に大規模モデルの微調整に使用されます。現在数十億のパラメーターを超える強力な機能を備えた大規模モデル (GPT-3 など) は、通常、下流のタスクに適応するための微調整に多大なオーバーヘッドをもたらします。LoRA は、事前トレーニングされたモデルの重みを凍結し、各 Transformer ブロックにトレーニング可能な層(_ランク分解行列_) を注入することを提案しています。ほとんどのモデルの重みについて勾配を計算する必要がないため、トレーニングするパラメーターの数が大幅に減り、GPU メモリ要件が軽減されます。研究者らは、大規模モデルの Transformer アテンション ブロックに焦点を当てることで、LoRA を使用した微調整がフルモデルの微調整と同等の品質でありながら、高速で必要な計算量が少なくなることを発見しました。
LoRA の利点:
- 事前トレーニングされたモデルを共有し、さまざまなタスク用の多数の小さな LoRA モジュールを構築するために使用できます。図 1 の行列 A と B を置き換えることにより、共有モデル パラメーターを凍結し、タスクを効率的に切り替えることができるため、ストレージ要件とタスク切り替えのオーバーヘッドが大幅に削減されます。
- 適応オプティマイザーを使用する場合、LoRA はトレーニングをより効率的にし、ほとんどのパラメーターについて勾配を計算したりオプティマイザーの状態を維持したりする必要がないため、ハードウェアの参入障壁を 3 分の 1 に下げます。代わりに、注入されたはるかに小さい低ランク行列のみが最適化されます。
- シンプルな線形設計により、完全に微調整されたモデルと比較して推論遅延が発生することなく、構築により、デプロイメント時にトレーニング可能な行列を凍結された重みと組み合わせることができます。
たとえば、ΔW が重み行列 W∈R^A×B の重み更新であるとします。次に、重み更新行列は 2 つの小さな行列、ΔW=WA・WB (WA∈R^A×r、および WB∈R^r×B) に分解できます。ここでは、元の重み W は固定されたままになり、新しい行列 WA と WB のみがトレーニングされます。
再パラメータ化するときは、 A にはランダム ガウス初期化を使用し、 B にはゼロ初期化を使用します。そのため、学習の開始時に ΔW=BA はゼロになります。次に、ΔWx を α/r でスケールします。ここで、α は r の定数です。Adamを使用して最適化する場合、初期化が適切にスケーリングされている場合、α の調整は学習率の調整とほぼ同じです。
2.2 モデルの量子化
2.3 テキストの反転
テキストの埋め込み
- 入力文字列内の各単語 ( word ) またはサブワード ( sub -word )は、事前定義された辞書のインデックスであるトークン ( Token ) に変換されます ( BPEアルゴリズムを参照)。
- 次に、各トークンは一意の埋め込みベクトル ( embedding ) に対応します。これらの埋め込みベクトルは通常、テキスト エンコーダーの一部として学習されます。
- この埋め込みベクトル空間をInversionのターゲットとして選択し、 学習したい新しい概念を表すプレースホルダー文字列S*を指定します。
- 新しい概念に関連付けられた埋め込みベクトルを新しく学習した埋め込みベクトル v* で置き換えます。つまり、概念を語彙に注入します。
- 他の単語と同様に、この概念文字を使用して新しい文を作成します。たとえば、「 S*の写真」、 「S*のスタイルの絵画」など です。
テキスト反転により 画像再構成損失 ( LDM ) を最小限に抑え、最適化を実現します。
垂直領域の問題 + ナレッジ ドキュメントの会話型大規模言語モデルをトレーニングするいくつかの方法 (リソースの小さいものから大きいものの順)
- p-tuning v2: ディープ プロンプト エンコーディングとマルチタスク学習。(Prefix-tuningの拡張版)
- ローラ
- 微調整
ビッグランゲージモデルプロジェクト
- ChatGLM : 6B オープンソース、Q&A、マルチラウンド対話、コード生成機能を備えた中国語と英語のバイリンガル モデル
- SwissArmyTransformer : Transformer の統合プログラミング フレームワークである ChatGLM-6B は SAT に実装されており、P チューニングの微調整を実行できます。
- ChatGLM-MNN : メモリ サイズに応じた GPU および CPU へのコンピューティング タスクの自動割り当てをサポートする MNN ベースの ChatGLM-6B C++ 推論実装
- JittorLLM : 最小 3G メモリまたはグラフィック カードなしでも ChatGLM-6B FP16 を実行でき、Linux、Windows、Mac の展開をサポート
- Colossal AI: SFT 教師あり微調整 -> 報酬モデル (RM) トレーニング -> 強化学習 (RLHF)
- LLaMA: スタンフォードアルパカ
- alpaca-lora: 低コストで効率的な微調整を実現するために PEFT ライブラリが呼び出される LoRA テクノロジーを使用します。
- Dolly: Alpaca データセットを使用した GPT-J-6B の微調整
- PaLM-rlhf-pytorch: Google の大規模モデル PaLM アーキテクチャに基づく
- Vicuna: LLaMA の微調整
- LMFlow: 低コストのトレーニング、オープンなWebエクスペリエンス
- チャットRWKV
- 復ダンモス
- GPトリリオン
- コアラ
- スタックラマ
大規模言語モデル データセット データセット
- RefGPT : RefGPT、中国語に基づいて実際のカスタマイズされた対話データ セットを多数生成します。
- Alpaca-CoT:豊富な IFT データ (まだ拡大中の CoT データなど)、複数のトレーニング効率化手法 (lora、p-tuning など)、および複数の LLM、3 つのレベルのインターフェイスを統合し、研究者にとって便利なツールを作成します。 LLM-IFT 研究プラットフォームを始めましょう
大規模言語モデルの評価 評価
- FlagEval(Libra)大規模モデル評価システムとオープンプラットフォーム:「能力・課題・指標」の三次元評価フレームワークを構築し、基本モデルの認知能力境界をきめ細かく記述し、評価結果が見える化される
- C-Eval: 大規模な中国語モデルを構築するための知識評価ベンチマーク
- AGIEval: Microsoft がリリースした新しいベンチマークで、一般の人間の受験者を対象とした 20 の公式、公的、高水準の日常試験および資格試験を選択します。
応用統合LLM
- koishi : クロスプラットフォームでスケーラブルな高性能ボットを作成する
GitHub 上のデータリポジトリ
- FindTheChatGPTer : ChatGPT のオープンソース代替品 (テキスト モデルやマルチモーダル モデルなど)
- LLM_reviewer :オープンソース、小規模、民営化された導入、低トレーニングコストの「ビキューナのような」モデル
- Awesome-AITools : AI関連の実践ツール、レビュー、関連記事を整理
- DecryptPrompt : Prompt&LLM 論文、オープンソース データとモデル
- 素晴らしい事前トレーニング済み中国語 NLP モデル:高品質の中国語事前トレーニング済みモデル
- 素晴らしい LLM
参考文献
- 既存のオープンソース中国語 LLM ソート - 知識
- 自然言語処理のフロンティア - 大規模言語モデルの過去と現在
- LLMs のメモリ節約方法のいくつか - 知識
- GitHub - km1994/LLMsNineStoryDemonTower: 【LLMs九階建ての悪魔の塔】実際の戦闘やモンスターとの戦闘体験を共有(ChatGLM, Chinese-LLaMA-Alpaca, MiniGPT-4, FastChat, LLaMA, gpt4all等)、
- GitHub - datawhalecina/hugging-llm: HuggingLLM、Hugging Future. : 初心者が始めるのに適しています
- s
- s
- s