极智项目 | 多模态大模型推理平台-Streamlit版(支持Qwen2.5/InternVL3/KimiVL三大模型)

article/2025/6/24 7:46:21

多模态大模型推理测试Web应用

软件下载链接:下载
基于Streamlit的多模态大模型推理测试平台,支持Qwen2.5-VL、InternVL3、Kimi-VL三大模型,提供transformers和vLLM两种推理框架。

软件介绍

核心功能

  • 多模型支持: 集成三大主流多模态大模型
  • 双推理框架: transformers(稳定)+ vLLM(高性能)
  • 多模态输入: 支持图片+文本联合推理
  • 智能缓存: 模型实例缓存,避免重复加载
  • 显存优化: vLLM显存动态配置,防止OOM
  • 模块化设计: 易于扩展新模型

技术特性

  • 兼容性修复: 解决Streamlit与PyTorch冲突问题
  • 性能优化: vLLM模型缓存机制,大幅提升推理速度
  • 用户友好: 现代化Web界面,实时状态反馈
  • 完整日志: 详细的推理过程追踪

支持的模型

模型开发方特点
Qwen2.5-VL阿里巴巴通义千问视觉语言模型,性能均衡
InternVL3上海AI实验室多模态理解能力强,支持长序列
Kimi-VL月之暗面轻量化设计,推理速度快

推理框架对比

框架优势适用场景
Transformers稳定可靠,兼容性好开发调试,小批量推理
vLLM高性能,显存优化生产环境,大批量推理

软件环境配置步骤

1. 系统要求

  • 操作系统: Linux (推荐Ubuntu 20.04+)
  • Python版本: 3.12.10
  • GPU: CUDA支持的NVIDIA GPU
  • 显存: 建议16GB以上

2. Python环境配置

# 使用指定的Python环境
export PYTHON_ENV="/opt/conda/envs/vllm_server_py312/bin/python"# 验证Python版本
$PYTHON_ENV --version  # 应显示: Python 3.12.10

3. 核心依赖库版本

根据您的环境,需要安装以下版本的库:

# 核心深度学习库
pip install torch==2.6.0+cu124
pip install transformers==4.51.3# 推理引擎
pip install vllm==0.8.5.post1# Web框架
pip install streamlit==1.45.1# 模型库
pip install modelscope==1.25.0# 图像处理
pip install Pillow==11.2.1# 数值计算
pip install numpy==2.2.5# 其他依赖
pip install qwen-vl-utils

4. 环境验证

# 进入项目目录
cd /path/to/streamlit_llm_infer# 验证环境
$PYTHON_ENV -c "
import torch; print(f'PyTorch: {torch.__version__}')
import transformers; print(f'Transformers: {transformers.__version__}')
import vllm; print(f'vLLM: {vllm.__version__}')
import streamlit; print(f'Streamlit: {streamlit.__version__}')
print('✅ 环境配置正确')
"

5. 模型路径配置

确保以下模型路径存在且可访问:

# Qwen2.5-VL模型路径
/path/models/Qwen/Qwen2.5-VL-7B-Instruct# InternVL3模型路径  
/path/models/OpenGVLab/InternVL3-8B-Instruct# Kimi-VL模型路径
/path/models/moonshotai/Kimi-VL-A3B-Instruct

界面预览

主界面截图

在这里插入图片描述

界面特色:

  • 🎨 简洁现代: 采用蓝紫渐变配色,界面清爽专业
  • 📱 响应式布局: 左右分栏设计,操作区域与结果区域分离
  • ⚙️ 智能配置: 侧边栏集中管理所有模型和推理参数
  • 🚀 实时反馈: 推理状态实时显示,用户体验流畅
  • 🔧 功能完整: 支持图片上传、文本输入、参数调节等全功能

主要区域说明:

  1. 顶部标题栏: 显示平台名称和版本信息
  2. 左侧配置区: 模型选择、推理框架、vLLM配置、输入参数等
  3. 右侧结果区: 推理输出、状态显示、结果复制等
  4. 底部信息栏: 版权信息和技术特性说明

软件使用说明

1. 启动应用

# 方法1: 使用启动脚本(推荐)
./run_app.sh# 方法2: 直接启动
$PYTHON_ENV -m streamlit run app.py --server.port 8501

启动成功后访问: http://localhost:8501

2. 基础操作流程

步骤1: 选择推理配置
  1. 推理框架: 选择transformers或vLLM
  2. 模型选择: 从Qwen2.5-VL、InternVL3、Kimi-VL中选择
  3. 模型路径: 使用预置路径或自定义路径
步骤2: vLLM显存配置(仅vLLM框架)
  • GPU显存使用率: 30%-95%,推荐80%
  • 最大模型长度: 1024-8192,推荐4096
步骤3: 输入内容
  1. 图片上传: 支持JPG、PNG格式(可选)
  2. 文本提示: 输入问题或描述
  3. 参数调整:
    • max_new_tokens: 生成长度(1-4096)
    • temperature: 随机性(0.0-2.0)
    • top_p: 采样阈值(0.0-1.0)
步骤4: 执行推理

点击"🚀 生成"按钮开始推理,实时查看状态和结果。

3. 高级功能

vLLM显存优化策略
GPU显存推荐配置最大长度说明
8GB50-60%2048保守设置
16GB60-70%4096平衡设置
24GB+70-80%6144+高性能设置
缓存管理
  • 模型缓存: 清空所有模型实例缓存
  • vLLM缓存: 单独清空vLLM模型缓存
  • 智能缓存: 配置变化时自动重新加载
性能优化建议
  1. 首次使用: vLLM需要加载模型(较慢)
  2. 后续推理: 直接使用缓存(快速)
  3. 显存不足: 降低GPU使用率或减少序列长度
  4. 多模型切换: 会自动释放其他模型的vLLM实例

4. 故障排除

常见错误及解决方案

CUDA out of memory

解决方案:
1. 降低vLLM的GPU显存使用率至60-70%
2. 减少最大模型长度至2048-4096
3. 减少max_new_tokens参数
4. 使用transformers推理替代vLLM

模型加载失败

检查项目:
1. 模型路径是否正确
2. 模型文件是否完整
3. 权限是否足够
4. 磁盘空间是否充足

Kimi-VL vLLM兼容性问题

解决方案:
1. 使用transformers推理(推荐)
2. 更新vLLM到最新版本
3. 或选择其他模型如Qwen2.5-VL

5. 项目结构

streamlit_llm_infer/
├── app.py                      # 主应用入口
├── run_app.sh                  # 启动脚本
├── utils/                      # 工具模块
│   ├── compatibility_fix.py    # 兼容性修复
│   └── image_utils.py          # 图像处理
├── models/                     # 模型模块
│   ├── base_model.py           # 模型基类
│   ├── model_factory.py        # 模型工厂
│   ├── qwen25vl_model.py       # Qwen2.5-VL
│   ├── internvl3_model.py      # InternVL3
│   └── kimivl_model.py         # Kimi-VL
└── README.md                   # 项目文档

扩展开发

添加新模型

  1. 创建模型类:
# models/new_model.py
from .base_model import BaseModelclass NewModel(BaseModel):def load_model(self):# 实现transformers模型加载passdef infer_transformers(self, prompt, image, max_new_tokens, temperature, top_p):# 实现transformers推理passdef infer_vllm(self, prompt, image, max_new_tokens, temperature, top_p):# 实现vLLM推理pass
  1. 注册模型:
# models/model_factory.py
_models = {"NewModel": NewModel,  # 添加新模型
}_preset_paths = {"NewModel": "/path/to/model",  # 添加模型路径
}

版本信息

  • 当前版本: v2.2
  • Python: 3.12.10
  • 主要依赖: PyTorch 2.6.0, Transformers 4.51.3, vLLM 0.8.5.post1
  • 作者: 极智视界
  • 许可: 仅供学习测试使用

http://www.hkcw.cn/article/nkKxOTbAJN.shtml

相关文章

mysql慢sql的实际处理方案之一

复习mysql架构图 当大批量慢sql过来,显然就是占用了线程池的链接,然后长久不释放,所以会出现线程池满的问题,致使正常业务sql也全部阻塞,影响整个业务。 AI搜索如下: 可以考虑一种方案: 将线…

最小生成树

1 最小生成树的概论 最小生成树的概念 2 Kruskal算法 首先我们要熟记最小生成树的概念 必须是无向带权图,必须保证连通性,总的权值必须是最小的 如果无向带权图有n个节点,那么最小生成树一定有n-1个边 这个也被叫成k算法,很常用…

网络系统中安全漏洞扫描为何重要?扫描啥?咋扫描?

在网络系统中,安全漏洞扫描占据着极其重要的位置,这一环节有助于我们发现并消除潜在的安全隐患,进而提高网络安全防护的等级。下面,我将对此进行详尽的说明。 基本概念 漏洞扫描技术可以揭示并评估网站存在的安全风险&#xff0…

2025年- H62-Lc170--34.在排序数组中查找元素的第一个和最后一个位置(2次二分查找,标记向左寻找,标记向右寻找)--Java版

1.题目描述 2.思路 3.代码实现 public class H34 {public int[] searchRange(int[] nums, int target) {int start findFirst(nums, target);int end findLast(nums, target);return new int[]{start, end};}// 查找第一个出现的位置public int findFirst(int[] nums, int t…

VR/AR 显示瓶颈将破!铁电液晶技术迎来关键突破

在 VR/AR 设备逐渐走进大众生活的今天,显示效果却始终是制约其发展的一大痛点。纱窗效应、画面拖影、眩晕感…… 传统液晶技术的瓶颈让用户体验大打折扣。不过,随着铁电液晶技术的重大突破,这一局面有望得到彻底改变。 一、传统液晶技术瓶颈…

基于空天地一体化网络的通信系统matlab性能分析

目录 1.引言 2.算法仿真效果演示 3.数据集格式或算法参数简介 4.MATLAB核心程序 5.算法涉及理论知识概要 5.1 QPSK调制原理 5.2 空天地一体化网络信道模型 5.3 空天地一体化网络信道特性 6.参考文献 7.完整算法代码文件获得 1.引言 空天地一体化网络是一种将卫星通信…

基于FashionMnist数据集的自监督学习(生成式自监督学习AE算法)

目录 一,生成式自监督学习 1.1 简介 1.2 核心思想 1.3 常见算法 1.3.1 自动编码器(Autoencoder) 1.3.2 生成对抗网络(GANs) 1.3.3 变分自编码器(VAE) 1.3.4 Transformer-based 模型&…

腾讯位置商业授权关键词输入提示开发指南

概述 用于获取输入关键字的补完与提示,帮助用户快速输入。本接口为纯HTTP数据接口,需配合前端程序实现Autocomplete(自动完成)的效果。 请求URL 该请求为GET请求 https://apis.map.qq.com/ws/place/v1/suggestion 请求参数 名称必…

【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

企业内训|客户智能营销实战——某头部车企

5月下旬,TsingtaoAI团队为某央企汽车厂商的智能驾驶业务运营团队交付“客户智能营销实战”课程。 本课程聚焦AI技术与汽车营销的深度融合,以“数据驱动大模型赋能”为核心,系统拆解智能营销全链路。课程从行业痛点切入,结合最新趋…

Mybatis-Plus简单介绍

前一篇文章中,小编介绍到了Mybatis,以及它的增强工具,mybatis-generator。 那么为了再减少对于SQL语句的编写,那么mybatis的另一个增强工具也是做出了巨大努力。 Mybaits-Plus Mybatis-Plus简称MP,它是一个Mybatis的…

LLm中 float16和 float32 区别,为什么训练不能采用float16--梯度消失

LLm中 float16和 float32 区别,为什么训练不能采用float16–梯度消失 在深度学习中,使用 float16(半精度)而非 float32(单精度)进行训练时,数值范围和精度的差异可能导致一系列问题,特别是当损失值达到 0.0001 这种较小时。以下是具体分析: 1. float16 与 float32 的…

Vue2之2组件通信

文章目录 什么是组件通信不同的组件关系 和 组件通信方案分类组件关系分类:组件通信方案分类 父子通信流程图:父传子子传父非父子通信 (拓展) - event bus 事件总线非父子通信 (拓展) - provide & inject 深入学习prop属性prop接收多个值props 是只读…

Qt -下载Qt6与OpenCV

博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 前言 呃啊,本来就想在 Qt 里简单几个 OpenVC 的函数,没想到一搞就是一天。 我之前的开发环境是 Qt 5.14.2,使用 MinGW 7.3.0 64-bit 编…

8088单板机C语言sprintf()格式化串口输出---Prj04

#include "tiny_stdarg.h" // 使用自定义可变参数实现#define ADR_273 0x0200 #define ADR_244 0x0400 #define LED_PORT 0x800 #define PC16550_THR 0x1f0 #define PC16550_LSR 0x1f5 / //基本的IO操作函数 / char str[]"Hello World! 20250531 Ve…

HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。

名人说:龙舟争渡,助威呐喊,凭吊祭江诵君赋。——苏轼《六幺令天中节》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、项目概览:传统与现代的技术碰撞1. 核心特…

YOLOv10改进|爆改模型|涨点|在颈部网络添加结合部分卷积PConv和SDI融合方法的PSDI特征融合层(附代码+修改教程)

一、文本介绍 本文修改的模型是YOLOv10,YOLOv10无需非极大值抑制(NMS)进行后处理,其推理速度以及参数量上都优于现有的模型。然而,针对某些目标检测任务中需要同时处理多尺度目标的挑战,YOLOv10 在此类场景…

Redis最佳实践——安全与稳定性保障之高可用架构详解

全面详解 Java 中 Redis 在电商应用的高可用架构设计 一、高可用架构核心模型 1. 多层级高可用体系 #mermaid-svg-Ffzq72Onkv7wgNKQ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Ffzq72Onkv7wgNKQ .error-icon{f…

虚拟存储器:将十六进制逻辑地址 0A5C、103C、1A5C 转换成物理地址(2)

转换成十进制(分步骤解析) 确定页号和偏移的计算方式 页大小1KB 2^10,逻辑地址中 页号 逻辑地址 1024(整数除法),页内偏移 逻辑地址 % 1024。物理地址 物理块号 1024 页内偏移,其中物理块…

【HTML】基础学习【数据分析全栈攻略:爬虫+处理+可视化+报告】

- 第 102 篇 - Date: 2025 - 05 - 31 Author: 郑龙浩/仟墨 文章目录 HTML 基础学习一 了解HTML二 HTML的结构三 HTML标签1 标题2 文本段落3 换行4 加粗、斜体、下划线5 插入图片6 添加链接7 容器8 列表9 表格10 class类 HTML 基础学习 一 了解HTML 一个网页分为为三部分&…