当前位置: 首页 > news >正文

sglang 部署Qwen2VL7B,大模型部署,速度测试,深度学习

sglang

项目github仓库:

https://github.com/sgl-project/sglang

项目说明书:

https://sgl-project.github.io/start/install.html

资讯:

https://github.com/sgl-project/sgl-learning-materials?tab=readme-ov-file#the-first-sglang-online-meetup

快得离谱:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

[外链图片转存中…(img-E3n1Ivz9-1731913508383)]

图来源:https://lmsys.org/blog/2024-09-04-sglang-v0-3/

Docker使用:


docker run --gpus device=0 \--shm-size 32g \-p 30000:30000 \-v /root/xiedong/Qwen2-VL-7B-Instruct:/Qwen2-VL \--env "HF_TOKEN=abc-1234" \--ipc=host \-v /root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4:/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4 \lmsysorg/sglang:latest \python3 -m sglang.launch_server --model-path /Qwen2-VL --host 0.0.0.0 --port 30000 --chat-template qwen2-vl --context-length 8192 --log-level-http warning

启动成功:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接口文档:

http://101.136.22.140:30000/docs

速度测试代码

import time
from openai import OpenAI# 初始化OpenAI客户端
client = OpenAI(api_key='YOUR_API_KEY', base_url='http://0.0.0.0:30000/v1')# 定义图像路径
image_paths = ["/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo256.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo512.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo768.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo1024.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo1280.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo2560.jpeg"
]# 设置请求次数
num_requests = 10# 存储每个图像的平均响应时间
average_speeds = {}# 遍历每张图片
for image_path in image_paths:total_time = 0# 对每张图片执行 num_requests 次请求for _ in range(num_requests):start_time = time.time()# 发送请求并获取响应response = client.chat.completions.create(model="/Qwen2-VL",messages=[{'role': 'user','content': [{'type': 'text','text': 'Describe the image please',}, {'type': 'image_url','image_url': {'url': image_path,},}],}],temperature=0.8,top_p=0.8)# 记录响应时间elapsed_time = time.time() - start_timetotal_time += elapsed_time# 打印当前请求的响应内容(可选)print(f"Response for {image_path}: {response.choices[0].message.content}")# 计算并记录该图像的平均响应时间average_speed = total_time / num_requestsaverage_speeds[image_path] = average_speedprint(f"Average speed for {image_path}: {average_speed} seconds")# 输出所有图像的平均响应时间
for image_path, avg_speed in average_speeds.items():print(f"{image_path}: {avg_speed:.2f} seconds")

速度测试结果

sglang 测试结果:

Model显存占用 (MiB)分辨率处理时间 (秒)
Qwen2-VL-7B-Instruct70G256 x 2561.71
512 x 5121.52
768 x 7681.85
1024 x 10242.05
1280 x 12801.88
2560 x 25603.26

纯transformer,不用加速框架,我之前的测了一张图的速度是:5.22 seconds,很慢。

附录-vllm速度测试

启动:

docker run --gpus device=0 \-v /root/xiedong/Qwen2-VL-7B-Instruct:/Qwen2-VL \-v /root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4:/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4 \-p 30000:8000 \--ipc=host \vllm/vllm-openai:latest \--model /Qwen2-VL --gpu_memory_utilization=0.9 

代码:

import time
import base64
from openai import OpenAI# 初始化OpenAI客户端
client = OpenAI(api_key='YOUR_API_KEY', base_url='http://0.0.0.0:30000/v1')# 定义图像路径
image_paths = ["/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo256.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo512.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo768.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo1024.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo1280.jpeg","/root/xiedong/Qwen2-VL-72B-Instruct-GPTQ-Int4/demo2560.jpeg"
]# 设置请求次数
num_requests = 10# 存储每个图像的平均响应时间
average_speeds = {}# 将图片转换为 Base64 编码的函数
def image_to_base64(image_path):with open(image_path, "rb") as img_file:return base64.b64encode(img_file.read()).decode('utf-8')# 遍历每张图片
for image_path in image_paths:total_time = 0# 将图片转换为 Base64 编码image_base64 = image_to_base64(image_path)# 对每张图片执行 num_requests 次请求for _ in range(num_requests):start_time = time.time()# 发送请求并获取响应response = client.chat.completions.create(model="/Qwen2-VL",messages=[{'role': 'user','content': [{'type': 'text','text': 'Describe the image please',}, {'type': 'image_url','image_url': {'url': f"data:image/jpeg;base64,{image_base64}",  # 使用Base64编码的图片},}],}],temperature=0.8,top_p=0.8)# 记录响应时间elapsed_time = time.time() - start_timetotal_time += elapsed_time# 打印当前请求的响应内容(可选)print(f"Response for {image_path}: {response.choices[0].message.content}")# 计算并记录该图像的平均响应时间average_speed = total_time / num_requestsaverage_speeds[image_path] = average_speedprint(f"Average speed for {image_path}: {average_speed} seconds")# 输出所有图像的平均响应时间
for image_path, avg_speed in average_speeds.items():print(f"{image_path}: {avg_speed:.2f} seconds")

速度:

Model显存占用 (MiB)分辨率处理时间 (秒)
Qwen2-VL-72B-Instruct-GPTQ-Int470G256 x 2561.50
512 x 5121.59
768 x 7681.61
1024 x 10241.67
1280 x 12801.81
2560 x 25601.97

https://www.dong-blog.fun/post/1856

相关文章:

sglang 部署Qwen2VL7B,大模型部署,速度测试,深度学习

sglang 项目github仓库: https://github.com/sgl-project/sglang 项目说明书: https://sgl-project.github.io/start/install.html 资讯: https://github.com/sgl-project/sgl-learning-materials?tabreadme-ov-file#the-first-sglang…...

fastadmin操作数据库字段为json、查询遍历each、多级下拉、union、php密码设置、common常用函数的使用小技巧

数据库中遇到的操作 查询字段是json的某个值 //获取数据库中某个字段是json中得某个值,进行查询,goods是表中字段,brand_id是json中要查詢的字段。//数据类型一定要对应要不然查询不出来。$map[json_extract(goods, "$.brand_id")]…...

UniApp在Vue3的setup语法糖下自定义组件插槽详解

UniApp在 Vue3的 setup 语法糖下自定义组件插槽详解 UniApp 是一个基于 Vue.js 的跨平台开发框架&#xff0c;可以用来开发微信小程序、H5、App 等多种平台的应用。Vue 3 引入了 <script setup> 语法糖&#xff0c;使得组件的编写更加简洁和直观。本文将详细介绍如何在 …...

springboot上传下载文件

RequestMapping(“bigJson”) RestController Slf4j public class TestBigJsonController { Resource private BigjsonService bigjsonService;PostMapping("uploadJsonFile") public ResponseResult<Long> uploadJsonFile(RequestParam("file")Mul…...

Python学习从0到1 day29 Python 高阶技巧 ⑦ 正则表达式

目录 一、正则表达式 二、正则表达式的三个基础方法 1.match 从头匹配 2.search&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 3.findall&#xff08;匹配规则&#xff0c;被匹配字符串&#xff09; 三、元字符匹配 单字符匹配&#xff1a; 注&#xff1a; 示例&a…...

机器学习-web scraping

Web Scraping&#xff0c;通常称为网络抓取或数据抓取&#xff0c;是一种通过自动化程序从网页中提取数据的技术。以下是对Web Scraping的详细解释&#xff1a; 一、定义与原理 Web Scraping是指采用技术手段从大量网页中提取结构化和非结构化信息&#xff0c;并按照一定的规…...

移远通信5G RedCap模组RG255C-CN通过中国电信5G Inside终端生态认证

近日&#xff0c;移远通信5G RedCap模组RG255C-CN荣获中国电信颁发的5G Inside终端生态认证证书。这表明&#xff0c;该产品在5G基本性能、网络兼容性、安全特性等方面已经过严格评测且表现优异&#xff0c;将进一步加速推动5G行业终端规模化应用。 中国电信5G Inside终端生态认…...

Javaweb梳理17——HTMLCSS简介

Javaweb梳理17——HTML&CSS简介 17 HTML&CSS简介17.1 HTML介绍17.2 快速入门17.3 基础标签17.3 .1 标题标签17.3.2 hr标签17.3.3 字体标签17.3.4 换行17.3.8 案例17.3.9 图片、音频、视频标签17.3.10 超链接标签17.3.11 列表标签17.3.12 表格标签17.3.11 布局标签17.3.…...

【Android、IOS、Flutter、鸿蒙、ReactNative 】自定义View

Android Java 自定义View 步骤 创建一个新的Java类&#xff0c;继承自View、ViewGroup或其他任何一个视图类。 如果需要&#xff0c;重写构造函数以支持不同的初始化方式。 重写onMeasure方法以提供正确的测量逻辑。 重写onDraw方法以实现绘制逻辑。 根据需要重写其他方法&…...

win11跳过联网激活步骤

win11跳过联网激活步骤 win11跳过联网激活步骤方法一&#xff1a;使用Shift F10快捷键&#xff08;推荐&#xff09;1. 启动Windows 112. 选择键盘布局或输入法3. 是否想要添加第二种键盘布局4. 让我们为你连接到网络5. 调出管理员模式CMD6. 耐心等待自动重启7. 启动Windows 1…...

利用c语言详细介绍下冒泡排序

软件开发过程中&#xff0c;排序算法是常规且使用众多的方法之一&#xff0c;而冒泡算法又是排序算法中最常规且基本的算法。今天我们利用c语言&#xff0c;图文详细介绍下冒泡算法。 一、图文介绍 我们输入一个数组&#xff0c;数组为【10&#xff0c;5&#xff0c;3&#xf…...

C# 面向对象

C# 面向对象编程 面向过程&#xff1a;一件事情分成多个步骤来完成。 把大象装进冰箱 (面向过程化设计思想)。走一步看一步。 1、打开冰箱门 2、把大象放进冰箱 3、关闭冰箱门 面向对象&#xff1a;以对象作为主体 把大象装进冰箱 1、抽取对象 大象 冰箱 门 &#xff0…...

android wifi扫描的capability

混合型加密android11 8155与普通linux设备扫描到的安全字段差别 android应用拿到关于wifi安全的字段&#xff1a; systembar-WifiBroadcastReceiver---- scanResult SSID: Redmi_697B, BSSID: a4:39:b3:70:8c:20, capabilities: [WPA-PSK-TKIPCCMP][WPA2-PSK-TKIPCCMP][RSN-PSK…...

datawhale 2411组队学习:模型压缩4 模型量化理论(数据类型、int8量化方法、PTQ和QWT)

文章目录 一、数据类型1.1 整型1.2 定点数1.3 浮点数1.3.1 正规浮点数&#xff08;fp32&#xff09;1.3.2 非正规浮点数&#xff08;fp32&#xff09;1.3.3 其它数据类型1.3.4 浮点数误差1.3.5 浮点数导致的模型训练问题 二、量化基本方法2.1 int8量化2.1.1 k-means 量化2.1.2 …...

数据分析-48-时间序列变点检测之在线实时数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 实时数据CPD3.1 SDAR学习算法3.2 Changefinder模块3.3 恒定方差CPD3…...

POD-Transformer多变量回归预测(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现POD-Transformer多变量回归预测&#xff0c;本征正交分解数据降维融合Transformer多变量回归预测&#xff0c;使用SVD进行POD分解&#xff08;本征正交分解&#xff09;&#xff1b; 2.运行环境Matlab20…...

Hadoop生态圈框架部署(七)- MySQL安装与配置教程

文章目录 前言一、MySQL安装与配置&#xff08;手动部署&#xff09;1. 下载MySQL2. 上传安装包3. 解压HBase安装包4. 配置4.1 配置 MySQL 的主配置文件 my.cnf4.2 配置 MySQL 服务的脚本 5. 初始化MySQL数据库6. 创建快捷方式7. 启动MySQL服务8. 修改MySQL登录密码8.1 使用临时…...

视频直播5G CPE解决方案:ZX7981PG/ZX7981PMWIFI6网络覆盖

方案背景 视频直播蓬勃发展的当下&#xff0c;传统直播网络联网方式的局限性越来越明显。目前传统直播的局限性主要集中在以下几个方面&#xff1a; 传统直播间网络架构条件有限&#xff0c;可连接WIFI数量少&#xff0c;多终端同时直播难以维持&#xff1b;目前4G网络带宽有限…...

技术周刊 |Google 2024 年首届 Web AI 峰会回顾

大家好&#xff0c;我是童欧巴。见字如面&#xff0c;万事胜意&#xff0c;欢迎来到第 134 期周刊。 大厨推荐 Google 2024 年首届 Web AI 峰会回顾 不仅包括来自谷歌团队的演讲者&#xff0c;如 Chrome 和 MediaPipe&#xff0c;还包括第三方代表&#xff0c;如英特尔、Hug…...

web——upload-labs——第十二关——%00截断

查看源码 分析源码我们可以知道&#xff0c;这里是基于白名单过滤&#xff0c;只允许上传jpg,png,gif&#xff0c;但是这里注意第八行&#xff0c;上传路径是可以控制的&#xff0c;所以可以利用%00截断&#xff0c;来达到上传木马的目的。这里要注意一下&#xff0c;%00截断想…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...