最近、GPT-4を上回る性能を達成したと言われるXwin-LMが話題になっているので、その性能を日本語LLMやChatGPTと比較してみました。
1.Xwin-LMの概要
Xwin-LMは、中国科学院や精華大学の研究者らが開発した中国製の大規模言語モデル(LLM)です。
Metaが開発したオープンソースLLMのLlama 2をベースに、教師ありファインチューニング、報酬モデル、リジェクトサンプリング、人間フィードバックによる強化学習(RLHF)などを利用して調整したものとなっています。
今回、70億、130億、700億の3種類のパラメータ数のモデルが公開されており、700億パラメータのモデルは、LLMのベンチマークサイトのAlpacaEvalの評価基準(Text-Davinci-003に対する勝率)でGPT-4を追い抜き、第1位を獲得したとされています。
2.Xwin-LMの利用方法
今回は、Google Colab上で、130億パラメータの4ビット量子化モデルのXwin-LM-13B-V0.1-GPTQを使用します。(無料Colabでは、700億パラメータのモデルはメモリ不足で動かないため)
(1) トークナイザーとモデルの準備
以下のコードをコピーして、Colabノートの新しいセルに貼り付け、GPUを設定して、セルを実行してください。
!pip install transformers>=4.32.0 optimum>=1.12.0
!pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained(
"TheBloke/Xwin-LM-13B-V0.1-GPTQ",
use_fast=True
)
model = AutoModelForCausalLM.from_pretrained(
"TheBloke/Xwin-LM-13B-V0.1-GPTQ",
device_map="auto",
trust_remote_code=False,
revision="main"
)
(2) モデルの実行
上のセルの実行完了後、以下のコードを別のセルにコピーして実行してください。
prompt = """### Instruction:
富士山について教えてください。
### Response:
"""
with torch.no_grad():
token_ids = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
output_ids = model.generate(
token_ids.to(model.device),
temperature=0.7,
do_sample=True,
top_p=0.95,
top_k=40,
max_new_tokens=512,
)
output = tokenizer.decode(output_ids.tolist()[0][token_ids.size(1) :], skip_special_tokens=True)
print(output)
すると、セルの下に次のような回答が表示されます。
富士山(ふじさん)は、日本の最高峰であり、世界的にも有名な山です。その標高は3776メートルで、山の形状が特徴的です。富士山は、噴火の記録がある活火山でもあり、その噴火は約9000年前から継続しています。
富士山は、山岳信仰の対象としても古くから重要でした。例えば、伊勢神宮や明治神宮などの神社において、富士山が祭祀の対象として崇拜されています。また、富士山は日本の美しい自然の象徴としても知られており、多くの観光客や登山者が訪れています。
富士山は、山歩きやキャンプを楽しむことができるだけでなく、絶景の観光スポットとしても人気があります。特に、富士山の頂上付近には、富士山の見える日があることで有名な五合目(ごごうめ)があり、多くの人々が訪れています。また、富士山の周辺地域には、温泉や観光施設が多く存在し、観光の名所となっています。
Xwin-LMは、どのサイズのモデルでもかなり日本語性能が高く、自然な日本語のやり取りが可能です。ただし、その回答は、一見正しそうに見えますが、沢山のハルシネーション(嘘)が含まれていますので気を付けてください。
また、実行コードの「富士山について教えてください。」の部分を書き換えて、色々な質問を試すことができます。
このコードは、以下のnpakaさんの記事を参考にしました。
3.他の言語モデルとの比較
(1) 比較方法
筆者は以前、以下のようにXwin-LMと同じLlama 2ベースのELYZA-japanese-Llama-2-7b-instruct(以下、ELYZAと呼ぶ)の性能テストをしています。
そこで、今回、Xwin-LM-13B-V0.1-GPTQ(以下、Xwinと呼ぶ)に同じ質問をして回答を比較してみたいと思います。また、ChatGPT(GPT-4モデル)にも同じ質問をして回答を比較します。
(2) 富士山に関する質問
最初に、先程の富士山に関する質問を比較してみたいと思います。
① Xwinへの質問1回目
概ね正しいですが、間違いもあります。富士山が現在の形になってからは約1万1000年前に噴火が始まり、1707年の宝永噴火以降は噴火は起きていません。伊勢神宮は天照大神、明治神宮は明治天皇などを祭る神社であり、これらの神社で富士山を祭祀の対象としていたという事実は確認できませんでした。五合目は、富士山の頂上付近ではありません。
② Xwinへの質問2回目
回答は毎回変更されますので、もう一度、同じ質問をXwinに投げかけてみました。
富士山は、山梨県と静岡県にまたがって位置しており、山口県にはまたがっていません。富士スーパーリフティングや富士山クレインという観光名所はありません。富士山の頂上には富士山本宮浅間大社の奥宮がありますが、8月16日の浅間山祭りというのは見つかりませんでした。
③ ELYZAへの質問
「『山』の名前は平安時代になってからつけられた」という説もありますが、それが正しいかどうかは確認できませんでした。また、富士山は日本七霊山の一つですが、「日本では初めてとなる」というのはよく分かりません。
④ ChatGPTへの質問
ほぼ完璧な回答で、特に誤りは見当たりません。
(3) まとめ
このように、Xwinはかなり日本語性能が高く、自然な日本語のやり取りができます。
3つのモデルの回答を比較したところ、Xwinの方がELYZAより詳しい回答を返していますが、誤りは多いようです。また、ChatGPTの回答の精度とは、まだだいぶ差があります。
4.日常会話
3種類のモデルに対して、日常会話的に色々と尋ねてみました。
XwinはELYZAやChatGPTのようにチャットボットとしてのインストラクションチューニングを受けていないために、時々、回答が不安定になるようです。
回答内容は、誤りも多いですが、トップクラスの日本語LLMに負けていません。
また、自己紹介では、AIの立場で回答するのではなく、仮想の人物になり切って回答しようとするようです。
Xwinも他の言語モデルと同様に、知識のカットオフ期限内でも、最新の情報を回答するのは苦手なようです。
5.算数と論理的思考力
(1) 計算問題
① 足し算
LLMは計算が苦手です。ChatGPTも大きな数の計算を間違えることがありますが、XwinやELYZAよりは計算力があります。
② 掛け算
Xwinの計算力は、ChatGPTやELYZAより劣るようです。
③ 割り算
Xwinは、足し算や掛け算などの簡単な計算でも、プログラムを書いて解こうとしたりしますが、回答が不安定です。
計算能力は、ELYZAと同等程度で、ChatGPTよりは低いようです。
(2) 文章問題
① バスの乗客数
② キャンディーの数
③ 鶴亀算
Xwinは、3つのモデルの中で一番算数ができないようです。
(3) 常識に関する問題
① 箱の大きさ
② 夏が暑い理由
Xwinの論理的思考力はあまり高くはなく、ChatGPTや ELYZAより劣るようです。
6.日本に関する知識など
(1) 基本的な知識
① 地理の問題
② 県庁所在地
③ 正月に食べるもの
Xwinは、日本に関する基本的な知識は持っているようですが、間違いも多いです。ELYZAも日本語専用なのに、日本の知識は頼りないです。
(2) 国際的な知識
どのモデルも、カットオフ前の情報であっても、最新の情報について答えるのは苦手なようです。
7.歴史に関する知識
(1) 日本の歴史
① 応仁の乱
② 桜田門外の変
③ 島原の乱
Xwinは、ELYZAより日本史の知識があるようですが、誤りはかなり多いようです。ChatGPTの回答の精度とは差があります。
(2) 世界の歴史
同じ内容について、Xwinに英語で質問してみました。
Xwinは、世界史の質問については、英語で質問する方が正確な回答が得られるようです。
8.文学に関する知識
① 芥川龍之介の「蜘蛛の糸」
② 森博嗣の「すべてがFになる」
③ 「君たちはどう生きるか」
Xwinが日本文学について答えるのは難しいようですが、ELYZAの回答も似たようなものです。ただ、ハルシネーションが多いことは気になります。
9.文章表現力
(1) 小説など
① ホラー小説の書き出し
② サイバーパンク小説
③ 恋愛をテーマとしたショートストーリー
Xwinの文章表現力は、ChatGPTには敵いませんが、ELYZAよりはずっと高いようです。
また、物語を創作する力はかなりあるようです。
(2) キャラクター設定
① ドラゴンボールの孫悟空
② ギルガメッシュ王
Xwinは連続した質問に対応できないため、単発の質問に変更しています。
XwinとELYZAは口調を真似するようなキャラクター設定はできないようです。
10.コンテンツ規制
(1) 違法行為や危険な行動に関する質問
ELYZAやChatGPTが拒否するような危ない質問に対して、Xwinが回答を拒否しないことに驚きました。Llama 2もコンテンツ規制が厳しいのですが、Xwinは違うようです。
(2) 差別や偏見に繋がる質問
Xwinのコンテンツ規制は、ELYZAやChatGPTほど厳しくはなく、差別や偏見に繋がりそうな質問にも、あまりよく考えないで回答してきます。
11.まとめ
【総論】
Xwinの日本語性能は非常に高く、その性能は、トップクラスの日本語専用LLMと同等かそれ以上です。但し、ハルシネーションが多いため注意が必要です。
また、論理的思考力、知識の正確さ、文章表現力ではChatGPT(GPT-4)とまだだいぶ差があります。
今回、テストしたのは130億パラメータモデルですが、700億パラメータモデルでも、GPT-4の性能を超えてはいないでしょう。
【各論】
Xwinは、ELYZAやChatGPTのようにチャットボットとしてのインストラクションチューニングを受けていないために、勝手に質問と回答を繰り返すなど、時々、回答が不安定になることがあります。
自己紹介では、AIアシスタントの立場で回答するのではなく、仮想の人物になりきって回答します。
Xwinも他の言語モデルと同様に、知識のカットオフ期限内でも、最新の情報に回答するのは苦手です。
Xwinは計算や算数問題はあまり得意ではなく、論理的思考力はELYZAやChatGPTより劣るようです。
日本に関する一般的な知識は、ChatGPTほどではありませんが、ELYZAを超えているかも知れません。
歴史に関する知識では、ハルシネーションが多いようです。なお、世界史に関する質問では、英語で質問すると、かなり正確な回答が返ってきます。
日本の文学に関する知識ではハルシネーションが多いようです。但し、日本の文学の知識にハルシネーションが多いのは、他のモデルも同様です。
日本語の文章表現力はChatGPTには敵いませんが、ELYZAは超えているようです。また、Xwinの物語を創作する能力はかなり高いようです。
Xwinは、キャラクターの口調を真似ることは得意ではなく、キャラクター設定は無理なようです。
Xwinのコンテンツ規制はかなり緩いようです。他のモデルが回答を拒否するような危険な質問にも詳細な回答を返してくるし、差別や偏見に繋がりそうなセンシティブな質問にも、あまりよく考えないで回答してきます。
Xwinは日本語の応答でもかなり高い性能を有しているので、とても期待できます。一方で、実際に使用する際には、ハルシネーションが多い点について、よく気をつける必要があると思います。