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

news2024/11/19 17:14:32

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_time
        total_time += elapsed_time

        # 打印当前请求的响应内容(可选)
        print(f"Response for {image_path}: {response.choices[0].message.content}")

    # 计算并记录该图像的平均响应时间
    average_speed = total_time / num_requests
    average_speeds[image_path] = average_speed

    print(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_time
        total_time += elapsed_time

        # 打印当前请求的响应内容(可选)
        print(f"Response for {image_path}: {response.choices[0].message.content}")

    # 计算并记录该图像的平均响应时间
    average_speed = total_time / num_requests
    average_speeds[image_path] = average_speed

    print(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

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

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

相关文章

前端pdf预览方案

前端pdf预览方案 pdf预览一般不需要前端生成pdf文件,pdf文件一般是通过接口,获取pdf文件【responseType:‘blob’,】或二进制文件流【responseType: ‘arraybuffer’,】或者已有的pdf文件。 前端PDF预览通常是通过读取现有的PDF文件,并使用…

Kotlin return与return@forEachIndexed

Kotlin return与returnforEachIndexed fun main() {val data arrayOf(0, 1, 2, 3, 4)println("a")data.forEachIndexed { index, v ->if (v 2) {//类似while循环中的continue//跳过,继续下一个forEachIndexed迭代returnforEachIndexed}println("…

MATLAB绘制克莱因瓶

MATLAB绘制克莱因瓶 clc;close all;clear all;warning off;% clear all rand(seed, 100); randn(seed, 100); format long g;% Parameters u_range linspace(0, 2*pi, 100); v_range linspace(0, pi, 50); [U, V] meshgrid(u_range, v_range);% Parametric equations for t…

DDRPHY数字IC后端设计实现系列专题之数字后端floorplanpowerplan设计

3.2.3 特殊单元的布局 布图阶段除了布置 I/O 单元和宏单元,在 28nm 制程工艺时,还需要处理两种特 殊的物理单元,Endcap 和 Tapcell。 DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计 (1)拐…

css uniapp背景图宽度固定高度自适应可以重复

page {height: 100%;background-image: url(https://onlinekc.a.hlidc.cn/uploads/20241115/350f94aaf493d05625a7ddbc86c7804e.png);background-repeat: repeat;background-size: contain;} 如果不要重复 把background-repeat: repeat;替换background-repeat: no-repeat;

CC工具箱使用指南:【CAD导出界址点Excel】

一、简介 群友定制工具。 面图层导出界址点Excel表之前已经做过好几个,这个工具则是将CAD导出Excel。 CAD数据如下: 工具将如上截图中的边界线导出界址点Excel,并记录下面内的文字。 二、工具参数介绍 点击【定制工具】组里的【CAD导出界…

输出比较简介

输出比较简介 主要是用来输出PWM波形,这个波形是驱动电机的(智能车和机器人等)必要条件 OC(Output Compare)输出比较,还有IC,全称是Input Capture,意为输入捕获,还有CC…

力扣(leetcode)题目总结——辅助栈篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏:点击进入 leetcode题目分类 关注走一波 前言:本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目&#xff0c…

unity老猿随笔

下面是我最近开始整理的一些unity的基础知识和疑难杂症,如果大家有什么可以分享出来的经验,可以评论区留言,验证后整理进来,全猿学习!如果有不对的地方,也欢迎指正,避免误人子弟! l…

『VUE』30. 生命周期的介绍(详细图文注释)

目录 生命周期生命周期的8阶段生命周期小例子总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 生命周期 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板&#xf…

Go语言跨平台桌面应用开发新纪元:LCL、CEF与Webview全解析

开篇寄语 在Go语言的广阔生态中,桌面应用开发一直是一个备受关注的领域。今天,我将为大家介绍三款基于Go语言的跨平台桌面应用开发框架——LCL、CEF与Webview,它们分别拥有独特的魅力和广泛的应用场景。通过这三款框架,你将能够轻…

华为HCCDA云技术认证--网络服务

大家好呀!我是reload。今天继续带大家学习华为HCCDA云技术认证,涵盖华为云最为核心的计算、存储、网络、数据库、安全、部署等服务。今天学习网络服务相关内容。 登录华为云官网:https://www.huaweicloud.com/ ,进入首页&#xff…

rocketmq5源码系列--(一)--搭建调试环境

说在前头:阿里的rocketmq的文档是真他妈的烂的1b,很多东西都不说,全靠自己看源码,摸索,草,真的要吐血了 rocketmq的版本5而不是版本4,版本5比版本4多了个proxy rocketmq5 三个组件:…

如何通过电脑监控软件远程监控一台电脑的所有屏幕画面记录

7-1 本教程介绍一个简单的工具,可以安装在电脑中,按设置的时间间隔,自动对屏幕截图保存,并且可以在有网络的其它电脑上远程提取截图文件。 该软件用于自动记录电脑的屏幕画面内容和变化,如果你有这方面的使用场景&am…

Redis 概 述 和 安 装

安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …

Spring Boot汽车资讯:科技与汽车的新篇章

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了汽车资讯网站的开发全过程。通过分析汽车资讯网站管理的不足,创建了一个计算机管理汽车资讯网站的方案。文章介绍了汽车资讯网站的系统分析部分&…

CSS:高级寄巧

精灵图 为什么需要精灵图呢? 一个网页中往往会应用很多小背景图作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送 请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。 因此,为了有…

【原创】如何备份和还原Ubuntu系统,非常详细!!

前言 我在虚拟机装了一个xfce4的Ubuntu桌面版,外加输入法、IDEA等,我想将这个虚拟机里的系统直接搬到物理机中,那我可以省的再重新装一遍、配置xfce4桌面、修改一堆快捷键还有配置idea了,那直接说干就干。 本教程基于Ubuntu24.0…

SAM_Med2D 训练完成后boxes_prompt没有生成mask的问题

之前对着这这篇文章去微调SAM_Med2D(windows环境),发现boxes_prompt空空如也。查找了好长时间问题SAM-Med2D 大模型学习笔记(续):训练自己数据集_sam训练自己数据集-CSDN博客 今天在看label2image_test.json文件的时候发现了一些端倪: 官方…

数据结构-二叉搜索树(Java语言)

目录 1.概念 2.查找search 3.插入insert ​编辑4.删除remove(难点) 5.性能分析 1.概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 : 1.若它的左子树不为空,则左子树上所有节点的值都…