Tesla P40 для MoE-моделей: дешёвый GPU для оффлоудинга экспертов | AiManual
AiManual Logo Ai / Manual.
13 Янв 2026 Гайд

Tesla P40 для MoE-оффлоудинга: как заставить 8-летнюю карту работать лучше современных

Практический гайд по использованию дешёвых Tesla P40 для оффлоудинга экспертов в MoE-моделях. Оптимизация стоимости, настройка, сравнение с RTX 4090 и GTX 1070.

Почему все игнорируют P40 — и почему они ошибаются

Ты смотришь на цены RTX 4090 и чувствуешь, как твой кошелёк плачет. 200 тысяч рублей за 24 ГБ VRAM. А потом видишь объявление: "Tesla P40, 24 ГБ GDDR5, 5000 рублей". Сердце замирает. Это же почти даром!

Но потом читаешь комментарии: "P40 — это старьё", "нет NVLink", "только PCIe", "драйверы — ад". Большинство проходит мимо. А зря.

Вот цифры, которые заставят тебя пересмотреть всё:

GPU VRAM Цена Цена за ГБ VRAM
RTX 4090 24 ГБ 200 000 ₽ 8 333 ₽
Tesla P40 24 ГБ 5 000 ₽ 208 ₽

Разница в 40 раз. Сорок. Да, P40 медленнее в вычислениях. Но для оффлоудинга экспертов в MoE-моделях это не главное. Главное — память. И её у P40 много.

P40 не для обучения. Не для быстрого инференса. Она для хранения весов экспертов, которые не помещаются в основную карту. Это дешёвый склад VRAM, подключённый через PCIe.

Как MoE превращает недостатки P40 в преимущества

Вспомни, как работает MoE. У тебя есть 8 экспертов. На каждый токен активируются только 2. Остальные 6 спят. Зачем держать всех в быстрой памяти?

Идея проста:

  • Активные эксперты — в RTX 4090 (или любой другой быстрой карте)
  • Спящие эксперты — в P40
  • Когда роутер решает сменить эксперта — копируем веса из P40 в основную карту

PCIe 3.0 x16 даёт 16 ГБ/с. Копирование эксперта размером 7B в fp16 (~14 ГБ) занимает меньше секунды. Для MoE, где эксперты меняются не каждые миллисекунды, это приемлемо.

💡
Если ты уже работал с тройным GTX 1070, то P40 покажется логичным апгрейдом. Та же идея — больше VRAM через несколько карт, но без головной боли с совместимостью разных моделей.

Сборка системы: что нужно знать до покупки

P40 — это серверная карта 2016 года. У неё нет вентилятора. Никакого. Только пассивный радиатор.

Первое правило: не пытайся запихнуть её в обычный корпус. Без обдува она перегреется за минуты.

Вот минимальный набор для выживания P40:

  • Открытый стенд или серверная стойка
  • Мощный вентилятор 120+ мм, направленный прямо на радиатор
  • Термопаста (старая наверняка высохла)
  • PCIe riser, если планируешь несколько карт

Энергопотребление? 250 ватт под нагрузкой. Не забудь про блок питания. Если ставишь P40 рядом с RTX 4090 (450 Вт), считай на 700+ Вт только на GPU.

P40 требует 8-пиновый коннектор питания. Некоторые продавцы продают карты без кабеля — уточняй. Адаптеры с 6-pin на 8-pin — зло. Лучше взять родной кабель.

1 Установка драйверов: танцы с бубном

Здесь начинается самое "интересное". P40 — карта Pascal, но серверная. Драйверы ставятся через NVIDIA GRID.

Не делай так:

sudo apt install nvidia-driver-550 # УБЬЁТ систему

Вот рабочий способ для Ubuntu 22.04:

# Добавляем репозиторий GRID
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb

# Устанавливаем драйвер
sudo apt update
sudo apt install nvidia-driver-535-server # именно server версия!

Перезагружаешься и проверяешь:

nvidia-smi
# Должна появиться P40 с 24 ГБ памяти

Если видишь ошибку "Failed to initialize NVML: Driver/library version mismatch" — значит, поставил не те драйверы. Удаляй всё nvidia* и начинай сначала.

2 Настройка оффлоудинга в llama.cpp

Допустим, у тебя RTX 4090 как основная карта и P40 как дополнительная. Запускаем Mixtral 8x7B с оффлоудингом экспертов.

Сначала компилируем llama.cpp с поддержкой CUDA:

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make clean
make LLAMA_CUBLAS=1 -j$(nproc)

Теперь конвертируем модель в GGUF, если ещё не сделал:

python convert_hf_to_gguf.py \
 /path/to/mixtral-8x7b \
 --outfile mixtral-8x7b.Q4_K_M.gguf \
 --outtype q4_k_m

А вот ключевой момент — запуск с оффлоудингом на несколько GPU:

./main -m mixtral-8x7b.Q4_K_M.gguf \
 -ngl 99 \
 --gpu-layers 99 \
 -t 12 \
 -c 4096 \
 -b 512 \
 -n 256 \
 --split-mode layer \
 --tensor-split 0.5,0.5 \
 -ins

Что здесь важно:

  • -ngl 99 — загружаем все слои на GPU
  • --split-mode layer — делим модель по слоям
  • --tensor-split 0.5,0.5 — распределяем между двумя GPU поровну

Но это равномерное распределение. А нам нужно экспертов на P40, а внимание и эмбеддинги на RTX 4090.

Более хакерский способ — модифицировать llama.cpp. Ищем в коде загрузку экспертов и добавляем условие:

// Примерный псевдокод, показывающий логику
if (tensor_name.find("experts") != std::string::npos) {
 // Загружаем на GPU 1 (P40)
 cudaSetDevice(1);
} else {
 // Всё остальное на GPU 0 (RTX 4090)
 cudaSetDevice(0);
}

Если не хочешь копаться в C++, есть обходной путь через Hugging Face + accelerate:

from transformers import AutoModelForCausalLM
import torch

model = AutoModelForCausalLM.from_pretrained(
 "mistralai/Mixtral-8x7B-Instruct-v0.1",
 device_map="auto",
 max_memory={
 0: "20GiB", # RTX 4090
 1: "22GiB", # P40
 },
 offload_folder="/tmp/offload",
 offload_state_dict=True
)

Но accelerate не умеет разделять экспертов от остальных слоёв. Он просто заполняет карты по порядку. Для тонкого контроля нужна своя логика.

Производительность: какие цифры ждать

Не жди чудес. P40 — это GDDR5, 346 ГБ/с пропускной способности. У RTX 4090 — 1008 ГБ/с. В 3 раза медленнее.

Но в конфигурации оффлоудинга главное — не скорость вычислений, а задержки на копирование данных между картами.

Сценарий Токенов/с Задержка первого токена
Mixtral на RTX 4090 (без оффлоудинга) 45-50 800 мс
Mixtral на RTX 4090 + P40 (оффлоуд экспертов) 25-30 1200 мс
Только на P40 (без RTX 4090) 8-12 2500 мс

Видишь? Оффлоудинг на P40 даёт падение скорости в 2 раза, но позволяет запускать модели, которые иначе не влезут. Иногда это единственный вариант.

Сравни с чистой RTX 4090 — там ты ограничен 24 ГБ. С P40 получаешь 48 ГБ суммарно.

Типичные ошибки (и как их избежать)

Ошибка 1: Пытаться использовать P40 для всего

P40 плоха для attention layers. У неё нет tensor cores для FP16. Всё, что требует интенсивных вычислений — оставляй на основной карте.

Правило: P40 только для хранения. Как оперативная память, но с интерфейсом PCIe. Вычисления на ней — последнее дело.

Ошибка 2: Игнорировать температуру

Без обдува P40 за 60 секунд достигает 90°C и троттлится. А потом отключается.

Решение простое: корпус с хорошей циркуляцией или открытый стенд. И вентилятор 120 мм на 1500+ оборотов, направленный в торец карты.

Ошибка 3: Ждать совместимости с современными фреймворками

PyTorch 2.0+ может ругаться на старую архитектуру. CUDA 11.8 — последняя, которую поддерживает P40.

Собирай окружение так:

conda create -n p40 python=3.9
conda activate p40
pip install torch==1.13.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117
pip install transformers==4.35.0 accelerate

Не обновляй ничего без необходимости. Работает — не трогай.

Когда P40 имеет смысл, а когда нет

Имеет смысл:

  • Запуск MoE-моделей 70B+ на домашнем железе
  • Сервер для инференса с большим контекстом (32K+)
  • Когда бюджет ограничен, а VRAM нужна прямо сейчас
  • Как временное решение перед покупкой дорогой карты

Не имеет смысла:

  • Обучение моделей (слишком медленно)
  • Инференс в реальном времени (большие задержки)
  • Если есть деньги на RTX 4090 или A100
  • Для моделей до 30B (поместятся в одну современную карту)

Что дальше: P40 против других бюджетных вариантов

Сравни P40 с другими дешёвыми картами:

  • GTX 1080 Ti (11 ГБ) — быстрее, но памяти меньше. Две штуки дадут 22 ГБ, но без NVLink копирование между ними будет медленным.
  • Tesla P100 (16 ГБ) — есть NVLink, но дороже. Для оффлоудинга NVLink не так важен.
  • RTX 2080 Ti (11 ГБ) — хороший баланс, но цена ещё высока.

P40 выигрывает по цене за гигабайт. Ничего близкого нет.

Если интересно, как другие справляются с ограничениями памяти, посмотри гайд по запуску 30B MoE на ноутбуке. Там те же принципы, но в миниатюре.

Последний совет: покупай с умом

P40 на рынке — это бывшие майнинговые или серверные карты. Состояние разное.

При покупке проси:

  1. Фото термопасты (если высохла — сразу менять)
  2. Тест в FurMark на 10 минут (смотреть температуру)
  3. Проверку всех 24 ГБ памяти (memtest)

И главное — не покупай одну. Если решил использовать P40, бери две или три. Одна карта даст тебе 24 ГБ, но задержки на копирование между основной картой и P40 будут значительными. Две P40 позволят распределить экспертов между ними и уменьшить перемещения данных.

Мой прогноз: через год P40 подорожает. Потому что энтузиасты LLM поймут, что это единственный способ получить 48+ ГБ VRAM за 15 тысяч рублей. Пока остальные спорят о PCIe 5.0 (что, кстати, часто бессмысленно для MoE), умные собирают фермы из P40 и запускают модели, которые остальным и не снились.

Начинай сейчас, пока цена 5 тысяч. Через полгода будет 8. Через год — 12. Проверь.