Applen M4-sirun hermomoottorin sisällä, osa 1: Käänteinen suunnittelu
Apple
Tutkijat suorittivat käänteisen suunnittelun Applen M4-sirun hermomoottorille (ANE), ohittaen Core ML:n ja kääntäen sekä suorittaen suoraan neuroverkko-ohjelmia. He huomasivat, että ANE:n todellinen huippusuorituskyky on alhaisempi kuin Applen ilmoittama 38 TOPS, ja onnistuivat kouluttamaan mallin sirulla, joka on suunniteltu vain päättelyyn.
Artikkelissa kerrotaan, miten kirjoittajat käänsivät Applen Neural Engine (ANE) -sirun M4-sirussa auki, ohittaen Core ML:n ja toimien suoraan laitteiston kanssa. He tutkivat koko ohjelmistopinoa Core ML:stä IOKit-ydinajuriin, löysivät tavan kääntää ja suorittaa ohjelmia ANE:ssä ilman Core ML:ää ja paljastivat binäärimuodon. He mittasivat todellisen huippusuorituskyvyn ja havaitsivat, että Applen mainostama '38 TOPS' on harhaanjohtava. Lopulta he onnistuivat kouluttamaan hermoverkon sirulla, joka on tarkoitettu ainoastaan päättelyyn. ANE ei ole GPU eikä CPU; se on laskennallinen graafimoottori, joka suorittaa käännetyn hermoverkon yhtenä atomisena operaationa. He käyttivät metodinvaihtoa (method swizzling) ja binäärianalyysiä paljastaakseen yli 40 yksityistä luokkaa AppleNeuralEngine.frameworkissä, mukaan lukien _ANEClient, joka mahdollistaa suoran pääsyn kääntämisen, lataamisen ja suorittamisen putkistoon. He myös huomasivat, että mallien kuvaamiseen käytetään MIL-kieltä, ja että E5-binäärimuoto on FlatBuffers-tiedosto, joka parametrisoi kiinteitä laitteistoprimitiivejä perinteisen konekoodin tallentamisen sijaan. He löysivät tavan kääntää malleja muistissa käyttämällä _ANEInMemoryModelDescriptor-luokkaa, vaikka se edelleen kirjoittaa väliaikaiseen hakemistoon. M4:n ANE:ssä on 16 ydintä, jonon syvyys on 127, ja siinä on riippumaton dynaaminen jännite- ja taajuusskaalaus (DVFS).
Lähde: Habr — хаб ML —
Alkuperäinen
