Binnenin Apple Neural Engine in M4, deel 1: Reverse engineering
Apple
Onderzoekers hebben de Apple Neural Engine (ANE) in de M4-chip terugontwikkeld, waarbij ze Core ML omzeilden om neurale netwerkprogramma's rechtstreeks te compileren en uit te voeren. Ze ontdekten dat de werkelijke piekprestaties van de ANE lager liggen dan de door Apple geclaimde 38 TOPS, en trainden met succes een model op de chip, die oorspronkelijk alleen bedoeld is voor inferentie.
Het artikel beschrijft hoe de auteurs de Neural Engine (ANE) van Apple in de M4-chip hebben reverse-engineered, waarbij ze Core ML omzeilden om rechtstreeks met de hardware te werken. Ze onderzochten de volledige softwarestack van Core ML tot de IOKit-kerneldriver, ontdekten hoe ze programma's op de ANE konden compileren en uitvoeren zonder Core ML, en ontmaskerden het binaire formaat. Ze maten de werkelijke piekprestaties en ontdekten dat Apples geadverteerde '38 TOPS' misleidend is. Uiteindelijk slaagden ze erin een neuraal netwerk te trainen op de chip, die uitsluitend bedoeld is voor inferentie. De ANE is geen GPU of CPU; het is een computationele graafengine die een gecompileerd neuraal netwerk uitvoert als één atomaire operatie. Ze gebruikten method swizzling en binaire analyse om meer dan 40 private klassen in AppleNeuralEngine.framework te onthullen, waaronder _ANEClient, die directe toegang biedt tot de compile-load-uitvoerpijplijn. Ze ontdekten ook dat de MIL-taal wordt gebruikt om modellen te beschrijven, en dat het binaire formaat E5 een FlatBuffers-bestand is dat vaste hardware-primitieven parameteriseert in plaats van traditionele machinecode op te slaan. Ze vonden een manier om modellen in het geheugen te compileren met behulp van _ANEInMemoryModelDescriptor, hoewel dit nog steeds naar een tijdelijke map schrijft. De ANE in de M4 heeft 16 kernen, een wachtrijdiepte van 127 en onafhankelijke dynamische spannings- en frequentieschaling (DVFS).
Bron: Habr — хаб ML —
origineel
