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

7.1 KiB
Raw Permalink Blame History

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: 检查以下几点:

  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 获取帮助。