🚀 B200 bare metal now at $5.6/hr. The best price you'll find. DC in US West → (Access it from Bare metal button on top after login).

Get Your B200 →
Start Building
Cover image
Engineering

GPU Snapshots Demystified: What Actually Survives Pod Termination

GPU pod snapshots save configuration, not disk images. Here’s exactly what survives termination and how to architect persistent storage so you stop losing pip packages.

Author photo
packet.ai Team
February 5, 2025

GPU pod snapshots on packet.ai save a configuration bookmark — not a disk image. Everything outside your mounted persistent volume is destroyed on pod termination, every time, without exception.

Key takeaways

  • A snapshot saves: GPU pool, instance type, container image UUID, persistent volume reference — not your files
  • /home/ubuntu, pip packages, running processes, and /tmp are all destroyed on pod termination
  • Only /data/shareXX/ (NFS persistent volume) survives restarts — this is where models, datasets, and checkpoints must live
  • Persistent volumes bill hourly even when no pod is attached — delete in the Storage tab when not needed
  • Pip packages can be persisted to /data/shareXX/pip-packages/ and loaded via PYTHONPATH

If you’ve ever terminated a GPU pod, created a snapshot, restored it, and lost your pip packages — this post is for you. The mental model of a snapshot as a VM image is wrong. Here’s what actually happens.

The mental model problem: snapshots vs VM images

When most engineers hear “snapshot,” they think of a VM snapshot — a complete point-in-time image of the disk. That’s not what GPU pod snapshots are. Cloud GPU pods run in containers, and container infrastructure works fundamentally differently from VMs.

A container has a base image (the OS, CUDA drivers, base packages) and a runtime layer (anything you install or create after the container starts). The runtime layer is ephemeral by design. When the container stops, the runtime layer is discarded.

⚠ What is destroyed on every pod termination

/home/ubuntu and all its contents — pip packages, config files, scripts, SSH keys added at runtime, .bashrc modifications, /tmp — everything not mounted from a persistent volume is gone. No exceptions. No recovery.

The two storage worlds

Storage type Location Survives restart? Billing
Ephemeral (local NVMe)/home/ubuntu, /tmpNoIncluded
Persistent (NFS volume)/data/shareXX/YesHourly, even when detached

Real-world workflows: what to put where

LLM model weights — always on persistent storage, never re-downloaded per session:

# Set HuggingFace cache to persistent volume
export HF_HOME=/data/shareXX/huggingface

# Download once, reuse across pod restarts
huggingface-cli download meta-llama/Llama-3.3-70B-Instruct
python -c "from transformers import AutoModelForCausalLM; AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3.1-8B')"

Pip packages — persist to avoid reinstalling on every restart:

# Install to persistent volume
pip install --target=/data/shareXX/pip-packages torch transformers vllm

# Add to PATH on every session (add to .bashrc in /data/shareXX/)
export PYTHONPATH=/data/shareXX/pip-packages:$PYTHONPATH

# Or use a startup script on your pod
if [ -f /data/shareXX/requirements.txt ]; then
  pip install -r /data/shareXX/requirements.txt
fi

Training checkpoints — always write to /data/shareXX/checkpoints/. If a pod is interrupted, your checkpoint is safe. Without this, a failed 8-hour training run means starting from scratch.

Common gotchas and how to fix them

×

Packages gone after restart

Expected. pip installs to /home/ubuntu/.local/ by default, which is ephemeral. Fix: use pip install --target=/data/shareXX/pip-packages and set PYTHONPATH.

×

Storage still billing after pod deletion

Volumes exist independently of pods. Deleting a pod does not delete the volume. Go to the Storage tab and explicitly delete the volume when done.

×

Restore failed: volume not found

The volume was deleted, or it’s currently attached to another running pod. One volume can only be mounted to one pod at a time. Detach or terminate the other pod first.

Frequently asked questions

A snapshot saves a configuration bookmark: the GPU pool, instance type, container image UUID, and a reference to the persistent volume ID. It does not save /home/ubuntu contents, pip packages, running processes, or any data outside the mounted persistent volume (/data/shareXX/).
Install to your persistent volume: pip install --target=/data/shareXX/pip-packages <package>. Then add export PYTHONPATH=/data/shareXX/pip-packages:$PYTHONPATH to your startup script or a .bashrc file stored in /data/shareXX/.
Yes. Persistent volumes (NFS storage at /data/shareXX/) exist independently of pods and bill hourly even when no pod is attached. To stop billing, explicitly delete the volume in the Storage tab. Deleting a pod does not automatically delete its volumes.
Set export HF_HOME=/data/shareXX/huggingface before downloading models. This routes all Hugging Face cache writes to persistent storage. Models download once and are available on every subsequent pod restart without re-downloading.
No. A persistent volume can only be attached to one pod at a time. If you try to restore a snapshot while the referenced volume is already attached to another running pod, the restore will fail with a "volume not found" or "volume in use" error.

Last reviewed: 10 June 2026. Browse GPU clusters on packet.ai →

Waste less compute.

Same models. Same API. Fraction of the cost. Start free — no credit card required.

Start Building →

More from the blog