Перейти к содержанию
Публикация AiManual

Запуск GLM-5.3-Flash на двух Ascend 310P: практический опыт и оптимизация vllm-ascend

Пользователь запустил 320B MoE-модель GLM-5.3-Flash на двух Ascend 310P и поднял генерацию с 8 секунд до 8–9 токенов в секунду. Разбираем конфигурацию на 311 04

Коротко

Что будет в материале

  1. 01

    Почему GLM-5.3-Flash - нетривиальная задача для Ascend 310P

  2. 02

    Как ускорили отладку: горячая замена модулей и CANN

  3. 03

    Калибровка по эталону: зачем арендовать NVIDIA на Shadeform

  4. 04

    Скорость и производительность: что реально получилось

На двух ускорителях Ascend 310P с памятью DDR4 96 ГБ получилось запустить GLM-5.3-Flash: MoE-модель на 320 млрд параметров, из которых около 18 млрд активны на каждый токен. Скорость генерации выросла примерно с 8 секунд на токен в начале работы до 8–9 токенов в секунду после серии доработок.

Проверенная конфигурация держит до 311 040 токенов на запрос, считая промпт и сгенерированный вывод, режет их на чанки префилла по 640 токенов и обслуживает до четырёх параллельных запросов. Холодный префилл остаётся долгим: первый запрос считается заметно медленнее последующих.

Это личный опыт одного пользователя, опубликованный в сообществе LocalLLaMA (разбор апдейтов vllm-ascend на двух 310P), а не заводской бенчмарк на подготовленном стенде. Цифры стоит читать как ориентир для конкретной сборки, а не как гарантию, что у вас выйдет ровно столько же.

ПараметрЗначение
МодельGLM-5.3-Flash, 320 млрд параметров, около 18 млрд активных на токен
Железо2 × Ascend 310P, DDR4 96 ГБ
Скорость генерации8–9 токенов/с (на старте примерно 8 секунд на токен)
Контекст на запросдо 311 040 токенов, промпт и вывод вместе
Чанки префилла640 токенов
Параллельные запросыдо 4

Почему GLM-5.3-Flash - нетривиальная задача для Ascend 310P

GLM-5.3-Flash устроена как MoE-модель: 320 млрд параметров, около 18 млрд активных на токен, 45 слоёв, 288 экспертов и маршрутизация top-8. Квантизация W2/W3/W4 сохраняет веса в более компактном виде, но число параметров при этом не меняется: экономия идёт на объёме хранения, а не на архитектуре.

Ascend 310P редко выбирают под модели такого размера. Стек vllm-ascend приходится дорабатывать руками, и запуск упирается не в объём вычислений, а в то, как разложить веса и экспертов по доступной памяти и насколько быстро получится их оттуда доставать.

Архитектура MoE и маршрутизация top-8: что это значит на практике

Маршрутизатор выбирает на каждый токен 8 экспертов из 288. Считать приходится только их, поэтому по FLOPs модель ведёт себя легче, чем можно ожидать от 320 млрд параметров. Обратная сторона в том, что все 288 экспертов на каждом из 45 слоёв должны быть доступны в любой момент: их нельзя просто выгрузить и забыть.

Отсюда два следствия. Первое - память под веса остаётся большой даже после квантизации, потому что хранить нужно весь набор экспертов, а не только те, что активны сейчас. Второе - узким местом становится не арифметика, а пропускная способность памяти и то, насколько эффективно реализованы ядра, которые этих экспертов поднимают. Общая механика таких доработок разобрана в материале про ускорение MoE-инференса без изменения весов: там видно, что прирост чаще приходит от организации доступа к памяти, чем от новых вычислений.

Ограничения Ascend 310P: DDR4 96 ГБ и пропускная способность

Ключевое ограничение конфигурации - обычная DDR4 вместо HBM. У HBM полоса памяти в разы выше, и для MoE-модели, которая постоянно перекладывает экспертов между уровнями, это критично. На DDR4 каждый промах по памяти обходится дороже, поэтому и префилл, и генерация упираются в то, как быстро данные доходят до вычислительных блоков.

Именно из-за этого оптимизация ядер и возможность менять компоненты без перезапуска стали не приятным бонусом, а условием, без которого работа не сдвинулась бы с места. Если вам важны требования к железу при запуске моделей локально, полезно держать в голове: 96 ГБ без HBM - это жёсткая рамка, под которую нужно подгонять всю схему распределения весов.

Как ускорили отладку: горячая замена модулей и CANN

Главный приём, который сэкономил время, - горячая замена. Новые модули, сборки CANN и изменения серверной части можно подменять прямо на ходу, пока веса модели остаются в памяти. Модель при этом не перезагружается.

Почему это так важно. Загрузка 320-миллиардной модели с диска в память - долгая и дорогая операция. Если каждое изменение в коде или в стеке требует полного перезапуска с повторной загрузкой весов, то цикл «правка - проверка» растягивается на часы, и большая часть времени уходит на ожидание, а не на работу.

Сохраняя веса резидентными, пользователь выполнил за неделю то, на что по его оценке ушло бы ещё 2–3 недели. Подход применим шире: всем, кто гоняет большие модели на нестандартном железе, стоит заранее подумать, как отделить загрузку весов от изменений в стеке и серверной логике.

Калибровка по эталону: зачем арендовать NVIDIA на Shadeform

Работая на непроверенном стеке, сложно понять, где ошибка: в ядрах, в квантизации или в самих ожиданиях. Чтобы получить точку опоры, пользователь арендовал NVIDIA-систему на Shadeform и снял на ней эталонную математику, а затем использовал её для калибровки расчётов на Ascend.

Смысл простой: сначала фиксируете корректный результат на заведомо рабочем железе, потом сверяете с ним то, что выдаёт Ascend, и по расхождениям ловите проблемные места. Это практичный способ отладки, когда доверия к нестандартному стеку мало, а времени на слепой перебор настроек нет. Аренда внешней системы на несколько часов обходится дешевле, чем дни угадывания.

Скорость и производительность: что реально получилось

На старте генерация шла примерно по 8 секунд на токен. После многочисленных доработок скорость вышла на 8–9 токенов в секунду. Речь именно о генерации: префилл, особенно холодный, живёт по своим правилам и остаётся медленным звеном.

Холодный префилл: почему первый запрос такой долгий

Холодный префилл требует обработать весь входной контекст до того, как появится первый токен. Если это холодный промпт kilocode, за кулисами передаётся много дополнительного контекста, поэтому первый ответ ощутимо запаздывает. Это не сбой, а следствие объёма входа.

Последующие промпты выполняются быстрее, так как часть контекста уже обработана. Для интерактивных сценариев, где ответ нужен сразу, долгий холодный старт может быть проблемой, и это стоит учитывать до того, как строить на такой конфигурации рабочий процесс.

Параллельные запросы и чанки по 640 токенов

Последняя проверенная конфигурация обрабатывает до 311 040 токенов на запрос, включая промпт и сгенерированный вывод. Работа идёт чанками префилла по 640 токенов при четырёх параллельных запросах одновременно. Разбиение на чанки позволяет прогнать длинный контекст, не упираясь в переполнение памяти одним куском.

Числа относятся к последней подтверждённой сборке и могут сдвигаться при изменении настроек, поэтому воспринимайте их как отправную точку, а не как потолок. Для сравнения масштаба: на совсем другой связке из восьми NVIDIA A40 в GGUF получают десятки токенов в секунду, но там и модель, и кванты, и железо другие, так что переносить цифры один в один нельзя.

Что не взлетело и какие ограничения остались

Холодный префилл остаётся долгим. Это главный раздражитель в повседневной работе: чем больше дополнительного контекста подставляет инструмент вроде kilocode, тем дольше ждать первый токен.

DDR4 вместо HBM ограничивает пропускную способность и не даёт выжать из двух карт больше. vllm-ascend не работает «из коробки»: ядра нужно править под себя. Опыт с qwen-flash-next показал ещё одну вещь - перезагрузка модели стоит так дорого, что её лучше избегать любой ценой.

Не стоит ждать, что другие модели и сценарии поведут себя так же. Конфигурация вылизана под конкретную задачу, и перенос на другие веса или другой профиль нагрузки потребует новой серии доработок. И держите в голове, что все приведённые цифры - это не независимый замер, а личный отчёт одного человека. Как оценивать подобные заявления и какие метрики за ними проверять, мы разбирали в тексте про «100% эффективность GPU» без маркетинга: без методики цифра мало что значит.

Ascend vs NVIDIA для локального инференса: когда есть смысл

NVIDIA даёт готовую экосистему: драйверы, CUDA, отлаженный vLLM и море документации. Запуск большой модели там чаще сводится к конфигурации, а не к переписыванию ядер. Цена вопроса - доступность и стоимость карт, которые в ряде регионов купить сложнее.

Ascend 310P часто доступнее там, где NVIDIA в дефиците или дороже. Взамен вы получаете больше ручной работы: CANN, правки в vllm-ascend, необходимость калибровки и оптимизации ядер под нужное число карт. Выбор зависит от того, что у вас в дефиците - время или доступ к железу.

Если нужен быстрый старт и минимальные сюрпризы, разумнее остаться на NVIDIA. Если есть запас времени, желание копаться в стеке и ограничения по доступности карт, Ascend становится рабочим вариантом, но вход в него ощутимо дороже по трудозатратам. Конкретных цен здесь нет намеренно: без привязки к региону, продавцу и дате любые цифры вводят в заблуждение.

Практические выводы: что делать, если хотите повторить

Порядок действий, который виден из этого опыта:

  1. Подготовьте рабочую сборку vllm-ascend под нужную модель и добейтесь хотя бы запуска на минимальном контексте.
  2. Настройте горячую замену модулей, CANN и серверной части так, чтобы веса модели оставались в памяти.
  3. Снимите эталонные расчёты на арендованной NVIDIA-системе и используйте их для калибровки Ascend.
  4. Оптимизируйте ядра под то число карт, которое у вас есть.
  5. Включите чанки префилла и параллельные запросы в рабочих значениях, начиная с проверенных 640 токенов и четырёх запросов.

Рассчитывайте на то, что это долгая инженерная работа, а не установка одной командой. Зато после калибровки скорость генерации выходит на приемлемые для интерактива 8–9 токенов в секунду на нестандартном железе.

Дополнительные возможности: YaRN и мультимодальность

Помимо основной модели, пользователь реализовал поддержку YaRN для контекстных окон размером 1M. Это расширяет рабочий контекст далеко за пределы проверенных 311 040 токенов, хотя стоит помнить, что растянутое окно всегда даётся дороже по памяти и скорости.

Отдельно полтора дня ушло на оптимизацию ядер под n-е число Ascend-карт для qwen3.8-flash-next, которая теперь поддерживает обработку изображений. Схожий отчёт по этой модели на компактном железе разобран в статье про запуск Qwen3.8-Flash-Next на 12 ГБ VRAM - там видно, как те же компромиссы между контекстом, квантом и скоростью выглядят на потребительской карте.

Вывод простой: на Ascend можно получить работающий инференс большой MoE-модели, но ценой ручной настройки всего стека. Если готовы вкладывать время, начинайте с калибровки и горячей замены, тогда остальные оптимизации пойдут быстрее.

Подписаться на канал