Перейти к основному контенту

Учебник по KTransformers: локальный запуск GLM-5.3-Flash

Запустите гигантскую MoE-модель локально, комбинируя VRAM GPU, системную RAM, SGLang и KTransformers для гетерогенного вывода на CPU и GPU.
Обновлено 6 окт. 2026 г.  · 11 мин читать

Исследуйте с ИИ

ChatGPTClaudePerplexity

KTransformers — это фреймворк для инференса с открытым исходным кодом, который позволяет CPU и GPU активно выполнять разных экспертов во время инференса, так что вы можете запускать модели Mixture-of-Experts (MoE), значительно превышающие объём памяти вашего GPU. Такие фреймворки, как vLLM, тоже могут выгружать веса в память CPU, но KTransformers изначально спроектирован вокруг разреженной структуры MoE-моделей.

В этом руководстве мы используем KTransformers и SGLang, чтобы запустить GLM-5.3-Flash — модель на 320 млрд параметров, чьи веса не помещаются в 192 ГБ VRAM. Мы проследим за использованием памяти CPU и GPU, поэкспериментируем с размещением экспертов, проверим совместимый с OpenAI API и подключим модель к Pi в роли локального код-агента.

Главная идея проста: вместо того чтобы рассматривать память CPU как «переполнение», KTransformers использует и вычисления на CPU, и вычисления на GPU во время инференса.

Коротко

  • KTransformers запускает большие MoE-модели, распределяя их между VRAM GPU и системной RAM: CPU вычисляет экспертов, которые остаются в RAM.
  • Родные FP8-веса GLM-5.3-Flash занимают около 306 GiB, поэтому в официальном руководстве рекомендуется минимум 350 ГБ доступной системной памяти.
  • Мы запустили полную модель на 2× RTX PRO 6000 (в сумме 192 ГБ VRAM) с контекстом 32K примерно на скорости 11 токенов в секунду.
  • Сервер предоставляет совместимый с OpenAI API, поэтому такие код-агенты, как Pi, могут использовать модель напрямую.

Что такое KTransformers?

KTransformers — это фреймворк инференса с открытым кодом для запуска очень больших языковых моделей с использованием комбинации VRAM GPU и RAM CPU. Обычно для обслуживания крупной модели приходится загружать большинство её весов в память GPU, что быстро становится дорого для модели масштаба GLM-5.3-Flash.

KTransformers предлагает другой подход: он хранит многие веса экспертов MoE в системной памяти и резервирует память GPU для тех частей инференса, которые сильнее выигрывают от ускорения на GPU.

Это хорошо работает для MoE-моделей, потому что не каждый эксперт используется для каждого токена. У GLM-5.3-Flash, например, 288 маршрутизируемых экспертов, но роутер выбирает только 8 из них (плюс 1 общий эксперт) для каждого токена. Поэтому KTransformers может распределять вычисления экспертов между CPU и GPU:

Схема работы KTransformers: эксперты MoE разделены между CPU и GPU

Как KT-Kernel и SGLang работают вместе

Текущий стек KTransformers интегрирует KT-Kernel с SGLang для гетерогенного инференса на CPU и GPU. Каждый компонент отвечает за свою часть:

  • SGLang обеспечивает рантайм сервинга: API-запросы, батчинг, планирование запросов, управление KV-кэшем и параллелизм на GPU.
  • KT-Kernel заменяет стандартный путь исполнения MoE на исполнение экспертов с учётом CPU и GPU. Выбранные эксперты работают на GPU, остальные остаются в памяти CPU и вычисляются на CPU.

KTransformers также поддерживает изменение размещения экспертов в зависимости от профиля нагрузки, как описано в его руководстве по планированию экспертов.

Иными словами, KTransformers рассматривает память CPU и память GPU как единую систему инференса вместо того, чтобы требовать полного размещения модели в VRAM. Это и позволяет запускать очень большие MoE-модели на оборудовании с куда меньшим объёмом GPU-памяти, чем обычно требуется.

Что такое GLM-5.3-Flash?

GLM-5.3-Flash — открытая мультимодальная MoE-модель от Z.ai, выпущенная под лицензией MIT в августе 2026 года. Несмотря на название «Flash», это крупная модель: всего 320 млрд параметров, из них около 18 млрд активны на токен.

Характеристики, важные для локального инференса:

  • Эксперты: 288 маршрутизируемых экспертов с top-8 роутингом плюс 1 общий эксперт
  • Веса: около 306 GiB для официального FP8-чекпойнта (zai-org/GLM-5.3-Flash)
  • Окно контекста: до 1 млн токенов
  • Ввод: текст, изображения и видео; поддержка рассуждений и вызова инструментов

KTransformers читает официальные FP8-веса напрямую, так что конвертация или дополнительная квантизация не требуются. За бенчмарками и полным обзором модели обращайтесь к нашему гайду по GLM-5.3-Flash.

Требования к оборудованию для GLM-5.3-Flash

Для GLM-5.3-Flash вопрос оборудования в основном упирается в объём системной RAM. В официальном руководстве KTransformers по GLM-5.3-Flash рекомендуется резервировать не менее 350 ГБ доступной системной памяти.

Рекомендуемая конфигурация: 2× RTX PRO 6000

В этом руководстве мы используем инстанс RunPod со следующими параметрами примерно:

GPU:         2× RTX PRO 6000
VRAM:        96 GB each
Total VRAM:  192 GB

System RAM:  350 GB+
Storage:     500 GB+
Python:      3.11

Запуск pod в RunPod с 2× RTX PRO 6000

Официальный FP8-чекпойнт GLM-5.3-Flash занимает примерно 306 GiB (около 329 ГБ), тогда как наши две GPU вместе дают 192 ГБ VRAM. Полная модель, следовательно, не может быть просто загружена целиком в память GPU.

Вместо этого KTransformers держит значительную часть весов MoE в системной RAM и переносит на GPU наиболее полезные вычисления. Рекомендация в 350 ГБ оставляет достаточно места и под веса модели, и под накладные расходы на рантайм.

Больше памяти GPU не отменяет необходимость RAM в этой схеме. Память CPU — осознанная часть гетерогенного дизайна инференса KTransformers: веса экспертов остаются в RAM, а GPU обрабатывает части модели, которые сильнее выигрывают от ускорения.

Текущая реализация GLM-5.3-Flash также предъявляет требования к CPU и GPU:

  • GPU: архитектуры NVIDIA SM89 или SM120, что включает серии RTX 40, RTX 50 и рабочие карты Blackwell, такие как RTX PRO 6000.
  • CPU: поддержка AVX-512, на которой основан FP8-ядро экспертов на CPU.

Можно ли запустить GLM-5.3-Flash на одном GPU?

Да, при наличии достаточной системной RAM и поддерживаемого CPU. В официальном руководстве есть конфигурация для одного GPU с параметром --kt-num-gpu-experts 0, при котором эксперты MoE обрабатываются на стороне CPU.

Мы используем здесь два RTX PRO 6000, но это не жёсткое минимальное требование. Второй GPU даёт больше VRAM и запас при экспериментах с относительно новой реализацией KTransformers, а не тонкую подгонку под наименьшую возможную конфигурацию, способную запустить модель.

Шаг 1. Установка KTransformers с SGLang

Создайте чистое окружение Python 3.11 и установите KTransformers с поддержкой SGLang:

python3.11 -m venv /workspace/kt
source /workspace/kt/bin/activate

pip install --upgrade pip
pip install "ktransformers[sglang]"

Проверьте, что KTransformers, KT-Kernel, SGLang и CUDA определяются корректно:

kt version

Вы должны увидеть примерно такой вывод:

KTransformers CLI v0.7.0.post4

Python      3.11.13
Platform    Linux 6.8.0-136-generic
CUDA        13.0

Packages:
kt-kernel   0.7.0.post4
sglang-kt   0.7.0.post4

Это подтверждает, что рантайм KTransformers и его бэкенд SGLang установлены и готовы к использованию.

Шаг 2. Загрузите GLM-5.3-Flash из Hugging Face

Перед запуском сервера скачайте официальный чекпойнт GLM-5.3-Flash с Hugging Face:

hf download zai-org/GLM-5.3-Flash \
  --local-dir /workspace/GLM-5.3-Flash

Загрузка модели zai-org/GLM-5.3-Flash из Hugging Face

Чекпойнт весит около 306 GiB, так что загрузка может занять время в зависимости от пропускной способности сети.

Затем укажите KTransformers локальный путь к модели:

export MODEL_PATH=/workspace/GLM-5.3-Flash

Шаг 3. Запустите сервер GLM-5.3-Flash с SGLang

Теперь запустите GLM-5.3-Flash с тензорным параллелизмом по двум направлениям, используя обе RTX PRO 6000. Модель поддерживает до 1 млн токенов контекста, а в официальных примерах используется проверенная конфигурация на 501 025 токенов. Мы начнём с окна контекста 32K, чтобы сохранить предсказуемое использование памяти на этапе тестирования.

CUDA_VISIBLE_DEVICES=0,1 \
python -m sglang.launch_server \
  --model-path "$MODEL_PATH" \
  --kt-weight-path "$MODEL_PATH" \
  --served-model-name GLM-5.3-flash \
  --host 0.0.0.0 \
  --port 30000 \
  --tp-size 2 \
  --context-length 32768 \
  --max-total-tokens 32768 \
  --mem-fraction-static 0.85 \
  --chunked-prefill-size 2048 \
  --kt-method FP8 \
  --kt-cpuinfer 64 \
  --kt-threadpool-count 2 \
  --kt-num-gpu-experts 14 \
  --kt-gpu-prefill-token-threshold 2048 \
  --kt-expert-placement-strategy uniform \
  --cuda-graph-bs 1 2 4 \
  --enable-p2p-check \
  --tool-call-parser glm47 \
  --reasoning-parser glm45

Запуск модели zai-org/GLM-5.3-Flash с SGLang и KTransformers

Эта конфигурация публикует модель через совместимый с OpenAI сервер SGLang на порту 30000. Два GPU используются с параметром --tp-size 2, тогда как KTransformers оставляет часть нагрузки MoE на CPU и размещает выбранных экспертов на GPU.

Настройки здесь намеренно консервативны для первого запуска: контекст 32K, 85% статического использования памяти GPU, 14 экспертов на GPU и 64 CPU-потока для инференса. После стабилизации сервера можно поэкспериментировать с большим окном контекста, большим числом экспертов на GPU или другими настройками памяти для увеличения пропускной способности.

Ключевые флаги запуска KTransformers

Большинство флагов выше — стандартные параметры SGLang. Вот те, что управляют тем, как KTransformers делит работу между CPU и GPU:

Флаг Значение Что делает
--kt-method FP8 Задаёт точность весов экспертов, соответствующую родному FP8-чекпойнту GLM-5.3-Flash.
--kt-cpuinfer 64 Количество CPU-потоков для вычислений экспертов.
--kt-threadpool-count 2 Число пулов потоков на CPU, обычно соответствует количеству NUMA-узлов.
--kt-num-gpu-experts 14 Количество экспертов на слой MoE, размещаемых на GPU.
--kt-expert-placement-strategy uniform Как выбираются GPU-эксперты. Другие варианты: frequency, front-loading и random.
--kt-gpu-prefill-token-threshold 2048 Длина промпта, после которой префилл переключается на послойный путь на стороне GPU.

Шаг 4. Проверьте выгрузку на CPU/GPU и размещение экспертов

Теперь, когда сервер работает, можно проверить, как KTransformers использует VRAM GPU и системную RAM, а затем изменить число экспертов на GPU и посмотреть, как меняются использование ресурсов и производительность.

На RunPod команда free -h может вводить в заблуждение, потому что контейнер может видеть общую RAM хоста, а не только память, доступную поду. Лучше мониторить память GPU и память контейнера отдельно.

Мониторинг использования VRAM GPU

Откройте новый терминал и наблюдайте за использованием GPU:

watch -n 1 nvidia-smi

Мониторинг использования VRAM при запуске GLM-5.3-Flash с KTransformers

С текущей конфигурацией полностью загруженная модель использует примерно 48 ГБ на каждый GPU, оставляя значительный запас VRAM. Это намекает на возможность разместить больше экспертов на GPU или протестировать конфигурацию с одним GPU при достаточном объёме системной RAM.

Мониторинг RAM контейнера на RunPod

Для RAM контейнера читайте счётчики памяти cgroup напрямую:

watch -n 1 'echo -n "Used: "; awk "{printf \"%.1f GiB\n\", \$1/1024/1024/1024}" /sys/fs/cgroup/memory.current; echo -n "Limit: "; awk "{printf \"%.1f GiB\n\", \$1/1024/1024/1024}" /sys/fs/cgroup/memory.max'

Мониторинг использования системной памяти контейнера на RunPod

Вы увидите, что значительная часть доступной системной RAM занята весами модели и экспертами на стороне CPU. Это ожидаемо: KTransformers намеренно держит многих экспертов MoE в RAM, вместо того чтобы требовать их размещения в VRAM.

Тонкая настройка --kt-num-gpu-experts

Далее перезапустите сервер с разными значениями --kt-num-gpu-experts. Например, сравните:

0
10
20

--kt-num-gpu-experts управляет тем, сколько экспертов на слой MoE размещается на GPU. При значении 0 вычисления экспертов остаются на стороне CPU; увеличение значения переносит больше экспертов в память GPU.

Для каждой конфигурации сравните использование VRAM GPU, использование RAM контейнера, токенов в секунду и время до первого токена. В целом, большее число экспертов на GPU потребляет больше VRAM, но уменьшает объём вычислений экспертов на CPU, что может повысить производительность инференса при наличии достаточного объёма VRAM.

Одна оговорка из официального руководства: при включённом Layerwise Prefill для GLM-5.3-Flash текущая реализация нормализует число резидентных экспертов на GPU к нулю. Если использование VRAM почти не меняется между запусками, вероятно, дело в этом.

Этот эксперимент показывает ключевое преимущество KTransformers: RAM CPU и VRAM GPU становятся настраиваемыми частями одной системы инференса, так что вы можете менять размещение памяти ради скорости, а не требовать полного размещения всей MoE-модели на GPU.

Шаг 5. Тест совместимого с OpenAI API

Когда сервер запущен, можно убедиться, что модель доступна, и отправить реальный запрос через совместимый с OpenAI API SGLang.

Сначала проверьте, что модель зарегистрирована:

curl http://localhost:30000/v1/models

Затем отправьте тестовый промпт:

curl http://localhost:30000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "GLM-5.3-flash",
    "messages": [
      {
        "role": "user",
        "content": "Create a FastAPI application with a health endpoint."
      }
    ],
    "max_tokens": 500
  }'

Ответ chat completion, сгенерированный GLM-5.3-Flash через совместимый с OpenAI API KTransformers

Если всё настроено верно, сервер вернёт обычный ответ chat completion с сгенерированным кодом и статистикой использования.

Шаг 6. Используйте GLM-5.3-Flash как локального код-агента с Pi

Pi — это лёгкий код-агент, который может использовать любую модель с совместимым с OpenAI API в качестве бэкенда, что позволяет GLM-5.3-Flash напрямую выполнять задания по программированию, а не только отвечать на промпты.

Установка Pi

Установите Pi через его скрипт установки:

curl -fsSL https://pi.dev/install.sh | sh

Установка код-агента Pi

Затем добавьте Pi в PATH:

echo 'export PATH="/root/.local/share/pi-node/current/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Укажите Pi на сервер KTransformers

Создайте конфигурацию модели, которая направляет Pi на локальный сервер KTransformers:

mkdir -p ~/.pi/agent && cat > ~/.pi/agent/models.json <<'EOF'
{
  "providers": {
    "ktransformers": {
      "baseUrl": "http://localhost:30000/v1",
      "api": "openai-completions",
      "apiKey": "local",
      "models": [
        {
          "id": "GLM-5.3-flash",
          "name": "GLM-5.3-Flash",
          "reasoning": true,
          "input": ["text"],
          "contextWindow": 32768,
          "maxTokens": 8192,
          "cost": {
            "input": 0,
            "output": 0,
            "cacheRead": 0,
            "cacheWrite": 0
          }
        }
      ]
    }
  }
}
EOF

Запустите Pi:

pi

Затем откройте селектор модели:

/model

Выбор модели GLM-5.3-Flash, обслуживаемой KTransformers, в Pi

Запустите задачу по программированию с GLM-5.3-Flash

Выберите GLM-5.3-Flash и попробуйте реальную задачу по программированию:

Build a FastAPI service with /health and /users endpoints.
Add pytest tests and run them.

GLM-5.3-Flash выполняет задачу по FastAPI в код-агенте Pi

Через несколько секунд Pi начнёт создавать файлы, писать API, запускать тесты и исправлять проблемы по мере выполнения задачи.

Мониторинг логов инференс-сервера SGLang и KTransformers

Можно также наблюдать первый терминал, где работает сервер SGLang. В нашем тесте скорость генерации составляла около 11 токенов в секунду. Это разумно для модели такого размера с существенной выгрузкой на CPU, а производительность можно дальше настроить, перенеся больше экспертов на GPU.

Итоговая сводка код-агента Pi после выполнения задач по FastAPI моделью GLM-5.3-Flash

Через несколько минут модель создала эндпоинты, написала и выполнила тесты, провела smoke-тест и подготовила краткое описание того, как запустить проект.

Интересно то, что полная модель работает локально, хотя её веса намного больше доступной VRAM GPU. Pi управляет циклом код-агента, а SGLang и KTransformers обеспечивают собственно инференс модели.

KTransformers vs vLLM vs llama.cpp

KTransformers — не единственный способ запустить модель, превышающую вашу VRAM. И vLLM, и llama.cpp поддерживают выгрузку на CPU, но распределяют работу по-разному:

Фреймворк Как использует память CPU Где выполняются эксперты Лучшее применение
vLLM Выгружает часть весов в RAM CPU (--cpu-offload-gb) и переносит их на GPU по мере необходимости GPU Высокопроизводительный сервинг, когда модель в основном помещается в VRAM
llama.cpp Делит слои между CPU и GPU и может держать тензоры экспертов MoE в RAM (--n-cpu-moe) CPU и GPU Квантизированные модели GGUF на потребительском «железе»
KTransformers + SGLang Держит большинство экспертов в RAM и размещает заданное число экспертов на слой на GPU CPU и GPU, с оптимизированными ядрами экспертов AVX-512 Модели MoE в родной точности на машинах со стами гигабайт RAM

В этой связке SGLang и KTransformers не конкурируют. SGLang отвечает за сервинг, а KTransformers — за гетерогенное выполнение MoE на CPU и GPU.

Итоги

Больше всего в этой схеме понравилось то, что KTransformers делает нечто отличающееся от привычного стека инференса. Вместо мышления только слоями модели он размещает отдельных экспертов на GPU, удерживая других в системной RAM, и CPU реально участвует в вычислениях экспертов. CPU — это не просто «переполнение».

В этом руководстве мы локально запустили полную модель GLM-5.3-Flash на двух RTX PRO 6000, хотя её веса намного превышают доступную VRAM.

Это не самая быстрая конфигурация. Скорость была около 11 токенов в секунду, и остаётся большой простор для настройки числа и размещения экспертов на GPU. Можно поэкспериментировать и с одним GPU при достаточной RAM; два мы использовали здесь скорее для запаса прочности.

Для меня главный вывод таков: KTransformers особенный не потому, что изобрёл выгрузку на CPU. Он особенный тем, что заставляет RAM CPU, вычисления на CPU и вычисления на GPU работать вместе вокруг разреженной структуры MoE-моделей.

Вопросы и ответы по KTransformers и GLM-5.3-Flash

Сколько RAM нужно, чтобы запустить GLM-5.3-Flash с KTransformers?

Официальное руководство KTransformers рекомендует минимум 350 ГБ доступной системной памяти. Родные FP8-веса занимают около 306 GiB, остальное покрывает накладные расходы рантайма.

Может ли KTransformers запустить GLM-5.3-Flash на одном GPU?

Да. В официальном руководстве есть конфигурация для одного GPU с --kt-num-gpu-experts 0, при которой вычисления экспертов остаются на CPU. При этом по-прежнему нужна достаточная системная RAM и CPU с поддержкой AVX-512.

Какие GPU и CPU поддерживает KTransformers для GLM-5.3-Flash?

Текущая реализация поддерживает GPU NVIDIA SM89 и SM120, что включает серии RTX 40, RTX 50 и RTX PRO 6000. На стороне CPU для FP8-ядра экспертов требуется AVX-512.

Насколько быстр GLM-5.3-Flash с KTransformers?

В нашем тесте на 2× RTX PRO 6000 с окном контекста 32K и 14 экспертами на слой на GPU скорость генерации была около 11 токенов в секунду. Скорость в основном зависит от числа экспертов на GPU, вашего CPU и пропускной способности памяти.

Какие ещё модели поддерживает KTransformers?

KTransformers поддерживает ряд крупных MoE-моделей, включая GLM-5, GLM-5.2, Kimi K2.5, MiniMax-M2.5 и Qwen3-235B-A22B. Текущий список и модельные руководства смотрите в репозитории KTransformers на GitHub.

Темы
Искусственный интеллект
Большие языковые модели

Лучшие курсы DataCamp

Курс

Трансформерные модели с PyTorch

2 ч
9.2K
Что заставляет LLM работать? Узнайте, как трансформеры революционизировали моделирование текста и запустили бум генеративного ИИ.
Смотреть подробностиRight Arrow
Начать Курс
Показать большеRight Arrow