
本地批量处理大型文档档案:性能调优指南
本地批量处理100GB-1TB以上文档档案的性能调优指南——并行摄入、内存管理、I/O优化和可恢复策略。
企业文档档案以数百GB到TB计量。一家中型律师事务所可能有500GB的合同PDF。一家医院系统可能有2TB的临床记录。一家建筑公司可能有300GB的工程图纸和规格说明。
通过数据准备管道 处理这些档案——摄入、OCR、清洗、标注、导出——需要数小时到数天,而不是数分钟。调优良好的管道与简单直接的管道之间可能相差3-5倍的总处理时间。本指南涵盖了实践中重要的性能调优策略。
隔夜处理模式
在优化之前,值得承认大型批处理的主要工作流模式:在晚上开始作业,早上审查结果。
性能调优的目标不是让12小时的作业在12分钟内完成。而是让48小时的作业在12小时内完成,这样它在隔夜完成而不是跨越一个周末。
并行摄入策略
文件级并行
并发处理多个文件。每个文件是独立的——解析一个PDF不依赖于解析前一个Word文档。
最优并行度:将并发文件操作数量匹配到你的存 储吞吐量,而不是CPU核心数。
| 存储类型 | 推荐并行文件数 | 备注 |
|---|---|---|
| NVMe SSD | 8-16 | 受CPU解析速度限制 |
| SATA SSD | 4-8 | 受顺序带宽限制 |
| HDD | 1-2 | 随机I/O杀死并行性 |
| 网络(NFS/SMB) | 4-8 | 受网络带宽和延迟限制 |
按大小排序文件
先处理大文件。这避免 了"长尾"问题——管道空闲,只有一个线程在最后处理一个巨大文件。
大型PDF的内存管理
PDF为什么消耗内存
一个200页带嵌入图像的PDF在解析期间可以在内存中解压到500MB-2GB。扫描PDF更糟:每页是全分辨率图像(通常300 DPI),200页扫描PDF解压到约4.8GB。
缓解策略
页级处理:不将整个PDF加载到内存,而是一次处理一页(或一小批页面)。
每工作进程内存限制:为每个处理工作进程设置内存上限。如果单个PDF超过限制,顺序处理它(一次一页)而不是并行处理。
实用内存预算
| 并发文件数 | 平均文件大小 | 每工作进程峰值RAM | 总RAM需求 |
|---|---|---|---|
| 8 | 10 MB(文本PDF) | ~200 MB | ~1.6 GB |
| 8 | 50 MB(混合PDF) | ~500 MB | ~4 GB |
| 4 | 200 MB(扫描PDF) | ~2 GB | ~8 GB |
| 2 | 500 MB以上(大型扫描) | ~4 GB | ~8 GB |
加上8-16 GB用于操作系统、应用和LLM(如果同时运行)。64 GB RAM的系统可以舒适地处理大多数并行摄入场景。
I/O优化
SSD vs. HDD:数据对比
| 操作 | NVMe SSD | SATA SSD | HDD |
|---|---|---|---|
| 顺序读取 | 3,500-7,000 MB/s | 500-550 MB/s | 100-200 MB/s |
| 随机读取(4K) | 500K-1M IOPS | 50K-100K IOPS | 100-200 IOPS |
| 延迟 | ~10 μs | ~50 μs | ~5,000 μs |
具体示例:从不同存储摄入100,000个混合文档(总计10 GB):
| 存储 | 估计摄入时间 |
|---|---|
| NVMe SSD | 8-15分钟 |
| SATA SSD | 25-45分钟 |
| HDD | 3-6小时 |
| 千兆以太网上的NFS | 1-3小时 |
进度跟踪和可恢复性
长时间运行的批处理作业会失败。磁盘满了,电源中断,软件在畸形文件上崩溃。无法从中断处恢复的管道浪费了数小时已完成的工作。
基于检查点的可恢复性
最小可行方法:维护已完成文件的日志。管道重启时,读取日志并跳过已处理的文件。
# 简单检查点日志格式
timestamp | filepath | status | duration_ms
2026-03-11T22:15:03 | /data/contracts/2024-Q1/contract_0001.pdf | completed | 1250
2026-03-11T22:15:04 | /data/contracts/2024-Q1/contract_0002.pdf | completed | 890
2026-03-11T22:15:05 | /data/contracts/2024-Q1/contract_0003.pdf | error:corrupt_pdf | 45
常见瓶颈调优
瓶颈:OCR太慢
- 切换到GPU加速OCR:从CPU的Tesseract切换到PaddleOCR或Surya可以提升5-10倍吞吐量
- 降低OCR分辨率:以200 DPI处理而不是300 DPI大致使吞吐量翻倍
- 跳过不必要的OCR:如果PDF有可提取的文本层,使用文本提取而不是OCR
瓶颈:LLM标注太慢
- 降低模型大小:从14B切换到7B
- 增加量化:从Q8移到Q4_K_M,大致提升40-60%吞吐量
- 减小上下文窗口:如果使用16K上下文但文档平均2K令牌,降到4K上下文
实际应用
Ertas Data Suite处理批量处理时内置了进度跟踪、逐文件错误处理和自动可恢复性。如果处理中断——电源中断、应用崩溃或有意 暂停——重启会从中断处精确恢复。
本指南中的性能调优策略帮助你在一次隔夜运行中完成结果,而不是三次。
更大的视角
批处理性能直接影响项目时间线和成本。调优良好的管道在8小时内处理500 GB档案(一次隔夜运行),两天交付结果。调优不佳的管道需要48小时,将同样的交付推到一周。
有关影响批处理性能的基础设施决策的更多信息,请参阅企业AI数据准备的本地运行时架构和本地数据准备的硬件配置。
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

How to Build an On-Premise Data Preparation Pipeline for LLM Fine-Tuning
A complete guide to building on-premise data preparation pipelines for LLM fine-tuning — covering the 5 stages from ingestion to export, tool comparisons, and architecture for regulated environments.

Setting Up Local Document Ingestion for Enterprise AI Projects
How to build local document ingestion for enterprise AI — covering PDFs, scanned forms, OCR options, table extraction, and handling 64+ file types without cloud dependencies.

On-Premise Data Cleaning for ML Training Datasets: Deduplication, Normalization, and Quality Scoring
How to clean ML training datasets on-premise — covering deduplication with MinHash, text normalization, PII redaction, and quality scoring without cloud APIs.