【Llama.cpp】GGUFモデルの量子化具合による生成文章の違いを徹底比較！【houou-7b】

# 1. はじめに

「Llama.cpp」を使って量子化することができますが、その量子化具合によってどれだけモデルサイズ、推論速度、生成文章の質が変化するのか検証してみました。

https://github.com/ggerganov/llama.cpp

今回は、ビット数の異なる以下の８個のモデルを使って検証しました。量子化前のベースモデルとして、「houou-7b-instruction」を選びました。

https://huggingface.co/moneyforward/houou-instruction-7b-v1

- f16
- Q8_0
- Q6_K
- Q5_K_M
- Q4_K_M
- Q3_K_S
- Q3_K_L
- Q2_K


モデルを量子化するまでの流れは別の記事にまとめましたのでご覧ください。

https://qiita.com/keisuke-okb/items/faeaf4b14d7e581707b9


今回は、モデルによらず以下の設定を固定して比較を行っています。

- 検証環境


| 項目 | |
|:-- |:--|
| OS | Windows 11  |
| CPU  | AMD Ryzen 7 5700X  |
| メインメモリ  | 64GB  |
| GPU  | NVIDIA GeForce RTX 3090 |


- GPUオフロードを大きめに設定し、どのモデルにおいても全てのレイヤーがロードされるようにしました。

```python
from llama_cpp import Llama
model = Llama(
    model_path=model_path,
    n_gpu_layers=50,
    n_ctx=3584,
    n_batch=521,
)
```

- 推論文章の固定：確率によるサンプルを無効にし、生成される文章を固定にします。（量子化具合による生成文章の質を公平に比較するためです）

:::note warn
今回はGPUを使った推論で検証しています。以下に示す結果は環境に大きく依存するため、あくまで個人的なものとしてご覧ください。
:::



# 2. モデルサイズ、占有VRAMの比較

モデルサイズを比較すると、f16とQ8_0の間に大きく差がありますが、それ以降は徐々に小さくなっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373557/1575bdc0-f0c8-9765-865a-6d208dc2c456.png)

VRAM使用量（モデル部分のみ）についても、モデルサイズ同等のメモリが使用されていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373557/16412489-d831-85c1-4b50-327915092fb8.png)


# 3. 推論速度の比較

各モデル10回推論を行った平均値をプロットしたものですが、**f16以外ほぼ推論速度が変わらなかった**という結果が得られました。
この部分はOS、GPU、起動しているアプリケーションの状況などに激しく依存するため一概に言える結果ではありませんので、ご自身のマシンでもぜひお試しください。

しかしながら、やはりf16とQ8の間には大きく差があることがわかります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373557/4eaf6080-9cff-b65b-17f6-0dad40386c27.png)

# 4. モデルサイズに対する推論速度の比較

折れ線グラフにプロットすると、f16以外は60～80トークン/秒を前後しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373557/4014e65f-2f47-0d00-3fb7-f3fb3bbf5a38.png)




# 5. 生成文章の比較

「ELYZA-tasks-100」の中から質問をいくつか選び、モデルによる生成文章の比較を以下にまとめました。

https://huggingface.co/datasets/elyza/ELYZA-tasks-100

:::note warn
注意
「ELYZA-tasks-100」に記載されている評価観点は完全に考慮できていないため、あくまで主観的な考察を記載しています。
:::


## 5.1 仕事の熱意を取り戻すためのアイデアを5つ挙げてください。

日本語として崩壊していることはありませんが、モデルによって観点が違うことがわかります。
Q3_K_Sにおいては、「ランチに行く」「飲みに行く」など気分転換のアイデアを挙げています。

「Q6_K」「Q2_K」は「5つ」という条件を満たしていません。


| モデル | 生成文章 |
|---|---|
| f16 | 仕事への熱意を取り戻すためのアイデアを以下にご紹介します。<br>     ・達成できそうな小さな目標を設定し、クリアしていくことで自信を取り戻す。<br>     ・他の人から自分の仕事に対する熱意が失われていると指摘されていないか確認する。もし指摘されていたら、その原因を理解し、改善する。<br>     ・仕事に対する自分の向き合い方をブログやSNSで発信し、世の中の人の参考になればそれがモチベ ーションに繋がる。<br>     ・憧れの人からアドバイスを受ける。<br>     ・自分が仕事に取り組む姿勢を過去と現在で比較し、どこが変わって成長したのかを見つける。そして、それを周りの人に伝える。 |
| Q8_0 | 仕事への熱意を取り戻すためのアイデアを以下にご紹介します。<br>     <br>     ・達成度表を作る…自分がやった仕事量とそれに対する結果を一日単位で書き出してみてください。   目に見えて分かる形にすることで達成感を得られることもあります。<br>     ・小さな成功を積み重ねる…大きな仕事や困難な仕事の場合、それを完了するまでには多くの困難が   あるかもしれません。まずはその仕事を小さな作業に分解して、ひとつひとつの作業を確実にこなしていくことを目標にすると、達成感を味わえる回数が増えるでしょう。<br>     ・失敗してもいいルールにする…完璧主義な人ほど仕事にやる気が出ないということがあるかもしれ   ません。完璧でなくても構わないというゆるいルールにすることで、チャレンジする仕事の幅が広がり、新たな発見があるでしょう。<br>     ・褒められたことを書き出す…自分が上司や同僚に褒められた言葉を書き出してみてください。小さ   なことでも褒められたら喜べるような気持ちになれると良いですね。<br>     ・自分をねぎらう…仕事が終わった後に今日の仕事をねぎらってあげましょう。お疲れ様、よく頑張 ったなど声に出して言えると良いですね。 |
| Q6_K | 仕事への熱意を取り戻すためのアイデアを以下にご紹介します。<br>     <br>     ・達成できたことを自分自身で褒める<br>     ・家族や友人に仕事への思いを話す<br>     ・趣味など自分の好きなことをする<br>     ・美味しいものを食べる<br>     ・よく眠る<br>     ・適度な運動をする<br>     ・気分転換に旅行に出かける<br>     ・本やネットなどで自分の興味のあることを学ぶ |
| Q5_K_M | 仕事への熱意を取り戻すためのアイデアを以下にご紹介します。<br>     <br>     ・達成度表を作る…自分が今、仕事でどこまで進んでいるのかを確認し、やりがいを見出しましょう 。<br>     ・業務の醍醐味を思い出す…なぜその仕事を選んだのか、その仕事の魅力を思い出しましょう。<br>     ・ほかの人の意見を聞く…自分では気が付かないような客観的な視点や、新たな発見があるかもしれ ません。<br>     ・小さな目標を作る…大きな目標だとどうしても先延ばしにしてしまいがちです。小さな目標を一つ   ずつクリアしていくことで、やりがいを見出しましょう。<br>     ・自分へのご褒美…仕事が終わった後に好きなものを食べるなど、自分にプチご褒美をあげる日を作 りましょう。 |
| Q4_K_M | 仕事への熱意を取り戻すためのアイデアを以下にご紹介します。<br>     <br>     ・自分が今まで成し遂げた仕事の中で、自信を持ってできた仕事を振り返る。<br>     ・なぜ自分はその仕事に熱意を持つことができなくなってしまったのかを考える。<br>     ・いま一度、仕事に対する情熱を持てるような目標を設定する。<br>     ・自分が熱意を持って仕事ができる新しい仕事先を探す。<br>     ・今の仕事に熱意を持てない理由とは違う理由で仕事ができるように資格を取得する。<br>     <br>     これらのアイデアの中から、自分に合ったものを選んで、実行してみてください。 |
| Q3_K_L | 仕事の熱意を取り戻すためのアイデアを以下に5つ挙げます。<br>     <br>     ・自分が選んだ仕事の意義や目的を考える。なぜその仕事を選んだのかという理由を思い出す。<br>     ・長期目標を考える。どうしてその仕事をしているのか、将来的にどうなりたいか考える。<br>     ・自分が仕事で達成したいことを考える。目の前の仕事を通して、何を達成したいのか考える。<br>     ・仕事への感謝の気持ちを思い出す。その仕事ができるのは自分自身の日常的な支えがあってこそだということを思い出す。<br>     ・業務の本来の目的を理解する。なぜその仕事をするのか、本当の目的を確認する。<br>     <br>       上記のことを考えてみてもやはり熱意を取り戻せない場合は、自分の性格に合っていない仕事をしているのかもしれません。それであれば職業を変えるという選択肢もよいかもしれません。 |
| Q3_K_S | 仕事への熱意を取り戻すためのアイデアを以下に5つあげます。<br>     <br>     1.同じ部署の人とランチに行く<br>     2.同じ部署の人と飲みに行く<br>     3.他部署の人とランチに行く<br>     4.資格を取る<br>     5.ブログを書く |
| Q2_K | 仕事への熱意を取り戻すためのアイデアを以下に挙げます。<br>     <br>     1.自分が仕事に貢献できていることを実感する<br>     2.自分が属している組織に貢献できていることを実感する<br>     3.役割や責任の拡大<br>     4.仕事のやりがいについて再考する<br>     5.仕事以外の自分の時間・活動を振り返ってみる<br>     6.家族と友人に相談してみる<br>     7.趣味など自分の興味があることをやってみる |


## 5.2 次の文章は正しいですか？   本田圭佑は高校生の時に甲子園で優勝した。

すべて「正しくない」と回答しましたが、理由がめちゃくちゃです（笑）。
「野球ではなくサッカー」という事実は何となくどのモデルも把握できているようですが、Q3_K_Sは「高校生ではないので、誤りです」と言っており、論点がずれています。「高校生の時に」と言っているのに、「今は高校生でないので誤り」という部分が変です。

| モデル | 生成文章 |
|---|---|
| f16 | 本田圭佑は、高校生の時に全国高等学校野球選手権大会に出場し、奈良代表の天理高校のピッチャーとして活躍しましたが、甲子園で優勝することはありませんでした。<br>     よって、与えられた文章は正しくありません。 |
| Q8_0 | 提示された文章は正しくありません。<br>     本田圭佑は、高校生の時に野球の甲子園で優勝したわけではなく、サッカーのウルグアイ代表として、2018年のロシアワールドカップで優勝しました。 |
| Q6_K | 本田圭佑が高校生の時に甲子園で優勝したというのは正しくありません。<br>     本田圭佑は、大阪府吹田市出身のプロサッカー選手で、現在はオーストリア・ブンデスリーガのSVホルンに所属しています。<br>     野球ではなくサッカーが好きで、小学生の頃からずっとサッカー一筋だった本田圭佑は、高校野球の経験はありません。<br>     大阪府にある星翔高等学校には、サッカー特待生として在籍していた時期がありますが、高校野球の経験はありませんし、甲子園で優勝したということもありません。 |
| Q5_K_M | 提示された文章は正しくありません。<br>       本田圭佑は、高校生の時に野球の甲子園で優勝したわけではなく、サッカーのウルグアイ代表として、2018年のFIFAワールドカップの本大会で３試合連続ゴールを決めるなどの活躍をしました。 |
| Q4_K_M | 提示された文章は正しくありません。<br>     本田圭佑は、高校生の時に野球の全国大会である甲子園で優勝したわけではなく、ソフトボールの全国大会であるジャパンカップで優勝しています。 |
| Q3_K_L | 本田圭佑は、高校生の時に甲子園で優勝していません。<br>     本田圭佑は、プロサッカー選手です。 |
| Q3_K_S | 2023年9月現在、本田圭佑は高校生ではないので、誤りです。<br>     本田圭佑は、1986年に生まれたので、高校生だったのは15歳から18歳の間の3年間です。<br>     千葉県立市原緑高等学校に在籍し、2001年に第73回選抜高校野球大会に出場しましたが、1回戦で敗 退しています。 |
| Q2_K | 2023年8月現在の本田圭佑の経歴を踏まえると、正しくありません。<br>     本田圭佑は高校生の時に甲子園で優勝したことはなく、また、野球経験もないと公表しています。<br>     プロサッカー選手になるために必要なアクションをしていた可能性はありますが、事実関係が不明のため、正しいかどうかの判断はできません。 |

## 5.3 サマると8つということですね。 上の文における「サマる」とはどのような意味でしょうか？

全てのモデルにおいて「サマる」を解釈できていませんでした。
f16においては、「サマる」＝「サマーっぽい」と解釈しています。

「**「それサマってるよ！」と返すと、「その服装は夏っぽいね」という意味になります。**」には笑ってしまいました。

意味を間違えていることは許容したとしても、Q3_K_S、Q2_Kは質問以上のことを述べており、会話が発散してしまっています。

| モデル | 生成文章 |
|---|---|
| f16 | 「サマる」とは、若者が使う言葉で「?っぽい」という意味です。<br>       例えば、「今日の服装、完全に夏だよね。もうすぐ海行きたいなー。」という会話に対して、「それサマってるよ！」と返すと、「その服装は夏っぽいね」という意味になります。 |
| Q8_0 | 「サマる」とは、若者が使う言葉で「?っぽい」という意味です。<br>       例えば、「今日の服装、完全に夏だよね。もうすぐ海行きたいな～」という会話に対して、「それサマってる」と返す場合は、「その服装は夏らしくていいね。もうすぐ海行きたいよね」という意味を表します。<br>       他にも、「今日デートなのに全然寝られなかった?。目ぇサマってる」（今日デートなのに寝られず、目がパンパンです。）や、「テスト前なのに昨夜遅くまでゲームしてて、全然勉強してないんだよね?。ヤバイ、完全にサマってる」（テスト前なのに夜遅くまでゲームをしてしまい、勉強しておらず、本当にやばいです。）という使われ方をします。 |
| Q6_K | 「サマる」とは、若者が使う言葉で「?しすぎる」という意味です。<br>     使用例は以下の通りです。<br>     <br>     A「今日デートなのに、朝からテレビでサマっちゃったよ～」<br>     B「え～！何を？」<br>     A「それがさ、めちゃくちゃ面白くてさ、全部見ちゃったよ」<br>     <br>     このように、「サマる」とは、ある行為をしすぎて、それ以上できない状態になることを表します。 |
| Q5_K_M | 「サマる」とは、若者がSNS等で使う言葉で、その場の雰囲気や流行に合わせることを意味します。   八つとは、八つ当たりのことです。つまり、「その場の雰囲気に合わせて八つ当たりする」という意味になります。 |
| Q4_K_M | 「サマる」とは、若者が使う言葉で、「?する」「?される」の補助動詞として使われます。   主に 、「～しちゃう」「～されちゃう」の意味で使われ、今回の場合は、「8つに分かれる」「8つにされる」という意味になります。 |
| Q3_K_L | 「サマる」とは、若者同士が使う言葉で、「その場の雰囲気や流れに乗る」という意味です。<br>       例えば、「今日はみんなで花火をしよう！」という話になったときに、一人だけ「私、花火アレルギーなの」と言って、その場の雰囲気を壊さずにうまく帰ったとしたら、これを「サマった」と言います。<br>       また、今日はA君の家でゲームをすることになっているが、実はみんなA君のことが嫌いだったり、あるいは、今日はA君の誕生日で、みんなでプレゼントを贈ることになっているが、内心、A君のことをよく思っていなかったり、そういう状況においても「サマる」という使われ方をします。<br>     他にも、ファッションや好きな異性のタイプなど、その場の雰囲気や状況に合わせて意見や考えが変わることを「サマる」と言います。 |
| Q3_K_S | 「サマる」とは、SNSなどを介して、特定の場所やイベントに多くの人が集まることを指す若者の言   葉です。<br>     例えば、「渋谷丸井店の前にサマっている」、「東京タワーにサマっている」などと使います.<br>     「サマる」の語源は諸説あり、「集まる」や「寄せる」が転じたもの、英語の「throng」が由来であるなどと言われています。<br>     <br>     8つとは、東京タワー、渋谷丸井店、横浜ランドマークタワー、臨海副都心、お台場、東京スカイツ リー、川崎ランドマークタワーのことを指していると思われます. |
| Q2_K | 「サマる」とは、SNSにおいて監視されることを指します。<br>       例えば、あるアーティストのファンである人が、そのアーティストに関する投稿を頻繁に行う場合、その投稿はそのアーティストに「サマって」いると言われます。<br>       また、ある芸能人が自分の日常の様子をSNSに投稿したとします。それを見た人が、「自分の1日もこんな感じ」、「自分も同じことしてる」などと投稿することで、その芸能人に「サマられて」いると言われます。<br>     このように、SNSにおいて ?監視?されたり? ?密かに見張られる?ような状況を表す語として「サマる」が使われています.<br>     8つの意味を持っているということですが、その内のどの意味になりますか？ |


## 5.4 リンゴとバナナはどのように似ていますか？

それっぽく回答していますが、「両方とも黄色い」など間違ったことを述べてしまっています。間違ったことを述べていたとしても、16～4ビット程度までは日本語としては自然な記述ができています。

Q2_Kに関しては不要な文字が入っています。` 「'/’ リンゴ目'/’ リンゴ科に属する`」

特にこの質問においては、3ビット、2ビットになると日本語の論理が変になったり、表現が冗長になっていたり、話の因果関係が破綻しているように見えます。



| モデル | 生成文章 |
|---|---|
| f16 | リンゴとバナナは以下のように似ています。<br>     <br>     ・黄色くて丸くてつる性であること<br>     ・食べると体が温かくなること<br>     ・皮をむいてそのまま食べることができること<br>     <br>     ただし、リンゴは樹木になり、バナナは草本性であるという違いがあります。 |
| Q8_0 | リンゴとバナナは以下のように似ています。<br>     <br>     ・黄色くて丸くてつる性であること<br>     ・食べると体に良いこと<br>     ・甘みがあること<br>     <br>     しかし、リンゴは樹木になり、バナナは草本性であるなど、育ち方の違いがあります。<br>     また、バナナは一年生植物で、リンゴは落葉高木です。<br>     <br>     リンゴの原産地は中央アジアから西アジアで、バナナは熱帯・亜熱帯地域が原産地です。<br>     <br>     食べ方も違い、リンゴはそのまま食べることが多いですが、バナナはスムージーなどにして飲むことが多いです。 |
| Q6_K | リンゴとバナナは以下のように似ています。<br>     <br>     ・果物である<br>     ・太陽や土や水などの恵みを受けて育つ<br>     ・食べると体に良い<br>     ・甘くて美味しい<br>     <br>       自然の恵みを受けて育ち、人間の手で収穫された後も手で分けられ、私たちの食卓に並ぶリンゴとバナナは、共に太陽の恵みをいっぱいに包んだ甘くておいしい果物です。どちらも食べると体に良さそうですね。 |
| Q5_K_M | リンゴとバナナは以下のように似ています。<br>     <br>     ・果物である<br>     ・黄色くて丸い<br>     ・皮をむけば中は白い<br>     ・追熟しない<br>     ・酸味がある<br>     ・栄養価が高い<br>     <br>     また、以下のようにリンゴとバナナは互いに似ていることから「リンゴナナ」と呼ばれることもあります。<br>     <br>     ・どちらも完熟すると皮が黄色くなる<br>     ・どちらも食べる時期によって酸味が変わる<br>     ・どちらも腐敗しにくい<br>     ・手で簡単に剥ける皮を持つ<br>     ・ビタミンやミネラルが豊富 |
| Q4_K_M | リンゴとバナナは以下のように似ています。<br>     <br>     共に果物である：<br>     リンゴもバナナも果物です。<br>     <br>     食べ方が同じである：<br>     リンゴはそのまま食べることが多いですが、バナナはそのまま食べる以外に、スムージーなどに入れて飲むこともあります。<br>     <br>     色が似ている：<br>     リンゴは黄色っぽいオレンジで、バナナは黄色です。<br>     <br>     見た目が似ている：<br>     リンゴは丸く、バナナは細長い円錐形です。<br>     <br>     このように、リンゴとバナナは多くの点で似ています。 |
| Q3_K_L | リンゴとバナナは、以下のように共通点が多く、非常に似ている果物です。<br>     <br>     ・どちらも一年生植物で、木本性植物であるリンゴの根元にできる側枝に房状になって付く。<br>     ・花期は5月頃で、しぼり玉と呼ばれる総状花序を形成し花を咲かせる。<br>     ・果期は9月頃で、リンゴは収穫時期に木から落ちるのに対し、バナナは成熟すると房から外れて地 面に落ちる。<br>     ・リンゴもバナナも食べごろになると果実が赤くなる。<br>     ・リンゴは食べごろになると熟した果実が落ちるが、バナナは成熟すると房から外れて地面に落ちる。<br>     ・どちらも酸性の土壌を嫌う。<br>     <br>     また、それぞれの特徴として<br>     <br>     ・リンゴは樹高が高く、バラ科ルリミノール亜科リンゴ属の落葉高木であるのに対し、バナナは樹高が低く、サトイモ科バショウ植物の塊茎野菜である。<br>     ・リンゴの原産地は中央アジアから東部ユーラシアであるのに対し、バナナは東南アジアが原産地である。<br>     ・一般的にリンゴは様々な品種があるのに対し、バナナは少ない。<br>     <br>     上記の通り、リンゴとバナナは非常に似ており、共通点が多い果物ですが、それぞれに以上のような違いがあります。 |
| Q3_K_S | リンゴもバナナも植物です。<br>     リンゴは、リンゴ属の植物の果実で、バナナは、バナナ属の植物の果実です.<br>     どちらも、食べ物として人間に品種改良された植物です。<br>     リンゴは、黄色い品種と、赤色の品種があります。<br>     バナナは、完熟すると黒っぽい色になります。<br>     リンゴもバナナも、雌雄異株です。つまり、一つの植物には雌しかない場合と雄しかない場合があります.<br>     リンゴの花が咲くのは4月ごろで、バナナの花が咲くのは5月ごろです。<br>     リンゴの実は熟すと自然に落ちます。<br>     バナナの実も熟すと自然に落ちます。<br>      どちらの果実も食べ方が異なります.<br>     リンゴは、サラダやスープなどのお料理に加えたり、リンゴジュースやアップルパイなどのスイーツに使われます.<br>     バナナは、そのまま食べることができ、便秘解消に効果があるとされています.<br>      毎日の食事に上手に取り入れて、健康的な生活を送りましょう。 |
| Q2_K | リンゴとバナナは、以下のような共通点があります。<br>     ・ともに、B作物である。<br>     ・ともに、植物学上の分類では、木本植物（=高木）に属する。<br>     ・ともに、APG植物分類体系では、被子植物（=広義の花をつける植物）に属する.<br>     ・ともに、裸子植物「＋’/’」植物というクレードの一員である.<br>     ・ともに、雌雄異株である.<br>     ・ともに、 '/’ リンゴ目'/’ リンゴ科に属する。<br>     <br>     ...という共通点があります.<br>     しかし、 バナナは有性植物であるのに対し、リンゴは半自家不和合性のため、これらは大きく異な ります。 |


# おわりに

この記事では、量子化具合によるモデルの比較を行いました。3ビット以下になると目に見えて文章の流れが崩れてしまう傾向にあるようです。

量子化LLMを活用する際、量子化手法の選択のご参考になれば幸いです。