Для локального запуска DeepSeek-Coder V3/R1 (Q4_K_M quantised) требуется всего 14 ГБ оперативной памяти.
рефераты
10 февраля 2025 г.: Поддержка DeepseekR1 и V3 на одном GPU (24 ГБ RAM) / нескольких GPU и 382 ГБ RAM, ускорение до 3-28x.
Приветствую всех от команды KTransformers (ранее известной как команда CPU/GPU Hybrid Inference Open Source Project, известная по DeepSeek-V2).
KTransformers Команда получала запросы на поддержку DeepSeek-R1/V3 и очень рада сообщить, что она наконец-то реализована!
Извините за ожидание, но команда KTransformers готовит нечто поистине удивительное!
Сегодня команда KTransformers с гордостью объявляет не только о поддержке DeepSeek-R1/V3, как показано в видео ниже:
https://github.com/user-attachments/assets/ebd70bfa-b2c1-4abb-ae3b-296ed38aa285
- [Updated!!!!] Local 671B DeepSeek-Coder-V3/R1. Версия Q4_K_M работает только с 14 ГБ видеопамяти и 382 ГБ оперативной памяти.
- Скорость пополнения (жетонов/с).
- KTransfermor: 54.21 (32 ядра) → 74.362 (двойной путь, 2×32 ядра) → 255.26 (оптимизированное ядро MoE на базе AMX, только V0.3) → 286.55 (выборочное использование 6 экспертов, только V0.3)
- вместе с llama.cpp достигла 10,31 токенов/с при 2×32 ядрах по сравнению с Ускорение в 27,79 раз.
- Скорость декодирования (токены/с).
- KTransfermor: 8,73 (32 ядра) → 11,26 (двойное, 2×32 ядра) → 13,69 (выборочное использование 6 экспертов, только V0.3)
- По сравнению с llama.cpp, работающим со скоростью 4,51 токенов/с на 2×32 ядрах, это достигает Ускорение 3,03x.
- Скорость пополнения (жетонов/с).
Команда KTransformers также представила предварительный обзор грядущих оптимизаций, включая ускоренное ядро Intel AMX и селективные методы активации экспертов, которые значительно повысят производительность. В V0.3-preview предварительное заполнение достигает 286 токенов/с, что быстрее, чем llama.cpp для нативных выводов! 28 раз.
Бинарный дистрибутив уже доступен, а исходный код будет выпущен как можно скорее!Посмотреть комплекты колес можно здесь.
Условия подготовки
Команда KTransformers провела тесты на лучшую производительность (V0.2) на следующих конфигурациях:
Процессор: Intel (R) Xeon (R) Gold 6454S 1T RAM (2 узла NUMA)
Графический процессор: 4090D 24 Гб видеопамяти
Память: стандартная серверная память DDR5-4800 (1 ТБ)
Результаты бенчмаркинга
V0.2
устанавливать
- Модель: DeepseekV3-q4km (int4)
- CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 32 ядра на путь, 2 пути, 2 узла numa
- Графический процессор: 4090D 24 Гб видеопамяти
- Тестирование команды KTransformers после полной разминки
Потребление памяти.
- Одиночный: 382 Гб ОЗУ, не менее 14 Гб VRAM
- Двойной: 1 Тб ОЗУ, не менее 14 Гб VRAM
Результаты бенчмаркинга
Сценарий "6 экспертов" является частью предварительной версии V0.3.
| Prompt
(500 жетоны) | Двойной Ктранс (6 экспертов) | Двойной Ктранс (8 экспертов) | Одиночные ктраны (6 экспертов) | Единый Ктранс (8 экспертов) | llama.cpp (8 экспертов) |
---|---|---|---|---|---|
Предварительное заполнение токена/ов | 97.32 | 82.94 | 65.14 | 54.21 | 10.31 |
Декодирование маркера/ов | 13.69 | 12.208 | 10.303 | 8.73 | 4.51 |
Увеличение скорости декодирования до 3,03 разаМаксимальное увеличение скорости предварительного заполнения 9.44 раз. Похоже, что KTransformers не так хорош в плане ускорения декодирования, как pre-populated, и есть еще много возможностей для оптимизации декодирования.
V0.3-Preview
устанавливать
- Модель: DeepseekV3-BF16 (онлайн квантован как int8 для CPU, int4 для GPU)
- CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 32 ядра на путь, 2 пути, 2 узла numa
- GPU: (1~4)x 4090D 24GVRAM (для более длинных подсказок требуется больше памяти)
Потребление памяти.
- 644 ГБ оперативной памяти, не менее 14 ГБ графической памяти
Результаты бенчмаркинга
Длина подсказки | 1K | 2K | 4K | 8K |
---|---|---|---|---|
KTrans (8 экспертов) Предварительное заполнение жетонов/с | 185.96 | 255.26 | 252.58 | 195.62 |
KTrans (6 экспертов) Предварительное заполнение жетонов/с | 203.70 | 286.55 | 271.08 | 207.20 |
KTrans V0.3 работает быстрее, чем KTrans V0.2, при предварительном заполнении. 3,45 разЭто быстрее, чем llama.cpp. 27.79 раз. Такое увеличение скорости предварительной заливки действительно впечатляет, и похоже, что KTransformers приложила немало усилий для оптимизации предварительной заливки.
Скорость декодирования такая же, как у KTrans V0.2 (версия для 6 экспертов), поэтому она опущена. Похоже, что в версии V0.3 основное внимание уделяется улучшению скорости предварительного заполнения.
Основное ускорение происходит за счет
- Набор инструкций Intel AMX и удобная для кэш-памяти компоновка, разработанная командой KTransformers
- Стратегия выбора экспертов для выбора меньшего числа экспертов на основе результатов профилирования вне домена
По словам команды KTransformers для DeepSeekV2, DeepSeekV3 и DeepSeekR1.
При небольшом уменьшении числа экспертов, задействованных в выводе, в результате
Качество вывода не меняется. Но скорость декодирования и предварительного заполнения
ускорится, что не может не радовать. Поэтому демоверсия команды KTransformers использует этот вывод. Похоже, что "стратегия выбора экспертов" - это ключ к ускорению, но как сделать так, чтобы качество результатов не ухудшилось, требует дополнительных испытаний и проверок.
Как это работает
V0.2 Demo
Однопутевая версия (32 ядра)
Команда KTransformers local_chat
Тестовая команда:
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
numactl -N 1 -m 1 python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 33 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
может быть локальным путем или путем, заданным из онлайн-обнималки, например, deepseek-ai/DeepSeek-V3. Если у вас возникли проблемы с подключением в сети, попробуйте использовать зеркало (hf-mirror.com).
также может быть онлайн-путем, но поскольку он большой, команда KTransformers рекомендует загрузить его и квантовать модель в нужный вам формат!
команда numactl -N 1 -m 1
Разработан, чтобы избежать передачи данных между узлами NUMA
Версия с двумя путями (64 ядра)
Перед установкой (с помощью install.sh или make dev_install
), через export USE_NUMA=1
Установка переменных окружения USE_NUMA=1
(Если он уже установлен, переустановите его, установив эту переменную окружения)
Команда KTransformers local_chat
Тестовая команда:
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
export USE_NUMA=1
make dev_install # or sh ./install.sh
python ./ktransformers/local_chat.py --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 65 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
параметр имеет то же значение. Однако, поскольку команда KTransformers использует двухстороннюю связь, это будет cpu_infer
Установить на 65
V0.3 Demo
Версия с двумя путями (64 ядра)
Команда KTransformers local_chat
Тестовая команда:
wget https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
pip install ./ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
python -m ktransformers.local_chat --model_path <your model path> --gguf_path <your gguf path> --prompt_file <your prompt txt file> --cpu_infer 65 --cache_lens 1536
<当看到 chat 时,按 Enter 键加载文本 prompt_file>
Значение параметров такое же, как и в V0.2. Однако, поскольку команда KTransformers использует двойной путь, то cpu_infer
Установить на 65
Некоторые объяснения
- Команда KTransformers также хотела дополнительно задействовать два узла NUMA процессора Xeon Gold.
Чтобы избежать затрат на передачу данных между узлами, команда KTransformers
Матрица ключей "копируется" на оба узла, что потребляет больше памяти, но ускоряет процесс предварительного заполнения и декодирования.
Однако этот метод использует много памяти и медленно загружает грузы, поэтому наберитесь терпения, пока он загрузится!
Команда KTransformers будет оптимизировать эту огромную нагрузку на память. Оставайтесь с нами~ Такое "копирование" матрицы может ускорить процесс, но занимаемая память - это реальная проблема, поэтому мы с нетерпением ждем, что команда KTransformers придумает в будущем. - параметр команды
--cpu_infer 65
Укажите количество используемых ядер (можно использовать большее количество ядер, чем физическое, при этом
Но больше - не значит лучше. Просто установите значение чуть меньше реального количества ядер) - Зачем нужен гибридный вывод на основе CPU/GPU?
DeepSeek Алгоритм MLA требует больших вычислительных затрат. Хотя их можно выполнять полностью на CPU, перегрузка тяжелых вычислений на GPU может значительно повысить производительность. Если CPU выполняет экспертные вычисления, а GPU - MLA/KVCache, эта гибридная стратегия вывода выглядит разумно, используя все преимущества как CPU, так и GPU. - Откуда берется прирост скорости?
- Выгрузка экспертов: в отличие от традиционной выгрузки на основе слоев или KVCache (как в llama.cpp), команда KTransformers выгружает экспертные вычисления на CPU, а MLA/KVCache - на GPU, что идеально подходит для оптимальной эффективности архитектуры DeepSeek.
- Оптимизация Intel AMX - Ядро команды KTransformers с ускорением AMX было тщательно настроено, чтобы работать в несколько раз быстрее, чем существующая реализация llama.cpp. Команда KTransformers планирует открыть исходный код этого ядра после очистки и рассматривает возможность внесения кода в upstream llama.cpp. AMX Добавление набора инструкций AMX, похоже, является одним из ключевых факторов ускорения KTransformers.
- Почему именно процессоры Intel?
В настоящее время Intel является единственным производителем процессоров, поддерживающих что-то вроде инструкции AMX, которая обеспечивает значительно более высокую производительность, чем альтернатива только AVX. Похоже, что процессоры Intel - это то, что нужно, когда речь идет о максимальной производительности KTransformers.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...