Llama 2 のリリースと Hugging Face との統合

Meta は、商用利用が可能な最先端のオープンアクセス大規模言語モデル(LLM)ファミリーである Llama 2 をリリースしました。このリリースにより、コミュニティには、クローズドソースのチャットボットに代わる高性能なオープンな選択肢を提供する、事前学習済みおよび微調整済みのモデルが提供されます。

Llama 2 モデルの仕様と改善点

Llama 2 は、7B から 70B パラメータのモデルファミリー(具体的には 7B、13B、70B)で構成されています。これらのモデルは、オリジナルの Llama 1 シリーズに対していくつかの技術的な改善を導入しています:

  • トレーニングデータの増加: 事前学習済みモデルは、Llama 1 よりも 40% 多いトークンでトレーニングされています。
  • コンテキストウィンドウの拡大: コンテキスト長が 4k トークンに増加しました。
  • 推論の最適化: 70B モデルは、より高速な推論を可能にするために grouped-query attention を利用しています。

Llama 2-Chat: 対話の最適化

Llama 2-Chat モデルは、ベースモデルの微調整版であり、人間からのフィードバックによる強化学習(RLHF)を使用して、対話アプリケーション向けに特別に最適化されています。人間による評価によると、Llama 2-Chat モデルは ChatGPT に匹敵するパフォーマンスを達成しており、さまざまな安全性および有用性のベンチマークにおいて、他のほとんどのオープンモデルを凌駕しています。

Hugging Face との統合とデプロイ

Hugging Face は、デプロイと微調整を容易にするために、Llama 2 をそのエコシステムに統合しました。利用可能な統合には以下が含まれます:

  • Transformers Library: リリース 4.31 からのフルサポートにより、ユーザーは safetensorsbitsandbytes による 4-bit 量子化、および Parameter-Efficient Fine-Tuning (PEFT) を活用できます。
  • Text Generation Inference (TGI): 継続的なバッチ処理、トークンストリーミング、およびマルチ GPU セットアップ用のテンソル並列をサポートする、プロダクション向けのコンテナです。
  • Inference Endpoints: 推奨されるハードウェア構成を備えたマネージドデプロイメントオプション:
    • 7B モデル: 1x Nvidia A10G (GPU medium)
    • 13B モデル: 1x Nvidia A100 (GPU xlarge)
    • 70B モデル: bitsandbytes 量子化を使用した 2x Nvidia A100 (GPU 2xlarge) または 4x Nvidia A100 (GPU 4xlarge)

PEFT と QLoRA による効率的な微調整

Llama 2 は、QLoRA と trl ライブラリの SFTTrainer を使用して、コンシューマーグレードのハードウェアで微調整できます。例えば、7B バリアントは、Google Colab で利用可能な単一の NVIDIA T4 GPU (16GB) で指示チューニング(instruction-tuned)が可能です。このプロセスにより、ユーザーは LoRA の重みをモデルの重みにマージし、TGI または Inference Endpoints を介したプロダクションデプロイ用に safetensor 重みとして保存できます。

Llama 2-Chat のプロンプティングフレームワーク

Llama 2-Chat は、トレーニング手順との一貫性を維持するために、特定のプロンプトテンプレートを必要とします。このテンプレートは、システム指示をユーザーメッセージから分離するために特殊なトークンを使用します:

First Turn Template: `[INST] <> {{ system_prompt }} <>

{{ user_message }} [/INST]`

Multi-turn Conversation Template: `[INST] <> {{ system_prompt }} <>

{{ user_msg_1 }} [/INST] {{ model_answer_1 }} [INST] {{ user_msg_2 }} [/INST]`

Llama 2 はオープンアクセスモデルであるため、ユーザーは system_prompt を完全に制御でき、クローズドソースの API に見られる制限なしに、アシスタントの個性や行動を定義できます。この機能は、異なるプロンプトがモデルの挙動や安全性に与える影響を研究している研究者にとって特に有用です。

Sources