mirror of
https://github.com/RYDE-WORK/lnp_ml.git
synced 2026-10-02 13:53:05 +08:00
89 lines
2.8 KiB
Markdown
89 lines
2.8 KiB
Markdown
# LNP API 与 GPU 显存测试
|
||
|
||
这里有两套测试:
|
||
|
||
- `run_lnp_batch_stress.sh`:专门复现 LNP 批量调用的显存问题。
|
||
- `run_cases.sh`:检查健康状态、器官列表、单条预测、批量预测、异常输入和小规模配方优化。
|
||
|
||
## 1. 复现 LNP 批量显存场景
|
||
|
||
推荐先运行与问题最接近的场景:
|
||
|
||
```bash
|
||
bash server_test_cases/run_lnp_batch_stress.sh repro
|
||
```
|
||
|
||
`repro` 会依次提交:
|
||
|
||
1. 32 条不同 LNP 配方,`use_llm=true`、外层 `batch_size=32`。这是原先最容易从约 10GB 涨到 63GB 的场景。
|
||
2. 500 条不同 LNP 配方,仍使用外层 `batch_size=32`,检查多轮处理后是否持续涨显存。
|
||
|
||
逐级观察批量大小与显存的关系:
|
||
|
||
```bash
|
||
bash server_test_cases/run_lnp_batch_stress.sh ladder
|
||
```
|
||
|
||
完整测试(关闭 LLM 对照 + 阶梯 + 500 条持续压力):
|
||
|
||
```bash
|
||
bash server_test_cases/run_lnp_batch_stress.sh full
|
||
```
|
||
|
||
每个场景都会打印并写入 CSV:运行前显存、采样峰值、显存增量、耗时、HTTP 状态。结果文件名形如 `vram-results-20260922-160000.csv`。
|
||
|
||
可以设置显存上限,让超过阈值时测试直接失败。例如期望不超过 20GB:
|
||
|
||
```bash
|
||
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% 的组分比例。也可以自行生成:
|
||
|
||
```bash
|
||
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
|
||
bash server_test_cases/run_cases.sh
|
||
```
|
||
|
||
如果 API 端口或 GPU 编号不同:
|
||
|
||
```bash
|
||
API_PORT=18000 GPU_INDEX=0 bash server_test_cases/run_cases.sh
|
||
```
|
||
|
||
用例包含:
|
||
|
||
1. 健康检查与模型状态。
|
||
2. 可用器官列表。
|
||
3. 启用 LLM 的单条预测,检查输出完整性、有限数和 biodistribution 归一化。
|
||
4. 64 条关闭 LLM 的吞吐对照。
|
||
5. 32 条启用 LLM 的显存回归测试。
|
||
6. 2 条合法 + 3 条非法输入,检查批量接口的局部容错。
|
||
7. 小范围 `/optimize` 配方搜索,检查优化功能和返回结果。
|
||
|
||
GPU 显存采样来自整张卡;如果还有其他进程使用同一张卡,请以 `nvidia-smi` 中 API 进程的变化为准。
|