はじめに
前回の記事では、LLMが文章をトークンとして扱い、次に来るトークンを予測することで文章を生成している仕組みについて整理しました。
今回は、ローカルLLMについて調べていると必ずと言っていいほど登場する、「モデル」について理解を深めていきます。
モデルを探していると、
- 7B
- 14B
- 32B
- 70B
といった数字を目にすることがあります。
また、Qwen、Llama、Gemmaなど、さまざまな名前のモデルが公開されています。
今回は、
- そもそもモデルとは何なのか
- QwenやLlamaなどは何が違うのか
- 7Bや14Bの「B」は何を表しているのか
- パラメータとは何か
- パラメータ数が増えると何が変わるのか
- 大きなモデルほど性能が高いのか
- ローカルLLMではなぜモデルサイズが重要なのか
といった内容を中心に整理していきます。
LLMの「モデル」とは?
まずは、そもそもモデルとは何なのかを整理してみます。
前回の記事では、LLMは入力された文章から次に来るトークンを予測していることを紹介しました。
例えば、
今日は天気がいいので
という文章が入力されたときに、
今日は天気がいいので
│
▼
モデル
│
▼
次に来るトークンを予測
│
▼
「散歩」
といった処理が行われます。
この「入力された情報をもとに、次に来るトークンを予測するための仕組み」がモデルです。
モデルは大量のデータを使った学習によって作られており、その学習結果をもとに次のトークンを予測しています。
そのため私たちがローカルLLMを利用するときは、基本的にすでに学習されたモデルをダウンロードして利用することになります。
QwenやLlama、Gemmaとは?
ローカルLLMについて調べていると、さまざまなモデルの名前が登場します。
代表的なものとして、
- Qwen
- Llama
- Gemma
- Mistral
などがあります。
これらはそれぞれ異なる組織によって開発されているLLMのモデルファミリーです。
例えば、
LLM
│
├─ Qwen
│
├─ Llama
│
├─ Gemma
│
└─ Mistral
といったイメージです。
モデルによって、
- 対応している言語
- 得意なタスク
- モデルの大きさ
- 必要なハードウェア
- 利用条件やライセンス
などが異なります。
そのためローカルLLMでは「どのモデルを使うのか」が非常に重要になります。
また同じQwenやLlamaという名前でも、一つのモデルしか存在しないわけではありません。
用途やサイズなどによって複数のモデルが提供されています。
7B・14B・32Bの「B」とは?
モデル名を見ていると、
7B
14B
32B
70B
といった表記を見かけることがあります。
この「B」はBillion(10億)を表しています。
つまり、
| 表記 | パラメータ数の目安 |
|---|---|
| 7B | 約70億 |
| 14B | 約140億 |
| 32B | 約320億 |
| 70B | 約700億 |
という意味になります。
では、この「パラメータ」とは何なのでしょうか。
パラメータとは?
前回の記事でも少し登場しましたが、パラメータとは モデルが学習によって獲得した数値 です。
LLMは大量の文章を使って学習を行い、その過程で内部にある大量のパラメータを調整していきます。
イメージすると、
大量の学習データ
│
▼
学習
│
▼
パラメータを調整
│
▼
学習済みモデル
という流れになります。
そして推論するときには、学習によって調整されたパラメータを使って次のトークンを計算します。
つまり7Bモデルであれば、約70億個のパラメータを持ったモデルということになります。
前回の記事で説明した「次のトークンを予測する」という処理の裏側では、この大量のパラメータを使った計算が行われています。
パラメータ数が増えると何が変わる?
では、7Bより14B、14Bより32Bの方が良いモデルなのでしょうか。
一般的には、パラメータ数が増えることでモデルがより複雑なパターンを表現できるようになり、性能が向上する可能性があります。
イメージとしては、
7B
│
▼
比較的軽量
│
▼
必要な計算量も少ない
32B
│
▼
より大きなモデル
│
▼
必要な計算量も多い
という関係になります。
大きなモデルでは、複雑な文章の理解や推論などで高い性能を発揮することがあります。
その一方でパラメータ数が増えるほどモデル自体も大きくなり、推論に必要な計算量やメモリも増えていきます。
つまり、モデルサイズと必要なハードウェアには密接な関係があります。
大きなモデルほど性能が高い?
ここで注意したいのが、 「パラメータ数が多い = 必ず性能が高い」 というわけではないことです。
LLMの性能はパラメータ数だけでは決まりません。
例えば、
- モデルの構造
- 学習に使用したデータ
- 学習方法
- 用途に合わせた追加学習
- モデルの世代
など、さまざまな要素によって変わります。
そのため、新しい14Bモデルが古い32Bモデルより高い性能を発揮するといったこともあり得ます。
またコーディングや日本語など、特定の用途に強いモデルも存在します。
ローカルLLMでは単純に一番大きなモデルを選ぶのではなく、自分の用途とハードウェアに合ったモデルを選択することが重要になります。
モデルが大きくなると必要なメモリも増える
ローカルLLMを利用する上で特に重要なのが、モデルサイズとメモリの関係です。
モデルのパラメータは数値として保存されているため、パラメータ数が増えるほど、それらを保持するために必要なメモリも増えていきます。
非常に単純化すると、
パラメータ数が増える
│
▼
モデルが大きくなる
│
▼
必要なメモリが増える
│
▼
要求されるハードウェアも高くなる
という関係になります。
そのため、
このGPUなら、どのくらいのモデルを動かせるのか?
ということを考える際には、パラメータ数が一つの重要な判断材料になります。
7Bモデルなら70億個の数値をそのまま保存する?
ここまで読んで、一つ疑問が出てくるかもしれません。
7Bモデルには約70億個のパラメータがあります。
では、その70億個の数値をすべてそのままメモリへ読み込む必要があるのでしょうか。
ここで関係してくるのが、パラメータをどの精度で保持するのかという考え方です。
例えば、1つのパラメータを16bitで保持するとします。
16bitは2Byteなので、単純計算では、
70億 × 2Byte
│
▼
約14GB
となります。
つまり、7Bモデルでも約14GBの容量が必要になる計算です。
32Bなら、
320億 × 2Byte
│
▼
約64GB
となります。
もちろん実際に必要となるメモリ量はモデルの構造や推論方法などによって変わるため、これだけで決まるわけではありません。
それでも、大きなモデルをローカルで動かすことが簡単ではない理由が少し見えてきます。
それでも大きなモデルをローカルで動かせるのはなぜ?
ここで、
7Bでも約14GB必要なら、
32Bや70Bなんて普通のPCでは動かせないのでは?
と思うかもしれません。
そこで登場するのが量子化(Quantization)という技術です。
量子化を利用すると、パラメータをより少ないbit数で表現することでモデルサイズを小さくできます。
例えば、
16bit
↓
8bit
↓
4bit
のように、パラメータを表現するために使用する情報量を減らします。
これによって必要なメモリ量を抑え、より大きなモデルを限られたハードウェアでも動かせるようになります。
ただし情報量を減らすため、モデルの精度とのトレードオフも発生します。
ローカルLLMについて調べているとよく目にする、
Q4
Q8
GGUF
といった言葉も、この量子化やローカルでのモデル実行と深く関係しています。
このあたりについては今後の記事で詳しく整理していきます。
ローカルLLMではモデル選びが重要
ここまでの内容を整理すると、ローカルLLMでは単純に高性能なモデルを選べば良いわけではありません。
やりたいこと
│
▼
モデルの性能
│
▼
モデルサイズ
│
▼
必要なメモリ
│
▼
自分のハードウェア
これらのバランスを考えてモデルを選ぶ必要があります。
例えば、軽い処理であれば小さなモデルでも十分かもしれません。
一方で高度な推論やコーディングなどを行いたい場合には、より大きなモデルが必要になることもあります。
ローカルLLM環境を構築する上では、「自分が使いたいモデルを、どのハードウェアなら快適に動かせるのか」を判断できることが重要になってきます。
用語集
今回の記事で登場した用語を簡単に整理します。
| 用語 | 概要 |
|---|---|
| モデル | 学習によって獲得したパラメータを使い、入力から出力を生成する仕組み。 |
| モデルファミリー | 同じ開発元や設計思想を持つモデル群。Qwen、Llama、Gemmaなど。 |
| パラメータ | モデルが学習によって獲得した数値。推論時の計算に利用される。 |
| B(Billion) | 10億を表す単位。7Bであれば約70億パラメータを意味する。 |
| bit | コンピュータが扱う情報量の基本単位。パラメータをどの程度の精度で保持するかにも関係する。 |
| 量子化(Quantization) | パラメータをより少ないbit数で表現し、モデルサイズや必要なメモリ量を削減する技術。 |
| GGUF | ローカルLLMで利用されるモデルファイル形式の一つ。量子化されたモデルの配布などでもよく利用される。 |
| VRAM | GPUに搭載されているメモリ。ローカルLLMでモデルを動かす際に重要になる。 |
さいごに
モデル選びには、今回整理したような前提知識が重要になってきます。
知識がない状態では「モデルサイズが大きいほど良い」という判断になりがちですが、理解を深めることで実現したいこととモデルサイズを適切に天秤にかけて選択できるようになります。
モデルの選定においては、こうした前提知識が非常に重要だと感じています。
この記事がモデル選びやローカルLLMについて理解を深めるきっかけになれば幸いです。