initial commit

This commit is contained in:
ray
2026-07-12 10:17:17 -04:00
commit dab5a4ebc6
1424 changed files with 330463 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
---
name: gpu-llm-homelab
description: Evaluate GPUs for llama.cpp LLM inference in self-hosted homelab servers — bandwidth analysis, VRAM sizing, CUDA vs Vulkan, case fit, PSU requirements.
---
# GPU Evaluation for LLM Inference (Homelab)
How to compare GPUs for llama.cpp inference. The metrics that matter are different from gaming.
## The Only Numbers That Matter
1. **Memory bandwidth (GB/s)** — THE bottleneck. Token generation speed = bandwidth ÷ model size. Higher = faster.
2. **VRAM (GB)** — determines what models you can fit. Q4_K_M 7B ≈ 4.7 GB, Q4_K_M 14B ≈ 9 GB, Q4_K_M 32B ≈ 18 GB.
3. **CUDA support** — not optional. Vulkan works but is slower and buggier. AMD ROCm doesn't support consumer RDNA cards. No CUDA = permanently second-class.
4. **Bus width** — the hidden trap. 128-bit cards (RTX 4060/5060 series) cap bandwidth regardless of VRAM. A 16GB card on 128-bit is slower than an 8GB card on 256-bit.
Everything else (CUDA core count, clock speed, architecture generation, Tensor cores) is secondary for llama.cpp.
## The 128-Bit Bus Trap
NVIDIA's xx60 series has been on 128-bit since 4060 generation. These cards are gaming-first designs where cache compensates for narrow bus — but LLMs don't benefit from cache. Result: a 4060 Ti 16GB (288 GB/s) is **slower than a GTX 1080 from 2016** (320 GB/s) at 4× the price. Always check the bus width before getting excited about VRAM.
## AMD Cards for LLMs
AMD cards look good on paper (more VRAM per dollar) but:
- No CUDA — stuck on Vulkan backend
- ROCm excludes consumer RDNA/RDNA2/RDNA3/RDNA4 cards
- llama.cpp Vulkan has fewer optimizations, more bugs
- Only worth it if the card is **dramatically** cheaper per GB than NVIDIA
Unless the user explicitly wants AMD for gaming or gets an extreme deal, steer toward NVIDIA + CUDA.
## Evaluation Checklist
When a user asks about a GPU for LLM:
1. **Look up specs**: bandwidth, VRAM, bus width, CUDA cores (TechPowerUp GPU database)
2. **Calculate token speed relative to current card**: bandwidth_ratio × backend_factor (CUDA ~20% faster than Vulkan)
3. **Model ceiling**: what's the biggest model at Q4_K_M (VRAM × 0.8)?
4. **Check PSU**: wattage headroom (GPU TDP + CPU TDP + 50W), available PCIe power connectors
5. **Check case**: GPU length, slot width, cooling type (blower vs open-air), airflow
6. **Price-to-bandwidth ratio**: $/GB_per_second = price ÷ bandwidth. Lower is better.
## Power Consumption Reality
- LLM inference is bursty — GPU idles at 25-35W, spikes to TDP for seconds per request
- 24/7 idle cost dominates. At $0.13/kWh: 25W idle = $2.34/month, 30W idle = $2.81/month
- Difference between cards at idle is pennies. Peak draw only matters for PSU sizing.
- Power limit with `nvidia-smi -pl` can reduce noise with near-zero inference speed loss (bandwidth-bound, not core-bound)
## Prebuilt Desktop Pitfalls
Prebuilt systems (HP OMEN, Dell XPS, Alienware) have constraints:
- **Proprietary PSUs**: may be non-standard form factor. Check before assuming ATX fits.
- **Limited PCIe cables**: prebuilt PSUs often have fewer connectors than aftermarket. A 750W prebuilt PSU might only have 2× 8-pin even though a retail 750W has 4.
- **GPU clearance**: measure, don't assume. 300mm is a common max for mid-towers.
- **Cooling**: open-air GPUs dump heat into the case. In airflow-limited prebuilts, blower-style (rear exhaust) cards are safer.
- **Power limit as noise control**: `sudo nvidia-smi -pm 1 && sudo nvidia-smi -pl 280` caps a 3090 at 280W with minimal speed loss.
## Value Tiers (used market, mid-2025)
| Tier | Price | Cards | Bandwidth | VRAM |
|------|-------|-------|-----------|------|
| Budget | $80-100 | GTX 1080 8GB | 320 GB/s | 8 GB |
| Sweet spot | $150-170 | GTX 1080 Ti 11GB | 484 GB/s | 11 GB |
| Best value | $280-320 | RTX 2080 Ti 11GB | 616 GB/s | 11 GB |
| High-end | $600-700 | RTX 3090 24GB | 936 GB/s | 24 GB |
| Overkill | $1200+ | RTX 4090 24GB | 1008 GB/s | 24 GB |
Skip the 128-bit generation (4060/5060/4060 Ti/5060 Ti) entirely. Skip AMD unless the deal is absurd.
## After Purchase
- Enable persistence mode: `sudo nvidia-smi -pm 1`
- Set conservative power limit: `sudo nvidia-smi -pl <watts>` (80% of TDP is safe)
- CUDA backend in llama.cpp: `-ngl 99` (offload all layers)
- Verify with `nvidia-smi` — should show llama-server process with expected VRAM