Skip to content

nvidia-alchemi: hardening fixes and H100 revalidation for #212 - #1

Merged
anogassis merged 1 commit into
anogassis:add-nvidia-alchemi-agentfrom
faranm-stack:pr212-hardening
Oct 23, 2026
Merged

anogassis merged 1 commit into
anogassis:add-nvidia-alchemi-agentfrom
faranm-stack:pr212-hardening

Conversation

@faranm-stack

Copy link
Copy Markdown

Summary

Hardening fixes and revalidation for the nvidia-alchemi agent in microsoft#212: dependency updates that clear the Dependency Review advisories, checkpoint verification before loading, GPU-required defaults, error propagation, 11 new regression tests, and a README verification section that reflects reproducible results.

Type of change

  • New agent (under agents/<name>/)
  • Update to an existing agent
  • New starter kit (under starter-kits/<name>/)
  • Update to an existing starter kit
  • Schema change (docs/schemas/**)
  • Workflow / script change (.github/**)
  • Documentation only
  • Other (describe below)

Related issue / tracking

refs microsoft#212 — targets the PR branch add-nvidia-alchemi-agent.

Schema impact

  • No schema changes
  • Schema changes are backward compatible
  • Schema changes are breaking — add the breaking-change label and link the rollout plan below

Validation checklist

  • Documentation (README.md, schemas) is updated to match the change.
  • No hand-edits to .auto-registry/** (it is generated post-merge).
  • No OS / editor artefacts committed (.DS_Store, .env, *.swp, .idea/, .vs/, etc.).
  • If model-weight files are added, they are Git-LFS tracked, ≤5 GB each, and in an allowed format. (No model-weight files added.)
  • No secrets, customer data, or internal-only URLs are committed.
  • All Markdown links resolve.

Reviewer notes (optional)

Changes (all under agents/nvidia-alchemi/, 17 files):

  • Dependencies: GitPython 3.1.62, hydra-core 1.3.7, multidict 6.9.1, urllib3 2.8.0.
  • Checkpoints: size and SHA-256 are verified before deserialization; runtime model names resolve only to verified checkpoints baked into the image. Cached checkpoints are read-only.
  • GPU: CUDA is required by default; CPU runs only when explicitly requested for tests (no silent fallback).
  • Errors: trajectory-sink and distributed-run failures now propagate instead of being swallowed; logs.out is protected from artifact replacement; script-template indentation fixed.
  • Scope: training, multi-GPU, periodic MACE and broader cuEquivariance use are labeled experimental in catalog descriptions.
  • Tests: 11 new regression tests (43 total), including hash-before-load checks for the checkpoint downloader.

Validation (on this exact code):

  • Clean image build: 43/43 tests passed on CPU with no skips; pip check passed; all three checkpoints matched their pinned hashes.
  • One H100 NVL (CUDA 13.0, torch 2.13.0), run through the deployed tool:
    • 43/43 tests passed with no skips, plus release_smoke.py.
    • MACE small-0b, MACE medium-0b2 and AIMNet2 on water and ethanol: GPU vs CPU within 5e-6 eV (energy) and 1.4e-5 eV/Å (force); rotation-invariant energies, equivariant forces, net force < 5e-7 eV/Å. The default MACE CUDA path (cuEquivariance on) matched cuEquivariance off within 1.4e-6 eV/Å.
    • MACE medium-0b2 FIRE relaxation of distorted water and ethanol: energy dropped 0.14 and 0.82 eV; final max force 0.017 and 0.021 eV/Å.
    • 100-step Langevin NVT (0.5 fs, 300 K) on a water trimer: all values finite; final kinetic energy matched an independent NumPy ½mv² calculation within 5e-9 eV.
  • Every output artifact was hash-checked against its manifest, and the numbers above were recomputed independently from the saved arrays.

README and CHANGELOG are not copied into the image, so the documentation update does not change the validated image contents.

Not covered: multi-GPU, training, periodic/multi-system MACE and cuEquivariance beyond single-system nonperiodic runs remain experimental and are disclosed as such. The agent and tool descriptions still call cuEquivariance experimental while the README now records the single-system result; happy to align the wording either way.

Security
- Bump GitPython 3.1.62, hydra-core 1.3.7, multidict 6.9.1 and urllib3 2.8.0
  to clear published advisories flagged by dependency review.
- Verify checkpoint size and SHA-256 before deserializing; runtime model
  aliases resolve only to hash-verified checkpoints baked into the image.
- Make cached checkpoints read-only and reserve logs.out from artifact
  replacement.

Behavior
- Require CUDA by default; CPU runs only when explicitly requested for tests.
- Propagate trajectory-sink and distributed-run failures instead of
  swallowing them.
- Fix indentation in the embedded script template.
- Mark training, multi-GPU, periodic MACE and broader cuEquivariance use as
  experimental in catalog descriptions.

Tests
- Add 11 regression tests (43 total), including hash-before-load checks for
  the checkpoint downloader.

Validation
- 43/43 tests on CPU during image build and on one H100 NVL, no skips.
- MACE small-0b/medium-0b2 and AIMNet2 inference, MACE relaxation and
  100-step NVT revalidated on H100 with independent numerical checks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@anogassis

Copy link
Copy Markdown
Owner

Thank you @faranm-stack . Looks good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants