emuV v2.0 - ядровой эмулятор VRAM с автоspillover для GeForce
29.11.2025
Рассказываю, как собрать из обычной RTX 4060 полноценную рабочую лошадку для LLaMA 30B: ядровой драйвер, автоматический spillover GPU->RAM, мониторинг, реальные тесты и план на будущее.
https://github.com/bogdanovby/emuv
Зачем делать виртуальную VRAM в 2025
Практически любой эксперимент с современными LLM или Stable Diffusion упирается в VRAM. RTX 4060 несёт 8 ГБ, RTX 4070 Ti - 12 ГБ, а LLaMA 13B в fp16 уже просит 24 ГБ. A100 80G по-прежнему стоит как подержанная Tesla, поэтому мы пошли обратным путём - написали драйвер, который аккуратно объединяет VRAM и системную память.
GeForce режут VRAM и не умеют официально spillover'ить память как Hopper.
Дать PyTorch "виртуальную" карту на 25-30 ГБ без кастомных патчей и форков.
emuV - ядровой модуль, который использует VRAM первым, потом автоматически переливает данные в RAM.
Ключевые фичи emuV v2.0
- Автодетект любой NVIDIA GeForce через PCI scan (vendor 0x10DE) - больше ни одного хардкода ID.
- Приоритетная иерархия памяти: VRAM (Priority 1) -> системная RAM (Priority 2) с lazy allocation.
- sysfs + char device интерфейс:
/sys/class/emuv/emuv/vram_info. - Набор инструментов:
emuv-top(аналог nvtop). - Реальные LLM: GPT-2 XL, LLaMA 13B/30B (8- и 4-бит) прошли на конфиге 7.5 ГБ VRAM + 20 ГБ RAM.
Архитектура и Spillover
В версии 2.0 мы сделали ставку на понятную и прогнозируемую стратегию: пока есть свободная VRAM - она используется, при переполнении PyTorch ловит cudaErrorMemoryAllocation и перекладывает блоки в RAM.
Ядро проекта - файл emuv.c. При инициализации модуль проходит PCI-шину, находит любую видеокарту класса VGA и создаёт виртуальное устройство.
Результаты тестов (RTX 4060 8GB)
| Модель | VRAM | RAM Spillover |
|---|---|---|
| GPT-2 | ✓ | - |
| LLaMA 13B (8-bit) | 7 ГБ | 3 ГБ |
| LLaMA 30B (4-bit) | 7 ГБ | 8 ГБ |
Что ещё я поддерживаю
- AppLikeWeb - applikeweb.com
- MegaV VPN - megav.app
- PinVPS - pinvps.com