「人工知能のパラメーター数」の版間の差分

提供:MonoBook
 
24行目: 24行目:
  10億 * 32ビットfloat(4バイト) = 4GB
  10億 * 32ビットfloat(4バイト) = 4GB


このメモリ量を減らすのに16ビット(FP16/BF16)などに[[量子化]]する手法が流行っています。16ビット化すれば単純に半分程度になります。最近では1バイトの[[INT8]]や[[FP8]]、4ビットの[[ブロック浮動小数点数]]、2ビットの[[BitNet b1.58]]なども登場しています。
このメモリ量を減らすのに16ビット(FP16/BF16)などに[[量子化]]する手法が主流です。32ビットを16ビット化すれば単純にメモリ消費量は半分程度になります。最近では1バイトの[[INT8]]や[[FP8]]、4ビットの[[ブロック浮動小数点数]]、2ビットの[[BitNet b1.58]]なども登場しています。なおメモリを節約できる量子化ですが、やりすぎると性能がピーキーになるという欠点もあります。


=== 学習 ===
=== 学習 ===

2026年5月18日 (月) 11:18時点における最新版

人工知能のパラメーター数とは、その人工知能プログラム中で使用している(メモリに保持している)行列ベクトルの総数です。

import torch

# 例えば、1000個の入力から500個の出力へ変換する層のパラメータ

# 重み: (出力数, 入力数) の行列
weights = torch.randn(500, 1000) 

# バイアス: (出力数) のベクトル
bias = torch.randn(500)

# パラメータ数 = 500 * 1000 + 500 = 500,500

数字がデカければ賢いという単純なものではありませんが、パラメータが多いほどモデルの表現力が増し、より複雑な文脈やニュアンスを理解・表現でき、高性能になる傾向があります。

2025年ごろからパラメーターを盛り盛りする競争が発生し、そのために必要なメモリが争奪戦になっています。なお、SSDの価格も上がっていますが、こちらはただの便乗値上げです。

必要となる推定メモリ量[編集 | ソースを編集]

推論[編集 | ソースを編集]

ざっくり推論は「10億パラメーター(1B)あたり4GB」です。

10億 * 32ビットfloat(4バイト) = 4GB

このメモリ量を減らすのに16ビット(FP16/BF16)などに量子化する手法が主流です。32ビットを16ビット化すれば単純にメモリ消費量は半分程度になります。最近では1バイトのINT8FP8、4ビットのブロック浮動小数点数、2ビットのBitNet b1.58なども登場しています。なおメモリを節約できる量子化ですが、やりすぎると性能がピーキーになるという欠点もあります。

学習[編集 | ソースを編集]

一方でフル学習は推論の4〜6倍の「10億パラメータ(1B)あたり16〜24GB」です。

10億 * 32ビットfloat(4バイト) * 4 = 16GB
10億 * 32ビットfloat(4バイト) * 6 = 24GB

推論の4〜6倍にもなるのはオプティマイザ(AdamWなど)や勾配(Gradients)の保持に大量のメモリを消費するためです。学習では推論と違ってこちらは全体を量子化してガツンとメモリを節約するのは難しいですが、オプティマイザや勾配などの一部分だけを16ビット化したりする手法は考案されています。