极智项目 | 多模态大模型推理平台-Streamlit版(支持Qwen2.5/InternVL3/KimiVL三大模型)
多模态大模型推理测试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
界面预览
主界面截图
界面特色:
- 🎨 简洁现代: 采用蓝紫渐变配色,界面清爽专业
- 📱 响应式布局: 左右分栏设计,操作区域与结果区域分离
- ⚙️ 智能配置: 侧边栏集中管理所有模型和推理参数
- 🚀 实时反馈: 推理状态实时显示,用户体验流畅
- 🔧 功能完整: 支持图片上传、文本输入、参数调节等全功能
主要区域说明:
- 顶部标题栏: 显示平台名称和版本信息
- 左侧配置区: 模型选择、推理框架、vLLM配置、输入参数等
- 右侧结果区: 推理输出、状态显示、结果复制等
- 底部信息栏: 版权信息和技术特性说明
软件使用说明
1. 启动应用
# 方法1: 使用启动脚本(推荐)
./run_app.sh# 方法2: 直接启动
$PYTHON_ENV -m streamlit run app.py --server.port 8501
启动成功后访问: http://localhost:8501
2. 基础操作流程
步骤1: 选择推理配置
- 推理框架: 选择transformers或vLLM
- 模型选择: 从Qwen2.5-VL、InternVL3、Kimi-VL中选择
- 模型路径: 使用预置路径或自定义路径
步骤2: vLLM显存配置(仅vLLM框架)
- GPU显存使用率: 30%-95%,推荐80%
- 最大模型长度: 1024-8192,推荐4096
步骤3: 输入内容
- 图片上传: 支持JPG、PNG格式(可选)
- 文本提示: 输入问题或描述
- 参数调整:
- max_new_tokens: 生成长度(1-4096)
- temperature: 随机性(0.0-2.0)
- top_p: 采样阈值(0.0-1.0)
步骤4: 执行推理
点击"🚀 生成"按钮开始推理,实时查看状态和结果。
3. 高级功能
vLLM显存优化策略
GPU显存 | 推荐配置 | 最大长度 | 说明 |
---|---|---|---|
8GB | 50-60% | 2048 | 保守设置 |
16GB | 60-70% | 4096 | 平衡设置 |
24GB+ | 70-80% | 6144+ | 高性能设置 |
缓存管理
- 模型缓存: 清空所有模型实例缓存
- vLLM缓存: 单独清空vLLM模型缓存
- 智能缓存: 配置变化时自动重新加载
性能优化建议
- 首次使用: vLLM需要加载模型(较慢)
- 后续推理: 直接使用缓存(快速)
- 显存不足: 降低GPU使用率或减少序列长度
- 多模型切换: 会自动释放其他模型的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 # 项目文档
扩展开发
添加新模型
- 创建模型类:
# 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
- 注册模型:
# 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
- 作者: 极智视界
- 许可: 仅供学习测试使用