وحدة 8 / 11

تحسين الأداء والبطارية: تطبيقات سريعة وفعالة مع الذكاء الاصطناعي

المكاسب:

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

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

التحسين بدون قياس

أكبر خطأ يرتكبه المطور عديم الخبرة هو التحسين التنبئي: إضاعة الوقت في القول "يجب أن يكون هذا بطيئًا". عنق الزجاجة الحقيقي يكون دائمًا تقريبًا في مكان غير متوقع. لذلك يتم أولاً أخذ ملف التعريف (التوصيف - قياس أي جزء من التطبيق يستهلك مقدار الوقت/الذاكرة/البطارية). إن Android Studio Profiler وXcode Instruments مخصصان لهذه المهمة. يؤدي تقديم بيانات القياس إلى الذكاء الاصطناعي إلى تسريع عملية التفسير؛ ولكن بدون القياس، فإن إخبار الذكاء الاصطناعي بأن "تطبيقي بطيء، قم بتسريعه" يعني إجراء تنبؤات بشكل أعمى.

المحاور الأربعة الرئيسية للأداء هي:

المحور

أعراض

سبب نموذجي

وقت البدء

يفتح التطبيق في وقت متأخر

عمل شاق على الخيط الرئيسي

الطلاقة (جانك)

التمرير يتعطل

معالجة طويلة، إعادة رسم غير ضرورية في مؤشر ترابط واجهة المستخدم

الذاكرة

تورم، انهيار

تسرب، صورة كبيرة، ذاكرة التخزين المؤقت غير قابلة للتحكم

البطارية/الحرارة

القذف السريع

الموقع المستمر، الشبكة، أجهزة الاستشعار، وظيفة الخلفية

نصيحة: عند سؤال الذكاء الاصطناعي عن مشكلة في الأداء، قم بإعطاء مخرجات الملف الشخصي (أي وظيفة تستغرق المدة، الرسم البياني للذاكرة). البيانات الصلبة مثل "تستغرق هذه الوظيفة 30 مللي ثانية لكل إطار" تسمح للذكاء الاصطناعي بالتركيز على عنق الزجاجة الحقيقي؛ عبارة ذاتية مثل "بطيء" تنتج إجابة عامة وغير مجدية.

تكلفة بطارية قدرات الذكاء الاصطناعي

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

تنبيه: يمكن لميزة الذكاء الاصطناعي التي تعمل باستمرار (الترجمة المباشرة، والتعرف المستمر على الكائنات) أن تستنزف البطارية بسرعة كبيرة، وتسخن الجهاز، وقد يخنقها النظام. يتم حذف الميزة التي تجعل المستخدم يشعر بهذه التكلفة. أسأل الذكاء الاصطناعي دائمًا "كيف أجعل هذه الميزة صديقة للبطارية؟" اطرح السؤال أيضًا.

خطوات التحسين

  1. قياس. ابحث عن عنق الزجاجة الحقيقي باستخدام Profiler؛ لا تخمن.
  2. اختر المشكلة الأكبر. لا تطارد 1% من التحسن؛ تهدف إلى الصفقة الأكثر تكلفة.
  3. اسأل الذكاء الاصطناعي بالبيانات. اطلب اقتراح التحسين مع مخرجات الملف الشخصي + الكود ذي الصلة.
  4. تطبيق وقياس مرة أخرى. هل التحسن حقيقي؟ هل انخفض العدد؟
  5. التحكم في الانحدار. هل كسر التحسين أي شيء؟ كرر الاختبار البصري والوظيفي.

ثلاث حالات صغيرة

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

الحالة 2 - ميزة وحش البطارية. أضاف تطبيق الترجمة ترجمة نصية مباشرة بالكاميرا؛ واشتكى المستخدمون من أن "سخونة الهاتف خلال 15 دقيقة ونفاد 30% من البطارية". وعند استشارة الذكاء الاصطناعي، تبين أن الكاميرا تعالج 30 إطارًا في الثانية؛ وعندما تم تقليل ذلك إلى 5 إطارات وتحديث النتيجة بفارق بضعة إطارات، انخفض استهلاك البطارية إلى الثلث، ولم تكن الجودة ملحوظة. الدرس المستفاد: اضبط الذكاء الاصطناعي دائمًا بعين البطارية.

الحالة 3 - بداية بطيئة. تم فتح التطبيق خلال 4.5 ثانية؛ 20% من المستخدمين كانوا يخرجون عند بدء التشغيل. أظهر الملف الشخصي أن جميع الأعمال الأولية (التحليلات، وتحميل البيانات، وإعداد النموذج) تم إجراؤها بالتسلسل على الموضوع الرئيسي. ومع اقتراح الذكاء الاصطناعي، تم تأجيل هذه الأمور ووضعها في المؤخرة؛ تم تقليل وقت الافتتاح إلى 1.3 ثانية، وانخفض معدل التخلي إلى النصف. الدرس المستفاد: قم فقط بالأعمال الأساسية في البداية.

موجه ضعيف / موجه قوي

المطالبة الضعيفة: "تطبيقي بطيء، قم بتسريعه."

مطالبة قوية: "يتعطل تمرير القائمة (غير مرغوب فيه) في تطبيق Android الخاص بي. بيانات ملف التعريف: bindImageView يستغرق 28 مللي ثانية في كل إطار، ويتم تحميل الصور من الشبكة في كل مرة، ولا توجد ذاكرة تخزين مؤقت. التعليمات البرمجية ذات الصلة: [رمز محول RecyclerView]. أوصي بالتحسينات الثلاثة الأكثر فعالية حسب ترتيب التأثير. حدد المكاسب المتوقعة والآثار الجانبية المحتملة لكل منها. حدد أولويات الحلول التي لا تقلل من جودة الصورة."

قوالب قابلة للنسخ

قالب تحليل عنق الزجاجة: "قم بتفسير بيانات الملف الشخصي التالية وابحث عن أغلى 3 عمليات: [مخرجات ملف التعريف]. اقترح سببًا محتملاً وتحسينًا ملموسًا لكل منها. أعط التأثير الأعلى أولاً."

قالب تحسين البطارية: "تستنزف هذه الميزة البطارية بسرعة: [الميزة، على سبيل المثال الموقع الدائم]. اجعلها صديقة للبطارية: - تقليل تكرار أخذ العينات - القيود في الخلفية - معالجة الدفعات - تشغيل فقط عند الضرورة، فرز الحلول دون تعطيل تجربة المستخدم. [رمز]"

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

قالب تكلفة ميزة الذكاء الاصطناعي: "قم بتقييم الأداء وتكلفة البطارية لميزة [الطراز على الجهاز/الاتصال السحابي] التي أضفتها. قم بإدراج المقاييس التي يجب أن أقيسها والاستراتيجيات لتقليل التكلفة. [رمز]"

الأخطاء الشائعة

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

باختصار

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

مهمة التطبيق

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

قائمة مرجعية

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