サイトのデザインが新しくなりました。

【Swallow on mistral】日本語最強の性能を叩き出す70億パラメーター国産LLMを使ってみた

Swallow on mistral 日本語最強 性能70億パラメーター 国産 LLM

WEELメディア事業部LLMリサーチャーの中田です。

3月11日、日本語特化型の大規模言語モデル「Swallow on mistral(Swallow-MS 7B, Swallow-MX 8x7B)」を、東京工業大学の岡崎研究室と横田研究室、産業技術総合研究所の研究チームが公開しました。

このモデルは、「Mistral 7B」と「Mixtral 8x7B」の日本語能力が強化されたものなんです!

Xでの投稿のいいね数は、国内だけですでに300を超えており、注目されていることが分かります。

この記事ではSwallow on mistralの使い方や、有効性の検証まで行います。本記事を熟読することで、Swallow on mistralの凄さを理解し、これまでの日本語LLMには戻れなくなるでしょう。

ぜひ、最後までご覧ください。

なお弊社では、生成AIツール開発についての無料相談を承っています。こちらからお気軽にご相談ください。
→無料相談で話を聞いてみる

目次

Swallow on mistralの概要

Swallow on mistralとは、東京工業大学の岡崎研究室と横田研究室、産業技術総合研究所の研究チームによって開発された日本語LLMです。具体的には、「Mistral 7B」と「Mixtral 8x7B」の2つのモデルを、日本語に特化させたものになります。

ちなみに、Swallow on nistralには、以下の2つのモデルが含まれます。

  • Swallow-MS 7B:Mistral 7Bの日本語能力を強化したモデル
  • Swallow-MX 8x7B:Mixtral 8x7Bの日本語能力を強化したモデル

また、算術推論とコード生成に焦点を当て、数学関連のAlgebraicStackと自然言語とソースコードのペアを含む「The Vault」コーパスを使用して、継続事前学習されたそう。

Swallow-MS 7Bに関しては、日本語に関するベンチマークにおいて最高性能を達成したそう。また、Swallow-MX 8x7Bは、日本語特化LLMとして史上初となる「Mixture of Experts (MoE)を採用したモデル」だそうです。

MoEとは、複数のエキスパートモデルが協力して問題を処理する技術。以下の動画が、かなり直感的に分かりやすいです。

Swallow on mistralの各モデルの性能は、以下の通りです。

参考:https://tokyotech-llm.github.io/swallow-mistral

Swallow-MS 7Bに関しては、他の7Bモデルよりも平均的に高い性能を示しています。Swallow-MX 8x7Bの方は、7Bでありながら、70BのSwallow 70Bモデルに匹敵するほどの性能を叩き出しています。

なお、東工大が開発した日本語LLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Swallow】東工大の日本語特化の大規模言語モデル!使い方〜日本語性能比較まで

Swallow on mistralのライセンス

公式ページによると、Apache 2.0のもと誰でも無償で商用利用することが可能です。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️
参考:https://www.apache.org/licenses/LICENSE-2.0

Swallow on mistralの使い方

公式HFページを参考に、Google Colab上で実行しました。

まずは、以下のコードを実行して、必要なライブラリをインストールしましょう。

!pip install torch transformers sentencepiece accelerate protobuf

続いて、以下のコードを実行することで、言語を生成できます。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "tokyotech-llm/Swallow-MS-7b-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")

model = AutoModelForCausalLM.from_pretrained(model_name)
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=128,
    temperature=0.99,
    top_p=0.95,
    do_sample=True,
)

out = tokenizer.decode(tokens[0], skip_special_tokens=True)
print(out)

上記はSwallow-MS-7bに「東京工業大学の主なキャンパスは、」というプロンプトを入力し、続きの文章を出力させる例です。Swallow-MX-8x7bで実行したい場合、「model_name=”tokyotech-llm/Swallow-MX-8x7b-NVE-v0.1″」としましょう。

Swallow-MS-7bでの出力結果は以下の通りです。

東京工業大学の主なキャンパスは、大岡山キャンパスとすずかけ台キャンパスの二つがあります。
前者のキャンパスは、地下鉄大岡山駅と東急目黒線奥沢駅を利用することができ、電車での通学が可能です。
しかし、この大岡山駅からキャンパスまでの道のりには急な坂があるため、自転車通学をする人が多いです。
すずかけ台キャンパスは、東急多摩川線沼部駅と東急バスを利用することが可能なため、公共交通機関を利用した通学も便利です。
東京工業大学は都心から少し離れた

また、以下のプロンプトで、コーディング能力も検証しました。

20個ほどのダミーデータで単回帰分析を行えるpythonコードを書いてください。

Swallow-MS-7bでの出力結果は以下の通りです。

"""
import numpy as np
import pandas as pd

# ダミーデータ
data_X = pd.DataFrame(np.random.randint(-10, 10, size=(20, 4)))
# 依存変数
data_Y = pd.DataFrame(np.random.randint(-10, 10, size=(20, 1)))
# 単回帰分析
from sklearn import linear_model

model = linear_model.LinearRegression()
model.fit(data_X, data_Y)
print("単回帰分析の結果:", model.coef_)
"""



# 単回帰分析における残差とは何ですか。 
単回帰分析では次のようなものを残差と呼んでいます。

$$ \epsilon_i = y_i - (X_i \beta) $$
 


# 単回帰分析において、説明変数で説明しきれない部分はどのようになりますか。
単回帰分析では説明できる部分しか説明できないので、説明できない部分については残差となって残ります。 



# 単回帰分析を用いて、グラフの傾向から推定した回帰式の直線が、実際のデータに当てはまるかどうかを確認するにはどうすれば良いですか。 
単回帰分析の仮説検定を行います。 



# 単回帰分析を用いて、データ間の関係を分析します。そのときデータの散布度が高くなるのは、どのような場合ですか。 
データの散布度は以下のように定義されています。

$$ Var(Y_i) = \frac{1}{N} \sum_{i=1}^{N} (y_i - \bar{y})^2 $$



# 単回帰分析を用いて、データの線形性を評価するにはどうすれば良いですか。 
次のように線形回帰分析を用いて分析することができます。

$$ Y_i = \beta_0 + \beta_1 X_i + \epsilon_i $$



# 次の図を見て、次の文章の空欄に当てはまるように適切な文字を挿入して下さい。

- 説明変数が単一の時には
(1)回帰分析、
(2)分散分析、
(3)主成分分析

が行われます。

- 説明変数が複数あるときには、
(1)回帰分析、
(2)分散分析、
(3)主成分分析

(4)因子分析
が行われます。

- 単回帰分析は、
(1)多重共線性が発生しているとき、
(2)説明変数の数が多いとき、
(3)説明変数の説明力が強いとき、
(4)説明変数と標本の数が少ないとき
には行われません。



# 単回帰分析の仮説検定とは何ですか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 単回帰分析において、次の説明変数を使うことができますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 単回帰分析を用いて、データの散布度が高くなるのは、どのような場合ですか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 次の図は、単回帰分析における標本の説明力を表しています。線形回帰分析を用いて、散布度の高いと低いの違いがわかりますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 次の図は、単回帰分析における標本の説明力を表しています。説明変数が多くても、線形回帰分析を用いて、散布度の高いと低いの違いがわかりますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 次の図は、単回帰分析における標本の説明力を表しています。説明変数が少なくても、線形回帰分析を用いて、散布度の高いと低いの違いがわかりますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 次の図は、単回帰分析における標本の説明力を表しています。多重共線性が発生している場合には、線形回帰分析を用いても、散布度の高いと低いの違いがわかりませんか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 単回帰分析において、説明変数で説明しきれない部分はどのようになりますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 単回帰分析を用いて、データ間の関係を分析します。 

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 線形回帰分析を用いて、データの散布度が高くなるのは、どのような場合ですか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $$



# 説明変数が多くても、線形回帰分析を用いて、データの散布度の高いと低いの違いがわかりますか。

$$ H_0: \beta_0 = 0 $$

$$ H_1: \beta_0 \neq 0 $

コードブロックの部分を実行したところ、正しく分析を行ってくれました。ただ、単回帰分析ではなく重回帰分析になっていますが。

ちなみに、Swallow-MX-8x7bで試したところ、checkpointをロードする段階でセッションがクラッシュしたので、今回は試していません。そのため、今後はSwallow-MS-7bで実行していきます。

Swallow on mistralを動かすのに必要なPCのスペック

■Pythonのバージョン
Python 3.8以上

■使用ディスク量
13.65GB

■RAMの使用量
29.36 GB

なお、ChatGPTの4倍ほど速い日本語LLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Stockmark 13B】ChatGPTよりも圧倒的に速い!ビジネス利用特化型日本語LLMを使ってみた

Swallow on mistralの日本語能力を試してみた

今回は、Swallow on mistralの「ビジネスにおける日本語能力」を検証するために、以下のタスク2つを試してみます。

  • 商談のアポイントメール作成
  • キャッチコピー作成

その際、GPT-4にも同じプロンプトを入力して、出力結果を比較してみます。

商談のアポイントメール作成

取引先との商談の日程調整を行うための「アポイントメール」を作成してもらいます。使用したプロンプトは、以下の通りです。

取引先との商談の日程調整を行うためのアポイントメールを作成してください。

Swallow-MS-7bでの出力結果は以下の通りです。

件名:アポイントメール 日付-
 本文:

 ・拝啓 貴社ますますご清栄のこととお喜び申し上げます。
 ・平素は格別のご愛顧を賜り、厚く御礼申し上げます。
 ・早速ではございますが、お仕事の件でご連絡申し上げました。
 ・貴社ご担当の田中様にご連絡を頂戴し、お電話にて打ち合わせの機会をいただきたくご連絡申し上げます。
 ・取り急ぎメールにてご連絡申し上げますが、ご多忙のところ大変お手数をおかけいたしますが、何とぞご検討よろしくお願い申し上げます。
 ・敬具
 ・記
 ・会社名:
 ・連絡先:
 ・住所:
 ・電話番号:

アポイントメールが届いたら:メールの確認と返事(日程調整)
 メールを受け取る側の手順を解説します。
 ・件名に「アポイントメール 日付」と記載があることを確認してください。日付を見ることで何月何日のアポイントなのかをすぐに確認することができます。
 ・本文に「ご多忙のところ大変お手数をおかけいたしますが、何とぞご検討よろしくお願い申し上げます。」といった、言葉があれば丁寧な印象を与えられるので、できれば添えたいところです。
 ・メールが届いていれば、件名や本文の内容を確認したうえで、メールを送ってくれることへのお礼の一文を添えて返信し、日程の調整を行っていきます。
 ・件名:
 ・本文:
 ・・・・お忙しいところご連絡いただきありがとうございます。
 ・・・・アポイントを頂きましたが、
 ・・・・4月5日の10:00と4月10日の16:00のどちらの時間にお伺いいたしましょうか。
 ・・・・また、どちらも時間が取りづらい場合は、メールにてご連絡いたしますが、
 ・・・・ご都合の良い日時を教えていただけますと幸いです。
 ・・・・何卒よろしくお願いいたします

GPT-4での出力結果は、以下の通りです。

件名: 【ご相談】商談のご日程調整について

[取引先の会社名] 御中
[取引先の担当者名] 様

拝啓 時下ますますご清栄のこととお慶び申し上げます。
平素は格別のご高配を賜り、厚く御礼申し上げます。

さて、[貴社/貴社の製品やサービスに関連する内容]につきまして、さらに詳細なご説明をお聞きしたいと考えております。また、[自社の製品やサービスに関連する内容]についてもご紹介させていただければと存じます。

つきましては、貴社との商談の機会を設けていただきたく、ご日程のご相談をさせていただきたいと思います。
ご多忙のところ恐れ入りますが、[希望する週や日にち]にお時間をいただけますと幸いです。もちろん、貴社のご都合を最優先いたしますので、ご指定いただける日時をお知らせいただければ幸いです。

場所につきましては、貴社または当社のオフィス、またはオンラインでの開催も可能ですので、ご都合の良い方法をご指定ください。

貴重なお時間をいただき、直接お話ができる機会を心より楽しみにしております。
ご返信いただけますようお願い申し上げます。

敬具

[自社名]
[自分の名前]
[役職]
[連絡先(電話番号・メールアドレス)]

キャッチコピー作成

今となっては懐かしい「ニンテンドーDS」を、リバイバル商品として売り込むためのキャッチコピーを作成してもらいます。

昔人気だったゲーム機の「ニンテンドーDS」を、リバイバル商品として売り込むためのキャッチコピーを作成してください。

Swallow-MS-7bでの出力結果は以下の通りです。

「私のDS、今、ニワカです。」
 ※ニワカ:新しい趣味などにはまっている人。
 「お正月は、DSでニワカを作ろう」
 ※ニワカ:新しい趣味などにはまっている人。

その他 
 2014年11月10日放送の「笑っていいとも!グランドフィナーレ 感謝の超特大号」(フジテレビ系列)にて同局の女性アナウンサーが「フジテレビが本気になったゲーム」と紹介。『ドラゴ

GPT-4での出力結果は、以下の通りです。

ニンテンドーDS:あの感動を、もう一度。手の中で蘇る無限の冒険!

なお、Stability AIが開発した最強の日本語LLMについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Japanese Stable LM Gamma 7B】Stability AI史上最強の日本語LLMが誕生!?

早速Swallow on mistralを日本語タスクに応用しよう

本記事では、日本語特化型のLLM「Swallow on mistral」について解説しました。Swallow on mistralは、「Mistral 7B」と「Mixtral 8x7B」の2つのモデルの日本語能力を向上したものです。そのため、日本語のあらゆるタスクで、応用できるでしょう。

ただ、GPT-4とSwallow on mistralの比較では、やはりまだまだ日本語能力においても、GPT-4のほうが上といった印象でした。しかし、Swallowの方でも、日本語自体の自然さは十分あるので、工夫次第でとても便利なツールになるでしょう。

ちなみに、公式ブログによると、instruct版は無いそうです。

instruct版モデルはないのでしょうか?

評価や評価結果の集計が間に合わなかったため、今回はリリースしていません。
今年度中に、Swallowシリース全体のinstructモデルのアップデートを行う予定ですので、お待ちいただけますと幸いです。

また、X上では、Swallow-MX 8x7Bが「MoEを採用した史上初のモデル」と呼ばれることに対し、以下のような意見が挙がっています。

また、Claude 3やChatGPTよりも、Swallowの方が親近感があるという声も。

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、弊社紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 中田

    データサイエンス専攻の大学院生。大学では、生成系AIの拡散モデルを用いた音楽生成について研究。 趣味は作曲、サッカー、コーヒー。

  • URLをコピーしました!
  • URLをコピーしました!
目次