diff -ur a/kernel/nv-drm.c b/kernel/nv-drm.c --- a/kernel/nv-drm.c 2013-08-14 06:33:23.000000000 +0400 +++ b/kernel/nv-drm.c 2013-09-26 02:46:03.528914493 +0400 @@ -106,7 +106,9 @@ .unlocked_ioctl = drm_ioctl, .mmap = drm_gem_mmap, .poll = drm_poll, +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) .fasync = drm_fasync, +#endif .read = drm_read, .llseek = noop_llseek, }; @@ -202,13 +204,6 @@ memset(&nv_obj->base, 0, sizeof(nv_obj->base)); nv_obj->pages = pages; - ret = drm_gem_private_object_init(nvl->drm, &nv_obj->base, size); - if (ret) - { - status = RM_ERR_OPERATING_SYSTEM; - goto done; - } - ret = drm_gem_handle_create(file_priv, &nv_obj->base, handle); if (ret) { @@ -216,6 +211,7 @@ goto done; } + drm_gem_private_object_init(nvl->drm, &nv_obj->base, size); drm_gem_object_unreference_unlocked(&nv_obj->base); status = RM_OK; diff -ur a/kernel/nv-linux.h b/kernel/nv-linux.h --- a/kernel/nv-linux.h 2013-08-14 06:33:23.000000000 +0400 +++ b/kernel/nv-linux.h 2013-09-26 02:24:58.863000000 +0400 @@ -1037,7 +1037,11 @@ #endif #if !defined(NV_VMWARE) +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) #define NV_NUM_PHYSPAGES num_physpages +#else +#define NV_NUM_PHYSPAGES get_num_physpages() +#endif #define NV_GET_CURRENT_PROCESS() current->tgid #define NV_IN_ATOMIC() in_atomic() #define NV_LOCAL_BH_DISABLE() local_bh_disable()
Как мы запустили Qwen3.8–27B целиком на RTX 5060 8 GB и получили ~30 токенов/с
Наш проект называется ExVRAM Lab. Это открытая исследовательская лаборатория, в которой мы проверяем, насколько большие локальные LLM можно запускать на обычных видеокартах с ограниченным объёмом VRAM, если использовать ultra‑low‑bit quantization, полное размещение весов на GPU и существующие open‑source inference‑технологии.
ExVRAM расшифровывается как Exchange Compute for VRAM. Основная идея проекта — в ряде сценариев выгоднее потратить часть свободной вычислительной мощности GPU на работу с более компактным представлением весов, чем хранить часть модели в оперативной памяти и постоянно передавать данные через PCIe.
Когда мы начинали проект, исходный вопрос был достаточно простой: можно ли запустить dense‑модель примерно на 27 миллиардов параметров на видеокарте всего с 8 ГБ VRAM так, чтобы она не просто «запустилась», а работала полностью на GPU, поддерживала длинный контекст и обеспечивала нормальную интерактивную скорость генерации.
В качестве основной тестовой системы мы используем NVIDIA GeForce RTX 5060 8 GB на архитектуре Blackwell. Основная модель в текущих экспериментах — Qwen3.8–27B.
Сначала результат выглядел не слишком впечатляюще. Модель запускалась, но значительная часть весов оставалась в системной памяти. Около 5,7 GiB весов находилось на GPU, ещё примерно 2,5 GiB — на CPU. Скорость генерации составляла порядка 3,8–5,5 токена в секунду.
При этом сама видеокарта была загружена далеко не полностью.
Это стало одним из первых важных наблюдений проекта. Проблема заключалась не столько в нехватке вычислительной мощности RTX 5060, сколько в том, что часть decoder weights находилась в RAM. Во время autoregressive generation данные приходилось постоянно передавать между CPU и GPU через PCIe.

