Можно ли запустить 550B модель на старом железе? Короткий ответ
Да, можно. Гетерогенный кластер из семи AMD MI50 и пяти NVIDIA P40, объединённых через 100GbE RPC, запускает Nemotron Ultra 550B в кванте IQ3_S. На коротком контексте throughput достигает ~6 токенов в секунду, на 126 720 токенах - падает до ~1.5 токенов в секунду. Промпт-обработка длинного контекста занимает минуты, но остаётся приемлемой для офлайн-сценариев.
Суммарно 232 ГБ VRAM, распределённых по двенадцати ускорителям, вмещают модель и KV-кэш для контекста до 126 720 токенов. Это не рекордная скорость, но рабочий инференс на железе, которое стоит копейки на вторичном рынке. Статья - детальный разбор этой сборки: от выбора компонентов до бенчмарков и подводных камней.
Зачем вообще запускать 550B модель на устаревших GPU?
Облачный инференс Nemotron Ultra 550B на A100/H100 стоит $15-25 в час. Сутки непрерывной работы - $360-600. Сборка из MI50 и P40 обходится в $2500-3500 единоразово и окупается за 5-10 дней интенсивного использования. Для команд, тестирующих большие модели или обрабатывающих массивы документов, это прямая экономия.
Многие компании уже имеют парк устаревших GPU: P40 массово закупались для VDI, MI50 остались после криптобума. Запуск 550B-модели на этом железе превращает списанный балласт в полезный инструмент. Плюс образовательная ценность: сборка гетерогенного кластера через RPC даёт понимание pipeline parallelism на практике. Это не хак ради хака, а инженерное решение с измеримой выгодой.
Тема больших моделей на локальном железе активно обсуждается: можно ли запустить модели с 2+ триллионами параметров локально - вопрос, на который мы уже давали расчёты для Kimi K3 на RTX 6000 и RTX 4090. Сейчас идём дальше: показываем реальную сборку с цифрами.
Архитектура гетерогенного кластера: железо и сеть
Конфигурация: семь AMD MI50 по 16 ГБ HBM2 (112 ГБ VRAM суммарно), пять NVIDIA P40 по 24 ГБ GDDR5 (120 ГБ VRAM), сеть 100GbE через Mellanox ConnectX-4 с прямым подключением узлов. Итог - 232 ГБ видеопамяти, распределённых по двум серверам: один под MI50, второй под P40.
Модель Nemotron Ultra 550B в кванте IQ3_S занимает около 200 ГБ. Оставшиеся 32 ГБ уходят на KV-кэш и служебные структуры. При длине контекста 126 720 токенов KV-кэш разрастается до 25-28 ГБ - почти весь запас. Это предел для данной сборки.
Почему именно MI50 и P40? Сравнение с альтернативами
Выбор не случаен. MI50 даёт 1 ТБ/с пропускной способности HBM2 против 484 ГБ/с у MI25 - вдвое быстрее за те же деньги на вторичке. P40 с 24 ГБ GDDR5 выигрывает у P100 (16 ГБ) по объёму памяти, а для инференса LLM объём критичнее вычислительной мощности. K80 с 12 ГБ на чип даже не рассматривается: модель не влезет.
| Характеристика | AMD MI50 | NVIDIA P40 | NVIDIA P100 | AMD MI25 |
|---|---|---|---|---|
| VRAM | 16 ГБ HBM2 | 24 ГБ GDDR5 | 16 ГБ HBM2 | 16 ГБ HBM2 |
| Пропускная способность | 1 ТБ/с | 346 ГБ/с | 732 ГБ/с | 484 ГБ/с |
| FP16 (TFLOPS) | 26.5 | 0.18 (ограничен) | 21.2 | 25.6 |
| Цена на вторичке (2026) | $150-200 | $250-350 | $300-400 | $100-150 |
| Поддержка ROCm/CUDA | ROCm 5.x+ | CUDA 11.x+ | CUDA 11.x+ | ROCm 4.x+ |
MI50 не имеет тензорных ядер, P40 режет FP16 до 1/64 от FP32. Но для инференса LLM в квантованном формате это не критично: основные операции - умножение матриц в INT8/INT4, где оба ускорителя работают адекватно. Узкое место - пропускная способность памяти, и здесь MI50 с 1 ТБ/с выигрывает у P40 с 346 ГБ/с. Поэтому на MI50 кладутся более вычислительно плотные слои.
Программный стек и настройка RPC-соединения
Базовое ПО: llama.cpp с поддержкой RPC-бэкенда, ROCm 6.1 для MI50, CUDA 12.4 для P40. RPC-серверы поднимаются на каждом узле: один процесс на GPU, всего 12 процессов. Мастер-процесс на CPU координирует передачу тензоров между узлами через 100GbE.
Пример команды запуска RPC-сервера на узле с MI50:
./rpc-server -H 0.0.0.0 -p 50052 --no-mmap
Мастер-процесс запускается с указанием всех эндпоинтов:
./llama-cli -m nemotron-ultra-550b-IQ3_S.gguf \
-ngl 99 \
--rpc 192.168.1.10:50052,192.168.1.11:50052 \
--split-mode layer \
-t 8 \
-c 126720
Ключевой параметр - --split-mode layer. Он активирует pipeline parallelism: каждый GPU получает непрерывный блок слоёв и передаёт активации следующему. Это единственный режим, работающий в гетерогенной среде AMD+NVIDIA.
Распараллеливание по слоям: как разделить модель между GPU
Nemotron Ultra 550B имеет 96 трансформерных слоёв. Каждый слой в IQ3_S занимает около 2.1 ГБ. Распределение подбирается под объём VRAM каждого ускорителя с запасом 10% под пиковые аллокации:
- P40 (24 ГБ): по 10 слоёв на карту, всего 50 слоёв на 5 GPU. Каждый P40 загружен на ~21 ГБ из 24 ГБ.
- MI50 (16 ГБ): по 6-7 слоёв на карту, всего 46 слоёв на 7 GPU. Каждый MI50 загружен на ~13-15 ГБ из 16 ГБ.
Порядок важен: первые 50 слоёв идут на P40, следующие 46 - на MI50. Причина - эмбеддинги и выходной слой остаются на CPU (или на первом/последнем GPU), а основная масса вычислений распределяется равномерно. Задержка складывается из времени обработки слоя на каждом GPU плюс передача активаций по сети: ~0.5 мс на пересылку между узлами при 100GbE.
Эта техника перекликается с темой сплитинга, которую мы разбирали в статье про запуск DeepSeek-V4-Flash на одном B300: там узким местом оказался отказ MoE-ядра без expert parallel, здесь - последовательная природа pipeline.
Тонкая настройка: t/split, flash attention и direct I/O
t/split - разделение тензоров внутри одного слоя между несколькими GPU. В данной сборке не используется: каждый слой целиком помещается на одном ускорителе. t/split актуален, когда один слой превышает VRAM одного GPU - для 550B модели в IQ3_S это не так. Но для более жирных квантов (Q4_K_M, Q5_K_M) или больших батчей t/split станет обязательным.
Flash attention включён по умолчанию в llama.cpp для модели Nemotron. Эффект: снижение потребления памяти под attention-матрицы с O(n²) до O(n). На контексте 126 720 токенов без flash attention KV-кэш занял бы 40+ ГБ и не влез в оставшиеся 32 ГБ. С flash attention - укладывается в 25 ГБ. Без этой оптимизации длинный контекст просто недоступен.
Direct I/O (флаг --no-mmap в RPC-сервере) отключает memory-mapping модели. В сетевом сценарии mmap создаёт двойное копирование: диск → CPU → сеть → GPU. Direct I/O передаёт данные напрямую в GPU-память, экономя 15-20% времени загрузки модели при старте. На инференс не влияет, но сокращает холодный старт с 45 до 35 секунд.
Бенчмарки: производительность на разных длинах контекста
Замеры проводились на синтетическом наборе из 100 промптов разной длины. Модель генерировала 128 токенов на каждый запрос. Измерялись prompt processing (prefill) и token generation (decode) отдельно.
| Длина контекста | Prefill (токенов/с) | Decode (токенов/с) | Latency на токен (мс) | Время обработки промпта |
|---|---|---|---|---|
| 0 (пустой) | — | 6.2 | 161 | — |
| 8 192 | 185 | 5.8 | 172 | 44 сек |
| 32 768 | 142 | 4.1 | 244 | 3 мин 51 сек |
| 65 536 | 98 | 2.6 | 385 | 11 мин 09 сек |
| 126 720 | 52 | 1.5 | 667 | 40 мин 36 сек |
Prefill падает с 185 до 52 токенов/с при росте контекста в 15 раз. Причина - объём вычислений attention растёт квадратично, а суммарная вычислительная мощность кластера фиксирована. Decode проседает меньше (с 6.2 до 1.5 токенов/с), потому что на каждом шаге обрабатывается только новый токен плюс KV-кэш, но сам кэш становится больше и дольше читается из памяти.
На 126 720 токенах генерация одного токена занимает 667 мс. Это 1.5 токенов в секунду - медленно для диалогового интерфейса, но приемлемо для пакетной обработки: за час кластер выдаёт ~5400 токенов, что эквивалентно 10-12 страницам текста.
Сравнение с однородными конфигурациями и облачными инстансами
Для контекста: один A100 80 ГБ на той же модели в IQ3_S (помещается целиком) даёт 25-30 токенов/с decode на коротком контексте и 8-10 токенов/с на 126K. Облачный инстанс с A100 стоит $1.5-2/час. Сборка из MI50/P40 проигрывает в 4-5 раз по скорости, но стоит как 2-3 дня аренды A100.
Сравнение с H100 бессмысленно: один H100 80 ГБ не вмещает модель, нужно минимум три карты. Облачная конфигурация 3× H100 - $10-15/час. Наша сборка в 3-5 раз медленнее, но окупается за неделю непрерывной работы.
Цель - не побить A100, а показать viability бюджетного решения. Для команд, обрабатывающих юридические документы, научные статьи или ведущих офлайн-эксперименты с большими моделями, 1.5 токенов/с на 126K контексте - рабочий инструмент.
Вопрос выбора бэкенда для инференса тоже влияет на производительность. Мы сравнивали vLLM, LMDeploy и Triton с TensorRT-LLM - для данной сборки llama.cpp с RPC оказался единственным вариантом, поддерживающим гетерогенные GPU.
Подводные камни и ограничения
Совместимость драйверов. AMD ROCm и NVIDIA CUDA на одном физическом хосте - гарантированный конфликт. Решение: два отдельных сервера, каждый со своим типом GPU. Попытка установить оба драйвера на одну машину приводит к нестабильной работе PCIe-шин и падению производительности на 30-40%.
Синхронизация RPC. При разрыве 100GbE-соединения RPC-сервер не переподключается автоматически. Инференс падает с ошибкой, модель нужно перезагружать. За 100 часов тестов зафиксировано 3 таких инцидента - стабильность 97%. Для продакшена нужен watchdog с автоматическим рестартом.
Максимальная длина контекста. 126 720 токенов - физический предел для 232 ГБ VRAM. При попытке подать 150K токенов KV-кэш переполняет память, процесс падает с OOM. Увеличить контекст можно только добавлением GPU или переходом на более агрессивное квантование KV-кэша (FP8 вместо FP16), но llama.cpp пока не поддерживает эту опцию для Nemotron.
Энергопотребление. 7× MI50 (по 300 Вт) + 5× P40 (по 250 Вт) + два сервера (по 200 Вт) = 3 750 Вт под нагрузкой. В простое - около 800 Вт. За сутки непрерывной работы - 90 кВт·ч. При цене 5 руб/кВт·ч это 450 руб/сутки или 13 500 руб/месяц. Добавляем охлаждение: обе карты - пассивные, требуют серверного шасси с мощными вентиляторами.
Стабильность на длительных сессиях. После 6-8 часов непрерывного инференса MI50 начинают троттлить из-за перегрева HBM2 (достигает 85°C). Решение: андервольтинг через rocm-smi, снижение частоты HBM2 с 1000 до 800 МГц. Теряется 10-12% производительности, но температура держится на 75°C.
Применимость для других моделей и сценариев
Описанный подход работает для любой модели, которая помещается в суммарную VRAM кластера с учётом квантования. Llama-3-70B в Q4_K_M (~40 ГБ) запускается на двух P40 с throughput 15-20 токенов/с - почти комфортный диалоговый режим. Falcon-180B в IQ3_S (~90 ГБ) требует четырёх P40 или шести MI50, даёт 8-10 токенов/с.
Тип квантования напрямую влияет на требования к памяти. IQ3_S для Nemotron Ultra 550B - 200 ГБ. Q4_K_M - уже 260 ГБ, не влезает. Q2_K - 150 ГБ, но качество ответов падает ощутимо: модель начинает путаться в фактах и повторяться. IQ3_S - оптимальный баланс для этой сборки.
Файнтюнинг (LoRA) теоретически возможен, но не рекомендуется. Pipeline parallelism на гетерогенных GPU добавляет задержки, которые делают обучение нестабильным: градиенты рассинхронизируются, loss скачет. Для LoRA лучше подходит однородный кластер из P40 или MI50, но не их смесь.
Для тех, кто рассматривает альтернативные конфигурации, полезен наш разбор производительности GLM-5.2 на 8× GB10: там 1200 токенов/с prefill и 33-54 токенов/с decode, но цена железа на порядок выше.
Заключение: когда стоит собирать такой кластер?
Сборка из MI50 и P40 через 100GbE RPC оправдана в трёх сценариях:
- Офлайн-обработка больших документов. Прогон 500-страничного договора через 550B модель за 40 минут - приемлемо, если это разовая задача.
- Эксперименты с большими моделями. Тестирование промптов, оценка качества генерации, сравнение квантов - без почасовой оплаты облака.
- Утилизация списанного железа. Если P40 и MI50 уже есть в парке, их запуск для инференса - прямой профит.
Сборка не подходит для:
- Диалоговых интерфейсов. 1.5-6 токенов/с - пользователь будет ждать ответа десятки секунд.
- Высоконагруженных продакшн-сервисов. Один запрос блокирует весь кластер, батчинг невозможен из-за pipeline parallelism.
- Задач с жёсткими требованиями к latency. 667 мс на токен на длинном контексте исключает real-time сценарии.
Общая стоимость сборки: $1500-2000 за MI50 (7 шт.), $1500-2000 за P40 (5 шт.), $300-500 за сетевые карты и кабели, $500-800 за серверы. Итог: $3800-5300. Окупаемость при замене облачного инференса A100 - 2-3 недели непрерывной работы. Дальше - чистая экономия.
Главный вывод: устаревшие GPU не бесполезны. Правильная архитектура с RPC и pipeline parallelism превращает их в рабочий инструмент для инференса моделей масштаба 550B параметров. Не быстро, но стабильно и дёшево.