7.1 KiB
7.1 KiB
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驱动
# 检查驱动版本
nvidia-smi
# 预期输出示例:
# +-----------------------------------------------------------------------------+
# | NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 |
# +-----------------------------------------------------------------------------+
2. 检查CUDA安装
# 检查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状态
# 查看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. 激活虚拟环境
# 进入项目目录
cd /path/to/document-parser
# 激活虚拟环境
source ./venv/bin/activate
# 验证Python路径
which python
# 应该显示: /path/to/document-parser/venv/bin/python
2. 安装MinerU(包含兼容的sglang)
# 使用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. 验证安装
# 检查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 文件:
# 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. 或者通过环境变量
# 设置环境变量
export MINERU_BACKEND="vlm-sglang-engine"
# 启动服务
document-parser server
验证GPU加速是否生效
1. 启动服务并检查日志
# 启动服务
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使用
# 在另一个终端监控GPU
watch -n 1 nvidia-smi
# 或者使用更详细的监控
nvidia-smi dmon -s pucvmet -d 1
3. 测试PDF解析
上传一个PDF文件进行解析,观察:
- GPU内存使用是否增加
- GPU计算单元是否被占用
- 解析速度是否明显提升
4. 检查进程
# 查看MinerU进程
ps aux | grep mineru
# 查看GPU进程
nvidia-smi pmon -c 1
性能调优
1. 并发控制
根据GPU内存调整并发数:
mineru:
max_concurrent: 1 # 8GB GPU内存
max_concurrent: 2 # 16GB GPU内存
max_concurrent: 4 # 24GB+ GPU内存
2. 批处理大小
mineru:
batch_size: 1 # 小批次,适合大模型
batch_size: 2 # 中等批次
batch_size: 4 # 大批次,适合小模型
3. 质量级别
mineru:
quality_level: "Fast" # 快速模式,GPU占用低
quality_level: "Balanced" # 平衡模式(推荐)
quality_level: "HighQuality" # 高质量模式,GPU占用高
故障排除
1. sglang导入失败
# 检查Python版本
python --version
# 重新安装sglang
pip uninstall sglang -y
pip install "sglang[all]"
# 检查依赖
pip list | grep sglang
2. CUDA不可用
# 检查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内存不足
# 检查GPU内存使用
nvidia-smi
# 降低并发数和批处理大小
# 关闭其他GPU进程
4. 版本兼容性问题
# 检查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. 对比测试
# 测试pipeline后端(CPU)
mineru -p test.pdf -o output -b pipeline
# 测试sglang后端(GPU)
mineru -p test.pdf -o output -b vlm-sglang-engine
# 对比处理时间和资源使用
监控和维护
1. 定期检查
# 检查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. 日志分析
# 分析性能日志
grep "processing_time" logs/log.* | awk '{print $NF}' | sort -n
# 分析错误日志
grep "ERROR" logs/log.* | tail -20
3. 性能优化
- 根据实际使用情况调整并发参数
- 监控GPU内存使用,避免OOM错误
- 定期清理临时文件和缓存
常见问题
Q: 为什么GPU加速没有生效?
A: 检查以下几点:
- sglang是否正确安装
- 配置文件中的backend是否为"vlm-sglang-engine"
- CUDA环境是否可用
- GPU内存是否充足
Q: 如何知道MinerU正在使用GPU?
A: 通过以下方式确认:
- 查看nvidia-smi输出中的进程列表
- 观察GPU内存使用是否增加
- 检查日志中的命令参数
- 对比CPU和GPU模式的性能差异
Q: GPU内存不足怎么办?
A: 可以尝试:
- 降低max_concurrent参数
- 减小batch_size
- 使用"Fast"质量级别
- 关闭其他GPU进程
注意:本指南基于Linux环境编写,Windows用户可能需要调整部分命令。如有问题,请参考主用户手册或运行 document-parser troubleshoot 获取帮助。