قاده التفكير
تجنب المخاطر المخفية: التنقل في المزالق غير الواضحة في ML على iOS

هل تحتاج ML؟
التعلم الآلي ممتاز في اكتشاف الأنماط. إذا تمكنت من جمع مجموعة بيانات نظيفة لمهمتك، فعادةً ما يكون الأمر مجرد مسألة وقت قبل أن تتمكن من إنشاء نموذج تعلم الآلة بأداء خارق. وينطبق هذا بشكل خاص على المهام الكلاسيكية مثل التصنيف والانحدار والكشف عن الحالات الشاذة.
عندما تكون مستعدًا لحل بعض مشاكل عملك مع ML ، يجب أن تفكر في المكان الذي ستعمل فيه نماذج ML. بالنسبة للبعض ، من المنطقي تشغيل البنية التحتية للخادم. هذا له ميزة الحفاظ على خصوصية نماذج ML الخاصة بك ، لذلك يصعب على المنافسين اللحاق بالركب. علاوة على ذلك ، يمكن للخوادم تشغيل مجموعة متنوعة من الطرز. على سبيل المثال ، نماذج GPT (اشتهرت بـ شات جي بي تي) تتطلب حاليًا وحدات معالجة رسومات حديثة ، لذا فإن الأجهزة الاستهلاكية غير واردة. من ناحية أخرى ، فإن صيانة البنية التحتية الخاصة بك أمر مكلف للغاية ، وإذا كان بإمكان جهاز المستهلك تشغيل الطراز الخاص بك ، فلماذا تدفع أكثر؟ بالإضافة إلى ذلك ، قد تكون هناك أيضًا مخاوف تتعلق بالخصوصية حيث لا يمكنك إرسال بيانات المستخدم إلى خادم بعيد للمعالجة.
ومع ذلك ، لنفترض أنه من المنطقي استخدام أجهزة iOS الخاصة بعملائك لتشغيل نموذج ML. ما الخطأ الذي يمكن أن يحدث؟
قيود المنصة
حدود الذاكرة
تحتوي أجهزة iOS على ذاكرة فيديو متاحة أقل بكثير من نظيراتها في أجهزة سطح المكتب. على سبيل المثال ، يحتوي Nvidia RTX 4080 Ti الأخير على 20 جيجابايت من الذاكرة المتوفرة. من ناحية أخرى ، تتمتع أجهزة iPhone بذاكرة فيديو مشتركة مع بقية ذاكرة الوصول العشوائي في ما يسمونه "الذاكرة الموحدة". للإشارة ، يحتوي iPhone 14 Pro على 6 غيغابايت من ذاكرة الوصول العشوائي. علاوة على ذلك ، إذا قمت بتخصيص أكثر من نصف الذاكرة ، فمن المحتمل جدًا أن يقتل نظام iOS التطبيق للتأكد من استمرار استجابة نظام التشغيل. هذا يعني أنه لا يمكنك الاعتماد إلا على 2-3 غيغابايت من الذاكرة المتوفرة لاستدلال الشبكة العصبية.
عادةً ما يقوم الباحثون بتدريب نماذجهم لتحسين الدقة على استخدام الذاكرة. ومع ذلك ، هناك أيضًا أبحاث متاحة حول طرق تحسين السرعة وبصمة الذاكرة ، بحيث يمكنك إما البحث عن نماذج أقل تطلبًا أو تدريب أحدها بنفسك.
دعم طبقات الشبكة (العمليات)
تأتي معظم شبكات التعلم الآلي والشبكات العصبية من أطر التعلم العميق المعروفة ثم يتم تحويلها إلى CoreML نماذج مع أدوات ML الأساسية. CoreML هو محرك استدلال كتبته شركة Apple يمكنه تشغيل طرز مختلفة على أجهزة Apple. تم تحسين الطبقات جيدًا للأجهزة وقائمة الطبقات المدعومة طويلة جدًا ، لذا فهذه نقطة بداية ممتازة. ومع ذلك ، هناك خيارات أخرى مثل Tensorflow لايت وتتوفر أيضا.
أفضل طريقة لمعرفة ما هو ممكن مع CoreML هو إلقاء نظرة على بعض النماذج المحولة بالفعل باستخدام مشاهدين مثل نترون. تسرد Apple بعضًا من الموديلات المدعومة رسميًا، ولكن هناك أيضًا حدائق حيوان نموذجية يحركها المجتمع. تتغير القائمة الكاملة للعمليات المدعومة باستمرار ، لذا فإن البحث في التعليمات البرمجية المصدر لـ Core ML Tools يمكن أن يكون مفيدًا كنقطة بداية. على سبيل المثال ، إذا كنت ترغب في تحويل نموذج PyTorch ، يمكنك محاولة العثور على الطبقة اللازمة هنا.
بالإضافة إلى ذلك ، قد تحتوي بعض الأبنية الجديدة على كود CUDA مكتوب بخط اليد لبعض الطبقات. في مثل هذه الحالات ، لا يمكنك أن تتوقع أن يوفر CoreML طبقة محددة مسبقًا. ومع ذلك ، يمكنك تقديم التنفيذ الخاص بك إذا كان لديك مهندس ماهر على دراية بكتابة كود GPU.
بشكل عام ، أفضل نصيحة هنا هي محاولة تحويل النموذج الخاص بك إلى CoreML مبكرًا ، حتى قبل التدريب عليه. إذا كان لديك نموذج لم يتم تحويله على الفور ، فمن الممكن تعديل تعريف الشبكة العصبية في إطار عمل DL الخاص بك أو كود مصدر محول Core ML Tools لإنشاء نموذج CoreML صالح دون الحاجة إلى كتابة طبقة مخصصة لاستدلال CoreML.
التحقق
أخطاء محرك الاستدلال
لا توجد طريقة لاختبار كل مجموعة ممكنة من الطبقات ، لذلك سيكون لدى محرك الاستدلال دائمًا بعض الأخطاء. على سبيل المثال ، من الشائع رؤية التلافيف المتوسعة تستخدم الكثير من الذاكرة مع CoreML ، مما يشير على الأرجح إلى تنفيذ مكتوب بشكل سيئ مع نواة كبيرة مبطنة بالأصفار. خطأ شائع آخر هو إخراج النموذج غير الصحيح لبعض بنيات النموذج.
في هذه الحالة، قد يُؤخذ ترتيب العمليات في الاعتبار. من الممكن الحصول على نتائج غير صحيحة بناءً على ما إذا كان التنشيط باستخدام الالتفاف أو الاتصال المتبقي يأتي أولاً. الطريقة الوحيدة لضمان عمل كل شيء بشكل صحيح هي أخذ نموذجك وتشغيله على الجهاز المقصود ومقارنة النتيجة بإصدار سطح المكتب. في هذا الاختبار، من المفيد توفر نموذج شبه مدرب على الأقل، وإلا فقد يتراكم الخطأ العددي في حالة النماذج التي تم تهيئتها عشوائيًا بشكل سيئ. على الرغم من أن النموذج المدرب النهائي سيعمل بشكل جيد، إلا أن النتائج قد تختلف اختلافًا كبيرًا بين الجهاز وسطح المكتب في حالة النموذج الذي تم تهيئته عشوائيًا.
فقدان الدقة
يستخدم iPhone دقة نصف الدقة على نطاق واسع للاستدلال. في حين أن بعض النماذج لا تحتوي على أي تدهور ملحوظ في الدقة بسبب عدد أقل من وحدات البت في تمثيل النقطة العائمة ، فقد تعاني النماذج الأخرى. يمكنك تقريب فقدان الدقة من خلال تقييم النموذج الخاص بك على سطح المكتب بنصف الدقة وحساب مقياس اختبار للطراز الخاص بك. أفضل طريقة هي تشغيله على جهاز فعلي لمعرفة ما إذا كان النموذج دقيقًا كما هو مقصود.
جانبي
تتميز طرازات iPhone المختلفة بقدرات أجهزة متنوعة. أحدثها تحسن من وحدات معالجة المحرك العصبي التي يمكن أن ترفع الأداء العام بشكل كبير. تم تحسينها لعمليات معينة ، ويمكن لـ CoreML توزيع العمل بذكاء بين وحدة المعالجة المركزية ووحدة معالجة الرسومات والمحرك العصبي. لقد تحسنت أيضًا وحدات معالجة رسومات Apple بمرور الوقت ، لذلك من الطبيعي أن ترى أداءً متقلبًا عبر طرز iPhone المختلفة. من الجيد اختبار النماذج الخاصة بك على الأجهزة المدعومة بالحد الأدنى لضمان أقصى قدر من التوافق والأداء المقبول للأجهزة القديمة.
من الجدير بالذكر أيضًا أن CoreML يمكنه تحسين بعض الطبقات الوسيطة والحسابات في نفس المكان ، مما قد يؤدي إلى تحسين الأداء بشكل كبير. هناك عامل آخر يجب مراعاته وهو أنه في بعض الأحيان ، قد يقوم النموذج الذي يعمل بشكل أسوأ على سطح المكتب بالاستدلال بشكل أسرع على نظام التشغيل iOS. هذا يعني أنه من المفيد قضاء بعض الوقت في تجربة البنى المختلفة.
لمزيد من التحسين ، يحتوي Xcode على أداة أدوات لطيفة مع نموذج فقط لنماذج CoreML التي يمكن أن تعطي نظرة أكثر شمولاً حول ما يبطئ استنتاج النموذج الخاص بك.
الخاتمة
لا أحد يستطيع توقع جميع المخاطر المحتملة عند تطوير نماذج ML لنظام iOS. ومع ذلك ، هناك بعض الأخطاء التي يمكن تجنبها إذا كنت تعرف ما الذي تبحث عنه. ابدأ في تحويل نماذج ML الخاصة بك والتحقق منها وتوصيفها مبكرًا للتأكد من أن نموذجك سيعمل بشكل صحيح ويلائم متطلبات عملك ، واتبع النصائح الموضحة أعلاه لضمان النجاح في أسرع وقت ممكن.












