AIモデルとプラットフォーム
Llama 2: 大規模言語モデルにおけるオープンソースの挑戦者への深い潜り込み
大規模言語モデル(LLM)は、プログラミングや創造的な文章作成などの特殊なドメインで複雑な推論タスクを実行する能力を実証してきました。ただし、LLMの世界はただプラグアンドプレイの楽園ではありません。使いやすさ、安全性、計算要求性などの課題があります。この記事では、Llama 2の機能について深く掘り下げると同時に、Hugging FaceとGoogle ColabのT4 GPUを使用してこの高性能LLMを設定するための詳細な手順を提供します。
MetaとMicrosoftのパートナーシップによって開発されたLlama 2は、オープンソースの大規模言語モデルであり、生成的なAIと自然言語理解の分野を再定義することを目指しています。Llama 2は単にテラバイトのデータでトレーニングされた統計モデルではなく、AI開発、特に生成的なAIの分野でオープンソースアプローチを強調する哲学の体現です。
Llama 2とそのダイアログ最適化バージョンのLlama 2-Chatは、最大70億パラメータを備えています。これらは、人間の好みに近づけることを目的としたファインチューニングプロセスを経て、他の公開されているモデルよりも安全で効果的です。このレベルの粒度のファインチューニングは、通常、ChatGPTやBARDなどのクローズド「製品」LLMに予約されています。これらのモデルは、一般的に公開されたものではなく、公開されたものではありません。
Llama 2の技術的な深い潜り込み
Llama 2モデルをトレーニングするには、その前身と同様に、自己教師ありのデータの広範なコーパスで事前トレーニングされたオートレグレッシブトランスフォーマーアーキテクチャを使用します。ただし、人間の行動や好みに近づけるために、強化学習と人間のフィードバック(RLHF)を使用するという追加の複雑さを加えます。これは計算コストが高いですが、モデルの安全性と有効性を向上させるために不可欠です。
事前トレーニングとデータ効率
Llama 2の基礎的な革新は、その事前トレーニング体制にあります。モデルはその前身であるLlama 1からヒントを得て、いくつかの重要な改善を導入してそのパフォーマンスを向上させました。特に、トレーニングされたトークンの総数が40%増加し、コンテキスト長が2倍に拡大したことが際立っています。さらに、モデルは推論のスケーラビリティを高めるために、グループ化されたクエリ注意(GQA)を利用しています。
教師ありファインチューニング(SFT)と人間のフィードバックによる強化学習(RLHF)
Llama-2-Chatは、SFTとRLHFの両方を使用して厳格にファインチューニングされています。この文脈では、SFTはRLHFフレームワークの不可欠なコンポーネントであり、モデルの応答を人間の好みや期待に近づけるために役立ちます。
OpenAIは、InstructGPTで使用されているSFTとRLHF手法について、洞察的な説明を提供しています。Llama 2と同様に、InstructGPTもこれらの高度なトレーニング手法を使用してモデルのパフォーマンスを最適化しています。
以下の画像のステップ1は、教師ありファインチューニング(SFT)に焦点を当てており、以降のステップは人間のフィードバックによる強化学習(RLHF)プロセスを完了します。
教師ありファインチューニング(SFT)は、事前トレーニングされた大規模言語モデル(LLM)を、特定のダウンストリームタスクに最適化することを目的とした特殊なプロセスです。無教師法と異なり、データの検証が不要であるのに対し、SFTでは、事前に検証およびラベル付けされたデータセットを使用します。
一般的に、これらのデータセットを作成することはコストがかかり、時間がかかるプロセスです。Llama 2のアプローチは、質よりも量を優先しました。27,540の注釈のみで、Metaのチームは人間のアノテーターと競合するレベルのパフォーマンスを達成しました。これは、限られたがクリーンなデータセットが高い品質の結果をもたらすことができることを示唆する最近の研究と一致しています。
SFTプロセスでは、事前トレーニングされたLLMはラベル付けされたデータセットに公開され、教師あり学習アルゴリズムが活用されます。モデルの内部重みは、タスク固有の損失関数から計算された勾配に基づいて再調整されます。この損失関数は、モデルの予測出力と実際のグラウンドトゥルースラベル間の不一致を量化します。
この最適化により、モデルはラベル付けされたデータセットに埋め込まれた複雑なパターンやニュアンスを理解することができます。結果として、モデルは一般化されたツールではなく、ターゲットタスクを高い精度で実行する特殊な資産に進化します。
強化学習は、モデルを人間の好みに近づけることを目的とした次のステップです。
調整段階では、人間のフィードバックによる強化学習(RLHF)が活用され、重要性サンプリングや近接ポリシーオプティマイゼーションなどの手法を使用してアルゴリズム的ノイズを導入し、局所的最適解を回避します。この反復的なファインチューニングにより、モデルが改善されるだけでなく、その出力が人間の期待と一致するようになります。
Llama 2-Chatは、人間の好みデータを収集するために二項比較プロトコルを使用しました。これは、より質的アプローチへの注目に値する傾向です。このメカニズムは、会話AIモデルをファインチューニングするために使用される報酬モデルに情報を提供します。
ゴースト注意:マルチターンディアログ
Metaは、Llama 2のパフォーマンスをマルチターンディアログで向上させるために、ゴースト注意(GAtt)と呼ばれる新しい機能を導入しました。これにより、継続的な会話でのコンテキストの喪失という永続的な問題が解決されます。GAttは、初期の指示とすべての後のユーザーメッセージをリンクするアンカーとして機能し、強化学習手法と組み合わせて、長い会話の中で一貫した、関連性のある、ユーザーに合わせた応答を生成するのに役立ちます。
Meta Gitリポジトリからdownload.shを使用して
- Metaのウェブサイトを訪問する:Metaの公式Llama 2サイトに移動し、モデルをダウンロードします。
- 詳細を入力する:続行するために、利用規約を読み、同意します。
- メールの確認:フォームの提出後、Metaからモデルをダウンロードするためのリンクが含まれたメールを受け取ります。
- download.shを実行する:Gitリポジトリをクローンし、
download.shスクリプトを実行します。このスクリプトは、有効期限が24時間のMetaのURLを使用した認証を求めます。モデルサイズ(7B、13B、または70B)も選択します。
Hugging Faceから
- 受け入れメールを受け取る:Metaからアクセスを得た後、Hugging Faceに移動します。
- アクセスを要求する:希望するモデルを選択し、アクセスを要求します。
- 確認:1~2日以内にアクセスが許可されたことを通知するメールを受け取ります。
- アクセストークンを生成する:Hugging Faceアカウントの「設定」に移動して、アクセストークンを作成します。
Transformers 4.31リリースは、LLaMa 2と完全に互換性があり、Hugging Faceエコシステム内で多くのツールや機能を提供します。トレーニングスクリプトや推論スクリプト、bitsandbytesによる4ビット量子化、PEFT(Parameter Efficient Fine-tuning)など、ツールキットは広範囲にわたります。開始するには、最新のTransformersリリースに更新され、Hugging Faceアカウントにログインしていることを確認してください。
ここでは、GPUランタイムを使用したGoogle Colab環境でLlama 2モデルの推論を実行するための簡略化されたガイドを提供します。
パッケージのインストール
<p>!pip install transformers !huggingface-cli login
必要なPythonライブラリをインポートします。
from transformers import AutoTokenizer import transformers import torch
モデルとトークナイザーの初期化
このステップでは、使用するLlama 2モデルの指定が必要です。このガイドでは、meta-llama/Llama-2-7b-chat-hfを使用します。
model = "meta-llama/Llama-2-7b-chat-hf" tokenizer = AutoTokenizer.from_pretrained(model)
パイプラインの設定
特定の設定でテキスト生成のためのHugging Faceパイプラインを利用します。
pipeline = transformers.pipeline( "テキスト生成", model=model, torch_dtype=torch.float16, device_map="auto")
テキストシーケンスの生成
最後に、パイプラインを実行して入力に基づいてテキストシーケンスを生成します。
sequences = pipeline(
'人工知能の分野に貢献した主な人物は誰ですか?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200)
for seq in sequences:
print(f"結果:{seq['generated_text']}")
A16ZのLLaMa 2用UI
Andreessen Horowitz(A16Z)は、StreamlitベースのチャットボットインターフェイスをLLama 2用に導入しました。このUIはGitHubでホストされており、セッションのチャット履歴を保存し、Replicateでホストされている複数のLLama 2 APIエンドポイントを選択する柔軟性も提供します。このユーザー中心の設計は、開発者とエンドユーザーにとってLLama 2とのやり取りを簡素化することを目的としています。興味がある場合は、Llama2.aiでライブデモを利用できます。
Llama 2:GPTモデルやその前身Llama 1と比べて何が違うのか
スケールの多様性
多くの言語モデルが限られたスケーラビリティを提供するのに対し、Llama 2はさまざまなパラメータを持つモデルの幅広い選択肢を提供します。モデルは7億から70億パラメータまでスケールし、さまざまな計算要件に合わせてさまざまな構成を提供します。
コンテキスト長の強化
モデルには、Llama 1よりも4Kトークンの長いコンテキスト長があります。これにより、より複雑で広範なコンテンツを理解して生成する能力が向上します。
グループ化されたクエリ注意(GQA)
アーキテクチャは、GQAと呼ばれる概念を使用して、推論の計算プロセスを高速化するために、前のトークンパーをキャッシュします。これにより、推論のスケーラビリティが向上し、利用可能性が高まります。
パフォーマンスベンチマーク
Llama 2はパフォーマンスメトリックで新しい基準を設けています。前身のLlama 1を上回るだけでなく、FalconやGPT-3.5などの他のモデルとも競合するパフォーマンスを示しています。
Llama 2-Chatの最大モデルである70Bは、36%のケースでChatGPTを上回り、さらに31.5%のケースでパフォーマンスを一致させています。出典:論文
オープンソース:コミュニティの力
MetaとMicrosoftは、Llama 2を単なる製品ではなく、コミュニティ主導のツールとして見ています。Llama 2は、研究および非商用目的のために無料でアクセス可能です。AIの能力をスタートアップ、研究者、ビジネスにまで拡大し、民主化することを目指しています。オープンソースのパラダイムにより、モデルを「クラウドソースによるトラブルシューティング」できます。開発者やAI倫理学者は、脆弱性を特定し、解決策を提供できるようになります。
現在のLlama 2の課題
- データの汎化:Llama 2とGPT-4は、さまざまなタスクで一貫した高いパフォーマンスにときどき失敗します。データの品質と多様性は、ボリュームと同等に重要です。
- モデルの透明性:AIが誤解を招く出力を生み出す前の失敗を考えると、これらの複雑なモデルの意思決定の根拠を探ることは重要です。
Code Llama – Metaの最新の発表
Metaは、Code Llamaを発表しました。これは、7Bから34Bまでのパラメータサイズを備えた、プログラミングに特化した大規模言語モデルです。同様に、ChatGPT Code Interpreter;Code Llamaは、開発者のワークフローを合理化し、プログラミングをよりアクセスしやすくできます。Code Llamaは、Pythonなどの特定のタスク向けに特殊化されたバージョンを備えており、さまざまなプログラミング言語をサポートします。また、さまざまな待ち時間要件に合わせてさまざまなパフォーマンスレベルを提供します。オープンライセンスのため、Code Llamaはコミュニティからの入力を歓迎し、継続的な改善を促進します。
https://about.fb.com/news/2023/08/code-llama-ai-for-coding/
結論
この記事では、Hugging Faceを使用してGoogle ColabでLlama 2モデルのテキスト生成を設定する方法について説明しました。Llama 2のパフォーマンスは、オートレグレッシブなトランスフォーマーアーキテクチャから人間のフィードバックによる強化学習まで、さまざまな高度な手法によって推進されています。最大70億パラメータとゴースト注意などの機能を備えたこのモデルは、特定の分野で現在の業界標準を上回り、そのオープンな性質により、自然言語理解と生成的なAIの新しい時代の道を切り開いています。

















