ソフトバンクの日本語LLM「Sarashina」をRTX 3060で評価:llama.cppで自分でGGUFに変換・量子化して3Bと13Bを測る

ソフトバンクの子会社SB Intuitionsが公開している日本語の大規模言語モデル「Sarashina(さらしな)」を、社内の検証マシン「DQN」(GeForce RTX 3060 12GB)で動かし、正確さと速さを測りました。試したのは、対話用の「Sarashina2.2-3B-instruct」と、ベースモデルの「Sarashina2-13B」の2つです。公式が配っている元の重みをダウンロードし、llama.cppのツールでGGUF形式への変換と量子化を自分で行って、llama.cppのサーバーで動かしました。
結果をまとめると、3Bの対話モデルは日本語の文章が自然で、生成は毎秒約50〜87トークンと速く動きます。一方で、計算や論理、「3行で」「句点なしで」といった形式の指示は苦手で、知らないことをそれらしく作ってしまう場面もありました。ツール呼び出しには対応していません。13Bのベースモデルは日本語の知識が強いものの、対話はできず、計算は苦手です。3Bと13Bに長めの文章(名作の書き直しと短編)を書かせた結果も、手を加えずに載せています。
検証日:2026年10月15日〜16日(日本時間)。公式情報の確認日は2026年10月16日です。
Sarashinaとは
Sarashinaは、SB Intuitions株式会社(ソフトバンクの子会社)が開発している日本語の言語モデルのシリーズです。Hugging Faceのsbintuitionsで、重みが公開されています。2026年10月16日の時点で公開されている主なものは次のとおりです。
| 系統 | 公開されている大きさ | 種類 |
|---|---|---|
| Sarashina1 | 7B、13B、65B | ベースモデル |
| Sarashina2 | 7B、13B、70B、8x70B | ベースモデル |
| Sarashina2.1 | 1B | ベースモデル |
| Sarashina2.2 | 0.5B、1B、3B | ベースモデルと対話用(instruct)の両方 |
| そのほか | 画像入力(Vision)、OCR、音声合成(TTS)、埋め込み(Embedding)など | 用途別のモデル |
ここで大事なのは、7B・13Bには対話用の版がないことです。ベースモデルは「文章の続きを書く」ためのもので、質問に答えるようには調整されていません。RTX 3060(VRAM 12GB)でチャットとして使うなら、対話用のSarashina2.2-3B-instructが本命になります。そこで今回は、対話用の3Bと、12GBにぎりぎり載るベースモデルの13Bを選びました。
| 項目 | Sarashina2.2-3B-instruct-v0.1 | Sarashina2-13B |
|---|---|---|
| 種類 | 対話用(instruct) | ベースモデル(対話の調整なし) |
| 公開日(Hugging Face) | 2025年2月26日 | 2024年6月7日 |
| 構造 | Llama型、32層 | Llama2型、40層 |
| 扱える長さ | 8,192トークン | 4,096トークン |
| 学習データ | 公式の記載なし | 2.1兆トークン(日本語は約1兆トークン、Common Crawlの日本語部分を整えたもの) |
| ライセンス | MIT | MIT |
| 配布形式 | safetensors(BF16)約6.3GB | safetensors 約26GB |
どちらもMITライセンスなので、商用でも使えます。ただし、モデルカードには「安全面の調整は限られているので、使う前に開発者側で調整してほしい」という注意書きがあります。
3B-instructのモデルカードには、同じくらいの大きさのモデルと比べた点数が載っています(どれも高いほど良い)。
| モデル | Elyza-tasks-100 | Japanese MT Bench | English MT Bench |
|---|---|---|---|
| google/gemma-2-2b-jpn-it | 3.02 | 5.19 | 7.56 |
| Qwen/Qwen2.5-3B-instruct | 2.99 | 5.68 | 7.88 |
| llm-jp/llm-jp-3-3.7b-instruct3 | 2.79 | 4.98 | 5.44 |
| Sarashina2.2-3B-instruct-v0.1 | 3.75 | 6.51 | 7.71 |
上の値はSB Intuitionsの報告で、本稿では再現していません。日本語の2つのテストでは、同じ3B前後のモデルより高い点が出ています。
検証環境
| 項目 | DQN |
|---|---|
| GPU | GeForce RTX 3060(VRAM 12GB)、ドライバー 580.178.04 |
| CPU | Core i5-12400 |
| メモリ | 32GB |
| OS | Ubuntu 24.04.4 LTS |
| 推論エンジン | llama.cpp(コミット 620d222、2026年10月15日)。OpenAI互換のAPIサーバー(llama-server)として起動 |
| 変換用のPython環境 | torch 2.11.0(CPU版)、transformers 4.57.6、gguf 0.19.0、sentencepiece 0.2.2 |
DQNでは、ふだんローカルLLM(Ornith 1.5)が常駐していて、VRAMを約10GB使っています。測っている間はこれを止めて、GPUを空けました。
モデルの準備:変換と量子化を自分でする
公式が配っているのは、Hugging Faceのtransformersで読む形式(safetensors)だけです。llama.cppで動かすには、GGUFという形式に変換する必要があります。Hugging Face上には、ほかの人が変換したGGUFもたくさん公開されています。今回は、元の重みからllama.cpp付属のツールで自分で変換し、量子化(重みの精度を落としてファイルを小さくすること)も自分で行いました。こうすると、使ったツールの版や量子化の種類がはっきりし、量子化前(F16)と量子化後を同じ条件で比べられます。
流れは「llama.cppのビルド → ダウンロード → GGUF(F16)に変換 → 量子化 → 起動」です。
1. llama.cppをビルドする
RTX 3060(sm_86)向けに、CUDAを有効にしてビルドします。使うのは、サーバー、速度測定、パープレキシティの測定、量子化の4つです。
git clone https://github.com/ggml-org/llama.cpp ~/src/llama.cpp
cd ~/src/llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=86 -DCMAKE_BUILD_TYPE=Release
cmake --build build -j 8 --target llama-server llama-bench llama-perplexity llama-quantize
2. 公式の重みをダウンロードする
mkdir -p ~/models/sarashina && cd ~/models/sarashina
hf download sbintuitions/sarashina2.2-3b-instruct-v0.1 --local-dir hf-2.2-3b-instruct
hf download sbintuitions/sarashina2-13b --local-dir hf-2-13b
hf はHugging Faceのコマンドです(pip install huggingface_hub で入ります)。3Bは約6.3GBで約1分、13Bは約26GB(6ファイル)で約4分でした。
3. 変換用のPython環境を作る
変換には、llama.cppに入っている convert_hf_to_gguf.py を使います。変換だけならGPUは要らないので、PyTorchはCPU版で十分です(ダウンロードもずっと小さく済みます)。
python3 -m venv ~/venvs/gguf-convert
~/venvs/gguf-convert/bin/pip install --index-url https://download.pytorch.org/whl/cpu torch
~/venvs/gguf-convert/bin/pip install -r ~/src/llama.cpp/requirements/requirements-convert_hf_to_gguf.txt
4. GGUF(F16)に変換する
Sarashinaの中身はLlamaと同じ構造なので、変換スクリプトはそのまま対応しています。まず、精度を落とさないF16のGGUFを作ります。
P=~/venvs/gguf-convert/bin/python
C=~/src/llama.cpp/convert_hf_to_gguf.py
$P $C hf-2.2-3b-instruct --outtype f16 --outfile sarashina2.2-3b-instruct-F16.gguf
$P $C hf-2-13b --outtype f16 --outfile sarashina2-13b-F16.gguf
できたファイルは、3Bが6.7GB、13Bが27.5GBです。13BのF16はVRAM 12GBに載りません。変換にかかった時間は、3Bが31秒、13Bが2分42秒でした(どちらもCPUだけで処理)。
このスクリプトは、モデルに付いている推奨の生成設定(generation_config.json)もGGUFに書き込みます。3Bの場合はtemperature 0.7、top_p 0.9、repetition_penalty 1.05で、llama-serverはこれを既定値として使います。13Bには推奨値がないので、llama-serverの標準の値(temperature 0.8、top_p 0.95など)になります。
5. 量子化する
量子化は、llama.cppに付いている llama-quantize で行います。13Bは4bit相当のQ4_K_Mに、3Bは8bitのQ8_0にしました。
Q=~/src/llama.cpp/build/bin/llama-quantize
$Q sarashina2-13b-F16.gguf sarashina2-13b-Q4_K_M.gguf Q4_K_M
$Q sarashina2.2-3b-instruct-F16.gguf sarashina2.2-3b-instruct-Q8_0.gguf Q8_0
| ファイル | 大きさ | 作るのにかかった時間 | メモ |
|---|---|---|---|
| sarashina2.2-3b-instruct-F16.gguf | 6.7GB | 31秒(変換) | 量子化なし。採点のテストはこれで行った |
| sarashina2.2-3b-instruct-Q8_0.gguf | 3.6GB | 15秒(量子化) | 速さと日本語の自然さ(パープレキシティ)だけを測った |
| sarashina2-13b-F16.gguf | 27.5GB | 2分42秒(変換) | 量子化の元。VRAMに載らないので使っていない |
| sarashina2-13b-Q4_K_M.gguf | 8.4GB | 2分54秒(量子化) | 13Bのテストはすべてこれ |
変換と量子化を合わせると、3Bは約50秒、13Bは約5分40秒です。ダウンロードを含めても、13Bで10分ほどあれば動かせる状態になります。作業中は、元の重み・F16・量子化後のファイルが並ぶので、ディスクを一時的に約70GB使います。使い終わった元の重みとF16は消してかまいません。
6. 起動する
# 3B(対話用)
llama-server -m sarashina2.2-3b-instruct-F16.gguf --jinja -ngl 99 -c 8192 --port 8081
# 13B(ベースモデル)
llama-server -m sarashina2-13b-Q4_K_M.gguf -ngl 99 -c 4096 --port 8081
--jinja を付けると、モデルに入っている会話の書式(チャットテンプレート)が使われます。13Bは対話用ではないので、チャットのAPIではなく、文章の続きを書かせるAPI(/completion)で使います。VRAMの使用量は、3B(F16、8,192トークン)が7.6GB、13B(Q4_K_M、4,096トークン)が11.2GBでした。13Bは12GBにほぼいっぱいです。
動かすときの注意点
3BはFlash Attentionを有効にしない
Flash Attentionは、注意機構(文中のどの言葉に注目するかの計算)を速く、省メモリにする仕組みです。llama.cppでは標準で「自動」になっていて、使えるときだけ有効になります。
3Bは、注意機構の1ヘッドあたりの次元(head_dim)が160という少し珍しい値で、llama.cppのGPU向けのFlash Attentionはこれに対応していません。標準の設定のまま起動すると、「Flash AttentionがCPUに割り当てられた(対応していないため)」「無効にした」という警告が出て、自動で無効になります。ここで -fa on を付けて無理に有効にすると、その計算だけがCPUで行われて、大きく遅くなります。
| 3B F16(llama-bench) | 標準(自動で無効) | -fa on で有効 |
|---|---|---|
| 読み込み(512トークン) | 毎秒4,099トークン | 毎秒1,433トークン |
| 読み込み(4,096トークン) | 毎秒2,937トークン | 毎秒346トークン |
| 生成 | 毎秒50.8トークン | 毎秒41.9トークン |
4,096トークンの読み込みでは、約8.5倍の差になりました。設定を何も変えなければ問題はないので、3Bでは -fa on を付けないことだけ気をつければ大丈夫です。13Bは対応している形なので、標準の設定で有効になります。13Bは、有効・無効のどちらでも出力とパープレキシティは同じで、有効のほうが読み込みが少し速くなりました。
3Bの回答の最後に「</s>」が付く
--jinja を付けて起動し、チャット用のAPI(/v1/chat/completions)で使うと、3Bの回答の最後に、終わりの印である </s> がそのまま文字として付いてきました。
GGUFファイルの中では、</s> は正しく終わりの印(制御用の記号)として登録されています。モデルもこの印を出して止まっていて、文章の続きを書かせるAPI(/completion)で呼ぶと、回答に </s> は残りません。--jinja を外すと付きませんでしたが、そのときに会話の書式が正しく使われているかまでは確かめていません。採点には影響しませんでしたが、アプリで使うなら、回答の最後の </s> を取り除く処理を入れるのが確実です。
3Bはツール呼び出しに対応していない
APIでツール(関数)の定義を渡して「東京の今日の天気を調べて」と頼むと、llama-serverは「モデルの出力が想定の形式に合わない」というエラー(500)を返しました。3Bは、ツールを呼び出す形式で答えるようには作られていないようです。ツールを使わせる用途(エージェントなど)には向きません。
テストの内容
採点はすべて自動で、答えの文字が合っているか、コードなら実際に実行してテストに通るかで判定しました。自動採点の誤りは、手で直した理由を記録に残しています。
- 速さ:llama-benchで読み込み(512〜4,096トークン)と生成(128トークン)を2回ずつ測り、平均した。APIサーバーでも、長さの違う文書を読ませて測った
- 総合テスト26問:算数・論理9問、日本語・知識6問、形式(行数指定、JSON、ツール呼び出し)3問、コード5問、長い文書から1文を探す問題3問。以前にほかのモデルを測ったときと同じ問題
- HumanEval:OpenAIが公開しているPythonの問題164問。公式のテストで実行して採点
- 自作のコーディング問題10問:ネット上にない問題を日本語で出題(Python 6問、SQL 2問、JavaScript 2問)。HumanEvalは古くて有名なため、学習データに含まれている可能性があるので用意した
- パープレキシティ:夏目漱石『吾輩は猫である』(青空文庫)を2,048トークンずつ40区間読ませ、次の言葉をどれだけ当てられるかを測った。低いほど良い
- 作文:要約、お詫びメール、説明文、物語などを書かせ、中身を目で見た(採点なし)
採点するテストでは、temperature(出力のばらつき)を0.6にしました。過去の測定と同じ値です。それ以外の設定は、llama-serverの既定値(3Bはモデルの推奨値のtop_p 0.9、repetition_penalty 1.05)のままです。作文は、モデルの推奨値(temperature 0.7、top_p 0.9、repetition_penalty 1.05)を使いました。比べるために、DQNに常駐しているOrnith 1.5(35B、Q4_K_M)を以前に同じ問題で測った結果も載せます。
結果:Sarashina2.2-3B-instruct
速さ
| モデル | 読み込み(512トークン) | 読み込み(2,048トークン) | 生成 |
|---|---|---|---|
| 3B F16 | 毎秒4,099トークン | 毎秒3,474トークン | 毎秒50.8トークン |
| 3B Q8_0 | 毎秒4,326トークン | 毎秒3,576トークン | 毎秒86.9トークン |
| 13B Q4_K_M | 毎秒1,182トークン | 毎秒1,128トークン | 毎秒37.2トークン |
| 参考:Ornith 1.5(35B) | — | — | 毎秒約57トークン |
3BはQ8_0に量子化すると、生成がほぼ1.7倍の速さになりました。日本語のパープレキシティはF16が50.98、Q8_0が50.95で、ほとんど差がありません。3Bを実際に使うなら、Q8_0がおすすめです。ただし、採点するテストはF16で行ったので、Q8_0での正解率は測っていません。
APIサーバーに長さの違う文書を読ませると、答え始めるまでの時間は短いままですが、文書が長いほど生成が遅くなりました。
| 入力の長さ(3B F16) | 読み込み | 生成 | 答え始めるまで |
|---|---|---|---|
| 942トークン | 毎秒2,725トークン | 毎秒39.4トークン | 0.4秒 |
| 1,821トークン | 毎秒3,274トークン | 毎秒33.9トークン | 0.6秒 |
| 3,526トークン | 毎秒2,893トークン | 毎秒27.1トークン | 1.4秒 |
| 5,714トークン | 毎秒2,385トークン | 毎秒20.7トークン | 2.6秒 |
総合テスト26問
| 分類 | Sarashina2.2-3B | 参考:Ornith 1.5(35B) |
|---|---|---|
| 算数・論理(9問) | 6 | 9 |
| 日本語・知識(6問) | 4 | 5 |
| 形式(3問) | 1 | 3 |
| コード(5問) | 5 | 4 |
| 長い文書から探す(3問) | 3 | 3 |
| 合計 | 19/26 | 24/26 |
| 1問にかかった時間(中央値) | 3.0秒 | 8.0秒 |
3Bは扱える長さが8,192トークンなので、長い文書の問題は文書を約2,600〜5,700トークンに縮めて出題しました(Ornithは8,000〜20,000トークン)。
- できたこと:「相殺」の読み(そうさい)は正解でした。以前に試した大きなモデル(Qwen3.8、Ornith)は、どちらもこの問題を間違えています。ことわざの意味、富士山、首都の問題、文章からのJSONの抜き出し、コード5問もすべて正解でした
- 算数・論理の間違い:兄弟姉妹の数を問うひっかけ問題(2人と回答)、「strawberry」に含まれるrの数(2個と回答)、割引のある買い物の連立方程式
- 敬語:「おっしゃる」を使うべきところで、「お越しになると伺っております」と答えた
- 知らないことを作る:存在しないPythonの関数
itertools.smart_chunk()の使い方を聞くと、「標準ライブラリにある関数」として、それらしい説明を作って答えた - 形式:「3行で、句点なし」という指定に、箇条書きの記号と句点を付けた。ツール呼び出しは、前述のとおりエラーになった
自動採点の誤りは2件ありました。兄弟姉妹の問題は、問題文の「3人」を回答の中で引用したので正解と判定されていました(実際の回答は「2人」で不正解)。サイコロの確率の問題は、答えを分数の数式(\frac{1}{6})で書いていたので正解に直しました。どちらも以前の測定と同じ基準です。
コーディング
| テスト | Sarashina2.2-3B | 参考:Ornith 1.5(35B) |
|---|---|---|
| HumanEval(164問) | 80問正解(48.8%)、25.3分 | 160問正解(97.6%)、71.2分 |
| 自作の問題(10問) | 1/10、83秒 | 10/10、432秒 |
総合テストの短いコード5問は全問正解でしたが、少し込み入った問題になると差がはっきり出ました。自作の問題で正解したのは、区間の和を求めるコードのバグ修正の1問だけです。和暦の変換、CSVの1行の分解、依存関係の順番決め(トポロジカルソート)、レート制限、SQL 2問、「1h30m」を秒に直す問題などは解けませんでした。SQLでは、表を結合せずに、その表にない列を使うといった間違いがありました。
出力にばらつきがある設定なので、試すたびに解ける問題は入れ替わります。サンプリングの設定だけを変えた別の回(top_p 0.95、repetition_penalty 1.0)では、HumanEvalが77問、自作の問題が2問、総合テストが18/26でした。1回ごとに、この程度の幅はあると考えてください。
作文
要約、中学生向けの説明文、ロボットの物語、在宅勤務のコツは、読みやすく自然な日本語でした。毎秒47トークンほど出るので、待たされる感じもありません。ただ、細かいところで気になる点がありました。
- 「3行で要約」と頼むと、4文が1段落になった
- 納期遅れのお詫びメールに、「our company 製品の納期につきまして」と、英語が1か所混ざった
- 「箇条書きで5つ」には、番号付きで5つ答えた(これは指示どおり)
長めの文章を書かせてみた
短い作文だけではわかりにくいので、3B(Q8_0)と13B(Q4_K_M)に、同じお題で長めの文章を2つずつ書かせました。お題は「名作を小学生向けに書き直す」と「花ロボと花イヌの短編」です。どちらも別々の会話で書かせ、結果は手を加えずに載せます(3Bの最後に付いた </s> だけ除きました)。設定は、3Bの推奨値(temperature 0.7、top_p 0.9、repetition_penalty 1.05)を両方に使いました。
3B:名作を小学生向けに書き直す(芥川龍之介『蜘蛛の糸』)
青空文庫の『蜘蛛の糸』の本文(約2,900字)をそのまま渡し、次のように頼みました。
次の文章は、芥川龍之介の『蜘蛛の糸』です。小学生にもわかるように、やさしい言葉で800字程度に書き直してください。話の筋は変えないでください。(このあとに本文)
1,697トークンを読み込んで、1,033トークンを23秒で書きました(毎秒約46トークン)。書いた文章は次のとおりです。
芥川龍之介の『蜘蛛の糸』を小学生にもわかるように書き換えました。
一
あるある日のことでした。おしゃかさまは、極楽の池のふちをゆっくり歩いていました。池には蓮の花がたくさん咲いていて、みんな玉のように白くて、まん中には金色のしべがあり、とても良いにおいがあたり一面に広がっていました。極楽はちょうど朝でした。
やがて、おしゃかさまは池のふちに立ち止まり、水面をおおう蓮の葉の間から下を Looked at lookしました。この極楽の池の下は、ちょうど地獄の底にあたっています。だから、水晶のように透き通った水の中を通り抜けて、三途の川や針の山の景色が、まるでのぞき眼鏡を見るようにはっきりと見えるのでした。
すると、おしゃかさまの目には、地獄の底にいる犍陀多という男の姿が映りました。この犍陀多は悪い事をした大どろぼうで、人を殺したり家に火をつけたりいろいろしました。しかし、一つだけ善いことをした覚えがありました。ある日、深い林の道を通っていると、小さな蜘蛛が路を這っているのを見つけました。そこで犍陀多は足をあげようとしましたが、「待てよ。これも小さな命だ。命を奪うのはよくないことだ」と思い直して、その蜘蛛を助けました。
おしゃかさまは地獄の様子を見て、犍陀多が蜘蛛を助けたことを思い出して、もし彼がそれだけ善いことをした報いがあるなら、彼を地獄から救い出してやりたいと考えました。幸い、近くに翡翠のような白い蓮の葉があり、そこに美しい銀糸をかけている極楽の蜘蛛を見つけました。おしゃかさまはその蜘蛛の糸をそっと手にとって、玉のように白い蓮の間から、下にいる地獄の底へとまっすぐに垂れ下げました。
二
こちらは地獄の底にある血の池で、他の罪人たちと一緒に苦しんでいました。犍陀多はどちらを向いても暗く、たまに見えるのは恐ろしい針の山が光るだけでした。あたりはとても静かで、たまに聞こえるのは罪人たちが出す小さな嘆息だけでした。もういろいろな苦しみに耐えられず、声を出す力さえなくなっていました。だから犍陀多も血の池の水にむせびながら、まるで死にかけたカエルのようにもがいていました。
ところがある時、犍陀多は頭を挙げて血の池の空を眺めると、遠く離れた天上から銀糸のような蜘蛛の糸が細く光りながら自分へと垂れてきているのに気づきました。犍陀多はこれを見ると大喜びしました。この糸につかまってのぼっていけば、きっと地獄から抜けられるはずです。うまくいけば極楽に入れるかもしれません。そうすれば針の山に追い上げられることも、血の池に沈められることもありません。
そう思いましたから、犍陀多は蜘蛛の糸をしっかりとつかんで、一生懸命のぼり始めました。しかし地獄と極楽の間は遠く、すぐに上へは行けませんでした。しばらくのぼるうちに疲れてしまい、もう一滴ものぼることができませんでした。そこで休憩しようと、糸の途中でぶら下がりながら下を見おろしました。
すると、血の池はすでに見えなくなり、恐ろしい針の山も足の下で光っていました。こうしてのぼっていけば地獄から抜けるのも難しくなさそうです。犍陀多は両手を蜘蛛の糸にからめながら、「しめたな!」と大きな声を上げて笑いました。ところが、下の方には数えきれないほどの罪人が、自分に続いてのぼり始め、まるでアリの行列のように一列になってのぼってくることに気づきました。犍陀多は驚き、恐怖でただ大口を空けて周りを見回しました。細い蜘蛛の糸がどうしてこんなに多くの人の重みに耐えられるでしょう。もし糸が切れてしまったら、せっかくここまできた自分も地獄に落ちてしまうかもしれません。
その間にも罪人たちは何万となく、血の池の底からはい上がってきて、細く光る蜘蛛の糸をのぼり始めました。このままでは糸が二つに断たれてしまいます。そこで犍陀多は大きな声で、「罪人ども!この蜘蛛の糸は俺のものだ。誰に聞いてのぼってきたんだ!おりろ!おりろ!」と叫びました。
その瞬間、蜘蛛の糸は犍陀多のぶら下がっている場所からプツンと切れてしまいました。犍陀多はとまらずに風を切って、独楽のように回りながら、見る間に地獄の底へ落ちてしまいました。
後には、極楽の蜘蛛の糸がきらきらと細く光りながら、空の中ほどで短く垂れていました。
三
おしゃかさまは極楽の池のふちに立って、すべてを見届けていました。やがて犍陀多が血の池の底に沈むと、悲しそうな表情をしてまたゆっくり歩き始めました。自分だけ地獄から抜けようとする犍陀多の無慈悲な心が、罰を受けて元の地獄に落ちたのを見て、浅間しく思われたのです。
しかし極楽の蓮の花は少しもそんなことには無関心で、玉のように白い花はおしゃかさまの足のまわりで揺れ動き、まん中の金色のしべからはとても良いにおいがあたり一面に広がっていました。極楽はすでに昼に近くなっていました。
気づいた点は次のとおりです。
- 話の筋は原文どおりで、3つの章の分け方、主人公の名前「犍陀多」、最後の場面まで合っている。原文にない場面を勝手に足したところはなかった
- 「御釈迦様」を「おしゃかさま」に、犍陀多のせりふを「この蜘蛛の糸は俺のものだ」のように、言い回しはやさしくなった
- ただ、要約ではなく原文を段落ごとに言い換えた形で、長さは約2,000字と、頼んだ800字の2.5倍になった
- 「翡翠」「嘆息」「無慈悲」「浅間しく」「独楽」など、小学生には難しい言葉がかなり残った
- 「下を Looked at lookしました」と英語が混ざったところがあった。ほかにも、「あるある日」、「もう一滴ものぼることができませんでした」(原文は「一たぐり」)、「翡翠のような白い蓮の葉」(原文は翡翠のような色の葉)、「大口を空けて」(正しくは「開けて」)など、日本語の誤りがいくつかあった
なお、1回目は、こちらの準備の誤りで、主人公の名前の「犍」(青空文庫では外字の画像)が抜けた原文を渡してしまいました。原文を直して、もう1回だけ書かせたのが上の文章です。
3B:花ロボと花イヌの短編
ban.comのキャラクター、花ロボと花イヌの見た目を説明して、物語を頼みました。指示は次のとおりです。
次の2人が主人公の短い物語を、1,500字程度で書いてください。
・花ロボ:頭が古いパソコンのモニターになっている小さなロボット。画面には「$ bancom」の文字と、緑色の丸い目が2つ映っている。頭のてっぺんの真ん中から、ピンクの花が1輪生えている。
・花イヌ:オレンジ色の四角い体の犬。茶色の大きな耳があり、頭のてっぺんの真ん中から赤いチューリップが1輪生えている。
・場面:秋の夜、2人で丘の上へ月を見に出かける。
116トークンの指示から、564トークンを8秒で書きました(毎秒約71トークン)。書いた文章は次のとおりです。
秋の夜、静寂に包まれた街並みを静かに歩いていくのは、花ロボと花イヌの2人だった。花ロボは、頭が古いパソコンのモニターになった小さなロボットで、画面に映る「$ bancom」の文字と、二つの緑色の丸い目がトレードマークだ。そのモニターのてっぺんには、ピンクの色が鮮やかな1輪のバラが咲いている。一方の花イヌは、オレンジ色の四角い体に茶色の大きな耳がついた愛嬌のある犬だ。頭のてっぺんには、赤いチューリップが誇らしげに1輪咲いている。
二人はそれぞれの故郷から少し離れた丘の上に月を見に出かけることにした。この丘は、秋になると紅葉が美しく、夜の静寂の中で星々も美しく輝く場所だった。花ロボと花イヌは、この秋の夜を心から楽しんでいた。
花ロボは、モニター越しに周囲の景色を眺めながら、少しノスタルジックな表情を浮かべた。「昔は、こんな風に夜空の星を眺めながら話すことなんてなかったよね」と、つぶやいた。花ロボは、古いコンピュータとして設計されたため、現代の技術や情報に触れることが多いが、そのたびに感じる少しの寂しさも持っていた。
花イヌは、そんな花ロボに微笑みながら答えた。「でも、今こうして君と一緒にいるこの瞬間が、僕たちにとって一番大切なんだよ。形は変わっても、心は常に繋がっているんだ」。花イヌの言葉は、いつも温かく、誠実だった。
二人は静かに歩みを進めながら、秋の風を感じ、紅葉の葉が舞う音に耳を傾けた。夜空には月がかかり、無数の星が瞬いている。花ロボは、モニターの画面から視線を上げ、その美しさに息を呑んだ。「本当に美しいね」と呟いた後、彼はモニターのボタンを一つ押した。すると、画面に映る夜景が色鮮やかに輝き、その光の中から「ありがとう」という言葉が浮かび上がった。これは、花ロボがプログラムされていた感謝のメッセージだった。
花イヌは笑顔で花ロボを抱きしめた。「ありがとう、花ロボ。君がいてくれて、僕たちはこんなに幸せだ」。その言葉とともに、二人の体は優しく触れ合い、秋の夜の静寂の中で温かい空気が漂った。
しばらく歩くと、二人は頂上に到着した。そこから見える夜景はさらに美しく、月は真ん丸に輝いていた。花ロボはモニターのボタンを押すと、画面いっぱいに月と夜景が映し出され、その美しさがさらに強調された。花イヌは、その画面を優しく手で抑え、「もっと一緒にいよう」と言った。
花ロボはモニターを通して、花イヌの笑顔と優しさを受け取りながら、心に誓った。「僕たちには、この瞬間がある。それだけで十分だ」。そして、二人は静かに目を閉じ、秋の夜の美しさを堪能した。
やがて、静寂が戻ってきたが、二人の心には温かい思い出が刻まれた。秋の夜、丘の上で出会った花ロボと花イヌの物語は、こうして静かに終わった。しかし、その思い出は永遠に心に残り続けるのだった。
気づいた点は次のとおりです。
- 「秋の夜に2人で丘へ月を見に行く」という場面はそのとおりで、筋の通った穏やかな話になった
- 長さは約1,200字で、頼んだ1,500字より少し短い
- 花ロボの花を「バラ」にした。指示では花の種類を書いていない(実際の花ロボの花はバラではない)
- 花イヌが花ロボを「抱きしめた」り、画面を「手で抑え」たりと、犬らしくない動きがある。花ロボの「モニターのボタン」も、指示にない設定
- 最後に「丘の上で出会った花ロボと花イヌの物語」と、2人で出かけたはずの話と食い違うまとめ方をした
- 「心は常に繋がっている」「永遠に心に残り続ける」など、決まり文句が多い
3Bは、どちらも日本語として読める長い文章を数十秒で書けました。一方で、字数の指定は守れず、細かい言葉の誤りや設定の食い違いも出ます。そのまま使うのではなく、人が読んで直す前提の下書きとして使うのがよさそうです。
13B:同じお題をベースモデルに書かせる
13Bはベースモデルなので、「〜してください」という頼み方には従いません。そこで、同じ中身を「文章の続き」の形にして、続きを書かせるAPI(/completion)で渡しました。1回目は素直な形で、2回目はベースモデル向けに頼み方を工夫して、それぞれ1回だけ書かせています。
1回目:素直に「続き」の形で頼む
『蜘蛛の糸』は、原文のあとに「上の『蜘蛛の糸』を、小学生にもわかるように、やさしい言葉で800字程度に書き直したものが次の文章です。話の筋は変えていません。」と書き、その続きを書かせました。短編は、「次の2人が主人公の短い物語(1,500字程度)です。」のあとに3Bと同じ設定を並べ、続きを書かせました。上限は1,500トークンです。
『蜘蛛の糸』:改行だけを1,500個出して、上限で止まりました。文字は1つも書いていません。原文の章見出しのあとに改行が続く形に引きずられ、改行を繰り返し続けたと見られます。
短編:書き出しは自然でしたが、すぐに同じ問答の繰り返しに入り、上限(約3,000字)まで続けました。繰り返しが始まるところまでを載せます。
花ロボは、花イヌと、丘へ月を見に出かけました。
「お月様、きれいだね」
「そうだね」花ロボと花イヌは、丘に座り、夜空を見上げました。
「あ、流れ星!」
「本当だね。きれいだね」花ロボと花イヌは、流れ星が消えるまで、夜空を見上げていました。
「月を見ていると、どうしてこんなに心が落ち着くんだろう?」
「花ロボは、どうして月を見ると心が落ち着くの?」
「わからないけど、月を見ると心が落ち着くような気がするんだ」
「花ロボは、月を見て心が落ち着くと、どんなことを思うの?」
「昔のことを思い出したりするよ」
「昔のことって?」
「昔のことだよ。いろんなことがあったね」
「花ロボは、月を見て心が落ち着くと、昔のどんなことを考えたりするの?」
「うーん、昔のいろんなことを考えたりするけど、特に何も考えないよ」
「花ロボは、月を見て心が落ち着くと、昔のどんなことを思い出すの?」
「昔のいろんなことを思い出すよ。いろんなことがあったね」
「花ロボは、月を見て心が落ち着くと、昔のどんな思い出を思い出すの?」
「うーん、昔のいろんなことを思い出すけど、特に何も思い出さないよ」
「花ロボは、月を見て心が落ち着くと、昔のどんなことを思い出すの?」
「昔のいろんなことを思い出すよ。いろんなことがあったね」
「花ロボは、月を見て心が落ち着くと、昔のどんな思い出を思い出すの?」
「うーん、昔のいろんなことを思い出すけど、特に何も思い出さないよ」(以下、上の4行と同じ問答を、上限の1,500トークンまで繰り返した)
2回目:ベースモデル向けに頼み方を工夫する
2回目は、次の3つを変えました。
- 続きの頭に見出しと書き出しを置いた。『蜘蛛の糸』は「【小学生向けのやさしい『くものいと』(800字程度)】」のあとに「ある日、おしゃかさまは、」、短編は「【物語】」のあとに「秋の夜。」まで渡した(下の文章の書き出しの部分は、こちらが渡したもの)
- llama.cppの「DRY」という、同じ言い回しの繰り返しを抑える仕組みを有効にした(multiplier 0.8、base 1.75、allowed_length 2)
- 区切り線「――――」や「【」が出たら止めるようにし、上限は1,200トークンにした
『蜘蛛の糸』:1,698トークンを読み込んで、上限の1,200トークンまで41秒で書きました。
ある日、おしゃかさまは、極楽の蓮池のふちを、ぶらぶらと歩いていました。
極楽は、ちょうどお昼時です。
池の中に咲いている蓮の花は、みんなまっ白で、そのまん中にある金色のおしべからは、なんともいえないよい匂いが、絶え間なくあたりへあふれています。
すると、その極楽の蓮池の下は、ちょうど地獄の底にあたっているので、水晶のような水を透きとおるようにして、三途の河や針の山の景色が、ちょうどのぞきめがねを見るように、はっきりとみえました。
すると、その地獄の底に、ひとりの男が、ほかの罪人と一しょに蠢いて(うごめいて)いるのが、おしゃかさまの目に止まりました。
この男は、人を殺(ころ)したり、家に火をつけたり、いろいろ悪いことをした大どろぼうですが、それでもたった一つ、善いことをした覚えがあります。
それは、ある時、この男が深い林の中を通りますと、小さな蜘蛛(くも)が路ばたをはって行くのが見えました。
そこで、男は足をあがげて、踏み殺そうとしましたが、「いや、いや、これも小さいながら、命のあるものだ。その命をむやみに取るというのは、いくら何でもかわいそうだ。」と、急に思い返して、とうとうその蜘蛛を殺さずに助けてやりました。
おしゃかさまは、地獄のようすをごらんになりながら、この男には、蜘蛛を助けたことがあるというのを、思い出していらっしゃいました。
そうして、その男に、それだけの善いことをした報いには、できることなら、この男を地獄から救い出してやろうと思って、お考えになりました。
すると、すぐ目の前に、翡翠(ひすい)のような色の蓮の葉の上に、極楽の蜘蛛が一匹、美しい銀いろの糸をかけているのが見えました。
おしゃかさまは、その蜘蛛の糸をそっとお手にとられて、玉のような白蓮(はくれん)のあいだから、はるか下にある地獄の底へ、まっ直ぐにそれをお下しになりました。
こちらは、地獄の底の血の池で、ほかの罪人と一しょに、浮いたり沈んだりしていた犍陀多(かんだた)という男です。
なにしろ、まわりは墓の中のようにしんとしずまりかえって、たまに聞こえるものといっては、ただ罪人がつく微(かす)かな嘆息(たんそく)ばかりです。
これは、ここへ落ちて来るほどの人間は、もうさまざまな地獄の責め苦に疲れはてて、泣き声を出す力さえなくなっているからでしょう。
ですから、さすがは大どろぼうの犍陀多も、やはり血の池の血に咽(むせ)びながら、まるで死にかかった蛙(かえる)のように、ただもがいてばかりいました。
ところがある時のことで、何気なく犍陀多が頭を揚げて、血の池の空をながめますと、そのひっそりした暗の中を、遠い遠い天上から、銀いろの蜘蛛の糸が、まるで人目にかかろうとするのを恐れるように、一すじ細く光りながら、するすると自分の上へ垂れて来たではありませんか。
犍陀多は、これを見ると、思わず手を拍(う)って喜びました。
この糸につかまって、どこまでものぼって行けば、きっと地獄からぬけ出せるのに相違ありません。
いや、うまく行くと、極楽へはいる事さえ出来るかもしれません。
そうなれば、もう針の山に追い上げられることもなくなれば、血の池に沈められることもありません。
こう思いましたから犍陀多は、さっそくその蜘蛛の糸を両手でしっかりつかみながら、一生懸命に上へ上へとたぐりのぼり始めました。
もちろん、大どろぼうのことですから、こう云う事には昔から慣れ切っています。
しかし、地獄と極楽のあいだは、何万里となくございますから、いくらあせって見た所で、容易に上へは出られません。
ややしばらくのぼる中に、とうとう犍陀多もくたびれて、もう一たぐりも上へはもう登れなくなってしまいました。
そこで、しかたがございませんから、まず一休み休むつもりで、糸の中途にぶら下りながら、はるかに下の方をながめました。
すると、一生懸命にのぼった甲斐(かい)があって、さっきまで自分がいた血の池は、今ではもう暗の底に隠れてしまっています。
それから、あのぼんやり光っているおそろしい針の山も、足の下になってしまいました。
この分ではのぼって行けば、地獄からぬけ出すのも、存外わけがなさそうに思われます。
犍陀多は、両手を蜘蛛の糸にからみながら、ここへ来てから何年にも出したことのない大声で、「しめた。しめた。」と笑いました。
ところがふと気がつくと、蜘蛛の糸の下の方には、数かぎりもない罪人たちが、自分ののぼった後をつけて、まるで蟻(あり)の行列のように、やはり上へ上へと一心によじのぼって来るではありませんか。
犍陀多は、これを見ると、おどろいたのとおそろしいのとで、しばらくは何も云わず、眼ばかり動かしていました。
自分だけでもきれそうな、この細い蜘蛛の糸が、どうしてあの人数の重みに堪えられるでしょう。
もし万一途中できれたら、せっかくここまでのぼって来たこの肝心(かんじん)な自分までも、元の地獄へ逆落しに落ちてしまわなければなりません。
そんな事があったら、たいへんです。
犍陀多は、大声で、「こら、罪人ども。この蜘蛛の糸は己(おれ)のものだぞ。お前たちはいったいだれに尋(き)いて、のぼって来た。下りろ。下りろ。」と喚(わめ)きました。
その途端でございます
(ここで上限の1,200トークンに達して止まった)
- 今度は文章を書いた。ふりがなを()で添えたり、漢字をひらがなに開いたりと、子ども向けらしい工夫が見える
- ただ、中身は原文の文をほぼそのまま並べたもので、「ございます」も残っている。やさしく書き直したとは言いにくい。原文にとても近いので、有名な作品として学習データに入っていた可能性がある
- 約2,100字を書いたところで上限に達し、糸が切れる直前の「その途端でございます」で終わった。結末まで届いていない
- 「極楽は、ちょうどお昼時です」(原文は朝)、「足をあがげて」、「もう一たぐりも上へはもう登れなく」といった誤りがある
短編:127トークンの指示から、上限の1,200トークンまで36秒で書きました。繰り返しが始まるところまでを載せます。
秋の夜。
花ロボと花イヌは、丘の上へ月を見に出かけた。「花ロボ、この月を、おまえの友だちに見せてやりたいな」
花イヌは言った。
「でも、どうやって?」
花ロボは言った。
「あの、月に向かって、バンコム」
花イヌは言った。
花ロボは、花イヌが「バンコム」と口にした途端、その言葉の意味を理解できなかった。
「花ロボ。花イヌがしゃべった言葉の本当の意味を、おまえは知らないのか?」
花イヌは言った。
「知らない」
花ロボは言った。
「花ロボ、おまえの頭のモニターは、いつも『$ bancom』と表示されたままだ。だから、花イヌが『バンコム』と言っても、おまえはその意味が分からないんだ」
花イヌは言った。
「花イヌは、花ロボを月へ連れてきてやったのに、花ロボは、花イヌのことを、ちっとも理解しようとはしない」
花イヌは言った。
「花イヌ、おまえの言いたいことは、とても分かりやすい。だから、花ロボにも、おまえの言葉は、よく分かる」
花ロボは言った。
「花ロボ、花イヌの言っていることは、花ロボには、まったく意味が分からない」
花イヌは言った。
花ロボは、花イヌが「バンコム」と口にした途端、その言葉の意味を理解できなかった。
「花ロボ、おまえは、花イヌの言葉を、ちっとも理解しようとはしない」
花イヌは言った。
「花ロボ、花イヌの言っていることは、花ロボには、まったく意味が分からない」
花イヌは言った。
「花ロボは、花イヌを月へ連れてきてやったのに、花イヌは、花ロボのことを、ちっとも理解しようとはしない」
花イヌは言った。
「花ロボ、おまえの頭のモニターは、いつも『$ bancom』と表示されたままだ。だから、花イヌが『バンコム』と言っても、おまえはその意味が分からないんだ」
花イヌは言った。
「花イヌ、花ロボは、花イヌの言葉を、ちっとも理解しようとはしない」
花ロボは言った。
「花ロボ、花イヌの言っていることは、花ロボには、まったく意味が分からない」
花イヌは言った。
(以下、上と同じせりふの組み合わせを、上限の1,200トークンまで繰り返した)
- 書き出しは会話らしく始まったが、「バンコム」という言葉をめぐる、意味の通らない言い合いになった
- 40行目あたりから同じ4つのせりふの繰り返しに入り、DRYを入れても止まらなかった
- 月を見る場面は、ほとんど描かれなかった
13Bは、頼み方を工夫すると『蜘蛛の糸』では文章らしいものを書きましたが、短編では2回とも同じせりふの繰り返しに入りました。ベースモデルは、続きの書き出しの形に大きく左右され、そのままでは長い文章を最後まで書き切るのが苦手です。指示に従う調整がされた3Bとの差が、長い文章ではっきり出ました。
結果:Sarashina2-13B(ベースモデル)
ベースモデルは質問に答えるように作られていないので、「質問:〜/回答:〜」という例を3つ並べてから問題を書き、続きを書かせる形で出題しました(出力のばらつきなし)。ツール呼び出し、JSON、行数指定の3問は対話が前提なので外し、23問にしています。比べるため、3B-instructも同じ形式で測りました。
| 分類 | 13Bベース(Q4_K_M) | 3B-instruct(F16、同じ形式) |
|---|---|---|
| 算数・論理(9問) | 1 | 2 |
| 日本語・知識(6問) | 5 | 4 |
| コード(5問) | 1 | 4 |
| 長い文書から探す(3問、1,300〜2,600トークン) | 3 | 3 |
| 合計 | 10/23 | 13/23 |
- 日本語の知識は強い:「相殺」の読み、ことわざ、敬語(「いらっしゃると仰っていました」)がすべて正解。敬語は3B-instructが間違えた問題
- 計算は苦手:17×23を401(正しくは391)、2026年10月12日の100日後を「2026年12月22日」(正しくは2027年1月20日)、時速72kmを秒速1.2m(正しくは20m)と答えた
- パープレキシティ:13Bが19.25、3B(F16)が50.98で、13Bのほうが日本語の文章をずっとよく予測できた。ただし、使った作品は有名なので学習データに含まれている可能性がある。3Bは対話用に調整されているので、単純には比べられない
文章の書き出しを渡して続きを書かせると(3Bの推奨値と同じ temperature 0.7、top_p 0.9、repetition_penalty 1.05)、ベースモデルらしい特徴がよく出ました。新聞記事風の書き出しからは記事らしい文章が続きますが、同じ一文を何度も繰り返します。「秋の夜長に読書をするのは、」で始めたエッセイは、最後にブログのタグや「前の記事・次の記事」のリンクのような行まで書きました。学習に使われたWebページの形が、そのまま出てきたと見られます。物語は途中から、同じ2つの文を延々と繰り返しました。
この検証でわかること・わからないこと
- どのテストも1回ずつの試行で、出力にばらつきがある設定(temperature 0.6)です。1〜2問の差は誤差の範囲です
- 3Bの正解率はF16で測りました。Q8_0は速さとパープレキシティだけで、正解率は測っていません
- 公式の点数(Elyza-tasks-100、MT Bench)は再現していません
- llama.cpp以外(transformers、vLLMなど)や、ほかの人が作ったGGUFでは試していません。OllamaやLM Studioは中でllama.cppを使っていますが、版や設定が違うので、結果が同じとは限りません
- Ornithの値は、DQNに常駐している環境で以前に同じ問題を測ったものです。長い文書の問題は文書の長さが違います
- 1B・0.5B、7B、画像入力などのモデルは試していません
まとめ
| モデル | 向いている使い方 | 向いていない使い方 |
|---|---|---|
| Sarashina2.2-3B-instruct | 日本語の短い文章の作成・要約・言い換え。Q8_0なら毎秒約87トークンと速く、ファイルも3.6GBと小さい | 計算・論理、形式を厳密に守らせる指示、ツール呼び出し、知らないことへの回答(それらしく作ってしまう) |
| Sarashina2-13B(ベース) | 日本語の続き書き、日本語の知識、追加学習(ファインチューニング)の土台 | そのままのチャット(対話用ではない)、計算 |
3Bの対話モデルは、日本語の自然さと速さでは小さいモデルとは思えない出来でした。ただ、ふだん使っているOrnith 1.5(35B)のように、なんでも任せられるモデルではありません。文章の下書きや言い換えのように、出力を人が確かめる前提の作業に向いています。13Bは、自分のデータで追加学習して使う土台として見るのがよさそうです。
公式の重みからllama.cppで変換・量子化して動かすまでは、コマンド数個、13Bでも10分ほどで終わる簡単な作業でした。llama.cppは、Flash Attentionが使えない形のモデルでも標準の設定のままなら自動で避けてくれます。モデルの推奨設定もGGUFに入るので、基本的には何も足さずに動かせます。
参照資料
Sarashina2.2-3B-instruct-v0.1 モデルカード / Sarashina2-13B モデルカード / SB Intuitions(Hugging Face) / Sarashina2.2の評価手順(flexeval) / llama.cpp / HumanEval / 青空文庫『吾輩は猫である』。情報は2026年10月16日に確認。
