mirror of
https://github.com/RYDE-WORK/lnp_ml.git
synced 2026-10-01 13:25:46 +08:00
LNP API 与 GPU 显存测试
这里有两套测试:
run_lnp_batch_stress.sh:专门复现 LNP 批量调用的显存问题。run_cases.sh:检查健康状态、器官列表、单条预测、批量预测、异常输入和小规模配方优化。
1. 复现 LNP 批量显存场景
推荐先运行与问题最接近的场景:
bash server_test_cases/run_lnp_batch_stress.sh repro
repro 会依次提交:
- 32 条不同 LNP 配方,
use_llm=true、外层batch_size=32。这是原先最容易从约 10GB 涨到 63GB 的场景。 - 500 条不同 LNP 配方,仍使用外层
batch_size=32,检查多轮处理后是否持续涨显存。
逐级观察批量大小与显存的关系:
bash server_test_cases/run_lnp_batch_stress.sh ladder
完整测试(关闭 LLM 对照 + 阶梯 + 500 条持续压力):
bash server_test_cases/run_lnp_batch_stress.sh full
每个场景都会打印并写入 CSV:运行前显存、采样峰值、显存增量、耗时、HTTP 状态。结果文件名形如 vram-results-20260922-160000.csv。
可以设置显存上限,让超过阈值时测试直接失败。例如期望不超过 20GB:
MAX_GPU_MIB=20480 bash server_test_cases/run_lnp_batch_stress.sh repro
这里采样的是整张卡的显存;测试时请尽量不要让其他任务共用该卡。
2. Mock 数据
已附带三组可直接提交的数据:
mock_batch_32_llm.json:核心显存回归场景。mock_batch_500_llm.json:最大请求量与持续处理场景。mock_batch_128_no_llm.json:关闭 LLM 的对照组。
这些数据从项目 data/interim/internal.csv 抽取不同 SMILES,再随机生成满足总和 100% 的组分比例。也可以自行生成:
python3 server_test_cases/generate_mock_batch.py \
--count 200 \
--batch-size 32 \
--use-llm \
--source-csv data/interim/internal.csv \
--output /tmp/lnp-batch-200.json
生成过程使用固定随机种子,便于前后版本用完全相同的数据对比。
3. 其他功能测试
服务启动后执行:
bash server_test_cases/run_cases.sh
如果 API 端口或 GPU 编号不同:
API_PORT=18000 GPU_INDEX=0 bash server_test_cases/run_cases.sh
用例包含:
- 健康检查与模型状态。
- 可用器官列表。
- 启用 LLM 的单条预测,检查输出完整性、有限数和 biodistribution 归一化。
- 64 条关闭 LLM 的吞吐对照。
- 32 条启用 LLM 的显存回归测试。
- 2 条合法 + 3 条非法输入,检查批量接口的局部容错。
- 小范围
/optimize配方搜索,检查优化功能和返回结果。
GPU 显存采样来自整张卡;如果还有其他进程使用同一张卡,请以 nvidia-smi 中 API 进程的变化为准。