【大模型实战篇】大模型GPU推理测试(以Qwen2.5-7B为例)

1. 背景介绍    

        今天到了两块新的3090卡,用nvidia-smi看下部署情况。我们使用Qwen2.5-7B简单做了下推理测试。

        3090卡的基本配置信息如下图所示,使用两块卡做成GPU集群,显存有48G,内存带宽936.2 GB/s, 基本上可以应对一些常见的大模型推理服务以及模型的微调,甚至用QLora能支持650亿参数模型的微调【1】。在上次文章中我们介绍了如何预估模型占用GPU的资源《大模型显存资源计算以及GPU如何选择》。

2.  大模型GPU推理测试

        我们将使用Qwen2.5-7B,精度BF16,差不多模型大小站到15G+,单块3090显卡也足以应对。

        使用huggingface下载模型,会遇到下载的问题,报OSError: We couldn't connect to 'https://huggingface.co' to load this file,如下所示:      

        为了快速验证,所以我们切换到使用modelscope,采用snapshot_download 函数下载模型。modelscope可以认为是国产版本的hugging face,大模型的托管平台,提供了国内镜像站点,模型下载速度比较友好。正如前面计算所示,该7B模型大小预估差不多是15G左右,所以可能会花一点点时间。

        代码示例:

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import osmodel_dir = snapshot_download('qwen/Qwen2.5-7B-Instruct', cache_dir='/root/autodl-tmp', revision='master')

        我大概花了20分钟左右下载完成。

        推理测试代码:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch# 检查是否有可用的GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"Using device: {device}")# 定义模型路径
mode_name_or_path = '/root/autodl-tmp/qwen/Qwen2___5-7B-Instruct'def get_model():# 从预训练的模型中获取 tokenizertokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_token# 从预训练的模型中获取模型,并设置模型参数model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16).to(device)return tokenizer, model# 加载 Qwen2.5 的 model 和 tokenizer
tokenizer, model = get_model()prompt = "我购置了两块3090的gpu,描述一下3090gpu的性能数据"
messages = [{"role": "system", "content": "你是一款智能的大模型用户助手工具"},{"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,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)

开始执行上述测试代码的时候,可能还会报tokenizer类不存在的错误:ValueError: Tokenizer class Qwen2Tokenizer does not exist or is not currently imported

        这个错误可能是和模型版本比较新有关,升级一下你本地的transformers库【3】,即可解决:

pip install --upgrade transformers

之后就可以愉快的跑起来了,我的示例代码中是让大模型介绍下3090显卡的配置信息:

不过我也发现,Qwen2.5的回答有明显的幻觉问题,重复跑几次,会出现说3090卡是一款虚拟的卡,没有实际发布过。

GPU监控信息:

3. 参考材料

【1】48G显卡微调650亿参数规模的大模型:华盛顿大学提出QLoRA方法

【2】Qwen2_5-7B-Instruct WebDemo 部署

【3】ValueError: Tokenizer class LlamaTokenizer does not exist or is not currently imported

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【OpenCV】场景中人的识别与前端计数

1.OpenCV代码设计讲解 突发奇想,搞个摄像头,识别一下实验室里面有几个人,计数一下(最终代码是累加计数,没有优化),拿OpenCV来玩一玩 首先,还是优先启动电脑摄像头,本项…

实验十七:串口通信实验

串口通信实验硬件接口图 具体原理可以查看相应的资料和视频 现就代码分享如下; main.c #include<reg52.h>typedef unsigned int u16; typedef unsigned char u8;sbit LED1=P2^0;void delay_10us(u16 n) {while(n--); }int n=0;void delay_ms(u16 ms) {u16 i,j;for(i=…

在线思维导图怎么制作?只需要台这些组合分析法!

思维导图经历了漫长的进化&#xff0c;现已成为信息组织、记忆和头脑风暴的重要工具。其制作方式主要有手绘和软件两种&#xff0c;随着互联网的发展&#xff0c;软件制作因其便捷性和易于保存逐渐占据主导。如今&#xff0c;在线工具使得用户能够免费创建思维导图。本文将以即…

实验十八:IIC-EEPROM实验

这个实验比较复杂,是目前第一个多文件项目 KEY1-4:P3^0-P3^3 IIC_SCL=P2^1; IIC_SDA=P2^0; //定义数码管位选信号控制脚 LSA=P2^2; LSB=P2^3; LSC=P2^4; 代码 main.c #include "public.h" #in

写作文的AI,不妨试试这些工具

写作文的AI&#xff0c;随着人工智能技术的迅猛发展&#xff0c;AI写作软件已经成为许多作家、学生和内容创作者的得力助手。这些软件不仅能帮助用户生成高质量的文章&#xff0c;还能提供创意灵感、语法校正和内容优化等多重功能。下面&#xff0c;本文将介绍五款各具特色的AI…

真正能抵抗裁员的,从不是专业能力,早知道这些都财务自由了

‍‍‍‍前几天跟一位朋友聊起来。 说她在大厂工作接近5年&#xff0c;业绩也不错&#xff0c;本想着再熬几年就回老家发展。没想到&#xff0c;今年公司大幅裁员&#xff0c;项目组直接被连锅端。 本以为不会轮到她了&#xff0c;上午被叫去办公室谈话&#xff0c;签字&…

高温情况下电容器失效的解决措施

在高温环境下&#xff0c;电容器容易出现失效问题&#xff0c;这不仅会影响设备的正常运行&#xff0c;还可能引发安全隐患。为有效应对高温条件下电容器的失效&#xff0c;需从预防、监测、选择合适的电容器以及维护保养等多个方面入手。以下是详细的解决措施&#xff1a; 一…

男生找女搭子一起旅游的目的,并没有你想象中的那么复杂!

在繁华都市的写字楼里&#xff0c;有一个名叫林宇的男生。最近&#xff0c;他在工作上遭遇了一系列的挫折&#xff0c;项目进展不顺&#xff0c;还被领导批评&#xff0c;心情郁闷到了极点。 为了排解心中的烦闷&#xff0c;林宇决定出去旅游。但他不想一个人孤单地踏上旅程&am…

彻底掌握Android中的ViewModel

彻底掌握Android中的ViewModel ViewModel 属于Android Jetpack库的一部分&#xff0c;是一种业务逻辑或屏幕状态容器。它提供了在配置更改&#xff08;如屏幕旋转&#xff09;后依旧保留相应状态的特性&#xff0c;帮助开发者以更加清晰和可维护的方式处理UI相关的数据&#x…

【中级通信工程师】终端与业务(二):终端产品

【零基础3天通关中级通信工程师】 终端与业务(二)&#xff1a;终端产品 本文是中级通信工程师考试《终端与业务》科目第二章《终端产品》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目&#xff0c;有效复习通过率可达90%以上&#xff0c;本文结合了高频考点和近几…

产教专家共议数字时代下的数据思维人才培养

8 月 25 日至 26 日&#xff0c;"数据思维人才培养论坛"在大湾区大学松山湖校区圆满落幕。此次论坛作为对两个月前新时代计算机本科教育论坛上相关议题的深化&#xff0c;由中国人民大学杜小勇教授与大湾区大学李晓明教授携手发起。和鲸科技创始人、CEO 范向伟先生受…

【常见框架漏洞】ThinkPHP、struts2、Spring、Shiro

一、ThinkPHP 1.环境配置 靶场:vulhub/thinkphp/5-rcedocker-compose up -d #启动环境 访问靶场:http://ip:8080/index.php2.远程命令执行 执行whoami命令 poc: http://47.121.211.205:8080/index.php?sindex/think\app/invokefunction&functioncall_user_func_array&…

算法【Java】—— 位运算

位运算总结 位运算的运算符&#xff1a;按位与&#xff08;&&#xff09;&#xff0c;按位或&#xff08;|&#xff09;&#xff0c;按位异或&#xff08;^&#xff09;&#xff0c;按位取反&#xff08;~&#xff09;&#xff0c;还有移位操作符 <<&#xff0c;>…

加密与解密-PEiD查壳工具的下载及详细安装过程(附有下载文件)

下载链接在文末 下载压缩包后解压 &#xff01;&#xff01;安装路径不要有中文 解压后得到PEiD文件 双击任意一个即可运行使用 夸克网盘打开&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/1216d81f1af5 提取码&#xff1a;pJ1W 动态分析工具 加密与解密-x32dbg…

人工智能时代:程序员的核心竞争力提升指南

在人工智能时代&#xff0c;程序员的核心竞争力不仅体现在编码技能上&#xff0c;更在于如何利用AI技术提升工作效率和创新能力。以下是一些关键点&#xff0c;可以帮助程序员在AI时代保持并提升自身的核心竞争力。 AI辅助编程正在逐渐改变程序员的工作方式&#xff0c;带来了一…

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

目录 一、引言 二、文生文&#xff08;text2text-generation&#xff09; 2.1 概述 2.2 Flan-T5: One Model for ALL Tasks 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 ​​​​​​​ 2.3.3 pipeline返回参数 ​​​​​​​​​​​…

模拟实现(优先级队列)priority_queue:优先级队列、仿函数、 反向迭代器等的介绍

文章目录 前言一、优先级队列二、仿函数三、 反向迭代器总结 前言 模拟实现&#xff08;优先级队列&#xff09;priority_queue&#xff1a;优先级队列、仿函数、 反向迭代器等的介绍 一、优先级队列 优先级队列本质是一个堆&#xff0c;使用vector容器进一步改进进行实现&am…

面向对象 vs 面向过程

Java 和 C 语言的区别&#xff1a;面向对象 vs 面向过程 在编程世界中&#xff0c;不同的编程语言承载着不同的编程范式。C 语言作为一门经典的面向过程编程语言&#xff0c;注重函数的调用和操作&#xff1b;而Java则是典型的面向对象编程语言&#xff0c;重视对象与类的设计…

【计算机网络】传输层协议TCP

目录 一、重新理解封装和解包二、TCP协议段格式三、确认应答(ACK)机制四、超时重传机制五、连接管理机制六、理解TIME_WAIT状态和CLOSE_WAIT状态七、流量控制八、滑动窗口九、拥塞控制十、延迟应答十一、面向字节流十二、粘包问题 一、重新理解封装和解包 在网络协议栈中&…

【LeetCode】动态规划—第 N 个泰波那契数(附完整Python/C++代码)

动态规划—#1137. 第 N 个泰波那契数 前言题目描述基本思路1. 泰波那契数列的定义:2. 理解递推关系:3. 解决方法:4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 泰波那契数列是斐波那契数列的扩展版本。在斐波那契数列中&a…