4 puan yazan GN⁺ 2026-03-03 | 2 yorum | WhatsApp'ta paylaş
  • Apple Neural Engine (ANE) iç yapısı doğrudan analiz edilerek CoreML'i baypas edip donanıma doğrudan erişme yöntemi hayata geçirildi
  • CoreML'in soyutlama katmanı kaldırıldı ve _ANEClient API'si üzerinden model derleme·yükleme·çalıştırma işlemleri doğrudan gerçekleştirildi
  • MIL (Machine Learning Intermediate Language) ve E5 ikili formatı analiz edilerek ANE'nin sabit işlem primitifleri tabanlı bir grafik yürütme motoru olduğu doğrulandı
  • IOSurface paylaşımlı bellek kullanılarak GPU↔ANE arasında sıfır kopya veri aktarımı olasılığı kanıtlandı
  • Bu çalışma, M4 ANE'nin gerçek performans ölçümü ve eğitim yapabilme olasılığını inceleyen üç bölümlük serinin ilk parçası olup Apple'ın kapalı donanımı üzerinde ilk doğrudan kontrol örneği olması açısından önem taşıyor

İnsan–yapay zeka iş birliğiyle tersine mühendislik yaklaşımı

  • Araştırma, insan araştırmacı ile Anthropic'in Claude Opus 4.6 modelinin iş birliğiyle yürütüldü
    • İnsan araştırmacı keşif yönünü belirledi, yapay zeka ise veri analizi ve kod yazımını üstlendi
  • Hedef, “Apple Neural Engine üzerinde doğrudan model eğitimi yapılabilir mi” sorusundan yola çıktı
  • Apple, ANE'nin ISA'sını, iç yapısını ve doğrudan programlama arayüzünü açıklamıyor
    • Yalnızca CoreML üzerinden erişim mümkün ve bu da donanım davranışını anlamayı zorlaştırıyor
  • Bunun üzerine CoreML'den IOKit çekirdek sürücüsüne kadar tüm yazılım yığını tersine izlendi ve ANE'yi doğrudan kontrol eden kod yolu elde edildi

Neural Engine'in yapısı

  • ANE, GPU ya da CPU değil, bir grafik yürütme motoru (graph execution engine) biçiminde çalışıyor
    • Derlenmiş sinir ağı grafiğinin tamamını tek bir atomik işlem olarak yürütüyor
  • M4 çipindeki ANE'nin (kod adı H16G) özellikleri: 16 çekirdek, 127 istek kuyruk derinliği, bağımsız DVFS kontrolü ve boştayken 0mW güç kesme
  • Apple, A11'de (2017) 2 çekirdekli ilk ANE'yi sunduktan sonra bunu nesiller boyunca genişletti

Mevcut çalışmalardan farkı

  • Daha önceki açık kaynak / kamuya açık çalışmalar:
    • Matthijs Hollemans tarafından hazırlanan ANE çalışma belgeleri ve performans analizi
    • mdaiter/ane içindeki erken dönem tersine mühendislik örnekleri
    • Asahi Linux tarafından geliştirilen tersine mühendislik ürünü Linux sürücüsü
    • apple/ml-ane-transformers içindeki resmi transformer optimizasyon kodu
  • Bu araştırmanın özgün katkıları:
    • CoreML olmadan doğrudan _ANEClient API erişimi başarısı
    • MIL bellek içi derleme yolunun çözülmesi
    • CoreML ek yükü kaldırıldıktan sonra gerçek throughput ölçümü
    • Yalnızca çıkarım amaçlı donanımda model eğitimi gerçekleştirme

Analiz metodolojisi

  • Sınıf keşfi: dyld_info -objc komutuyla AppleNeuralEngine.framework içindeki sınıf listesi çıkarıldı
  • Method swizzling: CoreML çağrıları yakalanarak özel framework çağrı yolu belirlendi
  • İkili analiz: Derlenmiş E5 bundle'ları çözülerek program formatı incelendi
  • Ölçekleme analizi: Matris boyutu, grafik derinliği ve kanal sayısı değiştirilerek donanım topolojisi çıkarımlandı
  • Sonuç olarak _ANEClient, _ANEModel, _ANERequest, _ANEIOSurfaceObject, _ANEInMemoryModel dahil 40'tan fazla özel sınıf bulundu

CoreML'i baypas etme: _ANECliente doğrudan erişim

  • _ANEClient üzerinden model derleme → yükleme → değerlendirme hattının tamamı doğrudan kontrol edilebiliyor
  • CoreML, aslında bu süreci saran bir kolaylık katmanından ibaret
  • ANE, en fazla 127 eşzamanlı değerlendirme isteğini (queue depth) destekliyor; bu da yüksek throughput'lu akış çıkarımı için uygun
  • IOSurface tabanlı I/O buffer'ları ile GPU ve ANE arasında paylaşımlı bellek aktarımı mümkün

MIL: ANE'nin giriş dili

  • CoreML, ONNX veya protobuf yerine MIL (Machine Learning Intermediate Language) kullanıyor
    • Statik tek atama (SSA) tabanlı; tip ve şekil bilgisi açıkça tanımlı
    • Örnek kodda matmul işlemi net biçimde ifade ediliyor
  • Tensor yerleşimi, [Batch, Channels, Depth, Height, Width] yapısındaki NCDHW + Interleave formatında

E5 ikili formatı

  • MIL programları E5 FlatBuffer ikili dosyalarına derleniyor
    • 1024×1024 matris çarpımı: 2.688 bayt, 128×128 matris çarpımı: 2.680 bayt
    • Kod boyutu neredeyse aynı → yalnızca matris işlem algoritması değil, parametreleştirilmiş yapı bilgisi içeriyor
  • Bu da ANE'nin sabit işlem primitiflerini (Conv, MatMul, Elementwise vb.) birleştirerek grafiği yürüttüğünü gösteriyor

Bellek içi derleme yolu

  • _ANEInMemoryModelDescriptor kullanılarak diske erişmeden bellekte MIL derlemek mümkün
  • Başlıca sorunlar ve çözümleri:
    • milText, NSString değil NSData (UTF-8 baytları) gerektiriyor
    • weights, isim–veri eşlemesi içeren sözlük biçiminde olmalı
    • İçeride geçici dizin erişimi gerekiyor → yazma izni şart
  • Apple'ın dahili kodunda Desctiptor yazım hatası bulundu

Donanım profili

  • IOKit analizi ANE'nin bağımsız bir güç ve saat yönetimi (DVFS) kanalına sahip olduğunu gösteriyor
    • ANE_ADCLK_TRIG, ANE_PPT_TRIG gibi çeşitli donanım / yazılım tetikleyicileri mevcut
  • ANECompiler.framework içinde görülen desteklenen işlemler arasında Conv temel işlem primitifidir
    • Bölüm 2'de 1×1 Conv'nin MatMul'a dönüştürülmesiyle 3 kat performans artışı görülecek

IOSurface protokolü

  • Tüm veri giriş/çıkışı IOSurface paylaşımlı bellek nesneleri üzerinden yapılıyor
    • GPU texture paylaşım mekanizmasıyla aynı
    • GPU↔ANE sıfır kopya pipeline kurulabilme olasılığı var

Derleme önbelleği yapısı

  • ANE derleyicisi E5 ikili dosyalarını diskte önbelleğe alıyor
    • Yol: ~/Library/Caches/.../com.apple.e5rt.e5bundlecache/.../H16G.bundle/
    • İlk derleme 20–40ms, önbellek isabetinde anında çalıştırma
    • Çıkarım için avantajlı olsa da eğitim sırasında ağırlık değiştiği için yeniden derleme gerekiyor

Keşfedilmemiş alanlar

  • Henüz analiz edilmeyen sınıflar:
    • _ANEChainingRequest — birden fazla modeli tek bir dispatch içinde bağlama olasılığı
    • _ANESharedEvents, _ANESharedSignalEvent, _ANESharedWaitEvent — GPU↔ANE senkronizasyonu için fence/signal yapıları
    • _ANEPerformanceStats — donanım performans sayaçları olasılığı
    • _ANEVirtualClient — çok süreçli sanallaştırılmış erişim olasılığı
  • Hâlâ doğrulanmamış noktalar:
    • ANE çekirdek mikro mimarisi ve ISA
    • Grafik içindeki işlemlerin çekirdeklere nasıl atandığı
    • Saat frekansı ve SRAM yapısı

Gelecek planları

  • Bölüm 2: Matris çarpımı ölçekleme, SRAM darboğazı, Conv ve MatMul performans karşılaştırması, Apple'ın “38 TOPS” iddiasının doğrulanması
  • Bölüm 3: ANE üzerinde sinir ağı eğitimi gerçekleştirme
  • Tüm kodlar github.com/maderix/ANE içindeki ane/ dizininde açıklandı
  • Test ortamı: M4 Mac Mini, macOS 15.x

2 yorum

 
GN⁺ 2026-03-03
Hacker News yorumları
  • Xcode ekibinde uzun yıllar çalıştım. Apple'ın bu tür şeyleri bilerek zorlaştırma biçimini iyi biliyorum
    Bence yazar gerçekten harika bir iş çıkarmış, 3. bölümü de merakla bekliyorum
    • Eskiden Xcode konsolunu ayrı bir pencereye ayırmak mümkündü; neden bu özelliği kaldırdıklarını merak ediyorum
  • Açık kaynak yazılımlarda Neural Engine'in ne zaman devreye girdiğini anlamıyorum
    Ben çoğunlukla lightgbm, sklearn, xgboost gibi Python ML kütüphaneleri ve numpy kullanıyorum
    Bu işlemlerin Apple donanımında hızlandırılıp hızlandırılmadığını ve bunu basitçe benchmark etmenin bir yolu olup olmadığını merak ediyorum
    Benchmark'ların çoğu C fonksiyonu seviyesinde olduğu için, üst seviye kütüphanelerde etkisi olup olmadığını bilmiyorum
    ChatGPT'nin Intel Mac ile Apple Silicon'ı karşılaştırmamı önermesi komiğime gitti. Sanırım insanların hâlâ yapay zekadan hoşlanmamasının nedenlerinden biri de bu
    • Açık kaynak projelerin çoğunda NPU neredeyse hiç kullanılmıyor
      Bunun nedeni NPU'ların üreticiye özel olması ve açık kaynak geliştiricilerinin bunları desteklemesinin zor olması
      Apple ANE de bunun istisnası değil; bu araştırma da Apple ANE özelinde bu sorunu çözmeye yönelik bir girişim gibi görünüyor
    1. bölümde benchmark'lar yer alıyor
      Inside the M4 Apple Neural Engine yazısına göre 6.6 FLOPS/W performans veriyor ve kullanılmadığında tamamen kapanarak 0W tüketiyor
    • Ancak Apple'ın öne sürdüğü 38 TOPS değeri gerçeği yansıtmıyor
      Apple, “38 TOPS INT8” değerini FP16 19 TFLOPS × 2 üzerinden hesaplamış ama gerçek donanım INT8 işlemlerini iki kat hızda çalıştırmıyor
      Bu hesaplama biçimini takip etmek Apple'a pek yakışmayan abartılı bir ifade gibi geliyor
  • Yazıda “biz” denirken maderix (kişi) ile Claude Opus 4.6'nın (Anthropic) birlikte çalıştığı söylenmiş ama açıkçası buna inanmak zor
    LLM'ler, uzmanları bile kandırabilecek kadar inandırıcı yanlış bilgiler üretebiliyor
    Tüm olguların elle doğrulanıp doğrulanmadığından emin değilim. Bu açıdan bakınca, bunu baştan belirtmeleri sayesinde okumadan geçebilmek iyi olmuş
    • Claude, kullanıcının yalnızca iyi sonuçları görmesini sağlayacak şekilde benchmark'ları gizleme eğiliminde
      Yazıda da buna benzer tuhaf benchmark'lar görünüyor
    • İnsanlar da eskiden beri inandırıcı sahte araştırmalar yazıyor
      LLM'lerden önce de akademide uydurulmuş makaleler ve yeniden üretilemeyen araştırmalar çoktu
      Sonuçta bu tür analizlere güvenebilmek için daha fazla mühendisin doğrulaması gerekiyor
  • Ben de bu hataya düşüyorum ama yorumların çoğu sanki “Apple'la ilgili herhangi bir şey”e kayıyor
    Konuyla ilgisiz çok fazla yorum var
  • ANE'nin kaynak kodunun MLX ekibine bile açık olmaması şaşırtıcı
    Muhtemelen MLX projesinin sorumlusu Awni'nin Apple'dan ayrılma nedenlerinden biri de buydu
  • M1/M2 ANE hakkında temel bilgiler zaten Asahi Linux belgeleri üzerinden biliniyordu
    Ama bu yazının onları daha derinlemesine doğrulayıp genişletmesi güzel olmuş
    CoreML'in büyük matmul işlemlerinde neredeyse hiç ek yük getirmediği söyleniyorsa, yerel yapay zeka framework'lerinde ANE'yi prefill için kullanma konusunda ciddi bir alan olabilir
    Yine de decode aşaması bellek bant genişliğiyle sınırlı ve matmul'u 1x1 convolution'a dönüştürme süreci verimsiz olduğu için net bir kazanç değil
  • Son haberlere göre Apple, Core ML'in yerini alacak yeni bir framework hazırlıyor
    Adı Core AI ve üçüncü taraf LLM'leri uygulamalara daha kolay entegre etmeyi amaçlıyor
    İlgili haber: Bloomberg bülteni
  • Bu yazı açıkça bir insan tarafından yazılmış ama bazı cümlelerde LLM'e özgü ifade kalıpları hissediliyor
    Yine de çok faydalı ve ilgi çekici buldum
    Yazıda anılan Github deposuna da ayrıca bakmaya değer
    • Önümüzdeki yaklaşık bir yıl içinde, insanlar her gün LLM'lerle etkileşime girdikçe AI üslubunun insan diline sızdığı bir durum görebiliriz
    • ‘Prior Art’ bölümüne bakınca, “documenting”, “providing insight into” gibi gereksiz tekrar eden fiiller var
      Bu kısım kesinlikle AI tarafından yazılmış izlenimi veriyor
  • Yazılım mühendisinin bugünü zaten gelecek seviyesinde
    ANE tersine mühendisliğinden daha önemli olan şey, Manjeet'in AI yardımıyla kendi mühendislik kapasitesini ne kadar genişlettiği
    Şu an tam olarak AI'nın geliştirici üretkenliğini hızlandırdığı çağdayız