AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


突破:在4GB GPU上运行开源大型语言模型的新王者Qwen2.5
发布日期:2024-09-26 22:58:34 浏览次数: 1663 来源:机器AI学习 数据AI挖掘


在一个令人震惊的突发发展中,最强大的开源模型的头衔易主。

阿里云发布了Qwen 2.5模型,尤其是其72B版本,在人工智能领域设立了新的标杆。

该模型在MMLU、MATH和MBPP等大多数评估指标上超越了Llama3 405B,甚至在某些指标上超过了GPT-4。

X.com 上到处都在热议Qwen 2.5,世界各地的用户都在不停地讨论这个新的AI巨头:

今天,我正在接受一个大胆的挑战:在我的4GB显存的显卡上运行这个72B的大模型,而不进行量化或压缩。

挑战:我的4GB显卡能否胜任?
虽然A100和H100是不错的选择,但我的预算限制了我只能使用那块老旧的4GB显卡。


最初直接运行模型的结果如预期那样导致了内存不足的错误:

理解规模
拥有720亿参数并在80层上使用18万亿tokens训练的Qwen模型,大约需要37块4GB的GPU才能完全加载。我们还缺少36块GPU——差距相当大!

解决方案:逐层推理
在有限硬件上运行如此大规模模型的关键在于逐层推理。与其将整个80层模型加载到VRAM中,我们每次只加载和处理一层:

  1. 将第一层加载到VRAM

  2. 通过这一层处理输入

  3. 将输出移动到CPU内存

  4. 清空GPU内存

  5. 加载下一层并重复上述过程

这种方法大大减少了最大VRAM使用量,使得在4GB GPU上运行模型成为可能。

介绍AirLLM
为实现这一解决方案,我开发了一个名为AirLLM的开源项目。它不仅支持Qwen 2.5,还支持Llama3 400B、Mixtral以及其他大型模型。以下是一个简单的代码片段以演示其用法:

from airllm import AutoModel
MAX_LENGTH = 128model = AutoModel.from_pretrained("Qwen/Qwen2.5-72B-Instruct")
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=MAX_LENGTH, padding=False)
generation_output = model.generate(input_tokens['input_ids'].cuda(), max_new_tokens=20,use_cache=True,return_dict_in_generate=True)
output = model.tokenizer.decode(generation_output.sequences[0])
print(output)

它是完全开源的。AirLLM 还支持运行包括 Mixtral 和 Llama3 405B 在内的其他超大规模语言模型。你可以在 GitHub 仓库中找到 AirLLM (https://github.com/lyogavin/airllm)。

限制与应用场景
需要注意的是,虽然 4GB 的 GPU 可以运行该模型,但速度不会非常快。这种设置不适合实时聊天机器人场景,但非常适合异步数据处理任务。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询