著者 | ルイス・ロケ 編纂者:岳陽 01 はじめにMetaは、大規模言語モデルLlamaの3つのメジャーバージョンをリリースしました。2023年初頭にリリースされたLlamaの最初のリリースは、オープンソースの自然言語処理(NLP)コミュニティにとって大きな飛躍となりました。Metaは、最新バージョンのモデルを共有することで、このコミュニティに継続的に貢献してきました。 ここで、「オープンLLM」と「オープンソースLLM」を区別する必要があります。伝統的に、オープンソースソフトウェアは特定のパブリックライセンスの下でソースコードを公開し、ユーザーがそれを利用および改変できるようにします。LLM分野では、オープンLLMはモデルの重みと初期コードを公開しますが、オープンソースLLMはさらに進んで、トレーニングデータを含むトレーニングプロセス全体をパーミッシブライセンスの下で共有します。現在、MetaのLlamaを含むほとんどのモデルは、トレーニングに使用したデータセットを公開していないため、オープンLLMのカテゴリに分類されます。 Llamaは3回にわたる主要なアーキテクチャアップデートを実施しました。バージョン1では、オリジナルのTransformerアーキテクチャにいくつかの改良が加えられました。バージョン2では、大規模モデルにGrouped Query Attention (GQA)が導入されました。バージョン3では、このメカニズムを小規模モデルに拡張し、より効率的なトークナイザーを導入し、語彙を拡張しました。バージョン3.1では、コアアーキテクチャに変更はなく、主な変更点はトレーニングデータのクリーニング、コンテキスト長の増加、およびサポート言語の増加です。 本稿では、Llamaのアーキテクチャの進化を考察し、その主要な進歩とそれらがLLMの将来の発展に与える影響に焦点を当てます。最後に、推論速度、回答の長さ、そして相対的回答品質(RAQ)フレームワーク[1]を用いた実験を通して、Llama 2とLlama 3を比較します。RAQフレームワークは、LLMの回答の精度をテストするための客観的なスコアリングシステムを提供し、特定のアプリケーションシナリオの評価に特に役立ちます。 図1:ラマの家族(著者撮影、DALL-E使用) 02 Llama: オープンLLMファミリー2.1 ラマ1:シリーズの最初のモデルがリリースされました。Llamaシリーズの最初のモデルであるLlama 1 [2]は、Vaswaniらが2017年に提案したエンコーダ・デコーダTransformerアーキテクチャ[3]に基づいています。このアーキテクチャはNLP分野における大きな革新であり、現在でもLLMモデルの基本アーキテクチャとなっています。 Llama 1 では、このアーキテクチャをコア設計に採用し、その上で次のようないくつかの最適化を行いました。 プレノーマライゼーション技術 Llama 1は、GPT3 [4] アーキテクチャにおける学習安定性向上手法を参考に、出力を正規化するのではなく、各Transformerサブレイヤーの入力を正規化する戦略も採用しています。具体的な詳細は図2に示されています。 図 2: オリジナルの Transformer アーキテクチャと Llama 1 アーキテクチャの違い、特に各入力が正規化される Transformer サブレイヤーの違い (画像は著者提供)。 さらに、Llama 1では従来のLayerNorm関数の代わりにRMSNorm [5]を使用しています。この変更により、学習の安定性を維持しながら計算効率が大幅に向上し、モデルの収束速度も向上しています。 RMSNormがより効率的なのは、LayerNormの利点が、再センタリング不変性(入力データの平均が変化してもデータ分布の形状と範囲が変化しない場合、再センタリング不変性を持つアルゴリズムまたは関数の出力は影響を受けないはずである)ではなく、再スケーリング不変性(正規化プロセスが入力データのスケーリングに適応し、ネットワークがこのスケーリングの影響を受けないようにする)にあることを開発者が発見したためです。この発見に基づき、正規化プロセスにおける平均計算を省略することで、パフォーマンスを犠牲にすることなくアルゴリズムを簡素化し、計算効率を大幅に向上させました。 図3: LayerNormとRoot Mean Square Normalization (RMSNorm)の式の違い(画像は著者提供) SwiGLU活性化関数 活性化関数の選択において、研究者らは従来のReLU関数ではなくSwiGLU関数[6]を使用しました。これはモデルの性能向上を目的とした変更です。両者の主な違いは以下のとおりです。
図4: 異なるβ値におけるReLUとSwiGLUの挙動の比較。βが100に達すると、両者の曲線が一致する傾向があることがわかります。 回転位置埋め込み 大規模言語モデル(LLM)では、Transformerアーキテクチャ自体が語順を区別しないため、位置エンコーディングが重要な役割を果たします。つまり、位置エンコーディングがなければ、Transformerは語順は異なるものの単語が同じである2つの文を同じ文として扱います。例えば、位置エンコーディングがなければ、Transformerは次の2つの文の意味を区別できません。
論文[3]では、正弦関数と余弦関数を用いた絶対的な位置埋め込みが提案されています。シーケンス内の各位置には固有の位置埋め込みがあり、これを単語ベクトルに追加することで、単語が同じであっても順序が異なる文が異なる意味を表すことができるようになります。 簡単に言えば、文中の単語は多次元ベクトルではなく一次元ベクトルを用いて符号化されていると仮定できます。図5に示すように、単語ベクトルにおいて「1」と「2」の表現値は同じです。しかし、位置エンコーディングを追加すると、それらの表現値は異なります(それぞれ0.88から1.04、0.26から0.1)。 図5: 絶対位置埋め込み(著者提供画像) 絶対位置エンコーディングは、Transformerが順序を識別できないという問題を解消しますが、互いに独立した位置コードを生成するため、単語の順序における相対的な位置は考慮されません。つまり、モデルの観点からは、位置1と位置2の相関は、位置1と位置500の相関と変わりません。しかし、実際にはそうではないことが分かっています。理論的には、位置が近い単語はより高い相関を持つはずです。 回転位置エンコーディング[7]は、単語列の各位置を単語埋め込みの回転変数に変換することで、単語間の相対的な位置関係をシミュレートすることで上記の問題を解決します。 「ラマ2はラマ1よりも良い」を例にとると、単語埋め込みが2次元になったとします。すると、「良い」という単語は、その位置m(4)と元の2次元ベクトルの定数θに基づく2次元回転ベクトルで表されます。 図6は、回転位置埋め込みを用いて元のベクトルを新しいベクトルに変換する方法を示しています。この変換は、ベクトルのシーケンス内の位置(例:m=4)と定数θに基づいています(画像は著者提供)。 この手法を用いることで、元の文に単語を追加しても、単語間の相対的な距離を維持できます。例えば、「The Llama 2 is better than Llama 1」という文に2つの単語を追加した場合、「better」と「than」の位置が(4と5)から(6と7)に変化しても、回転量は変わらないため、2つのベクトル間の類似度(つまり、左図のベクトルのドット積が右図のベクトルのドット積と同じであること)は変わりません。 図7: 回転位置エンコーディングによるトークン間の相対距離の維持能力(画像は著者提供) 2.2 ラマ2: ラマ1のアップグレード版Llama 2 [8]は、Llama 1のオリジナルのTransformerアーキテクチャに加えられたすべての変更を保持しています。これに基づいて、処理コンテキストの長さは4096に拡張され、これは以前の2048の2倍です。同時に、34Bや70Bなどの大規模なモデルの場合、Llama 2は従来のMulti-Head Attention(MHA)[9]の代わりにGrouped-Query Attention(GQA)[10]を使用します。 MHAは、アテンションヘッドのすべてのクエリ、キー、値をロードするために大量のメモリを必要とするため、Transformersのパフォーマンスボトルネックとなります。この問題には2つの解決策があります。
図8: MHA、GQA、MQA法の概要(著者提供画像) 2.3 ラマ3: サイズとトークン化Llama 3 [11] は、処理コンテキストの長さを4096から8192に増やし、より小規模なモデル(8B)でGQAを使用しました。同時に、研究者らは単語分割ツールをSentence Piece [12] からOpenAIモデルで使用されているDoutons [13] に変更しました。新しい語彙容量は128kトークンに増加し、以前の32kトークンから大幅に改善されたため、この変更によりモデルの性能が大幅に向上しました。 これら2つのトークン化ツールの主な違いは、TikTokenは入力トークンが語彙に既に存在する場合、バイトペアエンコーディング(BPE) [14]の結合規則をスキップすることです。例えば、「generating」という単語が既に語彙に存在する場合、「generating」と「ing」という2つの最小単位のトークンに分割されるのではなく、完全なトークンとして返されます。 2.4 ラマ 3.12024年7月にリリースされたLlama 3.1では、コンテキスト長が大幅に増加(128Kトークン)し、新たに8つの言語のサポートが追加されました。このリリースの重要なハイライトは、Llama 3.1 405Bモデルの大型化です。以前は、オープンエンド型のLLM(大規模言語モデル)のモデルサイズは通常100バイト未満でした。 最後に、Llama モデルの進化を次の表にまとめます。 表 1: コンテキストの長さ、語彙のサイズ、トレーニング データセットのサイズ、およびサポートされる言語の数の観点から見た Llama モデルの進化の比較。 03 ラマ 2 とラマ 3: モデルの比較このセクションでは、Llama2とLlama3のモデルをSQuADデータセットでテストします。SQuADは、CC BY-SA 4.0ライセンスの質問応答データセット(https://huggingface.co/datasets/rajpurkar/squad)です。この読解データセットは、Wikipediaの記事からの一連の質問で構成されています。モデルは、文脈に基づいて質問に対する正しい回答を取得する必要があります。このモデル比較では、データセットに3つの重要なフィールドがあります。
評価プロセスには3つの定量的な指標が含まれます。1つ目は推論速度、2つ目は回答の長さ、3つ目は正確性です。正確性の評価にはRAQ [1]を使用します。RAQは、Llama 2とLlama 3の回答を、真の回答にどれだけ近いかに基づいて独立したLLM(論理的論理尺度)を用いてランク付けします。 まず、両方のモデルの .gguf 形式のファイルをダウンロードして CPU 上で実行できるようにし、それらを model/ フォルダーに配置します。 各モデルの命令バージョンを使用し、4 ビットの量子化を実行しました。
上記の手順を完了したら、必要なライブラリとカスタムジェネレーターをすべてインポートします。このジェネレーターは、入力パラメータとして使用したいモデルを受け入れる関数またはクラスです。 このクラスは、config.yaml 設定ファイルからモデルパラメータを読み込みます。これらのパラメータには、コンテキスト長を 1024 に設定し、モデルの実行温度を 0.7 に調整し、出力トークンの最大数を 2000 に制限することが含まれます。 さらに、システムはLangChainをベースにしたプロンプト単語テンプレートを構築しました。このテンプレートの目的は、質問と関連するコンテキストを大規模言語モデルに送信する前にフォーマットし、より正確な回答を得ることです。 get_llm_response 関数は、読み込まれた大規模言語モデル、関連するコンテキスト、および質問を受け取り、モデルの回答と一連の定量的評価メトリックを出力する役割を担います。 評価後、様々な指標を視覚化した結果、 Llama 3はLlama 2よりも高速で、平均1.1語/秒の回答を生成したのに対し、Llama 2はわずか0.25語/秒でした。回答の長さに関しては、 Llama 3は平均70語と長い回答を生成したのに対し、Llama 2 7Bの平均回答の長さはわずか15語でした。相対的回答品質(RAQ)評価フレームワークに基づくと、 Llama 3は約1.25という平均スコアで1位にランクインしましたが、Llama 2は平均約1.8とわずかに劣りました。 図9:ラマ2 7B vs ラマ3 8B(著者提供画像) 表2は、異なる言語モデルの性能に関するDunn事後検定の結果を示しています。各セルは、2つのモデル間の性能差が5%の有意水準で統計的に有意であるかどうかを示しています。「有意」は統計的に有意な差がある(p値が0.05を超えない)ことを意味し、「有意でない」はモデル間の性能差が統計的に有意ではない(p値が0.05を超える)ことを意味します。検定結果によると、Llama 3とLlama 2のパフォーマンス差は有意です。 表2: 異なるLLMモデル間のパフォーマンスランキングの違いの有意性分析 最後に、定性的な観点から、2つのモデルの具体的な質問「すべての新築および改築において、エネルギー規制の要件をどの程度改善することが目標となるか」に対する回答を分析しました。どちらのモデルも、以下の文脈情報に基づいてこの質問に正しく回答しました。 次に、以下に示すように、ラマ2は当初、答えは与えられた文脈には存在しないと述べていましたが、最終的には文脈から引用して答えを出しており、矛盾しているように見えます。一方、ラマ3は文脈から正確に答えを見つけ出し、簡潔かつ明確な正解を返しました。 04 結論Llamaモデルは開発過程において継続的に改良され、言語タスクにおける効率性とパフォーマンスが向上し、より幅広いアプリケーションシナリオへの適応性が向上しました。最初のLlama 1から、RMSnorm入力正規化やより滑らかな活性化関数といった根本的な変更が導入され、その後の各モデルバージョンではこれらの基盤をさらに改良してきました。 Llama 2 では、推論効率を向上させるために GQA を採用することでこのアプローチを最適化し、Llama 3 でのさらなる改善への道を開きました。これを基に、Llama 3 ではより小さなモデルに GQA を適用し、より効率的なトークナイザーとより大きな語彙を使用し、コンテキストの長さを 2 倍にして、トレーニング データの量を大幅に増やしています。 Llamaバージョン3.1は新たな章を開きました。コンテキスト長が128Kトークンに拡張され、サポート言語がさらに増え、これまでで最大のオープンモデルである405Bモデルが導入されました。 Llamaモデルは継続的なアップグレードによって、様々なアプリケーションシナリオへの適応性が非常に高くなっています。現在までにLlamaモデルは3億回以上ダウンロードされており、独自のLLM技術を活用した数千もの製品への統合は、ほんの始まりに過ぎません。皮肉なことに、Llamaは現在、オープンAI開発の最前線に立っており、よりオープンなOpenAIがかつて占めていた地位を奪っています。 参考文献[1] Luís Roque、Rafael Guedes。「研究から製品化へ:相対的回答品質(RAQ)とNVIDIA NIM」Towards Data Science、Medium、2024年。 [2] ユーゴ・トゥヴロン、ティボー・ラブリル、ゴーティエ・イザカール、ザビエル・マルティネ、マリー=アンヌ・ラショー、ティモシー・ラクロワ、バティスト・ロジエール、ナマン・ゴヤル、エリック・ハンブロ、ファイサル・アズハル、オーレリアン・ロドリゲス、アルマン・ジュラン、エドゥアール・グラーヴ、ギョーム・ランプル。 「Llama: オープンで効率的な基盤言語モデル」 arXiv プレプリント arXiv:2302.13971、2023。 [3] アシシュ・バスワニ、ノーム・シェイザー、ニキ・パーマー、ヤコブ・ウスコレイト、ライオン・ジョーンズ、エイダン・N・ゴメス、ルカシュ・カイザー、イリア・ポロスキン。 「必要なのは注意力だけです。」 arXiv プレプリント arXiv:1706.03762、2017。 [4] Tom B. Brown、Benjamin Mann、Nick Ryder、Melanie Subbiah、Jared Kaplan、Prafulla Dhariwal、Arvind Neelakantan、Pranav Shyam、Girish Sastry、Amanda Askell、Sandhini Agarwal、Ariel Herbert-Voss、Gretchen Krueger、Tom Henighan、Rewon Child、Aditya Ramesh、Daniel M. Ziegler、Jeffrey Wu、Clemens Winter、Christopher Hesse、Mark Chen、Eric Sigler、Mateusz Litwin、Scott Gray、Benjamin Chess、Jack Clark、Christopher Berner、Sam McCandlish、Alec Radford、Ilya Sutskever、Dario Amodei。「言語モデルは少数ショット学習者である」arXivプレプリントarXiv:2005.14165、2020年。 [5] Biao Zhang、Rico Sennrich。「Root Mean Square Layer Normalization」arXivプレプリントarXiv:1910.07467、2019年。 [6] Noam Shazeer. 「GLUバリアントがTransformerを改善する」arXivプレプリントarXiv:2002.05202, 2020年。 [7] Jianlin Su、Yu Lu、Shengfeng Pan、Ahmed Murtadha、Bo Wen、Yunfeng Liu。 「RoFormer: ロータリー位置埋め込みを備えた強化されたトランスフォーマー」 arXiv プレプリント arXiv:2104.09864、2021。 [8] ヒューゴ・トゥヴロン、ルイ・マーティン、ケビン・ストーン、ピーター・アルバート、アムジャド・アルマハイリ、ヤスミン・ババエイ、ニコライ・バシリコフ、ソウミャ・バトラ、プラジワル・バルガヴァ、シュルティ・ボサール、ダン・ビケル、ルーカス・ブレッチャー、クリスティアン・カントン・フェレール、モヤ・チェン、ギレム・ククルル、デビッド・エシオブ、ジュード・フェルナンデス、ジェレミー・フー、ウェンイン・フー、ブライアン・フラー、シンシア・ガオ、ヴェダヌジ・ゴスワミ、ナマン・ゴヤル、アンソニー・ハーツホルン、サガー・ホッセイニ、ルイ・ホウ、ハカン・イナン、マルシン・カルダス、ヴィクトール・ケルケズ、マディアン・カブサ、イザベル・クルーマン、アルテム・コレネフ、プニット・シン・コウラ、マリー=アンヌ・ラショー、ティボー・ラブリル、ジェーニャ・リー、ダイアナリスコビッチ、インハイ・ルー、ユーニンマオ、ザビエル・マルティネット、トドール・ミハイロフ、プシュカル・ミシュラ、イーゴリ・モリボグ、イーシン・ニー、アンドリュー・ポールトン、ジェレミー・ライゼンシュタイン、ラシ・ルンタ、カリヤン・サラディ、アラン・シェルテン、ルアン・シルバ、エリック・マイケル・スミス、ランジャン・スブラマニアン、シャオチン・エレン・タン、ビン・タン、ロス・テイラー、アディーナ・ウィリアムズ、ジャン・シャン・クアン、プーシンシュー、ジェン・ヤン、イリヤーン・ザロフ、ユチェン・チャン、アンジェラ・ファン、メラニー・カンバドゥル、シャラン・ナラン、オレリアン・ロドリゲス、ロバート・ストジニッチ、セルゲイ・エドノフ、トーマス・シャロム。 「Llama 2: オープンな基盤と微調整されたチャット モデル」 arXiv プレプリント arXiv:2307.09288、2023。 [9] Noam Shazeer. 「高速トランスフォーマーデコード:必要なのは書き込みヘッド1つだけ」arXivプレプリントarXiv:1911.02150, 2019年。 [10] Joshua Ainslie、James Lee-Thorp、Michiel de Jong、Yury Zemlyanskiy、Federico Lebrón、Sumit Sanghai。「GQA:マルチヘッドチェックポイントからの一般化マルチクエリTransformerモデルのトレーニング」arXivプレプリントarXiv:2305.13245、2023年。 [11] メタAI。 「Llama 3 のご紹介」メタ AI ブログ、2024 年。 [12] 工藤 拓、ジョン・リチャードソン「SentencePiece:ニューラルテキスト処理のためのシンプルで言語に依存しないサブワードトークナイザーとデトークナイザー」arXivプレプリントarXiv:1808.06226、2018年。 [13] オープンAI。 「ティックトークン」。 GitHub。 [14] リコ・ゼンリッチ、バリー・ハドウ、アレクサンドラ・バーチ。「サブワード単位を用いた希少単語のニューラル機械翻訳」arXivプレプリントarXiv:1508.07909、2015年。 読んでくれてありがとう! このブログを楽しんで、新しいことを学んでいただければ幸いです。 著者について ルイス・ロケ AI分野の連続起業家でありリーダー。企業向けAI製品の開発やAIに特化したスタートアップへの投資を行っています。 https://www.linkedin.com/in/luisbrasroque/ 終わり 今週のインタラクティブコンテンツ🍻 記事によると、LlamaモデルはGQAや効率的な単語セグメンテーションなど、複数の最適化手法を採用しているとのことです。これらの最適化のうち、モデルのパフォーマンス向上に最も重要なのはどれだと思いますか?その理由も教えてください。 オリジナルリンク: https://towardsdatascience.com/the-evolution-of-llama-from-llama-1-to-llama-3-1-13c4ebe96258 |
01 はじめに02 Llama: オープンLLMファミリー2.1 ラマ1:シリーズの最初のモデルがリリースされました。2.2 ラマ2: ラマ1のアップグレード版2.3 ラマ3: サイズとトークン化2.4 ラマ 3.103 ラマ 2 とラマ 3: モデルの比較04 結論参考文献 |