MoE на 5090 недобирает полтора раза, и дело не в маршрутизации
Он измерил время работы top-k ядер: на них приходится лишь 7% всех затрат, CUDA-графы захватываются без пропусков, а занятость потоковых мультипроцессоров достигает 97%. Карта почти всё время занята вычислениями, однако выполняет их медленнее, чем позволяет память. Ключ к разгадке — объём данных, который ядро mul_mat_vec_q читает за один запуск. Эксперимент на синтетической программе показал зависимость: при 1 МБ данных ядро использует 23% полосы памяти, при 4,2 МБ — уже 53%, а при 33,6 МБ — 91%. У MoE-модели на ядро приходится всего 4,6 МБ, у плотной — 22,2 МБ. Именно это объясняет разрыв.
В подробном разборе автор приводит трассировку всех 437 матричных умножений, предупреждает о четырёх типичных ошибках измерения и демонстрирует проверку на другой архитектуре с погрешностью 3,7% при разных глубинах контекста. Отдельно он оценивает накладные расходы сэмплера и обвязки llama-server. Они оказались самыми значительными: пользователь в интерфейсе видит 225 токенов в секунду, хотя чистый бенчмарк показывает 317.
Источник: habr.com
Поделиться