Meta社が、オープンソースの大規模言語モデル(LLM)ファミリー「Llama」の最新版である「Llama 3」を2024年4月18日にリリースしました。Llama 3モデルはHugging Faceからアクセス可能で、Hugging Faceエコシステムに包括的に統合されています。
Llama 3の概要
Llama 3には以下の2つのサイズのモデルがあります。
- 8B(80億)パラメータ: 一般的なGPUで効率的に開発・デプロイ可能
- 70B(700億)パラメータ: 大規模なAIネイティブアプリケーション向け
どちらのサイズにも、ベースモデルとインストラクションチューニング済みモデルの2種類があります。加えて、Llama 3の8Bモデルをベースにファインチューニングされた新バージョンの「Llama Guard」が「Llama Guard 2」としてリリースされました。
Hugging Faceエコシステムとの統合
Llama 3は、以下のようにHugging Faceエコシステムに統合されています。
- Hubでのモデル公開(モデルカードとライセンス付き)
- 🤗 Transformersライブラリでの利用
- Llama 3の70Bモデル用のHugging Chatデモ
- Inference Endpoints、Google Cloud、Amazon SageMakerでの推論統合
- 🤗 TRLライブラリを使った8BモデルのシングルGPUでのファインチューニング例
Llama 3の新機能
Llama 3では、語彙数が128,256に拡張された新しいトークナイザーが使用されています(Llama 2の32,000から拡張)。これにより、入出力のテキストをより効率的にエンコードでき、多言語対応力が向上する可能性があります。ただし、埋め込み行列が大きくなるため、8Bモデルのパラメータ数が増加しています。
また、8Bモデルでは、長いコンテキストの処理に役立つ効率的な表現である「Grouped-Query Attention(GQA)」が使用されるようになりました。
🤗 Transformersライブラリでの利用方法
最新バージョンの🤗 Transformers(v4.40.0以降)を使うことで、Llama 3モデルを簡単に利用できます。以下はLlama 3の8Bインストラクションモデルを使った会話の例です。
import transformers
import torch
model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda",
)
messages = [
{"role": "system", "content": "あなたは海賊のチャットボットで、いつも海賊風の言葉で話します!"},
{"role": "user", "content": "あなたは誰ですか?"},
]
prompt = pipeline.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
terminators = [
tokenizer.eos_token_id,
tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipeline(
prompt,
max_new_tokens=256,
eos_token_id=terminators,
do_sample=True,
temperature=0.6,
top_p=0.9,
)
print(outputs[0]["generated_text"][len(prompt):])
推論の統合オプション
以下のようなさまざまな方法で、Llama 3モデルの推論を実行できます。
- Hugging Face Inference Endpointsへのデプロイ
- Google CloudのVertex AIやGoogle Kubernetes Engine(GKE)へのデプロイ
- Amazon SageMakerへのデプロイ(AWS Jumpstartまたは Hugging Face LLMコンテナ経由)
🤗 TRLライブラリを使ったファインチューニング
最新バージョンの🤗 TRLライブラリを使うことで、一般的なGPU上でLlama 3を効率的にファインチューニングできます。以下は、Llama 3を「No Robots」データセットでファインチューニングするためのコマンド例です。
trl sft \
--model_name_or_path meta-llama/Meta-Llama-3-8B \
--dataset_name HuggingFaceH4/no_robots \
--learning_rate 0.0001 \
--per_device_train_batch_size 4 \
--max_seq_length 2048 \
--output_dir ./llama3-sft \
--use_peft \
--load_in_4bit \
--log_with wandb \
--gradient_checkpointing \
--logging_steps 10
まとめ
- Meta社がオープンソースのLLMファミリー「Llama」の最新版「Llama 3」をリリース
- 8Bと70Bの2サイズで、各サイズにベースとインストラクションチューニング済みの2バージョンがある
- 語彙数が拡張され、8Bモデルに効率的なアテンション機構が導入された
- 🤗 Transformersライブラリを使って簡単に利用可能
- 複数の推論基盤に統合済み
- 🤗 TRLライブラリによる効率的なファインチューニングが可能
Llama 3のリリースにより、オープンソースの大規模言語モデルの選択肢が広がりました。ぜひ、Hugging Faceのツールを活用して、Llama 3の可能性を探ってみてください。
コメント