قادة الفكر

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

mm
أضف Unite.AI إلى مصادرك المفضلة على Google

هل تحتاج إلى ML؟

التعلم الآلي ممتاز في تحديد الأنماط. إذا كنت قادرًا على جمع مجموعة بيانات نظيفة لمهمتك، فمن الناحية العملية لا يوجد شيء يمنعك من بناء نموذج ML بأداء خارق. هذا صحيح بشكل خاص في المهام الكلاسيكية مثل التصنيف والانحدار والكشف عن الشذوذ.

عندما تكون مستعدًا لحل بعض مشاكلك التجارية مع ML، يجب أن تضع في الاعتبار مكان تشغيل نماذج ML الخاصة بك. من المنطقي لبعض الأشخاص تشغيل بنية تحتية للخادم. هذا يوفر ميزة إبقاء نماذج ML الخاصة بك خاصة، بحيث يصعب على المنافسين اللحاق بالركب. بالإضافة إلى ذلك، يمكن للخادم تشغيل مجموعة أوسع من النماذج. على سبيل المثال، نماذج GPT (التي أصبحت مشهورة مع ChatGPT) تتطلب حاليًا معالجات رسومات حديثة، لذلك لا يمكن استخدام أجهزة المستهلكين. من ناحية أخرى، تحتاج إلى دفع تكاليف صيانة البنية التحتية، وإذا كان من الممكن تشغيل نموذجك على جهاز المستهلك، فلماذا تدفع المزيد؟ بالإضافة إلى ذلك، قد توجد مخاوف تتعلق بالخصوصية حيث لا يمكنك إرسال بيانات المستخدم إلى خادم بعيد للمعالجة.

ومع ذلك، لنفترض أن من المنطقي استخدام أجهزة iOS الخاصة بالعملاء لتشغيل نموذج ML. ما الذي يمكن أن ي goes wrong؟

قيود المنصة

حدود الذاكرة

أجهزة iOS لديها ذاكرة فيديو متاحة أقل بكثير من نظيراتها على سطح المكتب. على سبيل المثال، يحتوي Nvidia RTX 4080 Ti على 20 جيجابايت من الذاكرة المتاحة. أجهزة آيفون، من ناحية أخرى، لديها ذاكرة فيديو مشتركة مع باقي الذاكرة في ما يسمى “الذاكرة الموحدة”. لل参照، يحتوي آيفون 14 برو على 6 جيجابايت من الذاكرة. بالإضافة إلى ذلك، إذا قمت بتحديد أكثر من نصف الذاكرة، فمن المحتمل أن يقتل نظام iOS التطبيق لضمان استجابة نظام التشغيل. هذا يعني أنك لا يمكنك الاعتماد إلا على وجود 2-3 جيجابايت من الذاكرة المتاحة لاستدلال الشبكة العصبية.

يتم تدريب الباحثون عادةً على نماذجهم لتحسين الدقة على استخدام الذاكرة. ومع ذلك، هناك أيضًا أبحاث متاحة حول طرق تحسين السرعة وذاكرة التخزين، لذلك يمكنك إما البحث عن نماذج أقل طلبًا أو تدريب واحدة بنفسك.

دعم طبقات الشبكة (العمليات)

معظم ML والشبكات العصبية تأتي من إطارات التعلم العميق الشهيرة ثم يتم تحويلها إلى CoreML مع Core ML Tools. CoreML هو محرك استدلال مكتوب بواسطة Apple (AAPL ) يمكنه تشغيل نماذج مختلفة على أجهزة Apple. الطبقات مدروسة جيدًا للعتاد وقائمة الطبقات المدعومة طويلة جدًا، لذلك هذا هو نقطة بداية ممتازة. ومع ذلك، هناك خيارات أخرى مثل Tensorflow Lite متاحة.

الطريقة الأفضل لمعرفة ما هو ممكن مع CoreML هو النظر إلى بعض النماذج المحولة بالفعل باستخدام عارضات مثل Netron. Apple قامت بإنشاء قائمة بعض النماذج المدعومة رسميًا، ولكن هناك أيضًا حدائق نماذج مدعومة من المجتمع. قائمة العمليات المدعومة تتغير باستمرار، لذلك النظر إلى код مصدر Core ML Tools يمكن أن يكون مفيدًا كبداية. على سبيل المثال، إذا كنت ترغب في تحويل نموذج PyTorch، يمكنك محاولة العثور على طبقة اللازمة هنا.

بالإضافة إلى ذلك، قد تحتوي بعض الهياكل الجديدة على رمز CUDA مكتوب يدويًا لبعض الطبقات. في مثل هذه الحالات، لا يمكنك توقع أن توفر CoreML طبقة محددة مسبقًا. ومع ذلك، يمكنك توفير تنفيذك الخاص إذا كان لديك مهندس ماهر ملمًا بكتابة رمز GPU.

بشكل عام، أفضل نصيحة هنا هي محاولة تحويل نموذجك إلى CoreML في وقت مبكر، حتى قبل تدريبه. إذا كان لديك نموذج لم يتم تحويله على الفور، فمن الممكن تعديل تعريف الشبكة العصبية في إطار DL أو مصدر كود Core ML Tools لإنشاء نموذج CoreML صالح بدون الحاجة إلى كتابة طبقة مخصصة لمحرك الاستدلال CoreML.

التحقق

أخطاء محرك الاستدلال

لا يوجد طريقة لاختبار كل مجموعة ممكنة من الطبقات، لذلك سيكون لمحرك الاستدلال دائمًا بعض الأخطاء. على سبيل المثال، من الشائع رؤية الت膨تفات التوسعية تستخدم الكثير من الذاكرة مع CoreML، مما يشير إلى تنفيذ مكتوب سيئًا مع نواة كبيرة محاطة بالأصفار. خطأ آخر شائع هو مخرج نموذج غير صحيح لبعض هياكل النماذج.

في هذه الحالة، قد تكون ترتيب العمليات عاملاً. من الممكن الحصول على نتائج غير صحيحة اعتمادًا على ما إذا كانت التنشيط مع الالتفاف أو الاتصال المتبقي يأتي أولاً. الطريقة الوحيدة للحصول على ضمان أن كل شيء يعمل بشكل صحيح هو أخذ نموذجك، تشغيله على الجهاز المقصود ومقارنة النتيجة مع إصدار سطح المكتب. من المفيد في هذا الاختبار أن يكون لديك نموذجًا شبه مدرب على الأقل، وإلا فقد تتراكم الأخطاء العددية لنموذج بدئي سيئ.

فقدان الدقة

يستخدم آيفون دقة نصف الدقة على نطاق واسع للاستدلال. بينما لا توجد انخفاضات ملحوظة في دقة بعض النماذج بسبب عدد أقل من البتات في تمثيل النقطة العائمة، قد تعاني نماذج أخرى. يمكنك تقدير فقدان الدقة عن طريق تقييم نموذجك على سطح المكتب بدقة نصف الدقة وحساب مقياس اختبار لنموذجك. طريقة أفضل هي تشغيله على جهاز حقيقي لمعرفة ما إذا كان النموذج دقيقًا كما هو موضح.

التحليل

تختلف قدرات الأجهزة لطرازات آيفون المختلفة. الأحدث منها لديها وحدات معالجة Neural Engine المحسنة التي يمكن أن ترفع الأداء العام بشكل كبير. وهي مدروسة لعمليات معينة، ويمكن لمحرك CoreML توزيع العمل بذكاء بين CPU وGPU وNeural Engine. لقد تحسنت معالجات الرسومات الخاصة بأبل مع مرور الوقت، لذلك من الطبيعي أن نرى أداءً متقلبًا عبر طرازات آيفون المختلفة. من الجيد اختبار نماذجك على الأجهزة المدعومة بأدنى حد لضمان أقصى قدر من التوافق والأداء المقبول للأجهزة القديمة.

كما أنه من الجيد ذكر أن CoreML يمكنه تحسين بعض الطبقات والعمليات الوسيطة في المكان، مما يمكن أن ي cải thiện الأداء بشكل كبير. عامل آخر يجب مراعاته هو أن نموذجًا يؤدي أسوأ على سطح المكتب قد يؤدي في الواقع استدلالًا أسرع على نظام iOS. هذا يعني أنه من المفيد قضاء بعض الوقت في تجربة هياكل مختلفة.

لمزيد من التحسين، يحتوي Xcode على أداة أدوات لطيفة مع قالب مخصص لنموذج CoreML يمكن أن يوفر نظرة أعمق على ما يبطئ نموذجك.

الختام

لا أحد يمكن أن يتنبأ بجميع المخاطر المحتملة عند تطوير نماذج ML لنظام iOS. ومع ذلك، هناك بعض الأخطاء التي يمكن تجنبها إذا كنت تعرف ما تبحث عنه. ابدأ بتحويل وتحقق وتحليل نماذج ML الخاصة بك في وقت مبكر لضمان أن نموذجك سيعمل بشكل صحيح ويتوافق مع متطلبات العمل، واتبع النصائح الموجزة أعلاه لضمان النجاح بأسرع ما يمكن.

Konstantin Semianov، هو مدير تقني في Neatsy.AI، أول تطبيق في العالم يكتشف مشاكل الصحة العظمية والقدمية، باستخدام الذكاء الاصطناعي والواقع المعزز، مع كاميرا آيفون فقط. قبل انضمامه إلى Neatsy.AI، عمل كمهندس أبحاث وتطوير في Prisma Labs، المطورون لتطبيق Lensa.