我正在使用同一模型的不同量化实现,主要区别在于权重、偏置和激活的精度。因此,我想知道如何找到以MB为单位的模型大小(例如32位浮点型)与以int8为单位的模型大小之间的差异。我有模型保存在.PTH格式。
lp0sw83n1#
您可以计算参数和缓冲区的数量。然后尝试将它们与元素大小相乘,您将拥有所有参数的大小。
model = models.resnet18() param_size = 0 buffer_size = 0 for param in model.parameters(): param_size += param.nelement() * param.element_size() for buffer in model.buffers(): buffer_size += buffer.nelement() * buffer.element_size() size_all_mb = (param_size + buffer_size) / 1024**2 print('Size: {:.3f} MB'.format(size_all_mb))
它将打印:大小:361.209 MB
2uluyalo2#
要计算模型大小(以字节为单位),可以将参数数乘以所选精度的大小(以字节为单位)。例如,如果我们使用BLOOM-176 B模型的bfloat 16版本,我们有176*10**9 x 2字节= 352 GB!“这篇关于HF的博客值得一读:https://huggingface.co/blog/hf-bitsandbytes-integration
2条答案
按热度按时间lp0sw83n1#
您可以计算参数和缓冲区的数量。然后尝试将它们与元素大小相乘,您将拥有所有参数的大小。
它将打印:
大小:361.209 MB
2uluyalo2#
要计算模型大小(以字节为单位),可以将参数数乘以所选精度的大小(以字节为单位)。例如,如果我们使用BLOOM-176 B模型的bfloat 16版本,我们有176*10**9 x 2字节= 352 GB!“
这篇关于HF的博客值得一读:https://huggingface.co/blog/hf-bitsandbytes-integration