核能挑战:8GB显存本地跑Llama 405B!
来源:互联网
时间:2026-08-21 13:58:35
来吧,直接上干货。今天要聊一个看似离谱但已经可以实现的操作——用一块
8GB显存
405B
先别急,数据对比一下:Llama 405B模型的大小是820GB。8GB显存是它的
103
倍

显然,这个模型不可能完整地塞进显卡里。那怎么绕过这个瓶颈?
4bit量化
第一招,4-bit量化。简单说,就是把原本用16-bit浮点数表示的参数,压缩到只用
4-bit
量化之后的逻辑也不复杂:所有的浮点数会被分配到4个bit能表达的16个桶里。原先是
-3.40282347E+38到3.40282347E+38

答案是:非常靠谱。
关键在于,要让这些参数的数值
均匀地
好就好在,
深度神经网络的参数通常服从正态分布
当然,现实中没有绝对的完美。再正态的分布里也难免有
异常值
outlier

解决方案就是,单独腾出一块专用空间,把这些异常值特殊记录下来。这就是所谓的
outlier-dependent量化
甚至有些情况下精度反而更高了
经过这一轮丧心病狂的4-bit量化,Llama 405B的模型大小成功缩小到了230GB。距离8GB显存,已经
《不远了》
分层推理
第二个魔法是分层推理。
实际上,Transformer的推理过程并不需要把整个模型一次性全部加载进来。每一层单独加载、单独计算,然后继续下一层,完全可以。
Llama 405B在层数上只比上一代增加了50%,到了126层。但注意,它的向量维数增加了一倍,多头注意力头的数量也翻倍了。所以每层的参数量大概是原来的4倍左右。
不过,逐层加载并推理,峰值显存占用只需
5GB
开源项目AirLLM
说到底,AI行业的模型差距正在快速缩小。用什么模型,差异已经不大。越来越多公司开始倾向于
采用开源模型,并且自己部署大模型
这种方法已经集成到一个开源的Python项目AirLLM中。任何人拿到手都能用。
安装只需要一条命令:
pip install airllm
然后,几行代码就能跑起来:
from airllm import AutoModel
model = AutoModel.from_pretrained("unsloth/Meta-Llama-3.1-405B-Instruct-bnb-4bit")
input_text = ['What is the capital of United States?',]
input_tokens = model.tokenizer(input_text,
return_tensors="pt",
return_attention_mask=False,
truncation=True,
max_length=128,
padding=False)
generation_output = model.generate(
input_tokens['input_ids'].cuda(),
max_new_tokens=10,
return_dict_in_generate=True)
output = model.tokenizer.decode(generation_output.sequences[0])
print(output)
就是这么简单。理论上,这台8GB显存的机器,已经能跑起405B的模型了。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名