Batch Inference Pipeline
jeremylongshore/tons-of-skills-marketplace
Execute batch inference pipeline operations. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Optional experimental GPU-accelerated batched inference for MACE, MatGL (TensorNet/M3GNet/CHGNet), and FairChem MLIPs using NValchemi, enabling parallel static, relax, and MD workflows across…
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemi --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .claude/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .claude/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemi --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .agents/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .agents/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemi --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .cursor/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .cursor/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/learningmatter-mit/AtomisticSkills.git --path skills/ml-mlip-nvalchemi--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemi --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .gemini/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .gemini/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .github/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .github/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills ml-mlip-nvalchemi --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ml-mlip-nvalchemi .opencode/skills/ml-mlip-nvalchemi && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ml-mlip-nvalchemi" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/ml-mlip-nvalchemi into .opencode/skills/ml-mlip-nvalchemi/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ml-mlip-nvalchemi", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ml-mlip-nvalchemiOptional experimental GPU-accelerated batched inference for MACE, MatGL (TensorNet/M3GNet/CHGNet), and FairChem MLIPs using NValchemi, enabling parallel static, relax, and MD workflows across…
ML Mlip Nvalchemi is an agent skill from learningmatter-mit/AtomisticSkills. Optional experimental GPU-accelerated batched inference for MACE, MatGL (TensorNet/M3GNet/CHGNet), and FairChem MLIPs using NValchemi, enabling parallel static, relax, and MD workflows across multiple structures simultaneously.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts (for example `resources/benchmark_results.md`, `scripts/run_md_benchmark.py` and `scripts/run_nvalchemi_benchmark.py`).
The repository describes itself as: Integrating AtomisticSkills into Agentic IDEs (Cursor, Claude Code, Codex, Google Antigravity, Hermes Agent, etc). The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6257444. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
pypi.nvidia.comAlso links to:
arxiv.orgdoi.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ML Mlip Nvalchemi loads about 5.1k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 1,988 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from learningmatter-mit/AtomisticSkills at commit 6257444, republished under its MIT licence (© learningmatter-mit). 1,988 words, ~5,118 tokens.
.claude/skills/ml-mlip-nvalchemi/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Run optional GPU-parallel static predictions, relaxation and MD across multiple
structures with NValchemi. This backend is experimental and disabled by
default in AtomisticSkills 2.0.0. List and directory inputs normally run each
structure through the model's native calculator and ASE/MatCalc. Installing
nvalchemi-toolkit or selecting a GPU does not enable the batch engine.
[!WARNING] The locked toolkit 0.2.0 has confirmed batch-dynamics correctness defects. Same-size refills and variable-cell changes can omit periodic neighbors; AtomisticSkills guards this cache defect for 0.2.x, with measurable overhead. A separate defect can leave live energies inconsistent with frozen geometry after convergence; preserving the first converged snapshot reduces exposure but does not repair the upstream live batch. MatGL inflight remains disabled. Native NPT currently falls back to ASE because initial stress is missing. Static predictions do not reuse the defective dynamics cache, but this does not establish correctness for every model or structure. Historical speedups are workload-specific and do not certify the release's dynamics paths.
Explicit selection: pass use_nvalchemi=True on each batch call to
static_calculation, relax_structure or run_md. MCP tools expose the same
flag on predict_structure, relax_structure and run_md. The default is
False; the choice does not persist into later calls. Runtime logs identify
experimental use, and batch results report the actual backend.
When offering this option, explain these limitations. Do not enable it merely
because batching could be faster. Validate a small representative case against
the default path before a larger run, and check backend for any fallback.
Single-structure calls continue using their normal calculator.
NValchemi provides batched dynamics integrators (FIRE, NVT Nose-Hoover, NPT, etc.) and a BaseModelMixin interface. AtomisticSkills wraps each MLIP in a BaseModelMixin-compatible class:
| MLIP | NValchemi wrapper | Location |
|---|---|---|
| MACE | nvalchemi.models.mace.MACEWrapper | upstream (nvalchemi-toolkit) |
| MatGL TensorNet | matgl.ext._alchmtk.TensorNetWrapper | matgl package |
| MatGL M3GNet | M3GNetWrapper | src/utils/mlips/nvalchemi/matgl_wrappers.py |
| MatGL CHGNet | CHGNetWrapper | src/utils/mlips/nvalchemi/matgl_wrappers.py |
| MatGL QET | QETWrapper | matgl package |
| FairChem UMA | FairChemWrapper | src/utils/mlips/nvalchemi/fairchem_nv.py |
With use_nvalchemi=True, src/utils/mlips/base.py dispatches as follows:
static_calculation(list, use_nvalchemi=True) → _batch_static_nvalchemi() → single batched forwardrelax_structure(list, use_nvalchemi=True) → _batch_relax_nvalchemi() → batched FIRErun_md(list, use_nvalchemi=True) → _batch_md_nvalchemi() → batched NVT/NVE/NPT integratorAfter explicit opt-in, relaxation can choose fixed-batch or inflight execution:
_batch_relax()
├─ use_nvalchemi=True AND nvalchemi available AND model loads?
│ YES → _batch_relax_nvalchemi()
│ └─ sum(atoms) > max_batch_atoms AND model._nvalchemi_supports_inflight?
│ YES → _batch_relax_nvalchemi_inflight() ← rolling GPU window
│ NO → fixed-batch NValchemi ← all structures at once
│ NO → _batch_relax_sequential() ← plain ASE FIRE, one by oneNote: All MatGL wrappers (
TensorNetWrapper,M3GNetWrapper,CHGNetWrapper) set_nvalchemi_supports_inflight=Falseand use fixed-batch NValchemi regardless of structure count, because after graduation, energies are wrong (TensorNet Cu −83.70 vs −86.57 eV fixed-batch; CHGNet 0.26 eV; M3GNet 28 meV), MACE inflight is available after opt-in with the cache guard.
Inflight batching keeps only max_batch_atoms atoms on the GPU at once. As each structure converges or exhausts its step budget it is evicted and a new one is loaded. This is necessary when the full set of structures would exceed GPU memory.
max_batch_atoms — how it is set:
| How | Behaviour |
|---|---|
max_batch_atoms=None (default) | Auto-estimated: free_VRAM × 0.5 / bytes_per_atom using per-architecture calibration (FairChem 0.15 B/param/atom, MACE 0.5, M3GNet 4.0, fallback 5 MB/atom) |
Explicit integer (e.g. 500) | Forces inflight for almost any real dataset; recommended on shared GPUs |
| Very large integer | Forces fixed-batch (all structures in one GPU call) |
Every batch result dict carries a "backend" key:
"backend" value | Meaning |
|---|---|
"nvalchemi_inflight" | Inflight rolling-window (large datasets / shared GPU) |
"nvalchemi" | Fixed-batch NValchemi (entire set fits in one GPU pass) |
"sequential" | Plain ASE FIRE, one structure at a time |
result = wrapper.relax_structure(structures, fmax=0.05, steps=500, use_nvalchemi=True)
print(result["backend"]) # "nvalchemi_inflight" / "nvalchemi" / "sequential"Logger messages (written to stderr / MCP server log) also signal transitions:
"Total atoms (N) exceeds batch limit (M); switching to inflight batching.""NValchemi inflight relax: N structures, live batch ≤M atoms, ≤S steps/structure."Variable-cell relaxation uses upstream FIRE2VariableCell with dt=0.05,
tmax=0.5, delaystep=5, and maxstep=0.2. Its cell force is already normalized
by system size; AtomisticSkills no longer applies an additional atom-count
scaling. Standard-form cell preparation is retained.
All three relaxation modes report success only on convergence,
not_converged at the step limit, and failed for execution errors. Results
include converged and per-structure steps, with separate aggregate counts.
For variable-cell runs, convergence includes the per-atom virial row norm as
well as atomic forces. This is the small-strain counterpart of ASE's
FrechetCellFilter criterion, not exact equality at finite strain.
Neighbor-cache handling in 2.0.0: NValchemi 0.2.x can omit neighbors after same-size refills or gradual cell changes. AtomisticSkills uses a version-gated guard for every neighbor hook in fixed relaxation, inflight relaxation and batch MD. Changes to cell, PBC or atom partition trigger a complete allocation refresh; ordinary fixed-cell steps retain their buffers. Installed packages are unchanged. MACE inflight stays available after opt-in, and FairChem builds its own graph without this hook. See the exposure and timing report.
The separate upstream inactive-output defect can still return live energies inconsistent with frozen coordinates after convergence. MatGL inflight remains disabled pending validation of that repair. Trajectory extraction preserves the first converged snapshot; turning extraction off exposes the live-batch output limitation. A corrected upstream release is still needed to retire the compatibility guard.
The former variable-cell speedup tables used force-only convergence and are withdrawn. New speedups remain pending a supported upstream release containing the neighbor-cache and inactive-output repairs. A source-checkout validation run must not be presented as performance of the committed dependency locks. Static-inference and MD tables below measure different operations.
Speedup comparison for a 100-step MD simulation under the nvt_nose_hoover ensemble at 300 K on 20 strained Cu FCC structures, each expanded to a fixed 108-atom cubic supercell ($\ge 10\text{ \AA}$ sides). Sequential = NValchemi disabled, structures run one at a time; Batched = all 20 driven through NValchemi integrators in a single GPU batch. Best-of-2 wall time, measured serially (one environment at a time to avoid GPU contention).
mlip)mlip)fairchem)When does batched MD help? Batched MD yields substantial speedups for launch-latency-bound models at small system sizes (e.g. MACE at 4.90x, TensorNet at 1.8x). For heavy models like FairChem uma-s-1p2 whose single-system path is already compute-bound, batching provides no speedup and MD is routed to sequential. The wrappers still accept a list of structures (and batch static/relax remain available); only FairChem's MD path is gated. Measured on NVIDIA GB10 (aarch64, CUDA 13, Warp 1.14).
FairChem batched MD disabled (
_nvalchemi_supports_batch_md = False): uma-s-1p2's forward scales superlinearly per atom — ≈1.57 ms/atom at batch=1 (108 atoms) rising to ≈2.43 ms/atom at batch=20 (2160 atoms), 1.55x worse — so a single large batched step is slower than running the structures one at a time through the model's optimized single-system path (batched 0.64x). Two facts pin this down: (1) the cost is intrinsic to the eSCN/MoE forward, not the neighbor list — correcting the wrapper cutoff (12 A → the model's true 6 A) cutadapt_inputedges from 530 to 78 per atom but left the per-step time unchanged at ~5.25 s; (2) uma-s-1p2 runs withexternal_graph_gen=False, so it rebuilds its own graph internally and ignores the edgesadapt_inputprovides (energies are identical for any cutoff we pass, including a 0-edge 2 A list). Batched MD is therefore correct (energies match sequential to 0.00 meV/atom) but never a speedup, sorun_mdfalls back to sequential.
TensorNet batched MD enabled with stream fix: TensorNet batch MD is re-enabled. The
NeighborListHook"race" it was previously disabled for was a CUDA stream mismatch, now fixed bywarp_on_torch_streaminsrc/utils/mlips/nvalchemi/nvalchemi_utils.py. Batch NVE energy drift equals sequential (max 0.02 meV/atom), and batch MD is 1.8× faster than sequential for 16 structures × 200 steps on GB10.
# (or venv/fairchem for FairChem models)
from src.utils.mlips.nvalchemi.nvalchemi_utils import NVALCHEMI_AVAILABLE
print(NVALCHEMI_AVAILABLE) # must be True
from src.utils.mlips.mace.mace_wrapper import MACEWrapper
wrapper = MACEWrapper(model_name="MACE-OMAT-0-small", device="cuda")
wrapper.load()
nv = wrapper._get_nvalchemi_model()
print(nv) # should be non-None MACEWrapper(nvalchemi)Pass a list of ASE Atoms objects to static_calculation. The result dict includes a "backend": "nvalchemi" key when the batch path was used:
from ase.build import bulk
import numpy as np
structures = [bulk("Cu", "fcc", a=3.6 * s) for s in np.linspace(0.96, 1.04, 10)]
result = wrapper.static_calculation(structures, use_nvalchemi=True)
# result["backend"] == "nvalchemi"
# result["total_structures"] == 10
# result["results"][i] == {"energy": ..., "forces": ..., "stress": ...}Identical API for MatGL and FairChem wrappers:
from src.utils.mlips.matgl.matgl_wrapper import MatGLWrapper
wrapper = MatGLWrapper(model_name="TensorNet-PES-MatPES-PBE-2025.2", device="cuda")
wrapper.load()
result = wrapper.static_calculation(structures, use_nvalchemi=True)from src.utils.mlips.fairchem.fairchem_wrapper import FAIRCHEMWrapper
wrapper = FAIRCHEMWrapper(model_name="uma-s-1p2", device="cuda")
wrapper.load()
result = wrapper.static_calculation(structures, use_nvalchemi=True)result = wrapper.relax_structure(
structure_data=structures, # list of ASE Atoms
use_nvalchemi=True, # explicit experimental-backend selection
fmax=0.05, # eV/Å convergence
steps=500,
output_dir="/path/to/output",
# relax_cell=True, # optional: variable-cell relaxation
# max_batch_atoms=500, # optional: set explicitly on shared GPUs to force
# # inflight mode and avoid OOM; None = auto from VRAM
)
print(result["backend"]) # "nvalchemi_inflight", "nvalchemi", or "sequential"Variable-cell batch relaxation (relax_cell=True) converges only when the per-atom virial row norm is also below fmax (the small-strain counterpart of ASE's FrechetCellFilter). Per-structure relax.log files (ASE FIRE format) are written incrementally to {output_dir}/{structure_name}/relax.log during inflight runs, so partial results survive an OOM abort.
result = wrapper.run_md(
structure_data=structures,
use_nvalchemi=True,
temperature=1000,
steps=1000,
timestep=2.0, # fs
ensemble="nvt_nose_hoover",
output_dir="/path/to/output"
)Validated fixed-cell batch families: nve, nvt_nose_hoover, nvt_langevin.
NPT aliases select a NValchemi integrator but currently fall back to ASE because
the integration does not publish initial stress; native NPT is not validated.
Unsupported (Berendsen, Andersen, inhomogeneous NPT) fall back to sequential automatically.
Omit the flag, or set it to False; no module patching is needed:
result = wrapper.static_calculation(structures)
assert result["backend"] == "sequential"
result = wrapper.relax_structure(structures, use_nvalchemi=False)MCP/CLI example of an explicit experimental request (two structure files):
${CLAUDE_SKILL_DIR}/../../venv/run mlip python -m src.mcp_server.cli mace \
load_model model_name=MACE-OMAT-0-small device=cuda \
predict_structure 'structure_data=["first.cif","second.cif"]' use_nvalchemi=trueTo re-run the full accuracy and speed benchmark for any environment:
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/run_nvalchemi_benchmark.py \
--env mace \
--n-repeat 3 \
--output results_mace.json
${CLAUDE_SKILL_DIR}/../../venv/run mlip python ${CLAUDE_SKILL_DIR}/scripts/run_nvalchemi_benchmark.py \
--env matgl \
--n-repeat 3 \
--output results_matgl.json
${CLAUDE_SKILL_DIR}/../../venv/run fairchem python ${CLAUDE_SKILL_DIR}/scripts/run_nvalchemi_benchmark.py \
--env fairchem \
--n-repeat 3 \
--output results_fairchem.jsonThe script tests N=2, 5, 10, 20 structures and prints a speedup/accuracy table.
See resources/benchmark_results.md for the full results table.
| Model | Speedup (N=5) | Speedup (N=20) | ΔE max (eV) |
|---|---|---|---|
| MACE-OMAT-0-small | 21.7× | 68× | 9.5e-07 |
| MACE-OMAT-0-medium | 22.9× | 72× | 9.5e-07 |
| MACE-MH-1/omat_pbe | 14.3× | 34× | 1.6e-07 |
| MACE-MH-1/matpes_r2scan | 14.4× | 34× | 1.2e-07 |
| MACE-MP-medium-0b3 | 22.9× | 76× | 1.4e-06 |
| MACE-MATPES-PBE-0 | 23.6× | 77× | 7.2e-07 |
| MACE-MATPES-R2SCAN-0 | 24.2× | 76× | 1.9e-06 |
| TensorNet-PES-MatPES-PBE-2025.2 | 3.6× | 11× | 1.4e-07 |
| TensorNet-PES-MatPES-r2SCAN-2025.2 | 3.8× | 12× | 8.0e-07 |
| M3GNet-PES-MatPES-PBE-2025.2 | 3.7× | 11× | 1.3e-03¹ |
| M3GNet-PES-MatPES-r2SCAN-2025.2 | 3.9× | 11× | 7.2e-04¹ |
| CHGNet-PES-MatPES-PBE-1M-2026.9 | 4.3× | 12× | 2.4e-07 |
| CHGNet-PES-MatPES-r2SCAN-1M-2026.9 | 4.2× | 13× | 9.5e-07 |
| QET-PES-MatPES-PBE-2025.2 | 4.2× | 13× | 7.2e-07 |
| QET-PES-MatPES-r2SCAN-2025.2 | 3.9× | 14× | 9.5e-07 |
| SO3Net-PES-ANI-1x-Subset | — | — | not supported |
| FairChem uma-s-1p2 (omat) | 3.0× | 2.9× | 1.6e-07 |
| FairChem uma-m-1p1 (omat) | 2.9× | 3.5× | 1.7e-07 |
| FairChem uma-s-1p1 (omat) | 3.4× | 5.5× | 2.5e-07 |
¹ M3GNet energy errors (~0.7–1.8×10⁻³ eV) from different neighbor-list graph connectivity (NValchemi GPU warp kernel vs. CPU radius_graph_pbc). Forces are exact (ΔF = 0). Within 5×10⁻³ eV tolerance for PES screening.
use_nvalchemi=True for each batch request.nvalchemi-toolkit must be installed. Check NVALCHEMI_AVAILABLE flag. Falls back to sequential if unavailable.mlip — MACE models and MatGL (TensorNet, M3GNet, CHGNet)fairchem — FairChem UMA_extract_static() in tests handles the conversion.dataset (e.g., "omat") passed to FCAtomicData. This is handled automatically by FairChemWrapper; defaults to "omat" when task_name=None.device="cuda" for batch workloads.SO3Net-PES-ANI-1x-Subset falls back to sequential automatically (_get_nvalchemi_model() returns None)._nvalchemi_supports_inflight=False; when the total atom count exceeds the batch budget, they fall through to fixed-batch NValchemi (all structures in one GPU pass) rather than inflight. For large MatGL sets, split inputs into smaller calls or retain default sequential execution. max_batch_atoms does not cap the fixed-batch allocation when inflight is disabled.nvt_berendsen, nvt_andersen, nvt_bussi, npt_berendsen, and npt_inhomogeneous have no NValchemi equivalent and always run sequentially.https://pypi.nvidia.com)Author: Bowen Deng Contact: github.com/bowen-bd
© learningmatter-mit, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts) in skills/ml-mlip-nvalchemi of learningmatter-mit/AtomisticSkills.
Open the folder on GitHubat commit 6257444
ML Mlip Nvalchemi next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ML Mlip Nvalchemi this skilllearningmatter-mit/AtomisticSkills | 176 | — | ~5.1k | Automated safety check: Pass | MIT | |
| Batch Inference Pipelinejeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~576 | Automated safety check: Pass | MIT | |
| Optimize For GPUK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Batchasgeirtj/system_prompts_leaks | 69k | — | ~1.3k | Automated safety check: Pass | CC0-1.0 | |
| Batchcodewhale-hq/Codewhale | 41k | — | ~157 | Automated safety check: Pass | MIT | |
| LLM Inference Scalingsickn33/agentic-awesome-skills | 47k | 1 repos | ~2.1k | Automated safety check: Pass | MIT |
jeremylongshore/tons-of-skills-marketplace
Execute batch inference pipeline operations. An agent skill from jeremylongshore/tons-of-skills-marketplace.
K-Dense-AI/scientific-agent-skills
GPU-accelerates scientific Python on NVIDIA hardware and verifies that the result is correct and faster.
asgeirtj/system_prompts_leaks
Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR.
codewhale-hq/Codewhale
Break a large, parallelizable goal into bounded work units, coordinate existing agent/worktree machinery, integrate, and verify.
sickn33/agentic-awesome-skills
Auto-scale LLM inference clusters on Kubernetes using KEDA, custom GPU metrics, and horizontal pod autoscaling.
sickn33/agentic-awesome-skills
Operate GPU-backed Kubernetes clusters for AI inference and training with scheduling, autoscaling, node health, MIG partitioning, and cost controls.
learningmatter-mit/AtomisticSkills
Define a docking search box (center coordinates + box dimensions in Angstroms) from a co-crystal ligand, binding-site residues, or a saved JSON specification.
learningmatter-mit/AtomisticSkills
Build a solvated, charge-neutralized protein-ligand complex for OpenMM molecular dynamics simulation.
learningmatter-mit/AtomisticSkills
Identify and rank ligandable pockets on a protein structure or model using geometry (fpocket) or an ML predictor (P2Rank).
learningmatter-mit/AtomisticSkills
Calculate homolytic and heterolytic bond dissociation energies (BDEs) for all single bonds in a molecule using MLIPs with RDKit fragmentation.
learningmatter-mit/AtomisticSkills
Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.
learningmatter-mit/AtomisticSkills
Query multiple MOF databases (QMOF via MPContribs; ARC-MOF DB7/Majumdar et al.
Optional experimental GPU-accelerated batched inference for MACE, MatGL (TensorNet/M3GNet/CHGNet), and FairChem MLIPs using NValchemi, enabling parallel static, relax, and MD workflows across…. ML Mlip Nvalchemi is an agent skill from learningmatter-mit/AtomisticSkills. Optional experimental GPU-accelerated batched inference for MACE, MatGL (TensorNet/M3GNet/CHGNet), and FairChem MLIPs using NValchemi, enabling parallel static, relax, and MD workflows across multiple structures simultaneously.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a claude-code`. Or copy the skill folder (skills/ml-mlip-nvalchemi in learningmatter-mit/AtomisticSkills) into .claude/skills/ml-mlip-nvalchemi in your project. Claude Code loads it when a task matches its description.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a codex`. Or copy the skill folder (skills/ml-mlip-nvalchemi in learningmatter-mit/AtomisticSkills) into .agents/skills/ml-mlip-nvalchemi in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add learningmatter-mit/AtomisticSkills --skill ml-mlip-nvalchemi -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ml-mlip-nvalchemi, .gemini/skills/ml-mlip-nvalchemi, .github/skills/ml-mlip-nvalchemi and .opencode/skills/ml-mlip-nvalchemi in your project.
Going by SKILL.md and its folder, ML Mlip Nvalchemi needs Python for the scripts in its folder. Our summary lists: Python 3.
SKILL.md names 4 domains. In commands or code: pypi.nvidia.com; the agent is likely to contact it when it follows the instructions. As links in the text: arxiv.org, doi.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
ML Mlip Nvalchemi is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with ML Mlip Nvalchemi: Batch Inference Pipeline (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Optimize For GPU (K-Dense-AI/scientific-agent-skills, 48k stars), Batch (asgeirtj/system_prompts_leaks, 69k stars) and Batch (codewhale-hq/Codewhale, 41k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
learningmatter-mit (a GitHub organization) maintains it in learningmatter-mit/AtomisticSkills, which has 176 GitHub stars. The repository holds 129 skills in this directory. The repository was last updated on October 7, 2026.
Source: learningmatter-mit/AtomisticSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.