4 poin oleh GN⁺ 2026-03-03 | 2 komentar | Bagikan ke WhatsApp
  • Menganalisis langsung struktur internal Apple Neural Engine (ANE) dan mengimplementasikan cara untuk melewati CoreML serta mengakses hardware secara langsung
  • Menghapus lapisan abstraksi CoreML dan melalui API _ANEClient melakukan kompilasi, pemuatan, dan eksekusi model secara langsung
  • Menganalisis MIL (Machine Learning Intermediate Language) dan format biner E5, lalu mengonfirmasi bahwa ANE adalah mesin eksekusi graf berbasis primitif operasi tetap
  • Membuktikan kemungkinan transfer data zero-copy antara GPU↔ANE menggunakan memori bersama IOSurface
  • Riset ini adalah bagian pertama dari trilogi yang mengeksplorasi pengukuran performa nyata dan kemungkinan pelatihan pada ANE M4, dan bermakna sebagai kasus kontrol langsung pertama terhadap hardware privat Apple

Pendekatan reverse engineering melalui kolaborasi manusia–AI

  • Penelitian dilakukan melalui kolaborasi antara peneliti manusia dan Anthropic Claude Opus 4.6
    • Manusia menentukan arah eksplorasi, sementara AI melakukan analisis data dan penulisan kode
  • Tujuan riset berangkat dari pertanyaan, “Apakah model bisa dilatih langsung di atas Apple Neural Engine
  • Apple tidak mempublikasikan ISA, struktur internal, maupun antarmuka pemrograman langsung untuk ANE
    • Akses hanya dimungkinkan melalui CoreML, yang menyulitkan pemahaman terhadap cara kerja hardware
  • Karena itu, peneliti menelusuri balik seluruh software stack dari CoreML hingga driver kernel IOKit dan mengamankan jalur kode untuk mengendalikan ANE secara langsung

Struktur Neural Engine

  • ANE berbentuk graph execution engine, bukan GPU atau CPU
    • Seluruh graf jaringan saraf yang telah dikompilasi dijalankan sebagai satu operasi atomik
  • ANE pada chip M4 (codename H16G) memiliki 16 core, kedalaman antrean 127 request, kontrol DVFS independen, dan pemutusan daya 0mW saat idle
  • Apple pertama kali memperkenalkan ANE 2-core pada A11 (2017), lalu terus memperluasnya di tiap generasi

Perbedaan dibanding riset sebelumnya

  • Materi publik yang sudah ada:
    • Dokumentasi cara kerja dan analisis performa ANE oleh Matthijs Hollemans
    • Sampel reverse engineering awal dari mdaiter/ane
    • Driver Linux hasil reverse engineering dari Asahi Linux
    • Kode optimasi transformer resmi dari apple/ml-ane-transformers
  • Capaian unik riset ini:
    • Berhasil mengakses API _ANEClient secara langsung tanpa CoreML
    • Menguraikan jalur kompilasi MIL di memori
    • Mengukur throughput nyata setelah menghapus overhead CoreML
    • Menjalankan pelatihan model pada hardware yang khusus untuk inferensi

Metodologi analisis

  • Eksplorasi kelas: mengekstrak daftar kelas di dalam AppleNeuralEngine.framework dengan perintah dyld_info -objc
  • Method swizzling: mencegat panggilan CoreML untuk mengidentifikasi jalur pemanggilan framework privat
  • Analisis biner: menguraikan bundle E5 yang telah dikompilasi untuk memahami format program
  • Analisis scaling: mengubah ukuran matriks, kedalaman graf, dan jumlah channel untuk menyimpulkan topologi hardware
  • Hasilnya, ditemukan lebih dari 40 kelas privat seperti _ANEClient, _ANEModel, _ANERequest, _ANEIOSurfaceObject, dan _ANEInMemoryModel

Melewati CoreML: akses langsung ke _ANEClient

  • Melalui _ANEClient, seluruh pipeline kompilasi → pemuatan → evaluasi model bisa dikendalikan secara langsung
  • CoreML pada dasarnya hanyalah lapisan kemudahan yang membungkus proses tersebut
  • ANE mendukung hingga 127 request evaluasi simultan (queue depth), sehingga optimal untuk inferensi streaming throughput tinggi
  • Dengan buffer I/O berbasis IOSurface, dimungkinkan transfer memori bersama antara GPU dan ANE

MIL: bahasa input ANE

  • CoreML menggunakan MIL (Machine Learning Intermediate Language), bukan ONNX atau protobuf
    • Berbasis static single assignment (SSA), dengan tipe dan shape yang dinyatakan eksplisit
    • Pada contoh kode, operasi matmul direpresentasikan dengan jelas
  • Layout tensor menggunakan format NCDHW + Interleave dengan struktur [Batch, Channels, Depth, Height, Width]

Format biner E5

  • Program MIL dikompilasi menjadi biner E5 FlatBuffer
    • Perkalian matriks 1024×1024: 2.688 byte, perkalian matriks 128×128: 2.680 byte
    • Ukuran kode hampir sama, yang berarti hanya memuat informasi konfigurasi terparametrisasi, bukan algoritme operasi matriks itu sendiri
  • Ini menunjukkan bahwa ANE mengeksekusi graf dengan menggabungkan primitif operasi tetap seperti Conv, MatMul, dan Elementwise

Jalur kompilasi in-memory

  • Dengan _ANEInMemoryModelDescriptor, MIL bisa dikompilasi di memori tanpa akses disk
  • Masalah utama dan solusinya:
    • milText memerlukan NSData (byte UTF-8), bukan NSString
    • weights harus berbentuk dictionary pemetaan nama–data
    • Secara internal tetap dibutuhkan akses ke direktori sementara, sehingga izin tulis wajib tersedia
  • Ditemukan typo Desctiptor di kode internal Apple

Profil hardware

  • Hasil analisis IOKit menunjukkan ANE memiliki kanal manajemen daya dan clock (DVFS) yang independen
    • Terdapat berbagai trigger hardware/software seperti ANE_ADCLK_TRIG dan ANE_PPT_TRIG
  • Di ANECompiler.framework, Conv teridentifikasi sebagai primitif operasi inti di antara operasi yang didukung
    • Pada Part 2 nanti akan ditunjukkan bahwa mengubah 1×1 Conv menjadi MatMul menghasilkan peningkatan performa 3×

Protokol IOSurface

  • Semua input dan output data dilakukan melalui objek memori bersama IOSurface
    • Mekanismenya sama dengan berbagi texture GPU
    • Ini membuka kemungkinan membangun pipeline zero-copy GPU↔ANE

Struktur cache kompilasi

  • Kompiler ANE menyimpan cache biner E5 di disk
    • Path: ~/Library/Caches/.../com.apple.e5rt.e5bundlecache/.../H16G.bundle/
    • Kompilasi pertama memakan 20–40ms, lalu berjalan seketika saat cache hit
    • Ini menguntungkan untuk inferensi, tetapi pelatihan memerlukan rekompilasi saat bobot berubah

Area yang belum dieksplorasi

  • Kelas yang belum dianalisis:
    • _ANEChainingRequest — kemungkinan untuk merangkai beberapa model dalam satu dispatch
    • _ANESharedEvents, _ANESharedSignalEvent, _ANESharedWaitEvent — fence/signal untuk sinkronisasi GPU↔ANE
    • _ANEPerformanceStats — kemungkinan penghitung performa hardware
    • _ANEVirtualClient — kemungkinan pendekatan virtualisasi multiproses
  • Hal yang masih belum terkonfirmasi:
    • Mikroarsitektur core ANE dan ISA
    • Cara alokasi core untuk operasi di dalam graf
    • Frekuensi clock dan struktur SRAM

Rencana selanjutnya

  • Part 2: scaling perkalian matriks, bottleneck SRAM, perbandingan performa Conv dan MatMul, serta verifikasi klaim “38 TOPS” dari Apple
  • Part 3: melatih jaringan saraf di ANE
  • Seluruh kode dipublikasikan di direktori ane/ pada github.com/maderix/ANE
  • Lingkungan pengujian: M4 Mac Mini, macOS 15.x

2 komentar

 
GN⁺ 2026-03-03
Komentar Hacker News
  • Saya bekerja di tim Xcode selama bertahun-tahun. Saya paham betul bagaimana Apple sengaja membuat hal-hal seperti ini sulit
    Menurut saya penulis melakukan pekerjaan yang luar biasa, dan saya menantikan bagian 3
    • Dulu konsol Xcode bisa dipisahkan ke jendela terpisah, dan saya penasaran kenapa fitur itu dihapus
  • Saya tidak paham kapan Neural Engine bekerja dalam perangkat lunak open-source
    Saya terutama memakai library ML Python seperti lightgbm, sklearn, xgboost, serta numpy
    Saya penasaran apakah operasi seperti ini dipercepat di hardware Apple, dan apakah ada cara sederhana untuk melakukan benchmark
    Sebagian besar benchmark ada di level fungsi C, jadi saya tidak tahu apakah efeknya terasa di library level tinggi
    Saya tertawa ketika ChatGPT menyuruh membandingkan Intel Mac dan Apple Silicon. Mungkin inilah alasan orang masih membenci AI
    • Di kebanyakan proyek open-source, NPU hampir tidak dimanfaatkan
      Alasannya karena NPU sangat spesifik per vendor, sehingga sulit didukung oleh pengembang open-source
      Apple ANE juga bukan pengecualian, dan riset ini tampaknya merupakan upaya untuk menyelesaikan masalah itu khusus untuk Apple ANE
  • Bagian 2 menyertakan benchmark
    Menurut artikel Inside the M4 Apple Neural Engine, performanya mencapai 6.6 FLOPS/W, dan saat tidak dipakai benar-benar dimatikan sehingga konsumsi dayanya 0W
    • Tetapi angka 38 TOPS yang diklaim Apple berbeda dari kenyataan
      Apple menghitung “38 TOPS INT8” sebagai FP16 19 TFLOPS × 2, tetapi hardware aslinya tidak menjalankan operasi INT8 dua kali lebih cepat
      Mengikuti cara hitung seperti ini terasa seperti klaim berlebihan yang tidak biasa untuk Apple
  • Di artikel itu disebutkan bahwa “kami” adalah kolaborasi antara maderix(manusia) dan Claude Opus 4.6(Anthropic), tapi sejujurnya sulit dipercaya
    LLM bisa membuat informasi palsu yang terdengar meyakinkan sampai mampu menipu pakar
    Sulit yakin semua faktanya diverifikasi manual. Dari sisi ini, saya malah senang diberi peringatan lebih awal jadi saya tidak perlu membacanya
    • Claude cenderung menyembunyikan benchmark agar pengguna hanya melihat hasil yang bagus
      Di artikel itu juga terlihat benchmark aneh seperti itu
    • Manusia juga sudah lama menulis riset palsu yang terdengar meyakinkan
      Bahkan sebelum LLM, dunia akademik sudah penuh dengan paper yang dimanipulasi dan riset yang tidak bisa direproduksi
      Pada akhirnya analisis seperti ini hanya bisa dipercaya jika diverifikasi oleh lebih banyak engineer
  • Saya juga sering melakukan kesalahan seperti ini, tetapi kebanyakan komentar tampaknya melebar menjadi “apa pun yang berkaitan dengan Apple”
    Banyak pembahasan yang tidak berhubungan dengan topiknya
  • Mengejutkan bahwa kode sumber ANE juga tidak dibuka ke tim MLX
    Mungkin itu salah satu alasan kepala proyek MLX, Awni, meninggalkan Apple
  • Dasar-dasar tentang ANE M1/M2 sebenarnya sudah diketahui lewat dokumentasi Asahi Linux
    Tapi bagus bahwa artikel ini mengonfirmasi dan memperluas isinya lebih dalam
    Karena CoreML hampir tidak punya overhead pada operasi matmul besar, tampaknya ada banyak peluang bagi framework AI lokal untuk memanfaatkan ANE untuk prefill
    Namun tahap decode dibatasi bandwidth memori, dan proses mengubah matmul menjadi convolution 1x1 tidak efisien, jadi manfaatnya tidak sepenuhnya jelas
  • Menurut kabar terbaru, Apple sedang menyiapkan framework baru untuk menggantikan Core ML
    Namanya Core AI, dan katanya akan memudahkan integrasi LLM pihak ketiga ke dalam aplikasi
    Artikel terkait: newsletter Bloomberg
  • Artikel ini jelas ditulis manusia, tetapi di beberapa kalimat terlihat gaya khas LLM
    Meski begitu, saya membacanya dengan sangat bermanfaat dan menarik
    Repositori Github yang disebut dalam artikel juga layak dijadikan referensi
    • Dalam waktu sekitar satu tahun ke depan, mungkin orang akan berinteraksi dengan LLM setiap hari, dan gaya bahasa AI akan meresap ke bahasa manusia
    • Jika melihat bagian ‘Prior Art’, ada banyak kata kerja berulang yang tidak perlu seperti “documenting” dan “providing insight into”
      Bagian itu jelas menunjukkan jejak tulisan AI
  • Masa kini software engineer sudah setara masa depan
    Yang lebih penting daripada reverse engineering ANE adalah sejauh mana Manjeet memperluas kemampuan engineering-nya dengan bantuan AI
    Sekarang memang era ketika AI mempercepat produktivitas developer