Lab 03 — Layer Streaming for Edge LLMs
Phase: 10 — GenAI on Edge | Difficulty: ⭐⭐⭐⭐⭐ | Time: 3–4 hours
Run 7B+ LLMs on devices with 4GB RAM by streaming layers from flash storage into a small device memory window.
What you build
estimate_layer_bytes— compute memory footprint of a transformer layerLayerPool— device-side LRU buffer holding at most W layers at onceStreamingTransformer— prefetch next layer while running current; LRU evictionbenchmark_streaming— measure latency and peak memory for different window sizesselect_max_layers_for_budget— choose largest window fitting memory budget
Key concepts
| Concept | What to understand |
|---|---|
| Layer streaming | Load layer to GPU/NPU, run, evict — trade latency for memory |
| Prefetching | DMA next layer while computing current — hide transfer latency |
| Window size | Tradeoff: more layers cached = faster inference but more DRAM |
| LRU policy | For transformer sequential access, LRU ≈ FIFO |
| Flash bandwidth | NVMe: ~7 GB/s; eMMC (phone): ~300 MB/s — bottleneck at small W |
Files
| File | Purpose |
|---|---|
lab.py | Stubs with TODO markers |
solution.py | Complete working implementation |
test_lab.py | pytest suite |
requirements.txt | Dependencies |
Run
pip install -r requirements.txt
python lab.py
pytest test_lab.py -v