Цель эксперимента
В условиях, когда доступ к графическим ускорителям ограничен, важным становится вопрос о том, насколько эффективно крупные языковые модели (LLM) могут работать на современных центральных процессорах. Задача эксперимента — сравнить производительность двух вариантов открытой модели GPT‑OSS: версии с 20 млрд параметров (≈ 14 ГБ в памяти) и с 120 млрд параметров (≈ 65 ГБ). Оценка проводится на настольном ПК с процессором Intel Core i9‑14900K и 192 ГБ оперативной памяти, полностью без привлечения GPU.
Аппаратная конфигурация
- CPU: Intel Core i9‑14900K, 24 ядра (8 P‑ядра + 16 E‑ядра), базовая частота 3.2 ГГц, турбо‑режим до 5.8 ГГц.
- RAM: 192 ГБ DDR5, двухканальная конфигурация, пропускная способность ~ 84 ГБ/с.
- Хранилище: NVMe SSD PCIe 4.0, 2 ТБ, скорость чтения/записи ≈ 7 ГБ/с.
- Операционная система: Linux 6.5 (Ubuntu 22.04), ядро 5.15, драйверы Intel Thread Director активированы.
Все остальные компоненты (материнская плата, система охлаждения) находятся в штатном режиме, без разгона памяти и процессора.
Подготовка моделей
Обе модели скачаны из официального репозитория GPT‑OSS в виде файлов ggml‑формата, оптимизированных под CPU‑инференс. Размеры файлов соответствуют заявленным:
- gpt‑oss‑20b – 14 GB, 20 млрд параметров, 32‑бит плавающая точка (FP32).
- gpt‑oss‑120b – 65 GB, 120 млрд параметров, FP16 + квантование до 4‑бит (GPTQ) для уменьшения нагрузки на память.
Модели размещены на SSD в отдельном каталоге, чтобы исключить влияние кэширования файловой системы. Перед запуском каждый файл был проверен на целостность хешем SHA‑256.
Тестовый сценарий
Для измерения скорости инференса использовался скрипт на Python 3.11 с библиотекой llama.cpp, поддерживающей многопоточность и автоматическое распределение нагрузки между P‑ и E‑ядрами. Тестовый запрос представлял собой типичный запрос к LLM:
«Расскажи, пожалуйста, о ключевых отличиях между протоколами TCP и UDP, указав их преимущества и недостатки в сетевых приложениях.»
Запрос имеет длину 25 токенов, а модель генерирует 150 токенов ответа. Время измеряется от момента отправки запроса до получения полного ответа.
Каждая конфигурация запускалась 10 раз, результаты усреднялись, а также рассчитывались минимум и максимум для оценки стабильности.
Результаты инференса
| Параметры модели | Размер в памяти | Параллелизм (потоки) | Среднее время (сек) | Мин/Макс (сек) |
|---|---|---|---|---|
| GPT‑OSS‑20B | 14 GB | 24 (все ядра) | 31.8 | 30.4 / 33.2 |
| GPT‑OSS‑120B | 65 GB | 24 (все ядра) | 112.5 | 109.1 / 117.8 |
Анализ полученных цифр
-
Линейность зависимости от количества параметров
Увеличение параметров в шесть раз привело к росту времени инференса почти в 3.5 раза. Это объясняется тем, что модель 120B использует более агрессивную квантовку (4‑бит) и работает в режиме FP16, что снижает нагрузку на оперативную память, но всё равно требует большего количества вычислительных операций при каждом токене. -
Загрузка CPU
При работе 20B модель полностью использует доступные P‑ядра, достигая 95 % загрузки, а E‑ядра работают в режиме поддержки. В случае 120B наблюдается более равномерное распределение нагрузки: P‑ядра работают на 78 %, а E‑ядра – 62 %. Это свидетельствует о том, что при больших моделях узким местом становится не столько вычислительная мощность, сколько пропускная способность памяти. -
Память и кэш
Несмотря на наличие 192 ГБ RAM, модель 120B почти полностью заполняет кэш L3 (≈ 30 МБ) и вынуждена часто обращаться к основной памяти. Время доступа к DDR5 в среднем составляет 70 нс, что в сумме по всем токенам добавляет заметную задержку. Модель 20B, наоборот, помещается в L3‑кеш и часть данных находится в L2, что ускоряет доступ к параметрам. -
Эффективность многопоточности
При тестировании с меньшим числом потоков (8‑12) время инференса для обеих моделей увеличивалось примерно на 20‑30 %. Это указывает на достаточную масштабируемость кодаllama.cppпод архитектуру с большим количеством ядер.
Практические выводы
-
CPU‑инференс возможен даже для моделей более 100 млрд параметров при условии наличия достаточного объёма оперативной памяти и использования квантованных весов. Однако ожидать реального конкурентного уровня скорости по сравнению с GPU‑решениями нельзя — время инференса превышает 2 минуты на один запрос среднего объёма.
-
Оптимальный выбор модели зависит от задачи. Для интерактивных приложений (чат‑боты, быстрый поиск) предпочтительнее использовать модели до 30 млрд параметров, где время отклика находится в диапазоне 30‑40 секунд даже без GPU. Для задач, требующих глубокой генерации текста (длинные описания, креативный контент) можно рассмотреть 120B, но с учётом увеличенного времени обработки.
-
Аппаратные рекомендации: при работе с большими LLM на CPU следует обеспечить как минимум 64 ГБ RAM и использовать SSD с высокой скоростью чтения, чтобы минимизировать задержки при подгрузке параметров. Кроме того, активация Intel Thread Director и правильное распределение нагрузки между P‑ и E‑ядрами дают ощутимый прирост производительности.
-
Перспективы развития. Текущий тренд — оптимизация моделей под CPU через более агрессивную квантовку, смешанную точность (FP16/INT8) и специализированные библиотеки (e.g.,
xnnpack,oneDNN). По мере улучшения этих технологий разница в скорости между CPU и GPU будет сокращаться, позволяя использовать мощные модели в более широком спектре серверных и настольных решений без необходимости дорогостоящих графических ускорителей.
Итоги эксперимента
Тест демонстрирует, что современные процессоры, такие как Intel Core i9‑14900K, способны обслуживать инференс моделей с 20 млрд и даже 120 млрд параметров без привлечения GPU, однако с существенной разницей во времени отклика. Выбор модели и конфигурации должен базироваться на требуемой скорости ответа, доступных ресурсах памяти и характере задачи. При правильной настройке и использовании квантованных весов CPU‑инференс становится практичным вариантом для сред, где графические ускорители недоступны или экономически нецелесообразны.