Skip to content

Commit ad9018c

Browse files
authored
Merge pull request #8 from Letian88/devel-1.3.0
feat: default GPU workflows to NVIDIA L20
2 parents c3eaffe + 48a3b19 commit ad9018c

12 files changed

Lines changed: 36 additions & 26 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ Create `global_bohrium.json` to submit workflows to the Bohrium cloud platform:
241241
{
242242
"lammps_image_name": "registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2",
243243
"lammps_run_command":"lmp -in in.lammps",
244-
"scass_type":"c8_m32_1 * NVIDIA 4090"
244+
"scass_type":"c16_m120_1 * NVIDIA L20"
245245
}
246246
```
247247

apex/account.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"batch_type": "OpenAPI",
2828
"context_type": "OpenAPI",
2929
"platform": "ali",
30-
"machine_type": "c8_m32_1 * NVIDIA 4090",
30+
"machine_type": "c16_m120_1 * NVIDIA L20",
3131
"output_log": False,
3232
"dispatcher_image": SANDBOX_DISPATCHER_IMAGE,
3333
"apex_image_name": "registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post",

apex/skills/apex-flow/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ Options to offer via AskQuestion:
140140
python scripts/validate_apex_combo.py list-combos --backend lammps --prefer gpu
141141
python scripts/validate_apex_combo.py check \
142142
--image registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2 \
143-
--scass "c8_m32_1 * NVIDIA 4090"
143+
--scass "c16_m120_1 * NVIDIA L20"
144144
```
145-
Do **not** hardcode an unverified `scass_type`. Prefer `recommend` / `list-combos` output. Known failures include `deepmd-kit:3.1.0`, `3.1.1-cuda12.1`, `3.1.2`, the combination `deepmd-kit:3.1.1` × `NVIDIA T4`, `c4_m16_cpu`, and `c12_m46_1 * NVIDIA T4`. GPU LAMMPS potentials (`deepmd`, `mace`, `nep`) use `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` with RTX 4090. CPU LAMMPS potentials use `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post`; never pair 0.0.2 with a `*_cpu` machine because sequential CPU validation stalled before the container command started. `apex submit` only enforces 0.0.2 for GPU-potential phonon and Grüneisen workflows. Do not emit `plugin load libdeepmd_lmp.so` for 0.0.2.
145+
Do **not** hardcode an unverified `scass_type`. Prefer `recommend` / `list-combos` output. Known failures include `deepmd-kit:3.1.0`, `3.1.1-cuda12.1`, `3.1.2`, the combination `deepmd-kit:3.1.1` × `NVIDIA T4`, `c4_m16_cpu`, and `c12_m46_1 * NVIDIA T4`. GPU LAMMPS potentials (`deepmd`, `mace`, `nep`) use `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` with NVIDIA L20 by default; RTX 4090 remains a validated compatible option. CPU LAMMPS potentials use `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post`; never pair 0.0.2 with a `*_cpu` machine because sequential CPU validation stalled before the container command started. `apex submit` only enforces 0.0.2 for GPU-potential phonon and Grüneisen workflows. Do not emit `plugin load libdeepmd_lmp.so` for 0.0.2.
146146
10. **MUST use the bundled frozen DPA model under** `models/` **for LAMMPS + DeePMD unless the user explicitly requests another compatible model.** The skill ships
147147
`models/DPA-3.2-5M/DPA-3.2-5M-OMat24.pth`, a ready-to-run frozen
148148
DPA-3.2-5M OMat24 model. Copy it into the job directory before generating
@@ -340,7 +340,7 @@ See `reference/submission.md` for the full validated template.
340340
1. **Finite-temperature backend limits**: `finite_t_elastic` and `melting_point` are LAMMPS-only. `finite_t_latt` and `annealing` support LAMMPS and VASP, but not ABACUS. VASP uses `MDALGO=3` and requires a binary compiled with `-Dtbdyn`; annealing `protocol="coexistence"` is a fixed-temperature equilibration plus production run.
341341
2. **Model files must be in job directory.** For MLIP workflows, the model file (`.pb`, `.pth`, `.model`, etc.) must be present in the submitted directory. Use relative paths in `param.json`. For DeePMD/DPA, copy `models/DPA-3.2-5M/DPA-3.2-5M-OMat24.pth`. Default to `"type_map": "auto"` for every LAMMPS interaction; specify a dictionary only when the user explicitly needs a fixed custom ordering.
342342
3. **Joint workflow recommended.** Use `joint` flow (relaxation + properties) for most use cases to ensure proper relaxation before property calculations.
343-
4. **GPU for ML potentials.** DeePMD, MACE, and NEP benefit from GPU acceleration. Set `scass_type` to a validated GPU SKU from `validate_apex_combo.py recommend --prefer gpu` (default: `"c8_m32_1 * NVIDIA 4090"`).
343+
4. **GPU for ML potentials.** DeePMD, MACE, and NEP benefit from GPU acceleration. Set `scass_type` to a validated GPU SKU from `validate_apex_combo.py recommend --prefer gpu` (default: `"c16_m120_1 * NVIDIA L20"`; RTX 4090 remains compatible).
344344
5. **Supercell sizing depends on the input atom count, not only the default JSON.**
345345
Treat defaults as targets for **unit-cell inputs**. First inspect the user's
346346
structure; if it is already large enough, prefer `[1,1,1]` after confirmation.

apex/skills/apex-flow/data/default_templates.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"backends": {
55
"lammps_gpu": {
66
"image": "registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2",
7-
"machine": "c8_m32_1 * NVIDIA 4090",
8-
"machine_sandbox": "c8_m32_1 * NVIDIA 4090",
7+
"machine": "c16_m120_1 * NVIDIA L20",
8+
"machine_sandbox": "c16_m120_1 * NVIDIA L20",
99
"potentials": ["deepmd", "mace", "nep"]
1010
},
1111
"lammps_cpu": {
@@ -30,7 +30,7 @@
3030
},
3131
"sandbox_machines": {
3232
"cpu": ["c2_m4_cpu", "c2_m8_cpu", "c8_m32_cpu", "c32_m128_cpu", "c64_m256_cpu"],
33-
"gpu": ["c8_m32_1 * NVIDIA 4090", "c16_m64_1 * NVIDIA 4090", "c16_m64_1 * NVIDIA 5090"]
33+
"gpu": ["c16_m120_1 * NVIDIA L20", "c8_m32_1 * NVIDIA 4090", "c16_m64_1 * NVIDIA 4090", "c16_m64_1 * NVIDIA 5090"]
3434
},
3535
"properties": {
3636
"eos": {"lammps": true, "abacus": true, "vasp": true},

apex/skills/apex-flow/data/global_bohrium_direct.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"apex_image_name": "registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post",
77
"lammps_image_name": "registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2",
88
"lammps_run_command": "lmp -in in.lammps",
9-
"scass_type": "c8_m32_1 * NVIDIA 4090",
9+
"scass_type": "c16_m120_1 * NVIDIA L20",
1010
"group_size": 1,
1111
"pool_size": 1
1212
}

apex/skills/apex-flow/reference/calculators.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,15 @@ CPU image (`gap`, `snap`, `rann`, `eam_alloy`, `eam_fs`, `meam`,
112112
This image uses integrated USER-DEEPMD and CUDA 12.8. Do not add
113113
`plugin load libdeepmd_lmp.so`; the plugin command is unsupported. Its unified
114114
`lmp` entry dispatches RTX 4090/L20-class GPUs to the sm89 build and RTX 5090
115-
to sm120. The 4090 path is validated; test sm120 on a real 5090 before relying
116-
on that path.
115+
to sm120. The L20 and RTX 4090 sm89 paths are validated; L20 is the default
116+
because it has greater resource availability. Test sm120 on a real 5090 before
117+
relying on that path.
117118

118119
> ⚠️ **Do NOT use `deepmd-kit:3.1.1` with GPU/T4** — known startup / triclinic issues. Prefer `3.1.3` or later.
119120
120121
> **LAMMPS phonon and Grüneisen**: for GPU potentials, `apex submit` forces
121-
> the DPA4 image above. It is validated on RTX 4090 and includes phonoLAMMPS.
122+
> the DPA4 image above. It is validated on NVIDIA L20 and RTX 4090 and includes
123+
> phonoLAMMPS. L20 is the default resource.
122124
> CPU potentials keep the CPU image. Do not use the DPA4 image on a CPU
123125
> machine; sequential CPU jobs stalled during container preparation.
124126
@@ -650,9 +652,9 @@ Before submit:
650652

651653
| Workload | Bohrium Machine | Rationale |
652654
|----------|----------------|-----------|
653-
| LAMMPS + GPU potential (DeePMD/MACE/NEP) | `c8_m32_1 * NVIDIA 4090` | GPU acceleration |
655+
| LAMMPS + GPU potential (DeePMD/MACE/NEP) | `c16_m120_1 * NVIDIA L20` | Validated sm89 runtime; greater resource availability |
654656
| LAMMPS + CPU potential (EAM/MEAM/SNAP) | `c16_m32_cpu` | CPU sufficient |
655657
| ABACUS DFT (small cell <50 atoms) | `c16_m32_cpu` | 8 MPI ranks |
656658
| ABACUS DFT (large cell 50-200 atoms) | `c32_m128_cpu` | 16-32 MPI ranks |
657659
| VASP DFT | User choice | Depends on system size |
658-
| Finite-T MD (long runs) | `c8_m32_1 * NVIDIA 4090` | Long MD = GPU beneficial |
660+
| Finite-T MD (long runs) | `c16_m120_1 * NVIDIA L20` | Long MD = GPU beneficial; validated sm89 runtime |

apex/skills/apex-flow/reference/lammps_potentials.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,9 @@ manual map.
218218

219219
| Potential Type | Recommended Image | GPU? |
220220
|---------------|-------------------|------|
221-
| deepmd | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (RTX 4090) |
222-
| mace | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (RTX 4090) |
223-
| nep | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (RTX 4090) |
221+
| deepmd | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (NVIDIA L20 default; RTX 4090 compatible) |
222+
| mace | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (NVIDIA L20 default; RTX 4090 compatible) |
223+
| nep | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | Yes (NVIDIA L20 default; RTX 4090 compatible) |
224224
| gap | `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post` | No (CPU) |
225225
| snap | `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post` | No |
226226
| rann | `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post` | No |

apex/skills/apex-flow/reference/submission.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ dflow validates workflow names against RFC 1123 subdomain regex. Names like `"Cu
119119
| Role | Image | Notes |
120120
|------|-------|-------|
121121
| **Outer job (submission client)** | `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post` | Lightweight; just runs `apex submit` |
122-
| **LAMMPS calculator (GPU potentials)** | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | RTX 4090; includes phonoLAMMPS |
122+
| **LAMMPS calculator (GPU potentials)** | `registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2` | NVIDIA L20 default; RTX 4090 compatible; includes phonoLAMMPS |
123123
| **LAMMPS calculator (CPU potentials)** | `registry.dp.tech/dptech/dp/native/prod-397637/apex-flow:1.3.0.post` | EAM/MEAM/SNAP/GAP/RANN CPU backend |
124124
| **ABACUS calculator** | (same APEX image has ABACUS) | Or user-specified |
125125
| **VASP calculator** | User must provide after confirming license | Commercial; **never invent a default image** |
@@ -135,7 +135,7 @@ dflow validates workflow names against RFC 1123 subdomain regex. Names like `"Cu
135135
136136
| Backend | scass_type (inner containers) | Notes |
137137
|---------|-------------------------------|-------|
138-
| LAMMPS (DeePMD/MACE/NEP) | `c8_m32_1 * NVIDIA 4090` | GPU beneficial |
138+
| LAMMPS (DeePMD/MACE/NEP) | `c16_m120_1 * NVIDIA L20` | Validated sm89 default; RTX 4090 remains compatible |
139139
| LAMMPS (EAM/MEAM/SNAP) | `c16_m32_cpu` | CPU sufficient |
140140
| ABACUS | `c16_m32_cpu` | CPU |
141141
| VASP | `c32_m128_cpu` (default) | Align `mpirun -n <N>` with CPU count |
@@ -216,7 +216,7 @@ Do not upload or submit unless validation reports `Validation PASSED` and both
216216
project ID lines report `type=int`. Submit the newly validated directory as a
217217
new outer Bohrium job; retrying an old outer job reuses its old input snapshot.
218218

219-
> For GPU potentials (DeePMD, MACE, NEP), change `scass_type` to `"c8_m32_1 * NVIDIA 4090"`.
219+
> For GPU potentials (DeePMD, MACE, NEP), change `scass_type` to `"c16_m120_1 * NVIDIA L20"` by default; RTX 4090 remains compatible.
220220
> Before submitting, run `scripts/validate_apex_combo.py check` on the chosen image × scass_type.
221221
222222
## Agent-Managed Submission Workflow (Complete Lifecycle)

apex/skills/apex-flow/scripts/generate_config.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,15 @@ def select_lammps_image(potential: str = None) -> str:
217217

218218
# scass_type defaults for inner dflow containers (legacy Bohrium)
219219
SCASS_TYPES = {
220-
"lammps_gpu": "c8_m32_1 * NVIDIA 4090",
220+
"lammps_gpu": "c16_m120_1 * NVIDIA L20",
221221
"lammps_cpu": "c16_m32_cpu",
222222
"abacus": "c16_m32_cpu",
223223
"vasp": "c32_m128_cpu",
224224
}
225225

226226
# machine_type defaults for OpenAPI Sandbox
227227
SANDBOX_MACHINE_TYPES = {
228-
"lammps_gpu": "c8_m32_1 * NVIDIA 4090",
228+
"lammps_gpu": "c16_m120_1 * NVIDIA L20",
229229
"lammps_cpu": "c8_m32_cpu",
230230
"abacus": "c8_m32_cpu",
231231
"vasp": "c32_m128_cpu",
@@ -1618,7 +1618,7 @@ def main():
16181618
create.add_argument("--sandbox", action="store_true",
16191619
help="Use OpenAPI Sandbox mode (access_key auth, no ticket)")
16201620
create.add_argument("--machine-type",
1621-
help="Override machine_type for sandbox (e.g. 'c8_m32_1 * NVIDIA 4090')")
1621+
help="Override machine_type for sandbox (e.g. 'c16_m120_1 * NVIDIA L20')")
16221622
create.add_argument("--scass-type",
16231623
help="Override scass_type for inner dflow containers (legacy Bohrium)")
16241624
create.add_argument("--run-command",

apex/skills/apex-flow/scripts/validate_apex_combo.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
python validate_apex_combo.py list-combos --backend lammps --prefer gpu
1010
python validate_apex_combo.py check \\
1111
--image registry.dp.tech/dptech/dp/native/prod-16664/dpa4-phonolammps:0.0.2 \\
12-
--scass "c8_m32_1 * NVIDIA 4090"
12+
--scass "c16_m120_1 * NVIDIA L20"
1313
python validate_apex_combo.py recommend --backend lammps --prefer cpu
1414
"""
1515

@@ -77,6 +77,7 @@
7777
"c8_m32_cpu",
7878
],
7979
"lammps_gpu": [
80+
"c16_m120_1 * NVIDIA L20",
8081
"c8_m32_1 * NVIDIA 4090",
8182
"c8_m31_1 * NVIDIA T4",
8283
"c4_m15_1 * NVIDIA T4",
@@ -200,7 +201,7 @@ def list_combos(backend: str = "lammps", prefer: str = "cpu") -> dict:
200201
"notes": [
201202
"Always validate image×scass before writing global.json / submitting.",
202203
"Outer Bohrium job should use c1_m2_cpu, never GPU.",
203-
"DPA4 image 0.0.2 is validated on RTX 4090 for LAMMPS, phonon, and Grüneisen.",
204+
"DPA4 image 0.0.2 is validated on NVIDIA L20 and RTX 4090; L20 is the default GPU resource.",
204205
"DPA4 image 0.0.2 is blocked on CPU machines after sequential deployment timeouts.",
205206
"For triclinic cells, avoid deepmd-kit:3.1.1; prefer the DPA4 0.0.2 image.",
206207
],

0 commit comments

Comments
 (0)