「人工知能のパラメーター数」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「'''人工知能のパラメーター数'''とは、その人工知能がプログラム中で使用している(メモリに保持している)行列やベクトルの総数です。 <source lang="python"> import torch # 例えば、1000個の入力から500個の出力へ変換する層のパラメータ # 重み: (出力数, 入力数) の行列 weights = torch.randn(500, 1000) # バイアス: (出力数) のベクトル bias = torch.r…」 |
Administrator (トーク | 投稿記録) |
||
| (同じ利用者による、間の10版が非表示) | |||
| 13行目: | 13行目: | ||
# パラメータ数 = 500 * 1000 + 500 = 500,500 | # パラメータ数 = 500 * 1000 + 500 = 500,500 | ||
</ | </source> | ||
数字がデカければ賢いという単純なものではありませんが、パラメータが多いほどモデルの表現力が増し、より複雑な文脈やニュアンスを理解・表現でき、高性能になる傾向があります。 | 数字がデカければ賢いという単純なものではありませんが、パラメータが多いほどモデルの表現力が増し、より複雑な文脈やニュアンスを理解・表現でき、高性能になる傾向があります。 | ||
2025年ごろからパラメーターを盛り盛りする競争が発生し、そのために必要な[[メモリ]]が争奪戦になっています。なお、[[SSD]]の価格も上がっていますが、こちらはただの便乗値上げです。 | 2025年ごろからパラメーターを盛り盛りする競争が発生し、そのために必要な[[メモリ]]が争奪戦になっています。なお、[[SSD]]の価格も上がっていますが、こちらはただの便乗値上げです。 | ||
== 必要となる推定メモリ量 == | |||
=== 推論 === | |||
ざっくり推論は「10億パラメーター(1B)あたり4GB」です。 | |||
10億 * 32ビットfloat(4バイト) = 4GB | |||
このメモリ量を減らすのに16ビット(FP16/BF16)などに[[量子化]]する手法が主流です。32ビットを16ビット化すれば単純にメモリ消費量は半分程度になります。最近では1バイトの[[INT8]]や[[FP8]]、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ビット化したりする手法は考案されています。 | |||
[[category: 人工知能]] | [[category: 人工知能]] | ||
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バイトのINT8やFP8、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ビット化したりする手法は考案されています。