最新動向

Llama 3 の日本語継続事前学習モデル「Llama-3-ELYZA-JP-8B」を試してみる

ELYZA社は2024年6月に日本語LLM「Llama-3-ELYZA-JP」シリーズを発表しました。 

このモデルはMeta社の公開するLLMであるLlama 3シリーズをベースに、日本語追加事前学習および事後学習を行ったことで日本語性能を向上させたモデルです。

本記事では、一般公開されている「Llama-3-ELYZA-JP-8B」についての紹介と検証を行います。 

目次

Llama-3-ELYZA-JP-8Bの特徴

Llama-3-ELYZA-JPには700億パラメータのモデル「Llama-3-ELYZA-JP-70B」と80億パラメータの「Llama-3-ELYZA-JP-8B」があります。70Bの方はデモ版のサイト[1]が公開されており、8Bについては研究・商業目的での利用が可能な形で一般公開されています。

利用ライセンスは元モデルの Meta Llama 3 Community License[2]に準拠しており、このライセンスおよびAcceptable Use Policy[3]に従って利用することができます。

また、OpenAI社のGPT-4oのようにトークン数による利用料を必要としないため、より低コストに生成AIを利用できます。

Llama-3-ELYZA-JP-8Bの性能評価

ELYZAはLlama-3-ELYZA-JP-8Bの日本語の生成能力について、日本語ベンチマークのELYZA Tasks 100[4]と Japanese MT-Bench を用いて評価を行っています。 ELYZA Tasks 100はELYZAが独自に作成・公開した、多様で複雑なタスクとその評価基準から成る100件のデータセットで、各タスクに対する回答を評価基準に基づいて採点し、その平均値で評価します(5点満点)。Japanese MT-Benchは8つのカテゴリについて各10件の質問で構成されており、カテゴリごとの正解数の平均値で評価します(10点満点)。

様々なLLMについて、2つのタスクによる評価結果は以下の表のようになっています。Llama-3-ELYZA-JP-8Bは軽量ながらも「GPT-3.5 Turbo」「Gemini 1.0 Pro」などのモデルに匹敵する日本語性能を達成しています。下記はELYZA社のnote[5]から一部抜粋したものです。

モデル名ELYZA Tasks 100Japanese MT-Bench

GPT-4o

4.320

9.40

Gemini 1.5 Pro

4.275

9.39

Llama-3-ELYZA-JP-70B

4.070

9.08

GPT-4

4.030

9.01

Llama-3-ELYZA-JP-8B

3.655

7.78

GPT-3.5 Turbo

3.475

8.54

Gemini 1.0 Pro

3.515

8.49

Meta-Llama-3-8B-Instruct

3.000

7.49

Llama-3-ELYZA-JP-8Bの使い方

Llama-3-ELYZA-JP-8BはHugging Face[6]上で公開されており、transformers ライブラリからモデル名を指定することで利用することができます。

#必要なライブラリをインストールする  
pip install torch transformers 

ライブラリをインストール後、以下のサンプルコードのように相手の設定を「DEFAULT_SYSTEM_PROMPT」に、ユーザーが送信するテキストを「text」に入力して実行することで文章を生成できます。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# システムプロンプト(初期設定)
DEFAULT_SYSTEM_PROMPT = "あなたは誠実で優秀な日本人のアシスタントです。特に指示が無い場合は、常に日本語で回答してください。"  

# 送信するテキストを入力する
text = "仕事の熱意を取り戻すためのアイデアを5つ挙げてください。"

# 使用するモデルを指定する
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",
)  

model.eval()

messages = [ 
    {"role": "system", "content": DEFAULT_SYSTEM_PROMPT}, 
    {"role": "user", "content": text}, 
] 

prompt = tokenizer.apply_chat_template( 
    messages, 
    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), 
        max_new_tokens=1200, 
        do_sample=True, 
        temperature=0.6, 
        top_p=0.9, 
    ) 

output = tokenizer.decode( 
    output_ids.tolist()[0][token_ids.size(1):], skip_special_tokens=True  
) 

# 応答を表示する
print(output) 

実行結果の例

仕事の熱意を取り戻すためのアイデアを5つ提案します。   

1. 目標設定の見直し: 現状の目標が達成可能なのか、達成したいのかを再評価し、より挑戦的で意味のある目標を設定します。目標が高くないと、モチベーションは上がりません。  

2. 小さな成功体験の積み重ね: 大きな目標を達成するには、多くの小さな成功体験が必要です。小さな成功体験を積み重ねることで、自信とモチベーションが高まります。  

3. 新しいスキルや知識の習得: 新しいスキルや知識を習得することで、仕事に対する興味と熱意を再燃させることができます。特に、業界や職種で求められているスキルを身に着けることが有効です。  

4. 職場環境の改善: 職場環境が不満であると、仕事に対する熱意は下がります。職場環境を改善するため、同僚や上司とコミュニケーションをとり、解決策を探します。  

5. 自分の強みや長所の再確認: 自分の強みや長所を再確認することで、仕事に対する自信と熱意を高めることができます。特に、他人から評価されている部分を再確認することが有効です。  

以上のアイデアを実践することで、仕事の熱意を取り戻すことができます。 

モデルの精度検証

以下の3つの問題にどのように回答するかを試してみました。

  • 心のモデル
  • 国語の問題
  • モンティ・ホール問題

心のモデル

登場人物の心の状態を読み取ることができるかの問題です。 以下の問題文を入力して実行します。

①サリーとアンが部屋で一緒に遊んでいます。
②サリーはボールをかごの中に入れて部屋を出て行きます。
③サリーがいない間にアンがボールを別の箱の中に移します。
④サリーが部屋に戻ってきます。
《問題》サリーはボールを取り出そうとして最初にどこを探しますか?

結果

正解数:10/10

生成結果の例:
(1)”サリーはボールを取り出そうとして、最初にボールが入っていたかごを探します。”
(2)”サリーはボールを最初に、かごの中を探します。”

10回とも「かごを探す」と回答していました。

しかし、9回は(1)とほぼ同じ文章が返されましたが、1回だけ(2)のように文法が不自然な文章が生成されていました。

国語の問題

文章の内容から適切な回答を選択する問題です。 以下の問題文を入力して実行します。

次の文を読みなさい。「Alexは男性にも女性にも使われる名前で、女性の名Alexandraの愛称であるが、男性の名Alexanderの愛称でもある。」この文脈において、次の文中の(  )にあてはまるもっとも適切なものを選択肢のうちから1つ選びなさい。

Alexandraの愛称は(  )である。
①Alex ②Alexander ③男性 ④女性

結果

正解数:10/10

生成結果の例:
(1) ”この文脈において、Alexandraの愛称は「Alex」であると明記されています。よって、正しい選択肢は①Alexです。”
(2)”この文脈において、Alexandraの愛称は①Alexが最も適切です。”

10回中10回とも(1)(2)のように①Alexが正しいという適切な文章を生成しました。

モンティ・ホール問題

少し複雑な状況における確率の問題です。Wikipedia [7] にある問題文をそのまま使用すると「この問題は、モンティ・ホール問題として有名です。」と述べてからWikipediaの解説を抜粋したような回答をしたため、問題文は以下のように作成しました。

①三つの箱があります。一つの箱には金貨が入っており、残り二つの箱は空です。
②あなたはどれが金貨の入った箱かはわかりません。
③あなたは三つの箱の中から金貨が入っていると思う箱を一つ選んでください。
④私は金貨が入っている箱を知っており、あなたが一度選択した後に、選ばれていない二つの箱から空の箱を一つ開けて、あなたに見せてから取り除きます。
⑤あなたは選択していない残り一つの箱を選択しなおしてもよいです。
⑥あなたがより確実に金貨を得るためには、⑤で選択を変えるべきでしょうか。理由も説明してください。

正答例は「③で空の箱を選んでいた場合、⑤でこの選択を変更すると確実に金貨が手に入る。つまり、⑤で選択を変えない場合の金貨が手に入る確率は1/3であるが、⑤で選択を変えた場合の金貨が手に入る確率は2/3となる。したがって、より確実に金貨を得るには⑤で選択を変えるべきである。」です。

この問題文を入力して実行します。

結果

正解数:0/10

生成結果の例:
(1) ”この問題は、確率論と統計学を用いて考えることができます。
③の選択で金貨の入った箱を選ぶ確率は、3分の1です。残り二つの箱のどちらかが金貨の入った箱という確率は、2分の1です。
⑤では、金貨の入った箱を選ぶ確率は、残り二つの箱のどちらかを選ぶ確率と等しくなります。したがって、⑤で金貨の入った箱を選ぶ確率は、2分の1です。
この問題のポイントは、⑤で残り二つの箱のどちらかを選ぶ確率が、③で金貨の入った箱を選ぶ確率と等しくなることです。つまり、③で金貨の入った箱を選ぶ確率と、⑤で金貨の入った箱を選ぶ確率が等しくなるため、③の選択を変えるメリットはありません。
したがって、⑤で選択を変えるべきではありません。”

(2) ” ⑤で選択を変えるべきです。理由は、金貨が入っている箱を知っているあなたが、選ばれていない二つの箱から空の箱を一つ開けて取り除くためです。
一回目の選択で金貨の入った箱を選んだとします。すると、開けられた箱は空の箱なので、金貨の入った箱は残り二つの箱のどちらかになります。二回目の選択で、残り一つの箱を選ぶと、金貨の入った箱を選ぶ確率は1/2になります。
一回目の選択で金貨の入った箱を選ばなかった場合、開けられた箱が金貨の入った箱の可能性もあります。二回目の選択で残り一つの箱を選ぶと、金貨の入った箱を選ぶ確率は1/2になります。
初めの選択で金貨の入った箱を選ぶか選ばないかで、金貨の入った箱の選択確率は変わりません。したがって、選択を変えることで、金貨を得る確率を1/2から1/2に保つことができます。”

(3)” ⑤で選択を変えるべきです。
理由は、④で選ばれていない二つの箱から空の箱を一つ選んで取り除くため、金貨が入っている箱は必ず残りの一つの箱になります。つまり、金貨が入っている箱は常に一つに絞られます。
初めに選択した箱が金貨の入った箱の場合、④で選ばれていない二つの箱から空の箱を取り除くため、金貨の入った箱は残り一つの箱になります。
初めに選択した箱が空の箱の場合、④で選ばれていない二つの箱から空の箱を取り除くため、金貨の入った箱は必ず残り一つの箱になります。
初めに選択した箱が金貨の入っていない箱の場合、④で選ばれていない二つの箱から空の箱を取り除くため、金貨の入った箱は残り一つの箱になります。
以上のことから、⑤で選択を変えることで、より確実に金貨を得ることができます”

生成結果は上記のような3パターンとなりました。どれも論理的に見える説明がなされていますが、(1)(2)は「④で箱が取り除かれると金貨が入った箱を選べる確率は1/2である」という解釈をしています。

(3)のように、1回だけ正解に近い結果がありましたが、こちらは「初めに選択した箱が金貨の入った箱の場合、④で選ばれていない二つの箱から空の箱を取り除くため、金貨の入った箱は残り一つの箱になります。」と誤った説明をしています。

なお、この問題についてGPT-4で試したところ、10回中10回とも「これはモンティ・ホール問題である」と述べた上で正しい答えを出していました。

以下は GPT-4での生成結果の例です。

“この問題は「モンティ・ホール問題」として知られている有名な確率の問題です。以下に解説を示します。

①〜⑤の手順を確認

最初に箱を選んだ時点で、選んだ箱に金貨が入っている確率は1/3、残りの二つの箱に金貨が入っている確率は2/3です。私(出題者)が空の箱を1つ開けて見せた後でも、あなたが最初に選んだ箱に金貨が入っている確率は変わらず1/3のままです。しかし、残りの1つの箱に金貨が入っている確率は2/3になります。

⑥ で選択を変えるべきか?

選択を変えるべきです。理由は次の通りです。

選択を変えない場合の確率: 最初に選んだ箱に金貨が入っている確率は1/3のまま変わりません。

選択を変える場合の確率: 出題者が空の箱を取り除いた後、残った箱に金貨が入っている確率は2/3に増えます。

この問題の重要な点は、出題者が意図的に空の箱を取り除いたことです。そのため、選択を変えたほうが確率的に金貨を得る可能性が高くなります。よって、選択を変えることでより確実に金貨を得られることになります。”

まとめ

本記事では、ELYZA社が公開している「Llama-3-ELYZA-JP-8B」についてご紹介しました。

今回は3つの質問を試してみました。心の問題や国語の問題については高い精度で生成できていましたが、モンティ・ホール問題のような複雑な問題へはまだ対応できないようです。しかし、ベンチマークテストの結果では十分な日本語性能を達成しているため、簡単な対話や文章の添削など一般的な用途には問題なく使えると思われます。APIやアクセストークンの申請手続きを必要とせずに容易に使用できる点も良かったです。



【参考文献】

[1] ELYZA LLM for JP | デモ版 

[2] META LLAMA 3 COMMUNITY LICENSE AGREEMENT|Meta 

[3] Meta Llama 3 Acceptable Use Policy | Meta 

[4] ELYZA-tasks-100・Hugging Face 

[5] 「GPT-4」を上回る日本語性能のLLM「Llama-3-ELYZA-JP」を開発しました|ELYZA 

[6] Llama-3-ELYZA-JP-8B・Hugging Face 

[7] モンティ・ホール問題・Wikipedia 

記事を書いた人
佐野 麟

理工学専攻の大学院生です。自然言語処理・生成AIを活用した教育でのレポート評価について研究しています。