داخل محرك Apple العصبي في M4، الجزء الأول: الهندسة العكسية
Apple
قام الباحثون بهندسة عكسية لمحرك Apple العصبي (ANE) في شريحة M4، متجاوزين Core ML ليقوموا مباشرة بتجميع وتشغيل برامج الشبكات العصبية. واكتشفوا أن الأداء الذروة الحقيقي لـ ANE أقل من 38 تريليون عملية في الثانية (TOPS) التي تدعيها Apple، ونجحوا في تدريب نموذج على الشريحة، وهي مصممة فقط للاستدلال.
تشرح المقالة كيف تمكن المؤلفون من هندسة محرك Apple العصبي (ANE) في شريحة M4 بشكل عكسي، متجاوزين Core ML للعمل مباشرة مع العتاد. استكشفوا حزمة البرامج الكاملة بدءًا من Core ML وصولاً إلى برنامج تشغيل نواة IOKit، واكتشفوا كيفية تجميع وتنفيذ البرامج على ANE دون استخدام Core ML، وكشفوا النقاب عن التنسيق الثنائي. وقاسوا الأداء الأقصى الفعلي، ليجدوا أن إعلان Apple عن '38 تيرا في الثانية' مضلل. وفي النهاية، تمكنوا من تدريب شبكة عصبية على الشريحة المخصصة للاستدلال فقط. إن ANE ليس وحدة معالجة رسومية أو وحدة معالجة مركزية؛ بل هو محرك رسم بياني حسابي ينفذ شبكة عصبية مجمعة كعملية ذرية واحدة. استخدموا تقنية تبديل الطرق وتحليل الثنائيات للكشف عن أكثر من 40 فئة خاصة في إطار AppleNeuralEngine.framework، بما في ذلك _ANEClient، التي تسمح بالوصول المباشر إلى خط أنابيب الترجمة والتحميل والتنفيذ. واكتشفوا أيضًا أن لغة MIL تُستخدم لوصف النماذج، وأن التنسيق الثنائي E5 هو ملف FlatBuffers يحدد معلمات البدائيات الثابتة للعتاد بدلاً من تخزين كود آلة تقليدي. ووجدوا طريقة لتجميع النماذج في الذاكرة باستخدام _ANEInMemoryModelDescriptor، رغم أنه لا يزال يكتب إلى دليل مؤقت. يحتوي ANE في M4 على 16 نواة، وعمق قائمة انتظار يبلغ 127، وتحكمًا مستقلًا في الجهد والتردد (DVFS).
المصدر: Habr — хаб ML —
الأصلي
