Почему все игнорируют 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, где эксперты меняются не каждые миллисекунды, это приемлемо.
Сборка системы: что нужно знать до покупки
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 на рынке — это бывшие майнинговые или серверные карты. Состояние разное.
При покупке проси:
- Фото термопасты (если высохла — сразу менять)
- Тест в FurMark на 10 минут (смотреть температуру)
- Проверку всех 24 ГБ памяти (memtest)
И главное — не покупай одну. Если решил использовать P40, бери две или три. Одна карта даст тебе 24 ГБ, но задержки на копирование между основной картой и P40 будут значительными. Две P40 позволят распределить экспертов между ними и уменьшить перемещения данных.
Мой прогноз: через год P40 подорожает. Потому что энтузиасты LLM поймут, что это единственный способ получить 48+ ГБ VRAM за 15 тысяч рублей. Пока остальные спорят о PCIe 5.0 (что, кстати, часто бессмысленно для MoE), умные собирают фермы из P40 и запускают модели, которые остальным и не снились.
Начинай сейчас, пока цена 5 тысяч. Через полгода будет 8. Через год — 12. Проверь.