PowerInfer
Гибридный вывод LLM на CPU/GPU, использующий локальность активации — запускайте модели с 70 млрд параметров на одном потребительском GPU, интеллектуально распределяя вычисления между CPU и GPU.
🌟 8 000+ звезд на GitHub | Разработано в SJTU IPADS | Лицензия MIT
Что такое PowerInfer?
PowerInfer — это высокопроизводительный движок вывода для больших языковых моделей, использующий ключевое наблюдение: LLM демонстрируют сильную локальность активации — небольшая подмножество нейронов («горячие нейроны») постоянно активируется на большинстве шагов вывода, тогда как большинство остаются неактивными.
PowerInfer использует это свойство, чтобы:
Оставлять горячие нейроны на GPU для быстрого вычисления
Выгружать холодные нейроны на CPU/RAM без существенной потери качества
Динамически направлять вычисления между CPU и GPU на основе шаблонов активации
Итог: вы можете запускать модель 70B всего с 16 ГБ VRAM вместо требования 140+ ГБ, полностью размещенных на GPU.
Ключевые возможности
Поддержка потребительских GPU — RTX 3090/4090 могут запускать модели 70B
Планирование с учетом нейронов — предиктор определяет маршрутизацию на CPU или GPU для каждого запуска вывода
Минимальное ухудшение качества — сохраняет >95% качества полной точности
Совместимость с llama.cpp — поддержка формата GGUF
Выгрузка на CPU с учетом NUMA — оптимизировано для CPU с большим числом ядер
Зачем использовать PowerInfer на Clore.ai?
Clore.ai сдает GPU в аренду значительно дешевле, чем облачные альтернативы. С PowerInfer:
Запускайте Llama 2 70B на одном RTX 4090 (24 ГБ VRAM)
Сократите расходы на аренду GPU по сравнению с многопроцессорными конфигурациями
Обрабатывайте длинные окна контекста, используя RAM CPU как буфер переполнения
Запускайте модели, для которых раньше требовались дорогие инстансы A100/H100
Требования к оборудованию
7B
4 ГБ
16GB
Отлично
13B
6 ГБ
32GB
Очень хорошо
34B
12GB
64GB
Хорошо
70B
16GB
128 ГБ
Умеренная
Быстрый старт на Clore.ai
Шаг 1: выберите ваш сервер
На маркетплейсе clore.ai отфильтруйте по:
GPU NVIDIA с 16 ГБ+ VRAM (RTX 3090, RTX 4090, A100)
Высокое число ядер CPU (идеально 16+ ядер)
64 ГБ+ RAM для моделей 70B, 32 ГБ для моделей 13B
Шаг 2: создайте собственный Docker-образ
PowerInfer требует собственной настройки Docker. Используйте этот Dockerfile:
Соберите и отправьте в Docker Hub или используйте встроенно с Clore.ai:
Шаг 3: разверните на Clore.ai
В вашем заказе на Clore.ai укажите:
Docker-образ:
yourname/powerinfer:latestПорты:
22(SSH)Окружение:
NVIDIA_VISIBLE_DEVICES=all
Сборка PowerInfer из исходного кода
Если предпочитаете собирать внутри контейнера:
Проверка сборки
Получение моделей
Скачайте модели GGUF
PowerInfer использует формат GGUF (тот же, что и llama.cpp):
Создание предиктора нейронов (требуется для PowerInfer)
PowerInfer нужен предиктор активации нейронов для каждой модели. Это ключевое отличие от llama.cpp:
Время генерации предиктора: Создание предиктора нейронов может занять 30–60 минут в зависимости от размера модели. Это одноразовая операция — предиктор используется повторно при последующих запусках.
Запуск вывода
Базовый вывод (без предиктора)
Для тестирования без генерации предиктора (стандартное разделение на GPU/CPU):
Режим PowerInfer (с предиктором)
Полный режим PowerInfer с маршрутизацией с учетом нейронов:
Интерактивный режим чата
Режим сервера (API, совместимый с OpenAI)
Оптимизация разделения слоев на GPU
Параметр --gpu-layers определяет, сколько слоев трансформера держать на GPU. Настраивайте это в зависимости от вашей VRAM:
Руководство по распределению слоев:
8 ГБ
Все (32)
20 слоев
10 слоев
4 слоя
16GB
Все (32)
Все (40)
25 слоев
10 слоев
24 ГБ
Все (32)
Все (40)
Все (60)
20 слоев
48 ГБ
Все (32)
Все (40)
Все (60)
Все (80)
Бенчмарки производительности
Сравнение пропускной способности (Llama 2 70B, RTX 3090)
llama.cpp (только GPU)
20/80
~4 t/s
llama.cpp (только CPU)
0/80
~1 t/s
PowerInfer
20/80 + предиктор
~12 t/s
Ускорение в 3 раза по сравнению со стандартным llama.cpp при выводе больших моделей на потребительских GPU — типичный результат благодаря планированию PowerInfer с учетом нейронов.
Запуск как службы
Создайте systemd-службу для постоянного обслуживания API:
Использование API
После запуска сервера используйте любой клиент, совместимый с OpenAI:
Устранение неполадок
Недостаточно памяти CUDA
Медленный вывод на CPU
Сборка не удается
Распространенная проблема: Если cmake не может найти CUDA, задайте переменную окружения CUDA_HOME следующим образом: export CUDA_HOME=/usr/local/cuda до запуска cmake.
Рекомендации по GPU для Clore.ai
Гибридная CPU/GPU-конструкция PowerInfer меняет экономику запуска больших моделей. Серверы Clore.ai с GPU с большим объемом VRAM И быстрыми CPU — идеальный вариант.
RTX 3090
24 ГБ
$0.07–0.21/ч
70B (с 64 ГБ+ RAM)
~8–12 ток/с
RTX 4090
24 ГБ
$0.14–0.42/ч
70B (более быстрое выгружение на CPU)
~12–18 ток/с
CPU важен не меньше, чем GPU: PowerInfer выгружает «холодные» нейроны на CPU. Серверы Clore.ai с процессорами AMD EPYC или Intel Xeon (много ядер, высокая пропускная способность памяти) будут значительно превосходить односокетные потребительские CPU. Перед арендой для работы с большими моделями проверьте характеристики сервера.
Узкое место пропускной способности памяти: Для моделей 70B пропускная способность RAM CPU является ограничивающим фактором во время вычисления холодных нейронов. Серверы с DDR5 ECC RAM или архитектурами, близкими к HBM, покажут лучшую производительность.
Ресурсы
🐙 GitHub: github.com/SJTU-IPADS/PowerInfer
📄 Научная статья: PowerInfer: Fast Large Language Model Serving with a Consumer-grade GPU
🤗 Модели GGUF: huggingface.co/TheBloke
🧩 Лаборатория SJTU IPADS: ipads.se.sjtu.edu.cn
Последнее обновление
Это было полезно?