ある企業が、パラメータ数70億の言語モデルを社内のGPU搭載PCで動かすことを検討している。重みを16ビットの浮動小数点数で保持した場合の重みのデータ量(ア)と、重みを4ビットに量子化した場合の重みのデータ量(イ)の組み合わせとして、最も適切なものを1つ選べ。なお、1バイトは8ビット、1GBは10億バイトとし、量子化の係数など重み以外のデータは考えないものとする。
正解と解説を見る
解説
正解 A
この問題の論点:量子化による重みのデータ量
ポイント
重みのデータ量はパラメータ数×1パラメータあたりのバイト数で求まり、16ビットから4ビットへの量子化で4分の1になります。
選択肢ごとの解説
- A
適切 正解
16ビットは2バイトなので、70億×2バイト=140億バイト=14GBです。4ビットは0.5バイトなので、70億×0.5バイト=35億バイト=3.5GBとなり、データ量は4分の1になります。
- B
不適切
28GBは1パラメータあたり4バイト(32ビット)、7GBは1バイト(8ビット)として計算した値です。32ビットから8ビットへの量子化ならこの組み合わせですが、問題の条件とは異なります。
- C
不適切
(ア)は正しいものの、(イ)は4ビットを1バイトとして計算しています。7GBは8ビットに量子化した場合の値です。4ビットなら1パラメータあたり0.5バイトなので、その半分の3.5GBになります。
- D
不適切
ビット数をそのままバイト数として掛けた値です。70億×16=1,120億ビットを8で割ってバイトに直すと140億バイト、つまり14GBです。ビットとバイトの換算を忘れないことが大切です。
補足
実際にモデルを動かすときは、重みのほかに、推論中の中間的な計算結果を置くメモリも必要です。また、4ビットへの量子化では、値の範囲を表す係数などを重みのまとまりごとに保存するため、必要な容量は計算値よりやや大きくなります。量子化は容量を減らせる一方で、ビット数を下げすぎると精度が落ちやすくなる点にも注意が必要です。
試験での狙われ方
パラメータ数とビット数から必要なメモリ量を求めさせたり、量子化による削減の割合を問う形があります。