实测VLLM的加速效果

为了测试vllm的并行加速效果,采用同样的5个提问,编写两个不同的python脚本,分别是compare_vllm.py和compare_chatglm3.py,其中compare_vllm.py采用vllm加速。

服务器参数:

操作系统ubuntu 22.04
CPUi7 14700k
内存dd5 128G
显卡3090 24G 两块

compare_vllm.py的代码如下:

import time
from vllm import LLM, SamplingParamsdef main():# 定义批量数据desc = "这张图片中有一位母亲和儿子正在一起开心的笑母亲穿着花裙子,儿子穿着运动鞋和牛仔短裤,他们站在方形的砖块地面"query = f"对于以下图片描述提取标签,每一个标签作为数组的一个元素,以JSON格式输出。只输出标签,不用解释:\n'{desc}'"prompts = ["中华人民共和国成立的日期是哪一天?","为什么AI在这一两年爆发了?",query,"中美人口分别是多少?美国有多少中国的移民?","你擅长数学计算吗?",]sampling_params = SamplingParams(temperature=0.1, top_p=0.5, max_tokens=4096)path = '/home/data/model/zhipu/chatglm3-6b'llm = LLM(model=path, trust_remote_code=True, tokenizer_mode="auto", tensor_parallel_size=2, dtype="auto")start_time = time.time()  # 获取当前时间outputs = llm.generate(prompts, sampling_params)# 输出结果for output in outputs:prompt = output.promptgenerated_text = output.outputs[0].textprint(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")end_time = time.time()  # 获取当前时间print(f"The code run for {end_time - start_time} seconds.")    if __name__ == "__main__":main()

compare_chatglm3.py的代码如下:


import time
from transformers import AutoTokenizer, AutoModeldef main():MODEL_PATH = "/home/data/model/zhipu/chatglm3-6b"tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH, trust_remote_code=True)model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True, device_map="auto").eval()desc = "这张图片中有一位母亲和儿子正在一起开心的笑母亲穿着花裙子,儿子穿着运动鞋和牛仔短裤,他们站在方形的砖块地面"query = f"对于以下图片描述提取标签,每一个标签作为数组的一个元素,以JSON格式输出。只输出标签,不用解释:\n'{desc}'"prompts = ["中华人民共和国成立的日期是哪一天?","为什么AI在这一两年爆发了?",query,"中美人口分别是多少?美国有多少中国的移民?","你擅长数学计算吗?",]start_time = time.time()  # 获取当前时间for p in prompts:response, history = model.chat(tokenizer, p, history=[], role="user")  #,top_p=0.8, temperature=0.2print(response)end_time = time.time()  # 获取当前时间print(f"The code run for {end_time - start_time} seconds.") if __name__ == "__main__":main()

python compare_vllm.py:
  输出:The code run for 3.9577383995056152 seconds.
  最大显存使用(因为动态在变化,这个并不精确):2个各22G,总计44G
  

compare_chatglm3.py:
  输出:The code run for 12.522217512130737 seconds.
  最大显存使用(因为动态在变化,这个并不精确):2个各6G,总计12G

很明显,vllm确实具备并行加速性能,差不多是3倍。当然显存的峰值使用量明显增多,差不多是不用vllm的3.7倍。当然,可以考虑采用进程方式部署多个非vllm服务实现并行,但是那样的话部署会麻烦一些。

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

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

相关文章

hive中常见参数优化总结

1.with as 的cte优化,一般开发中习惯使用with as方便阅读,但如果子查询结果在下游被多次引用,可以使用一定的参数优化手段减少表扫描次数 默认set hive.optimize.cte.materialize.threshold-1;不自动物化到内存,一般可以设置为 se…

力扣 第 387 场周赛 解题报告 | 珂学家 | 离散化树状数组 + 模拟场

前言 整体评价 手速场模拟场,思路和解法都蛮直接的。 所以搞点活 如果T2,如果不固定左上角,批量查询某个点为左上角,求满足总和 ≤ k \le k ≤k的子矩阵个数 如果T2,如果不固定左上角,求总和 ≤ k \le k…

Spring的Bean的生命周期 | 有图有案例

Spring的Bean的生命周期 Spring的Bean的生命周期整体过程实例化初始化服务销毁循环依赖问题 完整生命周期演示 Spring的Bean的生命周期 Spring Bean的生命周期:从Bean的实例化之后,通过反射创建出对象之后,到Bean称为一个完整的对象&#xf…

EXPLAIN:mysql 执行计划分析详解

目录 EXPLAIN命令 查看执行计划 分析执行计划 优化查询 EXPLAIN中的 type 列类型 在MySQL中,你可以使用EXPLAIN命令来生成查询的执行计划。EXPLAIN命令可以显示MySQL如何使用键来处理SELECT和DELETE语句,以及INSERT或UPDATE语句的WHERE子句。这对于…

SRS Stack提供的鉴权、私人直播间、多平台转播、录制等高级功能的具体使用方法是什么?

SRS Stack提供的鉴权、私人直播间、多平台转播、录制等高级功能的具体使用方法是什么? 鉴权功能:SRS Stack支持通过系统配置中的OpenAPI获取Bearer鉴权,并可以尝试HTTP API。用户可以通过点击网页上的按钮请求HTTP API,或者使用cu…

快上车:什么是人工智能?人工智能和普通程序的区别

什么是人工智能? 虽然AI历史很悠久,上个世纪50年代就有各种概念,但是发展很慢。第一次对人类的冲击就是1997年IBM深蓝击败国际象棋世界冠军,引起了人们的广泛关注,之后又销声匿迹。突然间2016人工智能alphaGO战胜了围…

具身智能计算系统,机器人时代的 Android | 新程序员

【导读】具身智能作为一种新兴的研究视角和方法论,正在刷新我们对智能本质及其发展的理解:传统的 AI 模型往往将智能视为一种独立于实体存在的抽象能力,而具身智能则主张智能是实体与其环境持续互动的结果。 本文深度剖析了具身智能计算系统…

【CSS】初学了解Grid布局

目录 什么是Grid布局如何开始使用Grid布局Grid容器的属性Grid项目的属性举个例子 什么是Grid布局 Grid布局是一种二维的布局系统,它允许我们在水平和垂直方向上同时控制网格中的项目位置。通过将页面划分为行和列,我们可以轻松地创建出复杂的布局结构&a…

程序员如何选择职业赛道?

一、自我评估与兴趣探索 程序员选择职业赛道时,可以考虑以下几个关键因素: 1、兴趣与热情:首先要考虑自己的兴趣和热情,选择符合个人喜好和激情的领域,能够激励自己持续学习和进步。 2、技术能力&am…

2.python72变笔记(自用未修改版)

以前写的python笔记 1.二进制与字符编码 #8bit(位)1byte(字节) #1024byte 1KB 千字节 #1024KB 1MB 兆字节 #1024MB 1TB 太字节 print(chr(0b100111001010000)) print(ord("陈")) #ord 十进制 #无论英语还是汉语在计算…

mysql5.7配置主从

原理: MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…

微信小程序开发学习笔记《18》uni-app框架-网络请求与轮播图

微信小程序开发学习笔记《18》uni-app框架-网络请求 博主正在学习微信小程序开发,希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、下载网络请求包 这个包是以前黑马程序员老师写的一个包,跟着课程学习&#x…

Open3D(C++) 指定点数的体素滤波

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法过程 对于数据量较大的点云,在后期进行配准时会影响计算效率。而体素格网…

vue3ts websocket通信

前端&#xff1a;vue3ts 后端&#xff1a;springboot npm安装依赖 cnpm install sockjs-client stompjs 前端代码 <template><div><el-input v-model"message" type"text" placeholder"发送" /><el-button-group><…

LCR 170. 交易逆序对的总数

解题思路&#xff1a; 归并排序&#xff0c;在归并的过程中不断计算逆序对的个数 count mid -i 1&#xff1b;的来源见下图&#xff0c;因为两个数组都是单调递增的&#xff0c;所以如果第一个数组的前一个元素大于第二个数组的对应元素&#xff0c;那么第一个数组的这一元素…

借助Aspose.SVG图像控件,在 C# 中将图像转换为 Base64

Base64 编码是一种二进制到文本的编码方案&#xff0c;可有效地将二进制数据转换为 ASCII 字符&#xff0c;为数据交换提供通用格式。在某些情况下&#xff0c;我们可能需要将JPG或PNG图像转换为 Base64 字符串数据。在这篇博文中&#xff0c;我们将学习如何在 C# 中将图像转换…

分享经典、现代和前沿软件工程课程

随着信息技术的发展&#xff0c;软件已经深入到人类社会生产和生活的各个方面。软件工程是将工程化的方法运用到软件的开发、运行和维护之中&#xff0c;以达到提高软件质量&#xff0c;降低开发成本的目的。软件工程已经成为当今最活跃、最热门的学科之一。 本次软件工程MOOC课…

模板06-普通函数与函数模板调用规则

1、如果函数模板和普通函数都可以实现&#xff0c;优先调用普通函数 2、可以通过空模板参数列表来强调调用函数模板 3、函数模板也可以发生重载 4、如果函数模板可以发生更好的匹配&#xff0c;优先调用函数模板 #include <iostream> using namespace std;int my_add …

混合云技术架构是什么样的

混合云技术架构是什么样的&#xff1f;混合云技术架构是一种将公有云和私有云相结合的云计算架构。它允许组织在私有云和公有云之间灵活地共享和迁移应用程序、数据和服务。 混合云技术架构的设计可以根据组织的需求和业务要求进行定制&#xff0c;通常包括以下组件&#xff1…

现在如何才能开通微信公众号留言功能?

为什么公众号没有留言功能&#xff1f;2018年2月12日之后直到现在&#xff0c;新注册公众号的运营者会发现一个问题&#xff1a;无论是个人还是企业的公众号&#xff0c;在后台都找不到留言功能了。这对公众号来说绝对是一个极差的体验&#xff0c;少了一个这么重要的功能&…