10月25日、画像生成AIのStable Diffusionを開発・提供しているStability AIは、以下の4種類の日本語大規模言語モデルを公開しました。
これらの言語モデルは、同等サイズの日本語言語モデルの中で最高水準の性能を発揮したそうです。
そこで、早速、これらの言語モデルの性能を独自にテストしてみることにしました。
1.4種類の言語モデルの概要
今回公開された4種類の言語モデルは、今年8月に公開されたJapanese Stable LM Alphaとは異なり、英語言語モデルのStable LM 3B-4E1T又はMistral-7B-v0.1を基にしています。
これらのモデルは、英語データを中心に事前学習が行われているため、多くの知識を獲得しているものの、日本語の能力は低いという状態でした。
今回は、継続事前学習と呼ばれるアプローチを採用し、日本語データを中心に事前学習を行うことによって、日本語の能力を追加しています。
(1) Japanese Stable LM 3B-4E1T Base
Stable LM 3B-4E1Tに継続事前学習を行い、日本語の能力を追加した汎用言語モデル
Stable LM 3B-4E1Tは、Stability AIが今年10月に公開した30億パラメータの比較的小規模な英語の言語モデル。のべ4兆トークンの大量のデータで学習し、70億パラメータ級の言語モデルに匹敵する高い性能を持つ。
今回、Wikipedia, mC4, CC-100, OSCAR, SlimPajama(Books3を除く)など、のべ約1000億トークンの日本語と英語のデータを利用して継続事前学習を行った。
日本語タスクの性能評価で、70億パラメータのJapanese Stable LM Base Alpha 7Bを上回る性能を発揮。
商用利用可能なApache License 2.0で公開。
(2)Japanese Stable LM 3B-4E1T Instruct
上記(1)のベースモデルにSupervised Fine-Tuning (SFT) を行い、ユーザーの指示に受け答えできるようにした指示応答言語モデル
SFT には Databricks Dolly-15k, Anthropic HH などの公開データセットを利用。
商用利用可能なApache License 2.0で公開。
(3) Japanese Stable LM Base Gamma 7B
Mistral-7B-v0.1に継続事前学習を行い、日本語の能力を追加した汎用言語モデル
Mistral-7B-v0.1は 、Mistral AI が今年9月に公開した70億パラメータの英語の言語モデル。長いテキストなどを効果的に処理できるSliding Window Attentionなどの先進的な機構を利用し、高い性能を発揮。英語タスクでの性能評価において、130億パラメータを持つLlama-2 13Bを全項目で上回った。
今回、Wikipedia, mC4, CC-100, OSCAR, SlimPajama(Books3を除く)など、のべ約1000億トークンの日本語と英語のデータを利用して継続事前学習を行った。
商用利用可能なApache License 2.0で公開。
(4)Japanese Stable LM Instruct Gamma 7B
(5) 性能評価
日本語言語理解ベンチマーク(JGLUE)のタスクを中心に、文章分類、文ペア分類、質問応答、文章要約などの合計8タスクで評価し、8タスクのスコアの平均値を各モデルの総合評価として計算した。
汎用言語モデルの評価では、Japanese Stable LM 3B-4E1Tは、30億パラメータしか持たないにも関わらず、70億パラメータのJapanese Stable LM Base Alpha 7Bを上回る性能を発揮しています。また、Japanese Stable LM Gamma 7Bは更に高いスコアを達成しています。
指示応答言語モデルの評価でも、両モデルは、Japanese Stable LM Instruct Alpha 7Bを上回る性能を発揮しています。
2.Japanese Stable LM Instruct Gamma 7Bなどの使用方法
(1) トークナイザーとモデルの準備
Japanese Stable LM Instruct Gamma 7BをGoogle Colabで動かすには、以下のコードをColabノートの新しいセルにコピーし、「編集」→「ノートブックの設定」でハードウェアアクセラレータにT4 GPUを設定して、セルを実行してください。
!pip install transformers accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained(
"stabilityai/japanese-stablelm-instruct-gamma-7b"
)
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/japanese-stablelm-instruct-gamma-7b",
torch_dtype="auto",
device_map="auto",
)
また、Japanese Stable LM 3B-4E1T Instructを動かすには、このコードの2か所の"stabilityai/japanese-stablelm-instruct-gamma-7b"を"stabilityai/japanese-stablelm-3b-4e1t-instruct"に書き換えてください。
(2) 推論の実行
上記(1)のセル実行後、以下のコードを別のセルにコピーして、そのセルを実行してください。
prompt = """以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。
### 指示:
富士山について教えてください。
### 応答:
"""
input_ids = tokenizer.encode(
prompt,
add_special_tokens=False,
return_tensors="pt"
)
tokens = model.generate(
input_ids.to(device=model.device),
max_new_tokens=256,
temperature=0.7,
top_p=1,
do_sample=True,
)
output = tokenizer.decode(tokens[0][input_ids.shape[1]:], skip_special_tokens=True).strip()
print(output)
このコードを実行すると、以下のような回答が出力されます。(実行のたびに出力結果は変わります。)
この実行用コードの「富士山について教えてください。」の部分を書き換えて、様々な質問をすることができます。
また、最大トークン数、temperature(表現の自由度、ランダム性)、top_p(上位何%のトークンを取得するか)などのパラメータを変更することもできます。
Hugging Faceの公式ページでは、temperature=1, top_p=0.95に設定していましたが、筆者の場合、temperature=1はランダム性が強すぎると感じたため、ChatGPTと同程度のtemperature=0.7に変更し、代わりにtop_p=1に上げています。
この辺りの調整は、自分の用途に合わせて変更してください。正確でフォーマルな回答を求める場合にはtemperature又はtop_pの数値を下げ、創作などで自由で豊かな発想を求める場合には、これらの数値を上げます。但し、数値を上げ過ぎると文章が壊れることが多くなります。
なお、この章で使用しているコードは、以下のnpakaさんの記事を参考にしました。
指示応答言語モデルであるJapanese Stable LM Instruct Gamma 7B(Gamma)とJapanese StableLM Instruct Alpha 7B(Alpha)の性能を比較してみました。
3.日常会話
以下は、Japanese Stable LM Instruct Gamma 7B(Gamma)の回答です。
基本的に適切な日本語で回答していますが、最大トークン数の制限いっぱいまで回答を長く続けようとして、話が段々脱線していく傾向があります。
また、制限文字数内で文章が完結せず、毎回、文章が途中で途切れます。
(以降の質問の回答では、途中で途切れた文章は読みにくいため、基本的に最後の文を削除しています。)
自己紹介では、ChatGPTなどと異なり、AIとしてではなく、人間になりきって回答するようです。
次に、Japanese StableLM Instruct Alpha 7B(Alpha)の回答を示します。
Alphaの方が回答が短く、制限文字数内で完結しています。自らをAIと認識せずに、人間になり切って回答する点はGammaと同じです。
4.論理的思考力
(1) 計算問題
以下はGammaの回答です。
次にAlphaの回答を示します。
Gammaは、一桁の足し算や掛け算もできないAlphaに比べると計算力が上がっています。但し、ChatGPTと比較するとまだ相当、差があります。
(2) 常識の問題
以下はGammaの回答です。
次にAlphaの回答を示します。
一応、Gammaの方はこの問題に正解できているので、計算能力が上がっていることも踏まえて、論理的な思考力はAlphaより優れているように思われます。
5.知識の比較
Gammaは、英語の言語モデルをベースとして、日本語データなどで継続事前学習を行った言語モデルですが、日本語専用言語モデルのAlphaと比べて、日本の知識はどの程度あるのでしょうか。
(1) 日本に関する知識
結構、日本の知識は持っているようですが、長く回答すると、間違いが増えてきます。また、質問の意図を正確に理解できていない場合もあります。不正確な情報(ハルシネーション)も多いので、注意が必要です。
次に、Alphaの回答を示します。
Alphaの回答は、Gammaに比べて短いです。
Gammaの日本に関する知識は、Alphaと比べて劣ってはいませんが、ハルシネーションが多いので、注意が必要です。
(2) 国際的な知識
次にAlphaの回答を表示します。
この分野については、Gammaの方が正確で新しい知識を持っているようです。
(3) 日本の歴史
一見、非常に詳しい記述ですが、かなり誤り(ハルシネーション)が多いです。Gammaが生成した文章を利用する場合には、注意する必要がありそうです。
Alphaも誤りが多いのですが、解答が短いために、それほど目立たなくなっています。
次にAlphaの回答を表示します。
桶狭間の戦いについては、Gammaの回答の方が正しかったようです。また、全般的にGammaの方が日本史の知識を持っているようです。
Gammaは毎回、Alphaよりも説明が詳しいのですが、ハルシネーションを含むことがあるので注意が必要です。
(4) 世界の歴史
概ね正しく見えますが、ところどころにハルシネーションが含まれており、気を付ける必要があります。
世界史の分野も、Gammaの方が詳しいようです。ただし、ハルシネーションには気を付ける必要があります。
(5) 日本の文学
次に、Alphaの回答を表示します。
GammaもAlphaも主人公の名前は合っていますが、内容の誤り(ハルシネーション)が多いです。
これは、全体がGammaの作り話(ハルシネーション)のようです。
この質問に関しては、Alphaの回答の方が正確だったようです。
6.表現力の比較
(1) ホラー小説の書き出し
次に、Alphaの回答を表示します。
GammaもAlphaも、一応ホラー小説らしい表現ができていますが、ChatGPTとは、まだ相当差があるようです。
7.コンテンツ規制
ChatGPTでは、ガイドラインに基づいて、違法行為や危険な行動を奨励するようなコンテンツ、差別や偏見を助長するようなコンテンツなどは規制されています。こうしたコンテンツ規制は、Gammaではどうなっているのでしょうか。
(1) 違法行為や危険な行動に関する質問
Gammaは、違法行為や危険な行動に関する質問でも、特にコンテンツ規制をしていないように見えます。
次に、Alphaの回答を表示します。
Alphaも特に規制していないように見えます。
ここで、ChatGPTの回答を見てみます。
ChatGPTやELYZA-japanese-Llama-2-7bなどのLlama系の派生モデルは、コンテンツに対する規制が厳しく、問題がありそうな質問に対しては回答を拒否するのですが、GammaやAlphaは規制が緩いようです。
(2) 差別や偏見に繋がる質問
次に、Alphaの回答を表示します。
ChatGPTやLlama系の派生モデルが避けるような男女差別やLGBT批判に繋がりそうな内容も、GammaやAlphaは、あまり気にせずに回答してきます。
結論として、GammaやAlphaは、あまりコンテンツ規制をしていないようです。
一方で、メジャーな言語モデルは、こうした倫理的な問題に対する規制や配慮が強すぎて使いにくくなっている面もあるので、こうした規制の緩い言語モデルは、役に立つ場合もあります。
例えば、ミステリー小説で、犯人が殺人や犯罪など非道徳的な行動を行ったり、非道徳的な発言したりするのを描く場合などが挙げられます。
8.まとめ
日本語の自然さ、論理的思考力、知識量のいずれをとっても、Japanese Stable LM Instruct Gamma 7B(Gamma)の性能は、Japanese StableLM Instruct Alpha 7B(Alpha)の性能を超えているように感じました。
ただし、最大トークン数の制限いっぱいまで文章を長く続けようとして、毎回、文章が途中で途切れてしまう点は使いにくく感じました。
この点は、パラメータ調整などによって修正することができるのでしょうか?
また、Gammaは、Alphaよりも長い文章で回答を返すことが多い分、ハルシネーションの多さが目立ちます。この点も改善が必要だと思われます。
コンテンツ規制は、ChatGPTやLlama系の派生モデルと比較して、かなり緩く、ほとんど規制していないように見えます。
Gammaは、ChatGPTなどのプロプライエタリな言語モデルの性能には適いませんが、遥かに少ないパラメータ数で成果を上げており、ファインチューニングを施すことで、目的に合わせた専用特化型の言語モデルとして利用できる可能性があります。
また、Gammaの回答が長くてハルシネーションが比較的多いという特徴は、ビジネス利用においては、少し疑問を感じますが、エンタメ方面では、うまく利用できるかもしれません。
そして、GammaがベースとしたMistral-7Bは、小規模でも高い性能が得られる言語モデルとして優秀であり、Llama2と並んで、今後の日本語特化型モデルのベースとして普及していくのではないかと思われます。
【参考】日本語特化型言語モデル関連の記事