Сообщение BlockBeats, 3 марта: разработчик Manjeet Singh (GitHub: maderix) в сотрудничестве с Claude Opus впервые реализовал обучение нейронной сети с обратным распространением на Apple Neural Engine (ANE) с чипом M4, используя реверс-инжиниринг незадокументированных приватных API Apple. ANE — это ускоритель, разработанный Apple исключительно для вывода; официально функции обучения не предоставлялись, и разработчики могли использовать его возможности вывода только через фреймворк CoreML.
Этот проект обходит CoreML, напрямую сопоставляя более 40 частных классов, таких как _ANEClient и _ANECompiler, с ядерным драйвером IOKit, и обнаружил интерфейс _ANEInMemoryModelDescriptor, позволяющий компилировать модели непосредственно в памяти — это ключевой элемент для реализации обучения, поскольку каждое обновление весов требует повторной компиляции. В настоящее время реализовано обучение одного слоя transformer (dim=768, seq=512): на M4 время на один шаг составляет 9,3 мс, использование ANE — 11,2% (1,78 TFLOPS, теоретический пик — 15,8 TFLOPS); входные градиенты прямого и обратного проходов вычисляются на ANE, а градиенты весов и оптимизатор Adam — на CPU.
Проект также обнаружил, что основные вычислительные примитивы ANE — это свертки, а не матричное умножение; использование 1x1 сверток для выражения матричного умножения позволяет достичь примерно трехкратного увеличения пропускной способности, а прямой вызов, обходящий CoreML, обеспечивает дополнительный прирост в 2–4 раза; заявленные Apple «38 TOPS» вводят в заблуждение. В настоящее время проект находится на ранней стадии: поддерживается только обучение одного слоя, используются синтетические данные, существует около 119 утечек ресурсов после компиляции, которые требуют перезапуска процесса для обхода; поддержка многослойного обучения и реальных данных находится в разработке. Проект открыт под лицензией MIT и за 5 дней получил около 2800 звезд.
