見出し画像

GPT-4を上回ると話題の日本語オープンLLM「Llama-3-ELYZA-JP-8B」を検証する。

こんにちは!株式会社IZAI、エンジニアチームです。 今回はLlama-3-ELYZA-JPという日本語に特化した最新LLMの性能を検証していきます。

本検証では、GPT-3.5-turboを上回るとされる軽量な8Bモデルを用いています。
GPT-4を上回るとされる70Bモデルではありません。


Llama-3-ELYZA-JPとは


Llama-3-ELYZA-JPは株式会社ELYZAが先日一般公開した日本語特化LLMでありMeta社の「Llama 3」をベースに追加学習を加えることで「Llama-3-ELYZA-JP-70B」(700億パラメータ)と「Llama-3-ELYZA-JP-8B」(80億パラメータ)が開発しました。
どちらも元モデルを追加学習させて開発されており、日本語機能が大幅に向上しています。
また両モデルとも日本語の性能を測定するための2つのベンチマークを用いた自動評価において最高水準を記録し、既存モデルである「GPT-4」や「GPT-3.5-turbo」と同等あるいはそれ以上の性能を達成しています。

「Llama-3-ELYZA-JP-70B」の性能比較(vs 主要グローバルモデル)
「Llama-3-ELYZA-JP-8B」の性能比較(vs 主要な軽量グローバルモデル)

出典:PR TIMES
なお、開発プロセスや評価のより詳細な状況についてはこちらを是非ご覧ください。

検証してみる


実際の性能評価はELYZA社のnote記事で詳しく検証されていますが、今回は実際に手を動かしてモデル性能の向上を実感してみます。
(8Bモデルのみの検証となります。)

1.実装環境

今回の検証モデルをローカル環境で動かすのにGPU RAMが20GB程度必要なのでColabのA100を使用しました。

2.検証方法

ELYZA社が公開しているモデル検証用のデータセットの中からタスクを1つ使用して、以下の3つのモデルで検証します。

2-1. 検証モデル

  • Llama-3-ELYZA-JP-8B: 今回発表された最新モデル

  • GPT-3.5-Turbo:同等の性能を持つ既存モデル

  • Meta-Llama-3-8B-Instruct:最新モデルの元となったモデル

2-2. 検証タスク

  • プロンプト:木曜日の5日後は何曜日でしょう?

  • 正解例:"順番に曜日を数えていきます。1日後: 金曜日、2日後: 土曜日、3日後:  日曜日、4日後: 月曜日、5日後: 火曜日 よって木曜日の5日後は火曜日です。

  • 評価方法:正解の場合5点、不正解の場合1点

3.検証手順

検証用のコードはMeta社がHuggingFaceで公開しているものを参考にさせていただいてます。

3.1 HuggingFace

以下のコードでHuggingFaceにログインして検証モデルのアクセスを可能にします。

!huggingface-cli login --token ここにアクセストークンを入力してください

HuggingFaceの利用が初めての場合は、アカウントの作成、APIキーの取得、使用モデルの利用許諾が必要になります。
詳しくはこちらをご覧ください!

3.2 パッケージのインストール

はじめに実行に必要なパッケージをインストールします。

# パッケージのインストール
!pip install -U transformers accelerate bitsandbytes

3.3 モデルの構築

以下のコードでトークナイザーとモデルの準備をします。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "elyza/Llama-3-ELYZA-JP-8B"

#使用モデルの設定
#トークナイザーの設定
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
)

#citations

@misc{elyzallama2024,
      title={elyza/Llama-3-ELYZA-JP-8B},
      url={https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B},
      author={Masato Hirakawa and Shintaro Horie and Tomoaki Nakamura and Daisuke Oba and Sam Passaglia and Akira Sasaki},
      year={2024},
}

@article{llama3modelcard,
    title={Llama 3 Model Card},
    author={AI@Meta},
    year={2024},
    url = {https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md}
}

3.4 推論の実行

import torch

# プロンプトの準備
chat = [
    { "role": "system", "content": "あなたは優れた日本人のAIアシスタントです。特に指定がない場合は日本語で回答してください。" },
    { "role": "user", "content": "木曜日の5日後は何曜日でしょう?" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)

# 推論の実行
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
with torch.no_grad():
    output_ids = model.generate(
        token_ids.to(model.device),
        do_sample=True,
        temperature=0.6,
        top_p=0.9,        
        max_new_tokens=256,
        eos_token_id=[
            tokenizer.eos_token_id,
            tokenizer.convert_tokens_to_ids("<|eot_id|>")
        ],
    )
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True)
print(output)

上記のコードを実行して得られた出力結果がこちらになります。

Meta-Llama-3-8B-Instruct

木曜日の5日後は火曜日です。

Llama-3-ELYZA-JP-8B

木曜日から5日後を計算します。

木曜日から数えて、1週間は7日ですから、5日後は2日後と同じ曜日になります。

木曜日の次の日は金曜日、次の次は土曜日、次の次の次は日曜日、次の次の次の次は月曜日、次の次の次の次の次は火曜日です。

したがって、木曜日の5日後は火曜日です。

GPT-3.5-Turbo

木曜日の5日後は火曜日です。

どのモデルも評価基準から見れば同レベルの出力結果となりましたが、Llama-3-ELYZA-JP-8Bが唯一正解に至るまでの過程を示してくれています。これは日本語に特化しているモデルだからこその性能といえるのではないでしょうか。
今回は1タスクのみの検証ですが、GPT-3.5-Turboと同レベルの文章生成が行われているように思います。

まとめ


今回はELYZA社が開発した日本語性能に特化した最新大規模言語モデルであるLlama-3-ELYZA-JPを検証していきました。
そのままで既存の高性能モデルと相違ない生成をしてくれるので、ここからファインチューニングを行うことで更なる機能の向上が見込めます。
これからの研究、開発で情報の守秘下でのモデルの使用が求められる企業のニーズに応える一つの手となりそうです。


以上、参考になった方はいいねやコメント頂けると嬉しいです! 株式会社IZAIでは、自然言語処理・音声合成・ロボティクス技術の研究開発・サービス提供をしております。興味をお持ちいただいた方はお気軽にお問い合わせください。それではまた!

参考

[1] ELYZA、「GPT-4」を上回る性能の日本語LLMを開発・公開
[2] Google Colab で Llama 3 を試す
[3] elyza/Llama-3-ELYZA-JP-8B
[4] elyza/ELYZA-tasks-100
[5] meta-llama-3-8b-instruct
[6]「GPT-4」を上回る日本語性能のLLM「Llama-3-ELYZA-JP」を開発しました


この記事が気に入ったらサポートをしてみませんか?