The most common question when someone types “NVIDIA weather AI” into a search bar isn’t what is it – it’s which version am I supposed to install? There’s the original 2022 NVlabs repo, an ECMWF plugin, a NIM container, FCN v2, and now FCN3. The docs don’t sort this out for you.
Short answer: if you want a working deployment in 2025, use the FourCastNet NIM 2.0.0 container. It ships FourCastNet 3 – the latest AI global weather forecasting system from NVIDIA Earth-2. Everything else is either research code or an older path. This guide walks the NIM install end-to-end, then explains when you’d actually want the alternatives.
Which FourCastNet version to deploy
Three real install paths exist for NVIDIA weather AI right now, and picking wrong wastes hours. Here’s the honest comparison:
| Path | Version | Best for | Maintenance status |
|---|---|---|---|
| NIM container 2.0.0 | FCN3 | Production inference, ensemble forecasting | Actively maintained (2025) |
| NIM container 1.1.0 | FCN v2 SFNO | Lower GPU memory budget (40GB) | Still shipped |
| NVlabs/FourCastNet source | v0 (AFNO) | Training experiments, research reproduction | Stagnant – open issues sit unresolved since 2024 |
| ecmwf-lab/ai-models-fourcastnet | v0.1 | Legacy pipelines | Deprecated |
The ECMWF v1 plugin is the one people trip on most. It’s now deprecated – users are directed to the newer ai-models-fourcastnetv2 repository (per the ECMWF-lab GitHub). If a 2023 tutorial tells you to pip install ai-models-fourcastnet, that’s why nothing works.
System requirements for FourCastNet NIM 2.0.0
FCN3 got expensive on the hardware side. The optimized config calls for a single B200 or H100 with 64 GB disk space. Non-optimized mode needs any NVIDIA GPU with 60 GB memory and compute capability ≥ 8.0 – both per NVIDIA’s prerequisites page.
That 60 GB floor is the gotcha. NIM 1.1.0 with FCN v2 needed only 40 GB in non-optimized mode, which fit an A100 40GB or an RTX A6000. FCN3’s jump to 60 GB rules out most workstation cards – including the 48 GB RTX 6000 Ada. No H100, B200, or A100 80GB? Run 1.1.0 instead.
Software floor, from the same doc: Docker ≥ 23.0.1, NVIDIA Drivers ≥ 545 (R470/R525/R535/R545 branches on data center GPUs), and NVIDIA Container Toolkit ≥ 1.13.5.
Pull and run the container
You’ll need an NGC account and API key first. Generate one at ngc.nvidia.com, then log in:
docker login nvcr.io
# Username: $oauthtoken
# Password: <your NGC API key>
export NGC_API_KEY=<your NGC API key>
docker pull nvcr.io/nim/nvidia/fourcastnet:2.0.0
Start the container (adapted from the official deployment guide):
export LOCAL_NIM_CACHE=~/.cache/nim
mkdir -p $LOCAL_NIM_CACHE
docker run --rm --name fourcastnet
--runtime=nvidia --gpus all
--shm-size 4g
-p 8000:8000
-e NGC_API_KEY
-v $LOCAL_NIM_CACHE:/opt/nim/.cache
-u $(id -u)
nvcr.io/nim/nvidia/fourcastnet:2.0.0
First run downloads the model weights. The FCN3 checkpoint on NGC is version 0.1.0, 2.65 GB, last modified July 29, 2025 (per the NGC Catalog). The -v mount matters – without it, you re-download 2.65 GB every time the container restarts.
Verify it works
Health check first:
curl -s http://localhost:8000/v1/health/ready
# Expected: {"status":"ready"}
NIM won’t fetch weather fields for you – you feed it a NumPy array of the current atmospheric state. That’s where Earth2Studio comes in:
pip install --upgrade pip
pip install earth2studio
The NIM 1.1.0 prerequisites document this as requiring Python ≥ 3.10 and < 3.12, with Earth2Studio ≥ 0.3.0 – verify this still applies to 2.0.0 before installing. Python 3.12 will fail dependency resolution quietly, with no error that points back to this constraint.
One shortcut worth trying: point Earth2Studio at ECMWF’s open data endpoint for initial conditions rather than Copernicus CDS. CDS registration takes days and rate-limits hard; ECMWF open data requires no account for recent forecast data (check current availability before relying on this).
Common install errors (from the official troubleshooting page)
These four come straight from NVIDIA’s troubleshooting doc – not folklore:
- ManifestDownloadError. Symptom: “The requested operation requires an API key, but none was found.” The NGC_API_KEY env var didn’t propagate into the container. Run
echo $NGC_API_KEYin the same shell you’re using fordocker run. - No CUDA-capable device. Verify with
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi; if that fails, reinstall or reconfigure the NVIDIA Container Toolkit. - Health endpoint stuck at 503.
/v1/health/readyreturns{"status":"not ready"}or HTTP 503 for several minutes after container start – that’s normal on first launch. The model checkpoint downloads then, and there’s no progress bar in the default logs. Watchdocker logs fourcastnetand wait it out. - Shared memory crash on many-core hosts. The troubleshooting doc says bump
--shm-sizeto8gif you have many CPU cores and see shared memory errors; most tutorials leave it at4g, which is too tight for dual-socket EPYC or Xeon boxes. - Port 8000 already in use. Remap with
-p 8080:8000and update client URLs tohttp://localhost:8080/v1/infer.
What FCN3 actually does differently
Worth committing an H100 to this only if you understand what changed across versions. So: a quick tour.
The original FourCastNet (arXiv:2202.11214) used Adaptive Fourier Neural Operators. Benchmarked against ECMWF IFS, it matched IFS accuracy at short lead times for large-scale variables and generated a week-long forecast in under 2 seconds (per NVIDIA’s PhysicsNeMo docs).
FCN v2 switched to Spherical Fourier Neural Operators. Turns out that architecture kept memory needs modest enough for a 40 GB card while extending predictive stability to over 1,460 timesteps – roughly a year of simulated weather at 6-hour intervals. Still deterministic though.
FCN3 goes probabilistic: a 60-day global forecast at 0.25°, 6-hourly resolution in under 4 minutes on a single GPU (per the Hugging Face model card). That speed is what makes large ensemble runs – hundreds of members to quantify forecast uncertainty – actually practical on a single machine. That’s the real use case NIM 2.0.0 is built for. If you just need a deterministic forecast, FCN v2 in NIM 1.1.0 is smaller, cheaper, and does the same job.
Upgrading from 1.1.0 and cleanup
Upgrading is a container swap, not a migration. Stop the old container, pull the new tag:
docker stop fourcastnet
docker pull nvcr.io/nim/nvidia/fourcastnet:2.0.0
Don’t reuse the same LOCAL_NIM_CACHE volume across major versions. The FCN v2 checkpoints sitting in that directory are useless to FCN3 and just eat disk. Point 2.0.0 at a fresh directory.
Full uninstall:
docker stop fourcastnet 2>/dev/null
docker rmi nvcr.io/nim/nvidia/fourcastnet:2.0.0
rm -rf ~/.cache/nim
pip uninstall earth2studio
NIM containers don’t install system-level services – no daemon, no systemd unit to hunt down.
FAQ
Can I run FourCastNet on a consumer GPU like an RTX 4090?
Not FCN3. 24 GB is nowhere near 60 GB. The original NVlabs source code for v0 is smaller and will technically run, but you’re inheriting research code with unresolved 2024-2025 GitHub issues and no active maintenance.
Do I need to train the model myself?
No – the NIM container ships with pretrained ERA5 weights that download on first launch. Training from scratch is a supercomputer-scale job. The whole point of NIM is skipping that.
Does the NIM container work offline?
Only after the first run completes. That initial launch needs internet access to pull the 2.65 GB checkpoint from NGC. NVIDIA does document an air-gap deployment option for environments without outbound internet – the process involves pre-staging the checkpoint on a networked machine and copying it to the offline host. Check the deployment guide for current instructions; as of mid-2025, this section is thinner than the rest of the docs and worth reading carefully before assuming it’ll go smoothly.
Next: once your health endpoint returns ready, run the Earth2Studio quickstart notebook to pull a real ERA5 initial condition and push your first inference request to /v1/infer. That’s where you’ll find out whether your GPU actually holds up under a 40-member ensemble.