千亿级开源大模型Qwen110B部署实测

近日,通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。

千亿级大模型普通显卡是跑不了推理的,普通人一般也没办法本地运行千亿级大模型。

为了探索千亿级大模型到底需要计算资源,我用云计算资源部署了Qwen1.5-110B-Chat,看看部署它到底需要多少存储资源,并且测试在不量化、8bit量化、4bit量化下的显存消耗。

一、下载模型

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen1.5-110B-Chat', cache_dir='path/to/local/dir')

下载后模型目录结构如下:

.
├── config.json
├── configuration.json
├── generation_config.json
├── LICENSE
├── merges.txt
├── model-00001-of-00062.safetensors
├── model-00002-of-00062.safetensors
├── model-00003-of-00062.safetensors
├── model-00004-of-00062.safetensors
├── model-00005-of-00062.safetensors
...
├── model-00062-of-00062.safetensors
├── model.safetensors.index.json
├── out.txt
├── README.md
├── tokenizer_config.json
├── tokenizer.json
└── vocab.json
0 directories, 73 files

模型Qwen1.5-110B-Chat共占用硬盘空间208G

二、显卡消耗

按照计算公式:模型显存占用(GB) = 大模型参数(B)*2

那么Qwen1.5-110B-Chat的显存占用量应该为220GB。

实际在部署过程中,没有考虑任何量化技术,占用显存215GB

因此,如果你想完整部署Qwen1.5-110B-Chat,不考虑任何量化技术,需要3块80GB显存的显卡。

当然你可以玩量化,在 Transformers 中使用 LLM.int8() 只需提前安装pip install bitsandbytes即可,使用 LLM.int8() 方法量化transformer模型具体示例如下:

8bit量化

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('qwen/Qwen1___5-110B-Chat',device_map='auto',load_in_8bit=True,max_memory={i: f'{int(torch.cuda.mem_get_info(i)[0]/1024**3)-2}GB'for i in range(torch.cuda.device_count())}
)

经测试,如果你采用8bit量化部署Qwen1.5-110B,需要113GB显存

4bit量化

from transformers import BitsAndBytesConfig
import torch
nf4_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_quant_type="nf4",bnb_4bit_use_double_quant=True,bnb_4bit_compute_dtype=torch.bfloat16
)model_nf4 = AutoModelForCausalLM.from_pretrained('qwen/Qwen1___5-110B-Chat', quantization_config=nf4_config)

经测试,如果你采用4bit量化部署Qwen1.5-110B,需要62GB显存,预计1块80GB显存显卡即可部署。

三、推理代码

简单问一个弱智吧的问题。

from modelscope import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model ontomodel = AutoModelForCausalLM.from_pretrained("/home/data/qwen/Qwen1___5-110B-Chat",torch_dtype="auto",device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("/jydata/qwen/Qwen1___5-110B-Chat")prompt = "树上有3只鸟,我用步枪打死一只,还有几只鸟?"
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512
)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)

四、推理截图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌AI搜索功能“翻车”,用户体验引担忧

近期,谷歌对其搜索引擎进行重大更新,推出了全新AI搜索功能“AI Overview”,试图通过人工智能技术提供更智能便捷的搜索体验,并追赶微软和OpenAI等竞争对手。然而事与愿违,这项备受期待的功能上线后却频频出错&#xff…

测试基础06:软件产品的运行环境dev、sit、test、fat、uat、pre、pro

​​​​​​​课程大纲 1、Dev开发环境 (Development environment) 使用者 开发人员使用。 用途 用于编程,版本变动很大。 外部能否访问 外部用户无法访问。 2、sit/ITE系统集成测试环境 (System Integration Testing en…

30多万汉字词语押韵查询ACCESS\EXCEL数据库

押韵,也作“压韵”。作诗词曲赋等韵文时在句末或联末用同韵的字相押,称为押韵。诗歌押韵,使作品声韵和谐,便于吟诵和记忆,具有节奏和声调美。旧时押韵,要求韵部相同或相通,也有少数变格。现代新…

《开发问题解决》Window下7z解压:cannot create symbolic link : 客户端没有所需的特权

问题描述: 今天使用7z来解压东西的是突然出现这个问题。 问题解决: download直接下载到c盘中,由于所在文件夹有权限限制。无法进行正常解压。 7.zip解压时使用管理员权限进行解压,解压时使用管理员权限。即如图 使用管理员权限重…

【面试干货】找出一个偶数能够表示为两个素数之和的所有可能情况

【面试干货】找出一个偶数能够表示为两个素数之和的所有可能情况 1、实现思想2、代码实现 💖The Begin💖点点关注,收藏不迷路💖 1、实现思想 功能:通过循环遍历奇数,找出一个大于等于 6 的偶数能够表示为两…

【C++初阶】auto关键字

目录 1.auto简介 2.auto的使用 1.auto简介 在早期C/C中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么? C11中,标准委员会赋予了auto全…

红队项目PinkysPalace格式字符串缓冲区溢出详解

简介 渗透测试-地基篇 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。 请注意: 本文仅用于技术讨论与研究,对于所有笔记中复现的…

视频白平衡没调好怎么补救 视频白平衡调整用哪些参数 会声会影视频制作教程

没有调不好的白平衡!如果有,那就是你的方法没用对。无论你的视频发黄还是发蓝,只要掌握本文提供的方法,简单几步就能纠正色偏、校准白平衡。操作很简单,几乎所有人都能够轻松掌握。有关视频白平衡没调好怎么补救&#…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

.net core web项目部署IIS报错:HTTP 错误 413.1 - Request Entity Too Large

HTTP 错误 413.1 - Request Entity Too Large 解决办法 这个报错的原因是因为IIS配置问题,IIS最大默认配置只有30M,超过30M就会报错 解决办法 在程序中配置能接收最大字节大小 //配置请求头中能最大接收多少数据 //builder.WebHost.UseKestrel(option…

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition

VGG论文解析—Very Deep Convolutional Networks for Large-Scale Image Recognition -2015 研究背景 大规模图像识别的深度卷积神经网络 VGG(牛津大学视觉几何组) 认识数据集:ImageNet的大规模图像识别挑战赛 LSVRC-2014:Image…

linux系统——nohup后台运行程序

nohup可以将正在执行程序以后台挂起形式执行,也即为执行结果不打印到终端 具体使用可以,nohup待执行的命令,可以将执行命令结果输出到当前目录的nohup.out文件内 nohup也有其他用法

MyCat2之分库分表

原理 一个数据库由很多表的构成,每个表对应的不同的业务,垂直切分是指按照业务将表进行分类,分不到不同的数据库上,这样压力就分担到了不同的库上面。 数据分片 数据分片包括里:垂直分片和水平分片,垂直分…

安装依赖报-gyp: No Xcode or CLT version detected!

错误 > node-gyp rebuild No receipt for com.apple.pkg.CLTools_Executables found at /. No receipt for com.apple.pkg.DeveloperToolsCLILeo found at /. No receipt for com.apple.pkg.DeveloperToolsCLI found at /. gyp: No Xcode or CLT version detected! gyp ERR!…

【wiki知识库】02.wiki知识库SpringBoot后端的准备

📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂打开SpringBoot项目 2.1 导入所需依赖 2.2修改application.yml配置文件 2.3导入MybatisPlus逆向工程工具 2.4创建一个公用的返回值 2.5创建CopyUtil工具类 2.6创建…

科技与心理学的协同舞蹈

在探讨盲人如何利用如“蝙蝠避障”这样的辅助软件融入日常生活的同时,我们不得不深入触及盲人教育心理学的核心,这一领域致力于理解盲人在学习与成长过程中独特的心理需求与挑战,以及如何通过教育策略激发他们的潜能,促进全面发展…

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能 摘要: 随着前端开发复杂性的增加,组件化开发成为了提高效率和降低维护成本的有效手段。本文介绍了一个基于Vue的前端自定义顶部搜索框组件,该组件不仅具备基本的搜索功能&am…

Micro SD封装是什么?

我们了解客户对于Micro SD封装的疑问。在这篇文章中,我们将详细解释Micro SD封装是什么,以及其在存储领域的技术原理和应用情况,帮助客户更好地理解这一技术。 1. Micro SD封装的定义 Micro SD封装是指一种特定尺寸的存储芯片封装方式&#x…

windows 11 23H2更新总是失败解决过程

频繁更新失败的困扰 最近一个月以来 windows 11 系统 23H2 更新总是失败,更新失败会撤销更改: 之后会自动重启系统,但是重启进不去系统,屏幕有背光但是不显示任何内容。 这时候只能长按开机键强制关机。每次出现这种情况我都没办法远程连接到…

大规模团队的数据库开发,如何用OceanBase工具快速建立企业级账号体系

前言 为了让数据库开发的安全性与可靠性得以充分保障,数据库开发工具的管控能力显得尤为关键。构建一个健全的账号体系,能够协助开发团队实现对数据库开发工具的全方位管控,从而有效防范各类数据安全隐患,确保数据库开发的顺利进…