واحد 8 / 11

بهینه سازی عملکرد و باتری: برنامه های سریع و کارآمد با هوش مصنوعی

سود:

  • ابتدا با گرفتن یک نمایه و اندازه گیری گلوگاه واقعی، بهینه سازی بر اساس داده ها به جای حدس و گمان و تفسیر خروجی پروفایل توسط هوش مصنوعی
  • امکان هدف گذاری گران ترین عملیات از نظر زمان راه اندازی، روانی، حافظه و باتری و حذف کارهای سنگین از موضوع اصلی
  • امکان مدیریت هزینه باتری و پردازنده قابلیت های هوش مصنوعی مانند مدل روی دستگاه و تماس ابری از طریق نمونه برداری و پردازش دسته ای

کاربران موبایل بی تاب هستند. اگر برنامه به آرامی باز می‌شود، در حین پیمایش آویزان می‌شود، یا باتری را به سرعت تخلیه می‌کند، کاربر آن را حذف می‌کند و به آن رتبه ستاره‌ای در فروشگاه می‌دهد. کارایی و کارایی باتری موضوع بقای یک برنامه تلفن همراه است. این به طور مستقیم بر رضایت کاربر و رتبه فروشگاه تأثیر می گذارد. هوش مصنوعی کمکی قدرتمند در تشخیص تنگناهای عملکرد (گلوگاه)، تفسیر نتایج اندازه گیری و توصیه بهینه سازی است. اما قانون طلایی باقی می ماند: ابتدا اندازه گیری کنید، بعداً بهینه سازی کنید. در این واحد، حل مشکلات عملکرد و باتری را به روش مبتنی بر داده با هوش مصنوعی یاد خواهیم گرفت. یک مسئله به خصوص مهم، مدیریت تاثیر بر باتری و عملکرد قابلیت‌های هوش مصنوعی است که در واحدهای قبلی اضافه کردیم (مدل روی دستگاه، تماس ابری).

بهینه سازی بدون اندازه گیری

بزرگ‌ترین اشتباه یک توسعه‌دهنده بی‌تجربه، بهینه‌سازی پیش‌بینی‌کننده است: اتلاف وقت با گفتن «این باید کند باشد». تنگنای واقعی تقریباً همیشه در یک مکان غیرمنتظره است. بنابراین ابتدا نمایه گرفته می شود (پروفایل - اندازه گیری اینکه کدام بخش از برنامه چقدر زمان/حافظه/باتری مصرف می کند). Android Studio Profiler و Xcode Instruments برای این کار هستند. دادن داده های اندازه گیری به هوش مصنوعی سرعت تفسیر را افزایش می دهد. اما بدون اندازه گیری، گفتن به هوش مصنوعی "برنامه من کند است، سرعت آن را افزایش دهید" به معنای پیش بینی کورکورانه است.

چهار محور اصلی عملکرد عبارتند از:

محور

علامت

علت معمولی

زمان شروع

برنامه دیر باز می شود

کار سنگین روی نخ اصلی

روان (جانک)

اسکرول گیر می کند

پردازش طولانی، ترسیم مجدد غیر ضروری در رشته UI

حافظه

تورم، فروپاشی

نشت، تصویر بزرگ، حافظه پنهان کنترل نشده

باتری / گرما

انزال سریع

موقعیت مکانی مداوم، شبکه، حسگر، کار پس زمینه

نکته: هنگامی که از هوش مصنوعی در مورد مشکل عملکرد سؤال می کنید، خروجی نمایه را ارائه دهید (کدام عملکرد چقدر طول می کشد، نمودار حافظه). داده‌های سخت مانند «این تابع در هر فریم 30 میلی‌ثانیه طول می‌کشد» به هوش مصنوعی اجازه می‌دهد تا روی گلوگاه واقعی تمرکز کند. یک عبارت ذهنی مانند "آهسته" پاسخی کلی و بی فایده ایجاد می کند.

هزینه باتری توانایی های هوش مصنوعی

ویژگی‌های هوش مصنوعی که در این ماژول اضافه کرده‌ایم قدرتمند هستند، اما رایگان نیستند. استخراج یک مدل روی دستگاه، پردازنده و باتری را تحت فشار قرار می دهد. تشخیص تصویر دائماً در حال اجرا (مثلاً دوربینی که هر فریم را پردازش می کند) باعث گرم شدن تلفن و تخلیه باتری در عرض چند دقیقه می شود. از سوی دیگر، تماس‌های هوش مصنوعی ابری با روشن نگه داشتن رادیو شبکه (آنتنی که داده‌ها را ارسال و دریافت می‌کند) همیشه باتری را می‌خورد. راه حل: مدل روی دستگاه را فقط در صورت نیاز اجرا کنید، به جای هر فریم، چند بار در ثانیه از دوربین نمونه برداری کنید، درخواست های ابری را به صورت دسته ای ارسال کنید، در حالی که دستگاه در حال شارژ یا بیکاری است، کارهای سنگین را انجام دهید.

احتیاط: یک ویژگی هوش مصنوعی (ترجمه زنده، تشخیص مداوم اشیا) می تواند باتری را خیلی سریع تخلیه کند، دستگاه را گرم کند و ممکن است توسط سیستم خفه شود. قابلیتی که باعث می شود کاربر احساس کند این هزینه حذف شده است. من همیشه از هوش مصنوعی می پرسم "چگونه این ویژگی را با باتری سازگار کنم؟" سوال رو هم بپرس

مراحل بهینه سازی

  1. اندازه گیری کنید. گلوگاه واقعی را با Profiler پیدا کنید. حدس نزن
  2. بزرگترین مشکل را انتخاب کنید. به دنبال بهبود 1% نباشید. گران ترین معامله را هدف بگیرید.
  3. از هوش مصنوعی با داده ها بپرسید. درخواست پیشنهاد بهینه سازی با خروجی پروفایل + کد مربوطه.
  4. دوباره اعمال و اندازه گیری کنید. آیا بهبود واقعی است؟ آیا عدد کاهش یافته است؟
  5. کنترل رگرسیون آیا بهینه سازی چیزی را شکست؟ آزمایش بصری و عملکردی را تکرار کنید.

سه کیف کوچک

مورد 1 - جستجو در مکان نامناسب. یک تیم فکر می‌کرد که لیست‌ها گیر کرده‌اند و کدهای پیمایش را برای هفته‌ها دوباره کار کردند، بی‌فایده بود. هنگامی که آنها پروفایلر را گرفتند و داده ها را به هوش مصنوعی دادند، مشخص شد که گلوگاه واقعی تصاویری است که با هر ردیف از طریق شبکه بارگذاری مجدد می شوند. هنگامی که حافظه پنهان بصری اضافه شد، تسلط از 42 FPS به 60 FPS افزایش یافت. درس: اندازه گیری از هفته ها تلاش بیهوده جلوگیری می کند.

مورد 2 - ویژگی هیولا باتری. یک برنامه ترجمه ترجمه متن زنده را با دوربین اضافه کرد. کاربران شکایت کردند که "تلفن در 15 دقیقه گرم شد و 30 درصد باتری آن تمام شد." هنگامی که با هوش مصنوعی مشورت شد، مشخص شد که دوربین 30 فریم در ثانیه را پردازش می کند. زمانی که این به 5 فریم کاهش یافت و نتیجه با فاصله چند فریم به روز شد، مصرف باتری به یک سوم کاهش یافت و کیفیت آن محسوس نبود. درس: همیشه هوش مصنوعی را با چشم باتری تنظیم کنید.

مورد 3 - شروع آهسته. یک برنامه در 4.5 ثانیه باز شد. 20 درصد از کاربران هنگام راه اندازی خارج می شدند. نمایه نشان داد که تمام کارهای اولیه (تجزیه و تحلیل، بارگذاری داده ها، آماده سازی مدل) به صورت متوالی بر روی موضوع اصلی انجام شده است. با پیشنهاد هوش مصنوعی، اینها به تعویق افتاده و در پشت مشعل قرار گرفته اند. زمان باز شدن به 1.3 ثانیه کاهش یافت و میزان رهاسازی به نصف کاهش یافت. درس: در ابتدا فقط کارهای ضروری را انجام دهید.

اعلان ضعیف / اعلان قوی

اعلان ضعیف: "برنامه من کند است، سرعت آن را افزایش دهید."

اعلان قدرتمند: "پیمایش لیست در برنامه اندروید من گیر می کند (جنک). داده های پروفایل: bindImageView در هر فریم 28 میلی ثانیه طول می کشد، هر بار تصاویر از شبکه بارگیری می شوند، حافظه پنهان وجود ندارد. کد مرتبط: [کد آداپتور RecyclerView]. 3 موثرترین بهینه سازی را توصیه کنید. هر کدام از موثرترین بهینه سازی های ممکن را به ترتیب بهینه سازی اثرات جانبی ممکن به منظور کاهش تاثیر و عدم کاهش اثرات جانبی تصویر، حالت دهید. کیفیت."

قالب های قابل کپی

الگوی تجزیه و تحلیل Bottleneck: "داده های نمایه زیر را تفسیر کنید و 3 عملیات گران قیمت را پیدا کنید: [خروجی پروفایل]. برای هر کدام علت احتمالی و بهینه سازی مشخص را پیشنهاد دهید. ابتدا بیشترین تاثیر را بدهید."

الگوی بهینه‌سازی باتری: "این ویژگی باتری را به سرعت تخلیه می‌کند: [ویژگی، به‌عنوان مثال مکان دائمی]. آن را با باتری سازگار کنید: - کاهش دفعات نمونه‌برداری - محدودیت در پس‌زمینه - پردازش دسته‌ای - اجرا فقط در صورت لزوم مرتب‌سازی راه‌حل‌ها بدون ایجاد اختلال در تجربه کاربر. [کد]."

الگوی افزایش سرعت راه‌اندازی: "سرعت راه‌اندازی برنامه را افزایش دهید. کارهایی که در حال حاضر هنگام راه‌اندازی انجام می‌شوند: [فهرست]. کدام‌ها را می‌توان به تعویق انداخت، پس‌زمینه‌سازی کرد، یا با تنبلی بارگذاری کرد؟ موارد ضروری را از هم جدا کنید. [کد]"

الگوی هزینه ویژگی هوش مصنوعی: "عملکرد و هزینه باتری ویژگی [مدل روی دستگاه / تماس ابری] را که اضافه کردم ارزیابی کنید. معیارهایی را که باید اندازه‌گیری کنم و استراتژی‌هایی را برای کاهش هزینه فهرست کنید. [کد]"

اشتباهات رایج

  • بهینه سازی بدون اندازه گیری گلوگاه واقعی اغلب در مکانی متفاوت از آنچه پیش بینی می شد قرار دارد.
  • تعقیب دستاوردهای کوچک به جای بهبود 1 درصدی، گران ترین اقدام را هدف قرار دهید.
  • نادیده گرفتن هزینه باتری ویژگی های هوش مصنوعی. مدل/دوربین/شبکه ​​در حال کار مداوم باتری را می خورد.
  • تاپیک اصلی را خسته می کند. بلند کردن سنگین شروع و پیمایش نباید روی رشته UI باشد.
  • عدم اندازه گیری مجدد پس از بهینه سازی بررسی کنید که بهبود واقعی است و چیزی را خراب نمی کند.
  • اندازه گیری عملکرد در شبیه ساز سرعت واقعی دستگاه، دما و باتری کاملاً متفاوت است.

به طور خلاصه

کارایی و باتری موضوع بقای اپلیکیشن موبایل است. قانون طلایی: ابتدا اندازه گیری کنید، بعداً بهینه سازی کنید. دادن اطلاعات پروفایل به هوش مصنوعی سرعت تفسیر را افزایش می دهد. میل بی حد و حصر به "سرعت بخشیدن" به حدس های کور می انجامد. گران ترین معامله را هدف بگیرید، دنبال سودهای کوچک نباشید. قابلیت های هوش مصنوعی اضافه شده در این ماژول قدرتمند است اما هزینه باتری و پردازنده را به همراه دارد. این هزینه را با کاهش فرکانس نمونه برداری، بچینگ و اجرا فقط در صورت نیاز مدیریت کنید. بعد از هر بهینه سازی دوباره روی دستگاه واقعی اندازه گیری کنید.

وظیفه کاربردی

نمایه ای را در یک برنامه وارد کنید (پروژه یا نمونه خودتان) یا یک نمونه خروجی نمایه ایجاد کنید و آن را توسط هوش مصنوعی با "الگوی تحلیل گلوگاه" تفسیر کنید. بالاترین بهینه سازی تاثیر را اعمال کنید و دوباره اندازه گیری کنید: آیا این عدد واقعا کاهش یافته است؟ همچنین، یک ویژگی هوش مصنوعی را که در این ماژول اضافه کرده‌اید (مدل روی دستگاه یا تماس ابری) از نظر باتری با «الگوی هزینه ویژگی AI» ارزیابی کنید و حداقل یک تنظیم سازگار با باتری را تعیین کنید.

چک لیست

  • [ ] من قبل از بهینه سازی نمایه گرفتم، حدس نمی زدم
  • [ ] من گران ترین تجارت را هدف قرار دادم، در سودهای کوچک پراکنده نشدم
  • [ ] من داده های پروفایل هوش مصنوعی را به اعداد مشخص دادم
  • [ ] من هزینه باتری/پردازنده ویژگی های هوش مصنوعی را ارزیابی کردم
  • [ ] وزنه را از نخ اصلی حذف کردم
  • [ ] پس از بهینه سازی، دوباره روی دستگاه واقعی اندازه گیری کردم و رگرسیون را بررسی کردم