Meta社の新しいオープンソースLLMモデル「Llama 3」がリリースされました

LLM

Meta社が、オープンソースの大規模言語モデル(LLM)ファミリー「Llama」の最新版である「Llama 3」を2024年4月18日にリリースしました。Llama 3モデルはHugging Faceからアクセス可能で、Hugging Faceエコシステムに包括的に統合されています。

Llama 3の概要

Llama 3には以下の2つのサイズのモデルがあります。

  1. 8B(80億)パラメータ: 一般的なGPUで効率的に開発・デプロイ可能
  2. 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モデルの推論を実行できます。

  1. Hugging Face Inference Endpointsへのデプロイ
  2. Google CloudのVertex AIやGoogle Kubernetes Engine(GKE)へのデプロイ
  3. 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の可能性を探ってみてください。

ノートブック

Google Colaboratory

参考サイト

Welcome Llama 3 - Meta's new open LLM
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
meta-llama/Meta-Llama-3-8B at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

コメント

タイトルとURLをコピーしました