模型参数量怎么估:不用跑代码,手算也能对个大概

估模型参数量其实不用跑代码,手算就能对个大概。思路就一条:参数基本都在各层的权重矩阵里,一层层算出来再加总。

  1. 全连接层:输入维 × 输出维,再加偏置。权重要把每个输入连到每个输出,所以是乘法关系;偏置是每个输出一个,量很小。
  2. 卷积层:卷积核尺寸 × 输入通道 × 输出通道,偏置另加。和全连接不同,它的参数只跟核和通道有关,跟输入的图多大没关系。
  3. Transformer:主要吃在两块,一块是注意力里的几组投影矩阵,另一块是后面的前馈层。前馈那块的中间维通常是隐藏维的好几倍,所以占大头,估的时候先抓它准没错。
  4. 每层加起来,就是总量。

想偷懒的话,框架里一般有直接统计参数量的接口,一行就能打印出来,正好拿来核对手算的结果,差得多就说明哪层漏算了。

那还手算干嘛?我觉得意义在于心里有数:看到一个模型的结构,大概知道显存是怎么被吃掉的、哪部分最占地方,之后改结构或者挑模型的时候,就不至于全凭感觉拍脑袋。

手算完再用接口核对,一下就理解参数都堆在哪了。

感谢佬 讲透了

从参数量能反推显存占用,部署前估算很实用。

楼主辛苦

1 个赞

前馈层占大头这点以前真没意识到 :+1:

对非科班挺友好,起码知道大模型大在哪了。