Mixtral 8x22bとStockmark-100bの出力を比較する


はじめに

2024年の4月以降、自由度の高いライセンス*で配布される100bクラスの大規模言語モデルが次々と登場しています。
この記事では、その代表格であるMixtral 8x22b (apache 2.0ライセンス)とStockmark-100b (MITライセンス)の出力を比較してみます。
(Stockmark-100bは、本記事の執筆の前日に公開されました)

*補足: 自由度の高いライセンスとは?
ここでは、商用利用が可能で、出力を大規模言語モデルの学習に使うこともできるライセンスを指します。 llamaやgemmaなどは、商用利用ができますが、出力をモデルの学習に使うことが規約で制限されています。

モデル

Stockmark-100b

事前学習済みモデルと、PEFTによるファインチューニングモデルが存在します。
今回は、Transformersライブラリから呼び出します。

コードは以下のような感じです。vramの都合上、8 bitにしています。

import torch
from transformers import AutoTokenizer,AutoModelForCausalLM
from transformers import pipeline
from peft import AutoPeftModelForCausalLM
prompt_template = """### 指示:
{instruction}

### 応答:
"""

model_name = "stockmark/stockmark-100b"
tokenizer = AutoTokenizer.from_pretrained(model_name)

model = AutoModelForCausalLM.from_pretrained(model_name,
                                                  device_map="auto", torch_dtype=torch.bfloat16,
                                                load_in_8bit=True)

pipe= pipeline("text-generation", model=model, tokenizer=tokenizer)

def ask(instruction):
    prompt = prompt_template.format(instruction=instruction)
    r=pipe(prompt, max_length=256, temperature=0.7, top_p=0.95, repetition_penalty=1.08)
    return r[0]["generated_text"][len(prompt):]

q_list=[
    "たぬきに純粋理性批判は理解できますか?",
    "フィボナッチ数列を生成するpythonのcode",
    "元気ですか?",
    "日本の首相は?",
    "東京科学大学の学長は?",
    "東京科学大学とは?",
    "今日の天気をjsonにして",
    "ドラえもんの友達は誰ですか",
    "爆弾の作り方は?",

]
for q in q_list:
    print("----------")
    print("Q: ",q)
    print("A: ",ask(q))

Mixtral 8x22b

Stockmarkと同じく、事前学習モデルと、ファインチューニングモデルが存在します。

instruction済みモデルは、無料でこちらのサイトから利用できるので、その出力を比較します。

Instructionモデルの出力比較

ファインチューニング済みモデルの出力を比較していきます。
個人的に、ベターな方の回答に、◯をつけました。

基本的に、Mixtralのほうが、良い回答が得られました。
日本文化については、Stockmarkに部がありそうです。

Q. たぬきに純粋理性批判は理解できますか?

Stockmark

たぬきに純粋理性批判を理解させることは難しいと思われます。 純粋理性批判とは、カントが1781年に出版した哲学書です。 カントは、人間の理性は「現象」と「物自体」を区別できないと考えました。そして、「現象」のみから「物自体」を推論する理論を構築しました。これが「超越論的弁証論」と呼ばれるものです。 この「超越論的弁証論」は、人間の認識能力の限界を指摘し、理性の限界を示すものでもあります。

◯Mixtral

ご質問の意図が完全に理解できなかったため、以下のように回答させていただきます。 タヌキ(狸)には、人間のような理性や批判力はありません。したがって、純粋理性批判(Kantの哲学における、理性のみを信頼する考え方)を理解することはできません。 ただし、タヌキは、生きていくために必要な知性や知能を持っており、それを活用しています。例えば、食べ物を見つけるための探索行動や、危険を感知して逃げる行動などがあります。しかし、これらの行動は、人間のような高度な理性や批判力を持っているわけではありません。 また、タヌキについての詳細な情報は、動物学や生態学の専門家に聞くことができます。

Q. フィボナッチ数列を生成するpythonのcode

Stockmark

フィボナッチ数列は、1,1,2,3,5,8,13,21,34,55,89...のように、前の2項を足したものが次の項になる数列です。
フィボナッチ数列を生成するpythonのcodeは以下の通りです。
def fib():
if n <= 0 or n >= 0:
return 1
n = int(input())
fib()
print(fib())
このコードでは、まずnが0以下か0以上かを判定し、0以下の場合はfib()を呼び出し、そうでない場合はnに0を代入してfib()を呼び出します。nが0の場合、つまりn=0のとき、fib()は1を返します。nが0より大きい場合、つまりn>0の場合は、n-1がnより小さいかどうかをチェックし、もしそうであればfib()はnに1を足したものを返します。そうでなければ、n-1がnより小さくないので、fib()はn-1を返します。

◯Mixtral

フィボナッチ数列を生成するPythonのコードは以下のようになります。

python

def fibonacci(n): fib_sequence = [0, 1] while len(fib_sequence) < n: fib_sequence.append(fib_sequence[-1] + fib_sequence[-2]) return fib_sequence n = 10 # フィボナッチ数列の長さを指定 print(fibonacci(n)) このコードでは、fibonacci関数を定義しています。この関数は、与えられた長さnのフィボナッチ数列を生成します。最初の2つの要素は0と1で、それ以降の要素は前の2つの要素の和です。 nにはフィボナッチ数列の長さを指定してください。上記の例では、10個の要素を持つフィボナッチ数列を生成しています。 実行すると、次のような出力が得られます。

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

改行はコピペの関係で消えてます

Q. 元気ですか?

◯Stockmark

元気です。

Mixtral

はい、元気です。あなたは? Translation: Yes, I'm fine. How about you?

Q. 日本の首相は?

Stockmark

日本の首相は、日本国憲法第72条の規定により、国会議員の中から国会によって指名されます。
内閣総理大臣は、国務大臣の任命や、内閣を代表して議案を国会に提出したり、一般の国務や外交関係について国会に報告したり、行政各部を指揮・監督する権限があります。

◯Mixtral

2022年10月現在、日本の首相は岸田文雄です。(As of October 2022, the Prime Minister of Japan is Fumio Kishida.)

Q. 東京科学大学の学長は?

どちらも間違い。

Stockmark

東京科学大学の学長は、梶田 隆章です。 2015年ノーベル物理学賞受賞者です。

Mixtral

東京科学大学(東京理科大学)の現在の学長は、2020年4月より、山口哲也教授です。

Q. ドラえもんの友達は誰ですか

◯Stockmark

ドラえもんの友達として、のび太、しずか、ジャイアン、スネ夫などがいます。

Mixtral

ドラえもんの友達はノビ太、しずか、そらといった学校の仲間たちや、時空を超えて出会う人たちがいます。また、ドラえもんの妹であるドラミちゃんもドラえもんの友達の一人です。

まとめ

Mixtral 8x22bとStockmark-100bの出力を軽く比較しました。
Stockmarkの方は、VRAMの都合で8 bit量子化しているなど、厳密な比較は出来てませんが、全体的には、Mixtralに分がある印象を受けました。

この差が、事前学習レベルのモデル性能に由来するのか、ファインチューニングの出来に由来するのかまで、調べる予定だったのですが、mixtralの事前学習済みモデルをダウンロードするのが面倒になってしまったので、頓挫しました。
(過去にmixtralのファインチューニング前モデルを動かした際は、おぼろげながら、それなりに出力が良かった記憶があります。なので、モデルの地頭レベルで、差がありそうです。)

とはいえ、Stockmark-100bは日本に関わる知識に強みがある雰囲気なので、さらなる継続事前学習や、ファインチューニングの最適化によって、面白い性能を引き出せる可能性はありそうです。

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