1行定義
量子化とは、モデルの重みなどの値を、より少ないビット数の粗い段階で表すことで、メモリ使用量を減らし、計算を速く軽くする手法のことです。
くわしく
量子化は、数値をより粗い段階で表すことで、モデルを軽くする手法です。円周率を3.14159…ではなく3.14と書くように、少ない桁で近い値を表すイメージです。
ビット数とデータ量
ニューラルネットワークの重みは、通常32ビットの浮動小数点数で表します。これを16ビット、8ビット、4ビットなどに減らすのが量子化です。8ビットの整数なら、1つの値は256段階のどれかになり、データ量は32ビットのおよそ4分の1になります。パラメータの数は変わらず、1つあたりの大きさが小さくなります。整数の計算は浮動小数点数の計算より軽いため、推論の速度や電力の面でも有利です。
計算例
整数 q と、刻み幅を表すスケール S を使い、元の値を S × q で表すとします。S = 0.02 のとき、重み0.513は 0.513 ÷ 0.02 = 25.65 を丸めて q = 26 になります。元に戻すと 0.02 × 26 = 0.52 で、誤差は 0.52 - 0.513 = 0.007 です。この小さな誤差が多くの重みで積み重なると、精度が下がることがあります。
2つの進め方
- 学習後量子化:学習を終えたモデルをそのまま変換します。手軽ですが、ビット数を減らしすぎると精度が落ちやすくなります。
- 量子化を考慮した学習:学習中に量子化の誤差を模擬し、誤差に強い重みを学ばせます。手間はかかりますが、精度を保ちやすくなります。
量子化はエッジAIで広く使われるほか、大規模言語モデルを手元のPCで動かすためにも使われます。
同じ言葉の別の意味
音声のA-D変換でも、振幅を決まった段階に丸める処理を量子化と呼びます。連続的な値を限られた段階で表すという考え方は同じですが、扱う対象と目的が異なります。
覚え方
「桁を減らして、荷物を軽く」と覚えます。
G検定での出題
出題のされ方
ビット数を減らして軽量化する仕組み、ビット数とデータ量の関係の計算、精度とのトレードオフ、プルーニングや蒸留との違いが問われます。A-D変換の量子化と同じ言葉である点にも注意が必要です。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| 量子化このページの用語 | モデルの重みなどの値を、より少ないビット数の粗い段階で表すことで、メモリ使用量を減らし、計算を速く軽くする手法 |
| A-D変換 | 音声のように連続して変化するアナログ信号を、一定の間隔で読み取って数値に置き換え、デジタルデータにする処理 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
量子化には、学習を終えたモデルをそのまま変換する方法のほかに、量子化による誤差を見込んで学習の段階から調整する方法がある。
答えを見る
答え ◯ 正しい
前者を学習後量子化、後者を量子化を考慮した学習と呼びます。後者は手間がかかる分、少ないビット数でも精度を保ちやすくなります。
-
量子化は、層やニューロンの数を減らすことで、モデルのパラメータ数を少なくする手法である。
答えを見る
答え × 誤り
量子化では、パラメータの数は変わりません。1つ1つの値を表すビット数を減らします。重みや結合そのものを取り除くのはプルーニングです。
-
A-D変換の量子化も、モデル圧縮の量子化も、細かな値を、あらかじめ決めた限られた段階のうち近い値に丸めるという点では共通している。
答えを見る
答え ◯ 正しい
A-D変換では音の振幅を、モデル圧縮では重みなどの値を丸めます。どちらも段階を粗くするほどデータ量は減り、誤差は大きくなります。