人工知能
Llama 2: ChatGPTに挑戦するオープンソースの深い掘り下げ

大規模言語モデル(LLM)は、プログラミングや創作書き込みなどの専門的なドメインで複雑な推論タスクを実行する可能性を示しています。ただし、LLMの世界は単純にプラグアンドプレイの楽園ではありません。使いやすさ、安全性、計算要求などの課題があります。この記事では、Llama 2の機能について深く掘り下げると同時に、Hugging FaceとGoogle ColabのT4 GPUを使用してこの高性能LLMを設定するための詳細な手順を提供します。
MetaとMicrosoftのパートナーシップによって開発されたこのオープンソースの大規模言語モデルは、生成的なAIと自然言語理解の領域を再定義することを目指しています。Llama 2は、単にテラバイトのデータで訓練された別の統計モデルではありません。開発におけるオープンソースアプローチを強調する哲学の体現です。特に、生成的なAIのスペースではそうです。
Llama 2とそのダイアログ最適化された代替品であるLlama 2-Chatは、最大70億パラメータを備えています。これらは、人間の好みに近づけるために設計された微調整プロセスを経て、安全性と有効性が向上しています。このレベルの微調整の粒度は、通常、クローズド「製品」LLM、たとえばChatGPTやBARDに予約されています。これらは、一般的に公開の検査やカスタマイズには利用できません。
技術的な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はラベル付けされたデータセットに公開され、監督学習アルゴリズムが活用されます。モデルの内部重みは、タスク固有の損失関数から計算された勾配に基づいて再調整されます。この損失関数は、モデルの予測出力と実際の正解ラベルの間の不一致を量化します。
この最適化により、LLMはラベル付けされたデータセットに埋め込まれた複雑なパターンとニュアンスを把握することができ、一般的なツールではなく、ターゲットタスクを高い精度で実行する特殊なツールに進化します。
次のステップは、モデルの動作を人間の好みに近づけることを目的とした強化学習です。
調整段階では、重要性サンプリングや近似ポリシーグラディエント法などの技術を使用して、アルゴリズム的ノイズを導入し、ローカル最適解を回避します。この反復的な微調整により、モデルのパフォーマンスが向上し、出力が人間の期待に近づきます。
Llama 2-Chatは、人間の好みデータを収集するために、二項比較プロトコルを使用しました。これは、より質的アプローチへの注目に値する傾向です。このメカニズムは、報酬モデルに情報を提供し、会話AIモデルの微調整に使用されます。
ゴースト注意: マルチターンダイアログ
Metaは、Llama 2のマルチターンダイアログのパフォーマンスを向上させるために、ゴースト注意(GAtt)という新しい機能を導入しました。これにより、継続的な会話でのコンテキストの喪失という恒久的な問題が解決されます。GAttはアンカーの役割を果たします。初期の指示をすべての後のユーザーメッセージに結び付け、強化学習技術と組み合わせて、より一貫した関連性のあるユーザーと一致した応答を生成するのに役立ちます。
Meta Gitリポジトリからdownload.shを使用して
- Metaのウェブサイトを訪問する: Metaの公式Llama 2サイトに移動し、’モデルをダウンロード’をクリックします。
- 詳細を入力する: 条件を読み、続行するために同意します。
- メールの確認: フォームの提出後、MetaからモデルをGitリポジトリからダウンロードするリンクが含まれたメールを受け取ります。
- 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アカウントにログインしていることを確認してください。
ここでは、Hugging Faceアカウントにログインし、GPUランタイムを利用するGoogle Colab環境で、Llama 2モデルを簡単に実行するためのガイドを提供します:
パッケージのインストール
!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( "text-generation", 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)は、Llama 2用にカスタマイズされたStreamlitベースのチャットボットインターフェイスを最近立ち上げました。これは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の機能を民主化し、スタートアップ、研究者、企業にアクセス可能にすることを目指しています。オープンソースのパラダイムにより、モデルを迅速にテストし、脆弱性を特定し、解決策を提供できるようになります。
Llama 2のライセンス条件は一般的に寛容ですが、例外があります。月間700万以上のユーザーを持つ大規模企業、たとえばGoogleは、その利用のためにMetaから明示的な承認が必要です。さらに、ライセンスでは、Llama 2を他の言語モデルを改善するために使用することを禁止しています。
現在のLlama 2の課題
- データの汎化: Llama 2とGPT-4は、さまざまなタスクで一貫した高いパフォーマンスに苦労することがあります。データの質と多様性は、量と同様に重要です。
- モデルの透明性: 以前のセットバックから、AIが誤解を招く出力を生成することがあるため、これらの複雑なモデルの意思決定の根底にある理由を探ることが重要です。
Code Llama – Metaの最新リリース
Metaは最近、Code Llamaを発表しました。これは、7Bから34Bのパラメーターサイズのプログラミングに特化した大規模言語モデルです。同様に、ChatGPTコードインタープリター;Code Llamaは、開発者のワークフローを簡素化し、プログラミングをよりアクセスしやすくすることができます。さまざまなプログラミング言語をサポートし、Python専用タスク用の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の新しい時代の道を切り開いています。

















