LLaMA 2: モデルの概要とJupyter Notebooksでのデモチュートリアル
自然言語処理(NLP)は、機械学習/深層学習の多くのサブドメインの中で最も人気のあり、一般的に使用されているものの一つです。最近、ChatGPT、Bard、その他多くの生成事前学習トランスフォーマー(GPT)モデルの大規模な普及によって、これはさらに明らかになりました。これらはウェブ上のさまざまなサイトやインターフェースに広がっています。
最近では、完全にオープンソースのGPTモデルをリリースするための取り組みがAIコミュニティの最前線に立っており、Stable Diffusionのような大規模プロジェクトを公の注目の点で追い越しているように見えます。完全にオープンソースとしてリリースされるか、より専門的で限られた研究者ライセンスによって公的セクターに到達する最近のGPTモデルの増加は、昨年における弱いAIモデルへの公的関心の高まりを示しています。LLaMAのようなプロジェクトは、Alpaca、Vicuna、LLaVAなどの多数の代替プロジェクトに展開されたことから、巨大な潜在能力を示しました。この元々はクエリが困難だったモデルに対し、複雑でマルチモーダルな入力を可能にするプロジェクトの開発により、利用可能な最高のGPTモデルのいくつかが完全にオープンソースとして訓練され、リリースされることが可能になりました。特に、OpenLLaMAプロジェクトは、完全にオープンソースのデータセットとトレーニングパラダイムを使用して、7Bおよび13BパラメータのLLaMAモデルを再現しました。
今日は、GPTシリーズの最新かつ有望なリリースであるLLaMA 2について議論します。LLaMA 2は、ここ数ヶ月で非常に人気のあるLLaMAモデルのさらなる進化を表しています。このモデルのアップデートには、40%大きなデータセット、人間の好みに基づいて微調整されたチャットバリアント、そして70ビリオンパラメータモデルまでさらに拡張されることが含まれています。
この記事では、まず新しいリリースに含まれるモデルの新機能と更新について詳しく説明します。その後、Oogaboogaテキスト生成WebUIを使用して、Jupyter Notebook内で新しいモデルにアクセスし、実行する方法を示します。
前提条件
これはLLaMA 2モデルのアーキテクチャをデモ付きで詳述した中級レベルのチュートリアルです。続ける前に、すべての読者が生成的事前訓練トランスフォーマーの一般的な機能に精通していることをお勧めします。
このチュートリアルに従うには、十分な性能のNVIDIA GPUが必要です。H100の使用をお勧めします。モデルの概要
LLaMA 2で利用可能な新しい技術の概要から始めましょう。まずは、新しいリリースで変更されない元のLLaMAアーキテクチャについて説明し、その後、更新されたトレーニングデータ、新しいチャットバリアントとそのRHLFチューニング手法、そして他のオープンソースおよびクローズドソースのモデルと比較した場合の完全にスケールされた70Bパラメータモデルの能力について考察します。
LLaMA 2モデルアーキテクチャ
LLaMAおよびLLaMA 2モデルは、元のTransformersアーキテクチャに基づく生成的事前訓練トランスフォーマーモデルです。私たちは、LLaMAモデルが以前のGPTアーキテクチャのイテレーションとどのように異なるかについて、最初のLLaMAの解説で詳細に説明しましたが、要約すると以下の通りです:
- LLaMAモデルは、GPT-3のようなプレノーマライゼーションを特徴としています。これは、トレーニングの安定性を効果的に向上させます。実際には、彼らは各トランスフォーマーサブレイヤーの出力ではなく、入力を正規化するためにRMS Normの正規化関数を使用します。これにより、不変性の特性と暗黙の学習率適応能力が再スケーリングされます。
- LLaMAはReLU非線形活性化関数の代わりにSwiGLU活性化関数を使用しており、これによりトレーニング性能が著しく向上します。
- GPT-Neo-Xプロジェクトから借用したLLaMAは、ネットワークの各層にロタリーポジショナルエンベッディング(RoPE)を備えています。
LLaMA 2論文の付録に報告されているように、元のモデルからの主なアーキテクチャの違いは、コンテキストの長さが増加し、グループ化されたクエリ注意(GQA)が導入されたことです。コンテキストウィンドウのサイズは2048トークンから4096トークンに倍増しました。この長いプロセスウィンドウにより、モデルははるかに多くの情報を生成・処理できるようになります。特に、これは長文の理解、チャット履歴、および要約タスクに役立ちます。さらに、彼らは文脈データのスケールに対処するために注意機構を更新しました。彼らは、元のマルチヘッド注意ベースラインと、単一のキー・バリュー投影を持つマルチクエリ形式、そして8つのキー・バリュー投影を使用したグループ化されたクエリ注意形式を比較し、元のMHA形式のコストに対処しました。これは、コンテキストウィンドウやバッチサイズが増加すると複雑さが著しく増加します。
これらの更新により、LLaMAはさまざまなタスクにおいて多くの競合モデルよりも顕著に優れたパフォーマンスを発揮できるようになります。上のグラフィックからわかるように、LLaMA 2プロジェクトページから提供された情報によれば、LLaMAはFalconやMPTのような専門の代替GPTモデルと比較して非常に有利か、ほぼ同等のパフォーマンスを示します。私たちは、今後数ヶ月にわたって、GPT-4やBardのような大規模なクローズドソースモデルと比較してどのようになるかを示す研究を楽しみにしています。
更新されたトレーニングセット
LLaMA 2は、更新され、拡張されたトレーニングセットを特徴としています。このデータセットは、元のLLaMAモデルをトレーニングするために使用されたデータよりも、最大で40%大きいとされています。これは、最小のLLaMA 2モデルにとっても良い意味を持っています。さらに、このデータは、明らかに大量のプライベートおよび個人情報を含むサイトからのデータが含まれないように明示的にフィルタリングされました。
合計で、彼らは2兆トークンのデータに基づいて訓練しました。この量がコストパフォーマンスのトレードオフにおいて最も効果的であることを発見し、誤情報や幻覚の影響を減少させるために最も事実的なソースをアップサンプルしました。
チャットのバリアント
チャットバリアントLLaMA 2-Chatは、調整技術に関する数ヶ月の研究を通じて作成されました。監視されたファインチューニング、RHLF、および反復的ファインチューニングの統合を通じて、チャットバリアントはオリジナルのLLaMAモデルに比べて人間とのインタラクティビティにおいて大きな前進を示しています。
監視付きファインチューニングは、元のLLaMAモデルで使用されたのと同じデータと方法を用いて行われました。これは、「有益な」および「安全な」応答の注釈を使用して行われ、モデルが適切な応答を認識しているかいないかに応じて、正しい種類の応答に導くものです。
LLaMA 2で使用されるRHLFメソッドは、研究者がアノテーターのチームを使って収集した報酬メソッド用の大量の人間の好みデータを集めることを含んでいます。これらのアノテーターは、2つの出力の質を評価し、互いに比較して2つの出力の質的評価を行います。これにより、モデルは好ましい応答に報酬を与え、重みをより多く付け、受け入れられなかった回答に逆の処理を行うことができます。
最終的に、彼らはより多くのデータを収集するにつれて、改善されたデータを使用してモデルの後続バージョンを訓練することによって、以前のRHLF結果を反復的に改善しました。
これらのモデルのチャットバリアントに関する詳細については、ぜひ論文を確認してください。
70億パラメータへのスケーリングアップ
最大のLLaMA 2モデルは700億のパラメータを持っています。パラメータの数は、テキスト変数に対応するように調整されるfloat32変数の重みの量を指します。したがって、対応するパラメータの数はモデルの能力とサイズに直接関係しています。新しい70Bモデルは、LLaMA 1と共にリリースされた最大の65Bモデルよりも大きいです。上の表から見るように、スケールアップされた70Bモデルは、ChatGPT(GPT3.5)などのクローズドソースモデルと比較しても有利に性能を発揮しています。それはまだGPT-4に達するにはまだ道のりが長いですが、オープンソースコミュニティからの追加の指導チューニングやRHLFプロジェクトによって、そのギャップはさらに縮まる可能性が高いです。
ChatGPTが1750億のパラメータのスケールで訓練されたことを考えると、LLaMAの成果はさらに印象的です。
デモ
では、Jupyter Notebookに飛び込んで、自分のプロジェクトのためにLLaMA 2をどのように始められるかを見てみましょう。この作業にはH100をお勧めします。クラウドを通じて利用可能です。
私たちは、GradioベースのOogaboogaテキスト生成Web UIで動作するGPTQバージョンを使用してモデルを実行します。このデモでは、ノートブックの設定、モデルのダウンロード、および推論の実行方法を示します。
セットアップ
環境を設定することから始めましょう。私たちはWebUIリポジトリをルートディレクトリとしてノートブックを起動しました。始めるために、llama.ipynbノートブックファイルを開きましょう。これにはWeb UIでモデルを実行するために必要なすべてのものが含まれています。
最初に、提供された requirements.txt ファイルを使用して必要なパッケージをインストールします。また、いくつかの追加パッケージを更新する必要があります。以下のセルを実行すると、セットアップが完了します。
!pip install -r requirements.txt
!pip install -U datasets transformers tokenizers pydantic auto_gptq gradio
これが実行されたので、ウェブUIを実行する準備が整いました。次に、モデルをダウンロードしましょう。
モデルをダウンロードする
Oogaboogaテキスト生成ウェブUIは、GPTモデルでの推論とトレーニングを非常に簡単に行えるように設計されており、特にHuggingFace形式のモデルに対応しています。これらの大きなファイルにアクセスするために、HuggingFaceモデルを簡単にダウンロードできるモデルダウンロードスクリプトを提供しています。
2番目のコードセルでコードを実行して、ウェブUIを実行するためにLLaMA 2の7Bバージョンをダウンロードします。モデルのGPTQ最適化バージョンをダウンロードします。これにより、量子化を使用してモデルの実行コストが大幅に削減されます。
!python download-model.py TheBloke/Llama-2-7B-GPTQ
モデルのダウンロードが数分後に完了したら、始めることができます。
アプリケーションを起動します
アプリケーションのロードの準備が整いました!ノートブックの最後にあるコードセルを実行するだけで、Web UIが起動します。セルの出力を確認し、公開URLを見つけてWeb UIを開いて始めましょう。これにより、モデルは自動的に8ビット形式でロードされます。
!python server.py --share --model TheBloke_Llama-2-7B-chat-GPTQ --load-in-8bit --bf16 --auto-devices
この公開リンクは、インターネットにアクセス可能なブラウザからどこでもアクセスできます。
ウェブUIテキスト生成タブ
最初に見るタブはテキスト生成タブです。ここでは、テキスト入力を使ってモデルに問い合わせることができます。上には、LLaMAアーキテクチャに関連する一連の質問をされているLLaMA 2のチャットバリアントの例が表示されています。
ページの左下隅には、使用できるプロンプトテンプレートのいくつかがあります。これらはチャットモデルが返す応答を調整するのに役立ちます。それから、好きな質問や指示を入力できます。モデルは右側の出力リーダーを使用して、結果をストリーミングして返します。
パラメータ、モデル、およびトレーニングのタブについても指摘したいと思います。パラメータタブでは、モデルを使用した推論のためのさまざまなハイパーパラメータを調整できます。モデルタブでは、適切なLoRA(低ランク適応)モデルの有無にかかわらず、任意のモデルをロードできます。最後に、トレーニングタブでは、提供するデータに基づいて新しいLoRAをトレーニングできます。これを使用して、Web UI内でAlpacaやVicunaのようなプロジェクトを再現することができます。
締めくくりの考え
LLaMA 2は、オープンソースの大規模言語モデルにとって重要な前進です。論文や研究チームが示した結果、さらにモデルを使用した後の私たちの定性的な推測からも明らかなように、LLaMA 2はLLMの普及と開発をさらに進めていくでしょう。このプロジェクトに基づき、拡張する未来のプロジェクトを楽しみにしています。以前のAlpacaのように。



