Alexander Whitestone
ebf69d155b
feat: GPU Inference Scheduler — Multi-Model Resource Management
Fixes #645
Queue-based model loading with priority lanes and VRAM budget tracking.
Prevents GPU OOM crashes when multiple projects compete for VRAM.
## Features
### Priority Lanes
- REALTIME (1): LPM, live video, interactive sessions
- INTERACTIVE (2): Playground, chat, user-facing
- BATCH (3): Harvester, overnight jobs, background
### VRAM Management
- Tracks total/used/available VRAM
- Reserves VRAM when job starts
- Releases VRAM when job completes
- CPU fallback when GPU full
### Model Registry
Pre-registered models:
- Video Forge: SD XL (8GB), HeartMuLa (4GB), Wan2.1 (12GB)
- LPM: Video Gen (16GB), A2A (8GB)
- Local: Llama 3 70B (40GB), Llama 3 8B (8GB), MiMo v2 Pro (16GB)
- Playground: SDXL Turbo (6GB)
### Cross-Project Scenarios Handled
1. Video Forge batch + LPM live → LPM gets priority
2. 3 Video Forge jobs → Sequential with shared cache
3. Night harvester + playground → Batch runs on idle cycles
## Files
- tools/gpu_scheduler.py: InferenceScheduler class, CLI interface
- tests/tools/test_gpu_scheduler.py: 19 tests, all passing
## Usage
```python
from tools.gpu_scheduler import InferenceScheduler, Priority
scheduler = InferenceScheduler(vram_budget_mb=49152) # 48GB
scheduler.submit_job("job-1", "lpm", "llama3_8b", Priority.REALTIME)
job = scheduler.get_next_job()
scheduler.start_job(job)
# ... do inference ...
scheduler.complete_job(job)
```
2026-04-14 21:15:58 -04:00
..
2026-03-23 07:43:12 -07:00
2026-04-14 15:43:31 -07:00
2026-04-08 17:23:15 -07:00
2026-04-10 03:44:43 -07:00
2026-04-13 10:50:24 -07:00
2026-04-10 03:44:43 -07:00
2026-04-07 08:40:22 -04:00
2026-04-08 13:44:58 -07:00
2026-03-17 02:02:57 -07:00
2026-03-28 17:25:04 -07:00
2026-04-10 13:05:44 -07:00
2026-04-14 16:55:55 -07:00
2026-04-11 14:02:46 -07:00
2026-04-01 12:03:56 -07:00
2026-03-31 10:40:13 -07:00
2026-04-11 02:58:48 -07:00
2026-04-11 14:50:44 -07:00
2026-04-10 21:15:47 -07:00
2026-04-14 02:18:38 -07:00
2026-04-10 03:44:43 -07:00
2026-03-27 04:03:00 -07:00
2026-04-10 03:44:43 -07:00
2026-04-13 16:32:04 -07:00
2026-04-08 17:23:15 -07:00
2026-03-26 14:50:26 -07:00
2026-04-10 21:16:53 -07:00
2026-04-09 13:17:06 -07:00
2026-03-10 20:45:13 -07:00
2026-04-10 03:44:43 -07:00
2026-04-10 21:16:53 -07:00
2026-04-10 16:47:44 -07:00
2026-04-13 16:32:04 -07:00
2026-04-13 16:32:04 -07:00
2026-04-10 03:01:46 -07:00
2026-04-10 21:14:32 -07:00
2026-04-08 17:23:15 -07:00
2026-04-13 16:32:04 -07:00
2026-04-13 05:15:05 -07:00
2026-03-14 11:27:02 -07:00
2026-04-10 16:47:44 -07:00
2026-04-14 21:15:58 -04:00
2026-04-13 04:45:07 -07:00
2026-04-14 02:18:38 -07:00
2026-03-27 15:28:19 -07:00
2026-03-23 22:45:55 -07:00
2026-04-09 16:24:53 -07:00
2026-04-07 17:19:07 -07:00
2026-04-11 02:03:20 -07:00
2026-04-08 17:23:15 -07:00
2026-04-09 13:17:06 -07:00
2026-04-07 08:40:22 -04:00
2026-04-14 17:19:20 -07:00
2026-04-05 22:08:00 -07:00
2026-04-04 10:18:57 -07:00
2026-04-13 18:46:14 -07:00
2026-04-10 03:44:35 -07:00
2026-04-04 10:18:57 -07:00
2026-04-14 17:19:20 -07:00
2026-04-14 10:18:05 -07:00
2026-04-13 16:32:04 -07:00
2026-03-14 07:53:56 -07:00
2026-04-12 06:18:05 +05:30
2026-04-08 17:23:15 -07:00
2026-04-10 03:01:46 -07:00
2026-04-12 00:36:22 -07:00
2026-04-05 12:46:07 -07:00
2026-03-17 02:34:35 -07:00
2026-04-10 16:47:44 -07:00
2026-04-11 13:46:16 -07:00
2026-04-13 16:32:04 -07:00
2026-04-13 23:52:32 -07:00
2026-03-10 17:09:51 -07:00
2026-03-17 02:02:57 -07:00
2026-04-09 13:17:06 -07:00
2026-04-10 03:20:05 -07:00
2026-04-13 04:54:42 -07:00
2026-03-16 19:01:39 +03:00
2026-04-10 03:44:43 -07:00
2026-04-01 04:19:19 -07:00
2026-04-11 13:59:52 -07:00
2026-04-01 04:19:19 -07:00
2026-03-26 13:40:21 -07:00
2026-03-14 23:15:04 -07:00
2026-04-10 03:44:43 -07:00
2026-04-11 01:21:20 -07:00
2026-04-13 16:32:04 -07:00
2026-04-12 06:18:05 +05:30
2026-04-10 03:01:46 -07:00
2026-04-04 16:57:24 -07:00
2026-04-10 02:58:54 -07:00
2026-04-08 21:37:51 -07:00
2026-04-13 16:32:04 -07:00
2026-03-29 21:51:44 -07:00
2026-04-09 16:24:53 -07:00
2026-04-13 16:32:04 -07:00
2026-04-09 02:50:07 -07:00
2026-04-08 17:23:15 -07:00
2026-03-16 23:39:41 -07:00
2026-04-11 16:22:50 -07:00
2026-04-11 02:58:48 -07:00
2026-04-07 17:19:07 -07:00
2026-04-11 14:26:11 -07:00
2026-04-13 16:32:04 -07:00
2026-03-31 03:10:01 -07:00
2026-04-11 01:56:55 -07:00
2026-04-12 16:46:18 -07:00
2026-03-23 15:40:42 -07:00
2026-04-13 16:32:04 -07:00
2026-04-13 10:50:24 -07:00
2026-04-09 16:24:53 -07:00
2026-04-11 03:13:23 -07:00
2026-03-31 08:48:54 +09:00
2026-04-09 13:17:06 -07:00
2026-03-30 08:10:14 -07:00
2026-04-10 03:38:44 -07:00
2026-04-13 10:50:24 -07:00