Files
qiming/qiming-mcp-proxy/document-parser/CUDA_SETUP_GUIDE.md
2026-06-01 13:03:20 +08:00

313 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CUDA环境配置和sglang GPU加速指南
## 概述
本指南专门针对需要GPU加速的用户详细说明如何在支持CUDA的Linux服务器上配置sglang环境确保MinerU能够使用GPU加速进行PDF解析。
## 前置条件
### 1. 硬件要求
- NVIDIA GPU支持CUDA
- 至少8GB GPU内存推荐16GB+
- 足够的系统内存推荐32GB+
### 2. 软件要求
- Linux操作系统推荐Ubuntu 20.04+
- NVIDIA驱动版本450+
- CUDA Toolkit推荐11.8或12.x
- Python 3.8+
## 环境检查
### 1. 检查NVIDIA驱动
```bash
# 检查驱动版本
nvidia-smi
# 预期输出示例:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 |
# +-----------------------------------------------------------------------------+
```
### 2. 检查CUDA安装
```bash
# 检查CUDA版本
nvcc --version
# 预期输出示例:
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2023 NVIDIA Corporation
# Built on Wed_Nov_22_10:17:15_PST_2023
# Cuda compilation tools, release 12.3, V12.3.52
```
### 3. 检查GPU状态
```bash
# 查看GPU详细信息
nvidia-smi --query-gpu=index,name,memory.total,memory.free,compute_cap --format=csv
# 预期输出示例:
# 0, NVIDIA GeForce RTX 4090, 24576 MiB, 23552 MiB, 8.9
```
## 安装sglang
### 1. 激活虚拟环境
```bash
# 进入项目目录
cd /path/to/document-parser
# 激活虚拟环境
source ./venv/bin/activate
# 验证Python路径
which python
# 应该显示: /path/to/document-parser/venv/bin/python
```
### 2. 安装MinerU包含兼容的sglang
```bash
# 使用uv安装推荐
uv pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple
# 或者使用pip安装
pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple
# 安装过程可能需要几分钟,请耐心等待
```
**重要**:使用 `mineru[all]` 而不是直接安装 `sglang[all]`,确保版本兼容性。
### 3. 验证安装
```bash
# 检查sglang版本
python -c "import sglang; print('SGLang版本:', sglang.__version__)"
# 检查sglang server
python -m sglang.srt.server --help
# 检查CUDA支持
python -c "import torch; print('PyTorch版本:', torch.__version__); print('CUDA可用:', torch.cuda.is_available()); print('CUDA设备数:', torch.cuda.device_count())"
```
## 配置MinerU使用sglang
### 1. 修改配置文件
编辑 `config.yml` 文件:
```yaml
# MinerU配置
mineru:
backend: "vlm-sglang-engine" # 关键启用sglang后端
python_path: "./venv/bin/python"
max_concurrent: 2 # GPU环境下建议降低并发数
queue_size: 100
batch_size: 1
quality_level: "Balanced"
```
### 2. 或者通过环境变量
```bash
# 设置环境变量
export MINERU_BACKEND="vlm-sglang-engine"
# 启动服务
document-parser server
```
## 验证GPU加速是否生效
### 1. 启动服务并检查日志
```bash
# 启动服务
document-parser server
# 在另一个终端查看日志
tail -f logs/log.$(date +%Y-%m-%d)
```
查找以下关键信息:
```
INFO 虚拟环境已自动激活
INFO MinerU配置: backend=vlm-sglang-engine
DEBUG MinerU完整命令: .../mineru -p input.pdf -o output -b vlm-sglang-engine
```
### 2. 实时监控GPU使用
```bash
# 在另一个终端监控GPU
watch -n 1 nvidia-smi
# 或者使用更详细的监控
nvidia-smi dmon -s pucvmet -d 1
```
### 3. 测试PDF解析
上传一个PDF文件进行解析观察
- GPU内存使用是否增加
- GPU计算单元是否被占用
- 解析速度是否明显提升
### 4. 检查进程
```bash
# 查看MinerU进程
ps aux | grep mineru
# 查看GPU进程
nvidia-smi pmon -c 1
```
## 性能调优
### 1. 并发控制
根据GPU内存调整并发数
```yaml
mineru:
max_concurrent: 1 # 8GB GPU内存
max_concurrent: 2 # 16GB GPU内存
max_concurrent: 4 # 24GB+ GPU内存
```
### 2. 批处理大小
```yaml
mineru:
batch_size: 1 # 小批次,适合大模型
batch_size: 2 # 中等批次
batch_size: 4 # 大批次,适合小模型
```
### 3. 质量级别
```yaml
mineru:
quality_level: "Fast" # 快速模式GPU占用低
quality_level: "Balanced" # 平衡模式(推荐)
quality_level: "HighQuality" # 高质量模式GPU占用高
```
## 故障排除
### 1. sglang导入失败
```bash
# 检查Python版本
python --version
# 重新安装sglang
pip uninstall sglang -y
pip install "sglang[all]"
# 检查依赖
pip list | grep sglang
```
### 2. CUDA不可用
```bash
# 检查PyTorch CUDA支持
python -c "import torch; print(torch.cuda.is_available())"
# 如果返回False重新安装PyTorch
pip uninstall torch torchvision torchaudio -y
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
```
### 3. GPU内存不足
```bash
# 检查GPU内存使用
nvidia-smi
# 降低并发数和批处理大小
# 关闭其他GPU进程
```
### 4. 版本兼容性问题
```bash
# 检查transformers版本
pip show transformers
# 安装兼容版本
pip install "transformers>=4.36.0,<4.40.0"
# 重新安装sglang
pip install "sglang[all]"
```
## 性能基准测试
### 1. 测试文件
使用不同大小的PDF文件测试性能
- 小文件(<1MB测试启动时间
- 中等文件1-10MB测试处理速度
- 大文件(>10MB测试内存使用
### 2. 性能指标
- **启动时间**:从命令执行到开始处理的时间
- **处理速度**:每秒处理的页数或字数
- **GPU利用率**GPU计算单元和内存的使用率
- **内存使用**GPU和系统内存的峰值使用
### 3. 对比测试
```bash
# 测试pipeline后端CPU
mineru -p test.pdf -o output -b pipeline
# 测试sglang后端GPU
mineru -p test.pdf -o output -b vlm-sglang-engine
# 对比处理时间和资源使用
```
## 监控和维护
### 1. 定期检查
```bash
# 检查GPU健康状态
nvidia-smi --query-gpu=health --format=csv
# 检查温度
nvidia-smi --query-gpu=temperature.gpu --format=csv
# 检查电源使用
nvidia-smi --query-gpu=power.draw --format=csv
```
### 2. 日志分析
```bash
# 分析性能日志
grep "processing_time" logs/log.* | awk '{print $NF}' | sort -n
# 分析错误日志
grep "ERROR" logs/log.* | tail -20
```
### 3. 性能优化
- 根据实际使用情况调整并发参数
- 监控GPU内存使用避免OOM错误
- 定期清理临时文件和缓存
## 常见问题
### Q: 为什么GPU加速没有生效
A: 检查以下几点:
1. sglang是否正确安装
2. 配置文件中的backend是否为"vlm-sglang-engine"
3. CUDA环境是否可用
4. GPU内存是否充足
### Q: 如何知道MinerU正在使用GPU
A: 通过以下方式确认:
1. 查看nvidia-smi输出中的进程列表
2. 观察GPU内存使用是否增加
3. 检查日志中的命令参数
4. 对比CPU和GPU模式的性能差异
### Q: GPU内存不足怎么办
A: 可以尝试:
1. 降低max_concurrent参数
2. 减小batch_size
3. 使用"Fast"质量级别
4. 关闭其他GPU进程
---
**注意**本指南基于Linux环境编写Windows用户可能需要调整部分命令。如有问题请参考主用户手册或运行 `document-parser troubleshoot` 获取帮助。