Files
SIME/scripts/run_single_predict.sh
hotwa a8fea027ac feat: 实现大规模并行预测功能 (v2.0.0)
新增功能:
- 新增统一批量预测工具 utils/batch_predictor.py
  * 支持单进程/多进程并行模式
  * 灵活的 GPU 配置和显存自动计算
  * 自动临时文件管理和断点续传
  * 完整的 CLI 参数支持(Click 框架)

- 新增 Shell 脚本集合 scripts/
  * run_parallel_predict.sh - 并行预测脚本
  * run_single_predict.sh - 单进程预测脚本
  * merge_results.sh - 结果合并脚本

性能优化:
- 解决 CUDA + multiprocessing fork 死锁问题
  * 使用 spawn 模式替代 fork
  * 文件描述符级别的输出重定向

- 优化预测性能
  * XGBoost OpenMP 多线程(利用所有 CPU 核心)
  * 预加载模型减少重复加载
  * 大批量处理降低函数调用开销
  * 实际加速比:2-3x(12进程 vs 单进程)

- 优化输出显示
  * 抑制模型加载时的权重信息
  * 只显示进度条和关键统计
  * 临时文件自动保存到专门目录

文档更新:
- README.md 新增"大规模并行预测"章节
- README.md 新增"性能优化说明"章节
- 添加详细的使用示例和参数说明
- 更新项目结构和版本信息

技术细节:
- 每个模型实例约占用 2.5GB GPU 显存
- 显存计算公式:建议进程数 = GPU显存(GB) / 2.5
- GPU 瓶颈占比:MolE 表示生成 94%
- 非 GIL 问题:计算密集任务在 C/CUDA 层

Breaking Changes:
- 废弃旧的独立预测脚本,统一使用新工具

相关 Issue: 解决 #并行预测卡死问题
测试平台: Linux, 256 CPU cores, NVIDIA RTX 5090 32GB
2025-10-18 20:53:39 +08:00

40 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
#
# 单进程预测脚本 - 稳定但较慢,适合小数据集或测试
#
# 用法:
# bash scripts/run_single_predict.sh [输入文件] [输出文件] [GPU设备]
#
# 示例:
# bash scripts/run_single_predict.sh data.csv output.csv cuda:0
# bash scripts/run_single_predict.sh data.csv output.csv cpu
#
# 作者: AI Assistant
# 日期: 2025-10-17
set -e
INPUT_FILE="${1:-Data/fragment/Frags-Enamine-18M.csv}"
OUTPUT_FILE="${2:-Data/fragment/Frags-Enamine-18M_predicted.csv}"
GPU_DEVICE="${3:-cuda:0}"
echo "============================================================"
echo "🚀 单进程预测(稳定模式)"
echo "============================================================"
echo " 输入: $INPUT_FILE"
echo " 输出: $OUTPUT_FILE"
echo " 设备: $GPU_DEVICE"
echo "============================================================"
echo ""
pixi run python utils/batch_predictor.py \
--input "$INPUT_FILE" \
--output "$OUTPUT_FILE" \
--device "$GPU_DEVICE" \
--n-processes 1 \
--verbose
echo ""
echo "✅ 完成"