Welcome Banner

Pavel Bahdanau

← Back to list

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 ГБ

Что ещё я поддерживаю

© Pavel. All rights reserved.

Made with simple HTML, CSS and JavaScript

Last update: