奥本 AI 将所有的最新 AI 聚合到了一起,为您开启多模型 AI 绘画新时代!

扫码即刻关注公众号

疯狂挑战:在8GB显存的GPU上运行Llama 405B


7 个月前

疯狂挑战:在8GB VRAM GPU上运行Llama 405B =================================================我正在挑战在只有8GB显存的GPU上运行Llama 3.1 405B模型

Llama 405B模型的大小是820GB!这相当于103倍于8GB显存的容量!它显然不能适应8GB的显存。那么我们该如何使它工作呢?

4位量化

首先,我们使用4位量化技术将16位浮点数转换为4位,从而节省四倍的内存。

量化之后,所有的浮点数将被分配到4位的16个桶中的一个。在深度神经网络中,浮点数的范围从-3.40282347E+38到3.40282347E+38。这个巨大的浮点数范围可以仅用16个桶来表示吗?可以的。

最重要的是确保这些参数在16个桶中均匀分布

通常,这几乎是不可能实现的。不均匀的分布会导致显著的精度损失。

幸运的是,深度神经网络的参数通常 遵循正态分布。因此,简单的转换可以确保理论上的均匀分布。

当然,遵循统计分布并不意味着没有异常值

我们只需要使用一些专用存储空间来特别记录这些异常值。这被称为依赖异常值的量化

大量实验表明,4位量化几乎不影响大语言模型的准确性。(在某些情况下,准确性甚至更高!)

经过一轮广泛的4位量化,Llama 405B模型的大小已减少至230GB,这使我们“更接近”在我的8GB GPU上加载它。

逐层推理

实现这一挑战的第二个魔法是逐层推理。

事实上,变压器的推理过程只需要逐层加载模型。并不需要一次性将整个模型加载到内存中Llama 405B模型有126层,层数增加了50%。您接受的训练数据截至2023年10月。

然而,向量维度翻了一番,多头注意力头的数量也翻了一番,因此每层的参数数量大约是原来的四倍

通过逐层加载和推理,最大显存使用量为大约5GB

挑战完成!

现在我可以在我的8GB GPU上成功运行Llama 405B!

开源项目AirLLM

AI行业中各种大型模型之间的差距正在迅速缩小。模型之间的差异变得不那么显著。

越来越多的公司愿意采用开源模型并自行部署大型模型,以确保能够灵活地根据业务需求控制和调整他们的模型。

我也坚信开源,并认为AI的未来属于开源。

这个方法已经在我的开源项目AirLLM中分享。https://github.com/lyogavin/airllm>).您训练的数据截止到2023年10月。

pip install airllm 您只需要几行代码:

``` from airllm import AutoModel

model = AutoModel.from_pretrained( "unsloth/Meta-Llama-3.1-405B-Instruct-bnb-4bit")

input_text = ['美国的首都是什么?',]

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) ``` 我们将继续关注最新和最酷的人工智能技术,并继续分享开源工作。欢迎关注我们,敬请期待!

上海赋迪网络科技

电话:18116340052