新增功能: - 新增统一批量预测工具 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
40 lines
1.0 KiB
Bash
Executable File
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 "✅ 完成"
|
|
|