こんにちは。
今日は、ぼくが Ollama で Local LLM をいろいろ試し始めた時に必要だった、LLM の Model に関する知識について整理しておきます。誰かが Local LLM を試してみたい時に、どの Model を使ったら良いのかの参考になれば幸いです。
Ollama で使える Model
まずは Ollama が扱える Model についてです。Ollama では GGUF という形式の、 Model を扱うためのファイルを利用します。GGUF はバイナリファイルで、モデルの重みや、さまざまなメタデータや、量子化に関する情報を持っています。
基本的には、 Ollama の公式ページに公開されている GGUF 形式の Model を Pull して利用することになります。
あるいは、 Hugging Face で誰かが公開した GGUF 形式の Model も利用することができます。
Hugging Face に公開されている GGUF の Model は、下記のようにすることで利用することができます。
ollama run hf.co/{ユーザー名}/{リポジトリ名}
LLM 界隈だと Hugging Face で Model を公開されることが多いと思いますが、それら全てが Ollama で試せるわけではなく、 GGUF 形式のもののみ利用することができます。つまり、話題の DeepSeek-R1 がオープンモデルだからといって Hugging Face から落として簡単に試せるというわけではなく、GGUF 形式にされたものを探してくる必要があります。
ちなみに話題の Model は大体 GGUF 形式のものが公開されています。
Model 選びのための前提知識
次に Model の選び方について説明したいのですが、その前に必要となる前提知識について説明しておきます。ぼくは機械学習エンジニアではないのと、そこまでしっかり勉強したわけではないので、間違っている部分があったらすいません。
パラメーター数
まずはパラメーター数についてです。ChatGPT などの LLM を使っている人なら分かっていると思いますが、パラメーター数は多いほど頭がいいです。しかし、パラメーター数が多ければ多いほど、必要な VRAM (GPU のメモリ) も多くなります。Ollama の場合は、VRAM に乗り切らない時は、RAM にスワップしたりしてどうにか Model を実行しようとしてくれますが、非常に低速になるので実用的ではありません。
したがって、Local LLM では自分が利用している VRAM のサイズを理解し、VRAM に乗り切るサイズの Model を使うことが重要です。
量子化
パラメータ数について理解した後に必要になってくるのが量子化です。 LLaMA などの LLM は通常、何十〜何百億のパラメータ数があるため、そのまま動かそうと思うと VRAM が数十GB以上必要になります。そのようなグラフィックボードを持っている人はいいですが、大抵の人は数GBのVRAMが乗ったグラフィックボードしか持っていないはずです。そこで量子化の登場です。
量子化とは、機械学習モデルの計算精度(数値のビット数)を減らして、メモリ使用量を削減し、計算速度を向上させる手法です。普通のニューラルネットワークは32ビット浮動小数点を利用しますが、量子化ではモデルの数値表現を 整数(INT8, INT4 など) に変換します。そうすることでメモリ使用量を削減し、計算速度を向上させることができます。
また、Model を FP16(半精度浮動小数点) に変換して数値精度の削減がされたモデルもあります。 FP16 は量子化とは違い、整数化せずに計算精度を落とします。なぜ FP16 にするといいのかというと、最近のGPUには FP16 の計算に特化したコアが別途搭載されており、 FP16 で計算することでVRAMの使用量を削減しつつ、比較的高精度な計算を高速にすることができるからです。
NVIDIA の GPU をお持ちの場合、RTX 20 シリーズ以降は Tensor Core というFP16で最大4×4要素の行列同士を積和算できるプロセッサが搭載されています。 Tensor Core が乗っている場合は、FP16 のモデルを利用すると比較的高い精度で高速に推論することができると思います。
残念ながらぼくの GPU は、 RTX シリーズが出る前の GTX 1660 Super なので、 Tensor Core は搭載されておらず、これらの性能差は試せていません。
【余談】
なぜコンシューマー向けのグラボに機械学習向けの Tensor Core を搭載しているのかについては、backspace.fm レギュラーの西川善二さんが詳しく解説しています。面白かったのでぜひ読んでみてください。
Ollama での Model の見方
パラメーター数と量子化について簡単に理解したところで、 Ollama における Model の見方について説明します。 Ollama の公式ページで Model 一覧を見ると、1つの Model でも色々バリエーションがあると思います。例えば llama 3.1 の場合、下記のように沢山の種類があります。

この Tag名の - で繋がれている部分が何を示しているのかを、8b-instruct-q5_K_M を例に説明していきます。
1. 8b(モデルのパラメータ数)
最初の 8b は、「8b」= 8 Billion(80億) パラメータのモデルを意味します。
例
7b= 7B(70億パラメータ)13b= 13B(130億パラメータ)30b= 30B(300億パラメータ)
2. instruct(モデルのタイプ)
「instruct」= 指示(Instruction) に特化したチューニングがされたモデルです。
LLM(大規模言語モデル)は本来、「与えられた文章の続きを予測するだけのモデル」です。
例:
入力: "The capital of France is" 出力: "Paris"
したがって、そのままでは人間の質問や指示に正しく応答できません。
そこで、人間の指示(Instruction)に適切に応答できるようにチューニングされたのが、 Instruct モデルです。
Local LLM で ChatGPT のように何かを質問したり、指示をして何かをやってもらおうと考えている場合は、 instruction モデルを使う必要があります。
試しにファインチューニングされていないモデルで使ってみると面白いです。何かを質問すると最初は回答っぽい文章を生成するのですが、そこから連想ゲームのように延々と違う方向へテキストを生成し続けます。これをみると、確かに与えられた文章の続きを予測しているんだなということがわかります。
【余談】
Instruction のファインチューニングの話は、 Misreading Chat という Podcast の #115 で色々解説されていたのが、とても面白かったのでぜひそちらを聞いてみてください。
3. q5_K_M(量子化方式)
この部分は、モデルの 量子化(Quantization) を示す部分です。
以下の3つの要素に分けて説明します。
(1) q5(量子化ビット数)
「q5」= 5-bit 量子化(Q5 = 5ビットの整数表現を使用)
(2) K(量子化手法のバージョン)
「K」= k-quant(最新の量子化手法)
q4 や q5 では、 q4_0 や q4_1 という量子化方式も提供されていることが多いですが、k-quant よりも性能劣化が大きいので、基本的には k-quant を選ぶようにするといいようです。
(3) M(量子化の精度レベル)
「M」= Medium(中間の精度バランスをとった量子化)
Mの意味:S(Small) = さらにメモリ効率重視(ただし精度が下がる)M(Medium) = 精度とメモリのバランスが良い(推奨)L(Large) = 精度を重視し、メモリ削減効果は少し低い
利用するGPUにあった Model を選定する
ここまでの知識があれば、どのモデルを使えばいいかが大体わかると思います。
簡単に自分の GPU にあった Model の選び方について説明していきます。
まずはお使いの GPU の確認
モデルのパラメーター数の選択
- 大きいパラメーター数のモデルは通常、より高精度な推論が可能ですが、その分 VRAM 使用量が増えます。
- 例:7B(70億パラメータ)や 13B(130億パラメータ)など、GPU の VRAM に合わせて選びます。
- 大きいパラメーター数のモデルは通常、より高精度な推論が可能ですが、その分 VRAM 使用量が増えます。
量子化方式の検討
- ビット数が大きいほど精度は高くなりますが、その分 VRAM 使用量も増加します。
- 例:Q8 (8-bit) → 精度高め、必要VRAM多め
- Q5 (5-bit) → 中程度の精度とメモリ節約のバランス
- Q4 (4-bit) → 最も軽量、精度低下のリスクが大きい
- ビット数が大きいほど精度は高くなりますが、その分 VRAM 使用量も増加します。
量子化の精度レベル(S, M, L)の選択
- 同じビット数の量子化方式でも、S (Small)、M (Medium)、L (Large) という精度レベルの選択肢があります。
- S:メモリ使用量を最小限に抑えるが、精度の低下が大きい
- M:精度とメモリ効率のバランスが良い
- L:より高精度だが、VRAM 使用量が増える
最終的な判断
ぼくの場合、GTX 1660 Super を利用しており、VRAM は 6GB です。今のところは LLM の推論以外の用途では利用していないため、 GPU の全リソースを LLM 費やして精度を優先したいです。
Ollama の公式ページには LLaMA 3.1 が 8b, 70b, 405b が用意してあります。70b, 405b は量子化したとしても VRAM に乗り切らないため 8b の Model をみます。
用途は ChatGPT のように AI と対話したいため、instruct のファインチューニングされたモデルをみます。量子化ビット数が大きいものからみていくと、 8b-instruct-q5_K_M が 5.7GB なのでギリギリ VRAM に乗り気そうです。
Model が決まれば、下記のコマンドで pull すればそのモデルを利用することが可能です。
ollama pull llama3.1:8b-instruct-q5_K_M
まとめ
今回は、最近 Local LLM で遊んでいくなかで身についた知識や必要だった知識を整理してみました。 最初は闇雲に色々な Model を試していたので、なかなか思ったような精度がでずに悩んでいました。しかし、ある程度知識をつければ最適な Model を見つけて、 Local LLM でも結構実用的に活用することができます。 僕みたいに Local LLM を試したいけど、何の Model を使ったらいいのかよく分からないという方のショートカットになれば幸いです。