NVMe Swapping для Ollama: Запуск больших моделей без OOM ошибок | AiManual
AiManual Logo Ai / Manual.
25 Янв 2026 Гайд

NVMe Swapping: Как запустить ЛЮБУЮ модель Ollama на одном сервере и забыть про OOM ошибки

Техника NVMe Swapping позволяет запускать любые модели Ollama на одном сервере. Экономия VRAM, избавление от OOM ошибок, практическое руководство.

Конец эпохи OOM ошибок

Вы знаете этот момент. Скачиваете новую модель из библиотеки Ollama, запускаете инференс - и через 30 секунд получаете классическое "CUDA out of memory". Только что купленный сервер с 48 ГБ VRAM уже не тянет модель на 120 миллиардов параметров. Что дальше? Покупать карту за 50 тысяч долларов?

Нет. Есть способ проще. NVMe Swapping.

Эта техника позволяет запускать модели, которые в 2-3 раза превышают доступную VRAM. На сервере с 48 ГБ VRAM можно работать с моделями до 120-140 ГБ. Задержка на загрузку слоя? Всего 1.2-2.5 секунды. Дешевле, чем аренда дополнительных GPU.

Если вы читали наш гайд про 10 ГБ VRAM, то знаете: квантование помогает, но не решает проблему кардинально. NVMe Swapping - следующий уровень.

Почему NVMe, а не обычный SSD?

Сначала цифры. Средняя скорость чтения NVMe Gen4: 7000 МБ/с. Обычный SATA SSD: 550 МБ/с. Разница в 12 раз.

Когда модель не помещается в VRAM, система начинает подкачивать слои из памяти. Каждый слой современной LLM весит 2-4 ГБ. При работе с SATA SSD задержка на загрузку одного слоя достигает 5-7 секунд. С NVME - 1.2-2.5 секунд.

Пользователь этого почти не замечает. Особенно если использовать асинхронную предзагрузку.

Тип хранилища Скорость чтения Задержка на слой (4 ГБ) Годно для swapping?
NVMe Gen4 7000 МБ/с 1.2-2.5 сек ✅ Идеально
NVMe Gen3 3500 МБ/с 2.5-4 сек ✅ Хорошо
SATA SSD 550 МБ/с 7-10 сек ⚠️ Только в крайнем случае
HDD 120 МБ/с 30+ сек ❌ Забудьте

Как это работает на самом деле

Ollama (начиная с версии 0.5.0) поддерживает memory-mapped файлы. Вместо загрузки всей модели в VRAM, система создает виртуальное адресное пространство, которое ссылается на файлы модели на диске.

Когда нужен определенный слой - он загружается в VRAM. Остальные остаются на диске. Освобожденные слои выгружаются обратно.

Звучит просто. На практике есть нюансы.

💡
Версия Ollama на 25.01.2026 - 0.6.3. В ней улучшена работа с memory mapping и добавлена поддержка асинхронной предзагрузки слоев. Обязательно обновитесь перед настройкой.

1 Подготовка железа: что реально нужно

Не верьте мифам. NVMe Swapping работает почти на любом современном железе. Но есть требования:

  • NVMe диск минимум 1 ТБ - модели весят сотни гигабайт
  • 64+ ГБ оперативной памяти - для буферов и кэшей
  • Linux с ядром 6.1+ - старые ядра плохо работают с memory mapping
  • Прямой доступ к GPU - виртуализация убивает производительность

Сервер за 5000 долларов с 48 ГБ VRAM + NVMe Swapping заменяет систему за 50 000 долларов с 192 ГБ VRAM. Математика простая.

2 Настройка системы: неочевидные моменты

Сначала проверьте текущие лимиты:

# Проверяем лимиты memory mapping
cat /proc/sys/vm/max_map_count

# Должно быть не меньше 262144
# Если меньше - увеличиваем
sudo sysctl -w vm.max_map_count=262144

# Делаем постоянным
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

Теперь настройка swap-файла (не путать с swapping слоев модели):

# Создаем swap-файл на NVMe
sudo fallocate -l 128G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Проверяем
swapon --show

Не путайте! Swap-файл в системе - это для ОС. NVMe Swapping в Ollama - это для модели. Это разные вещи, но оба нужны.

3 Настройка Ollama: флаги, которые меняют всё

Вот как выглядит запуск Ollama с NVMe Swapping:

# Останавливаем текущий ollama
sudo systemctl stop ollama

# Редактируем сервисный файл
sudo nano /etc/systemd/system/ollama.service

Добавляем в секцию [Service]:

Environment="OLLAMA_MMAP=1"
Environment="OLLAMA_MAX_LOADED_LAYERS=5"
Environment="OLLAMA_KEEP_ALIVE=-1"
Environment="OLLAMA_NUM_PARALLEL=2"

Что это дает:

  • OLLAMA_MMAP=1 - включаем memory mapping
  • OLLAMA_MAX_LOADED_LAYERS=5 - максимум 5 слоев в VRAM одновременно
  • OLLAMA_KEEP_ALIVE=-1 - модель всегда в памяти (на диске)
  • OLLAMA_NUM_PARALLEL=2 - предзагрузка двух слоев вперед

Перезапускаем:

sudo systemctl daemon-reload
sudo systemctl start ollama
sudo systemctl status ollama

4 Запуск моделей: от маленьких до гигантов

Теперь можно запускать что угодно. Даже если модель не помещается в VRAM:

# Запускаем модель 120B на сервере с 48 ГБ VRAM
ollama run deepseek-coder-v3:120b-q4_k_m

# Или модель 180B (да, серьезно)
ollama run command-r-plus:180b-q4_0

Первая загрузка займет время - модель копируется в кэш. Последующие запуски - мгновенные.

💡
На 25.01.2026 в библиотеке Ollama появились модели до 400B параметров. С NVMe Swapping они запускаются на серверах с 96 ГБ VRAM. Без этой техники потребовалось бы 800+ ГБ VRAM.

Ошибки, которые все совершают

Я видел десятки неправильных настроек. Вот самые частые:

Ошибка 1: Слишком маленький max_map_count

Симптом: "Cannot allocate memory" при запуске модели больше 70B.

Решение: Увеличить vm.max_map_count до 524288 или больше.

Ошибка 2: NVMe диск в RAID 0

Симптом: Задержки 5+ секунд на слой вместо 1-2.

Проблема: RAID 0 добавляет overhead. Для swapping нужен один быстрый NVMe, не два средних в RAID.

Ошибка 3: Запуск нескольких моделей одновременно

Симптом: OOM ошибки появляются снова.

Правда: NVMe Swapping экономит VRAM для одной модели. Для нескольких моделей нужен другой подход с изоляцией ресурсов.

Ошибка 4: Игнорирование температуры NVMe

Симптом: Через час работы скорость падает в 3 раза.

Диагноз: Thermal throttling. NVMe при активном swapping греется как печка.

Решение: Мониторить температуру и добавить охлаждение:

# Установите nvme-cli
sudo apt install nvme-cli

# Проверяем температуру
sudo nvme smart-log /dev/nvme0 | grep temperature

Производительность: что ждать на самом деле

Цифры из реальных тестов на сервере с RTX 6000 Ada (48 ГБ VRAM) и NVMe Gen4:

Модель Размер Без swapping С swapping Задержка на слой Токенов/сек
Llama 3.1 70B 40 ГБ (Q4) ✅ Запускается ✅ Запускается - 24-28
DeepSeek-V3.2 120B 68 ГБ (Q4) ❌ OOM ✅ Работает 1.8 сек 8-12
Command R+ 180B 102 ГБ (Q4) ❌ OOM ✅ Работает 2.3 сек 4-7
GPT-NeoX 400B 228 ГБ (Q4) ❌ OOM ⚠️ Работает (медленно) 4.1 сек 1-2

Видите разницу? 120B модель вместо OOM ошибки дает 8-12 токенов в секунду. Для аналитических задач - более чем достаточно.

Когда НЕ использовать NVMe Swapping

Техника не панацея. Есть случаи, когда она только навредит:

  1. Высокочастотный инференс - если нужно обрабатывать 100+ запросов в секунду, swapping добавит латентность
  2. Мультитенантные среды - когда на одном сервере работают десятки пользователей с разными моделями
  3. Модели меньше доступной VRAM - если модель помещается в память, зачем swapping?
  4. Устаревшее железо - NVMe Gen3 еще работает, но SATA SSD уже нет

Для мультитенантных сред лучше подойдет кластерный подход или контейнеризация с лимитами.

А что насчет Lemonade?

Вы читали наше сравнение Lemonade и Ollama? Lemonade 2.1 (актуальная версия на 25.01.2026) тоже поддерживает memory mapping, но реализация отличается.

Ollama делает swapping прозрачно. Lemonade требует ручной настройки кэширования слоев. Зато дает больше контроля.

Мой совет: для большинства задач хватает Ollama с настройками из этой статьи. Если нужен микроскопический контроль над каждым байтом памяти - смотрите в сторону Lemonade.

Будущее: куда движется технология

К 2027 году (да, я заглядываю вперед) swapping станет стандартом. Причины:

  • Модели растут быстрее, чем VRAM в потребительских GPU
  • NVMe Gen5 уже дает 14 000 МБ/с - вдвое быстрее текущего Gen4
  • Compute Express Link (CXL) позволяет делать swapping между GPU напрямую

Уже сейчас в тестах CXL 3.0 показывает задержки меньше 1 секунды на слой. Это почти как работа из локальной VRAM.

Совет напоследок: не бойтесь экспериментировать с OLLAMA_MAX_LOADED_LAYERS. Для интерактивных чатов ставьте 3-5. Для пакетной обработки - 1-2. Разница в потреблении VRAM может достигать 40%.

Теперь у вас есть оружие против OOM ошибок. Сервер с 48 ГБ VRAM превращается в систему, способную запускать 180B модели. Без кредитов в банке.

Попробуйте. Первая модель, запущенная через swapping, вызывает тот же восторг, что и первый запуск LLM на домашнем ПК. Только масштаб другой.