MinerU on 海光 Z100
本报告分别评估 MinerU 3.4.4 生产基线与 MinerU 4.0.7 实验路线,说明当前部署配置及其测试依据。详细故障记录与复现命令见独立实验档案。
主要结论
| 问题 | 结论 | 状态 |
|---|---|---|
| 稳定批量生产 | 3.4.4 pipeline + 常驻 Z100 worker | 生产基线 |
| 快速预览 / 建索引 | 4.0.7 Flash | 可用 |
| 4.x 高质量本地解析 | 4.0.7 Basic:ONNX CPU 或常驻 Torch/DCU | 可用 |
| Standard / Advanced | Transformers VLM 隔离补丁已通过功能验证,仅用于实验 | 实验性 |
| 批量入口 | Slurm-native mineru-drop,支持 3.x / 4.x adapter | 已验证 |
4.0.7 已经“能用”,但还没有替代 3.4.4 的生产证据;生产与实验环境保持并行,不原地升级。
测试范围与方法
报告不把不同档位、不同冷热状态和不同页数混成一个“速度排名”。
| 证据 | 用途 | 限制 |
|---|---|---|
| 同 PDF、同页范围、同资源 | 3.4.4 pipeline 与 4.0.7 Basic 冷态对比 | 输出协议不同 |
| 同进程重复解析 | 测模型常驻后的暖态速度 | 不含 Slurm 排队 |
| 服务池并发压测 | 测生产吞吐、背压和故障恢复 | 仅 3.4.4 完成长期验证 |
| 单页 VLM smoke | 证明 Standard / Advanced 能运行 | 不能外推长文档吞吐 |
- 冷态:新进程,包含 import、模型加载和首次执行。
- 暖态:同一进程复用已加载模型。
- Flash 与 Basic/pipeline 质量不同,不直接比较质量等价吞吐。
测试平台与运行时环境
| 能力 | 实测 | 含义 |
|---|---|---|
| FP32 GEMM | 约 9.1 TFLOPS | 跨复验稳定 |
| FP16 GEMM | 约 16.1 TFLOPS | 约为 FP32 的 1.8× |
| BF16 GEMM | 约 5.8 TFLOPS | 无硬件收益 |
| Triton / torch.compile | 不可用 | gfx906 与 DTK 运行时边界 |
| vLLM HIP kernel | PagedAttention 可运行 | 不等于完整 vLLM 服务已兼容 |
统一运行时闭包
CentOS 7 的 glibc 2.17 无法直接加载部分 wheel。两套环境都复用同一个原则:
module purge
module load compiler/gcc/12.2.0 compiler/dtk/26.04
<GLIBC_2_28_LD_SO> \
--library-path "<GLIBC_LIB>:<GCC_LIB>:<DTK_LIBS>:<SYSTEM_LIBS>" \
<VENV>/bin/python "$@"
sitecustomize.py 同时把 multiprocessing spawn worker 指向该 launcher,避免子进程掉回系统 glibc。
MinerU 3.4.4 生产环境基线
3.4.4 的价值不在“版本旧”,而在已经完成质量、稳态吞吐、背压、重试和故障恢复验证。
| 项目 | 结果 |
|---|---|
| 后端 | pipeline |
| 4 卡服务池 | 955 docs/hour,并发 12 |
| 稳定性 | 72 请求,0 失败,0 拒绝 |
| 暖态 GOC | 14 页约 12 秒,0.86 s/页 |
| 故障恢复 | 压测中 kill worker,自动重建,请求不丢 |
| 内存 | 72 请求前后 RSS 无增长 |
它仍是当前唯一拥有完整生产压测证据的路径。除非 4.0.7 完成等价语料、暖态服务和故障实验,不切换默认生产 adapter。
MinerU 4.0.7 实验环境与验证
4.0.7 使用独立 venv、模型目录和配置,不覆盖 3.4.4。新版以 tier 表达质量,以
small_backend 和 vlm.engine 表达实际引擎。
| 旧 3.x | 4.0.7 对应 | 实现 |
|---|---|---|
| 快速原生解析 | Flash | 原生文本 / Flash OCR |
| pipeline | Basic | ONNX 或 Torch 小模型 |
| hybrid-engine | Standard | 小模型 + VLM |
| vlm-engine | Advanced | 更高 VLM 推理投入 |
实验环境配置
MinerU 4.0.7
DocVortex 0.5.1
ONNX Runtime 1.20.1
Torch 2.7.1 + DTK 26.04
torchvision 0.22.0 + DTK 26.04
Transformers 5.17.0
NumPy 1.26.4
OpenCV 4.11.0
官方 llama.cpp Linux wheel 要求 glibc 2.34,当前用户态运行时仅到 2.28。 Standard / Advanced 因此使用隔离补丁暴露源码中已有的 Transformers backend。
Basic 模式性能优化
性能瓶颈不是单页算子,而是“每个任务新建 Python + 加载全部模型”。
ONNX Runtime CPU 线程配置
| intra-op 线程 | 冷态 2 页 | 暖态 2 页 | 建议 |
|---|---|---|---|
| 4 | 76.29 s | 10.43 s | 资源保守 |
| 8 | 31.63 s | 6.60 s | 总吞吐优先 |
| 16 | 33.64 s | 6.13 s | 单 worker 延迟优先 |
Torch / Z100
| 状态 | 2 页耗时 | 变化 |
|---|---|---|
| 冷态 | 198.12 s | 模型加载主导 |
| 暖态,SDPA 回退 math | 2.86 s | 复用 singleton |
| 暖态,eager formula attention | 2.64 s | 再快约 8% |
mineru4-drop 每个 Slurm worker 常驻一个 MinerUParser,并在 gfx906 上关闭公式 SDPA。
14 页强制拆为 8+6 页后,首块 148.8 秒,第二块仅 10.3 秒。
3.4.4 与 4.0.7 受控对比
同一 GOC PDF、第 1–2 页、8 CPU、27 GB;DCU 路径均使用 1 张 Z100。
| 版本 / 路径 | Slurm 总耗时 | 模型阶段 | 判断 |
|---|---|---|---|
| 3.4.4 pipeline / CPU | 165 s | 36.95 s | 基线 |
| 4.0.7 Basic / ONNX CPU | 93 s | 37.15 s | 外围启动更短 |
| 3.4.4 pipeline / Z100 | 236 s | 60.02 s | 冷态 DCU 更快 |
| 4.0.7 Basic / Torch Z100 | 293 s | 71.97 s | 冷态更慢 |
- CPU 模型阶段几乎不变;4.0.7 冷启动优势来自 import、预处理和输出链。
- DCU 冷态 4.0.7 更慢,但暖态降到 2.64 秒 / 2 页。
- 跨版本输出协议不同,因此总耗时是应用级比较,不是纯 kernel benchmark。
4.0.7 功能验证
| Tier | 资源 / 后端 | 样本 | 结果 | 定位 |
|---|---|---|---|---|
| Flash | CPU 原生文本 | 14 页 | 69 s 作业,模型阶段 16.8 s | 预览 / 索引 |
| Basic | ONNX CPU / Torch Z100 | 2 页与 14 页分块 | 通过并优化 | 本地高质量 |
| Standard | Torch + Transformers VLM | 1 页冷态 | 160.9 s | 实验性 |
| Advanced | Transformers VLM | 1 页暖态 | 24.3 s | 实验性 |
Standard 是首次加载,Advanced 复用了同一进程中的 VLM;两者不能据此做质量或速度排名。 这组数据只证明四档均能在目标环境完成真实解析。
MinerU Drop 批量处理入口
适配器实现
| 远端根 | 版本 | 用途 |
|---|---|---|
mineru-drop | 3.4.4 | 稳定生产默认 |
mineru4-drop | 4.0.7 Basic/Torch | 新版协议与实验批量 |
# 3.4.4
mineru-drop push <PDF_OR_DIRECTORY>
# 4.0.7
mineru-drop --remote-root mineru4-drop push <PDF_OR_DIRECTORY>
# 通用
mineru-drop [--remote-root ...] status --batch <BATCH_ID>
mineru-drop [--remote-root ...] retry --batch <BATCH_ID>
mineru-drop [--remote-root ...] fetch --batch <BATCH_ID>
长文档默认 128 页以内整篇,超过后按 96 页分块。少量长文档优先 1 个 worker, 避免多个 worker 各自承担一次模型冷启动;大量文档再扩到 4 个 worker。
部署配置建议
批量最终解析
3.4.4 pipeline
已有四卡吞吐、稳定性、背压和故障恢复证据。
快速检索与预览
4.0.7 Flash
无需本地大模型,适合第一遍扫描和索引。
4.x 输出协议场景
4.0.7 Basic
CPU 用 ONNX 8/16 线程;Z100 必须常驻模型。
复杂页面解析评估
Standard / Advanced
仅人工指定小批量,不进入默认自动路由。
推荐路由
原生文本,只需索引 → 4.0.7 Flash
需要最终 Markdown / JSON → 3.4.4 pipeline
必须使用 4.x schema → 4.0.7 Basic
极复杂页面、人工复核 → Standard / Advanced
复现方法与适用边界
最小复现约束
- 登录节点准备依赖和模型;计算节点离线运行。
- module 必须在 venv 之前加载。
- 主进程与 spawn 子进程必须共用 glibc 2.28 launcher。
- Slurm 脚本必须传递真实工作负载退出码。
- 4.0.7 ONNX Runtime 1.20.1 使用重打标签 wheel,只能在外部 glibc 2.28 下运行。
已知限制
| 边界 | 影响 |
|---|---|
| gfx906 无 Flash Attention | Torch 公式/VLM attention 回退;已对公式模型改用 eager |
| mineru-llama-cpp 要求 glibc 2.34 | 官方本地 Standard/Advanced 引擎不可装 |
| 厂商 vLLM 版本低于 4.0.7 声明范围 | 未作为 4.x 默认 VLM 引擎 |
| 跨分块段落与表格 | manifest 明确提示,需要抽样审阅 |
保留 Triton、vLLM、glibc、失败路径、服务池实现和全部历史命令。