Обновить

Комментарии 1

Отличная статья и монументальный объём низкоуровневой работы! Читать про реверс-инжиниринг ANE, работу с XPC и сборку пайплайна через MIL-код - одно удовольствие.

Пара мыслей по прочитанному:

1.   Трюки с KV-кэшем и ограничениями MIL: Решение с эмуляцией обновления кэша через комбинацию gather + select по маске вместо отсутствующего slice_update - это изящный костыль, который реально работает в условиях жестких ограничений компилятора ANE.

2.   Асинхронность и Overhead: Замена синхронного вызова на completionHandler с atomic-wait и плотная набивка очереди ANE — ключевой момент всей оптимизации. Взаимодействие процессов через XPC в macOS всегда славилось конским оверхедом на контекст-свитчах, и сокращение простоя NPU на 10-15% дает ощутимый буст к TTFT.

3.   Перспективы Qwen 3.5 & DeltaNet: С появлением рекуррентных архитектур и гибридных слоев (как в Qwen 3.5) нагрузка на память действительно падает, но отсутствие нативной поддержки depthwise-сверток на ANE «из коробки» — неприятный блокер. Будет интересно посмотреть, удастся ли разложить их на цепочку из батчевых matmul или эмулировать через групповые операции.

Спасибо за открытый репозиторий и подробный разбор системных логов! Буду следить за обновлениями по части OpenAI API и квантизации.

 

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации