سود:
- امکان تصمیم گیری روی دستگاه یا ابر و انتخاب ابزار مناسب (ML Kit، Core ML، TensorFlow Lite) بر اساس حریم خصوصی، نیاز آفلاین، اندازه مدل و معیارهای باتری
- امکان جلوگیری از خطاهای بی صدا با تأیید پیش پردازش ورودی (اندازه و عادی سازی) از سند مدل در یکپارچه سازی مدل
- امکان ارزیابی امتیاز اطمینان و اندازه گیری نتیجه با تایید کاربر و روی دستگاه واقعی، بدون ارائه پیش بینی های کم اطمینان به عنوان حقیقت مطلق.
تاکنون از هوش مصنوعی به عنوان کمکی برای سرعت بخشیدن به روند توسعه استفاده کرده ایم. اکنون به نقش دوم هوش مصنوعی می رویم: استعدادهای تعبیه شده در برنامه. تلفنهای مدرن این قدرت را دارند که مدلهای هوش مصنوعی مانند تشخیص تصویر، ترجمه متن، رونویسی گفتار و غیره را مستقیماً روی دستگاه (روی دستگاه - در پردازنده خود گوشی بدون رفتن به سرور) اجرا کنند. هوش مصنوعی روی دستگاه؛ از نظر سرعت، حریم خصوصی و عملکرد آفلاین، مزایای زیادی نسبت به راه حل های ابری ارائه می دهد. در این بخش، ما یاد میگیریم که چگونه هوش مصنوعی را با Core ML iOS، کراس پلتفرم TensorFlow Lite (که اکنون به عنوان LiteRT شناخته میشود) و راهحل آماده ML Kit Google در برنامه جاسازی کنیم و چگونه از هوش مصنوعی به عنوان دستیار در این ادغام استفاده کنیم.
روی دستگاه یا ابر؟
این اولین و مهمترین تصمیم معماری است. هوش مصنوعی روی دستگاه داده ها را از تلفن حذف نمی کند - یک پیروزی بزرگ برای حفظ حریم خصوصی. همچنین آنی است و به صورت آفلاین کار می کند زیرا هیچ تأخیر شبکه وجود ندارد. با این حال، قدرت پردازش و حافظه دستگاه محدود است. مدلهای بسیار بزرگ (مانند مدلهای زبان غولپیکر) در گوشی جا نمیشوند یا باتری را خالی میکنند. از سوی دیگر، هوش مصنوعی ابری قدرت نامحدودی را ارائه می دهد، اما داده ها را به سرور ارسال می کند، به شبکه نیاز دارد و تاخیر ایجاد می کند.
معیار
روی دستگاه
Cloud (Cloud API)
حریم خصوصی
داده ها روی دستگاه باقی می مانند، قوی
داده ها به سرور می رود، توجه لازم است
سرعت
فوری، بدون شبکه
بستگی به تأخیر شبکه دارد
آفلاین
کار می کند
کار نمی کند
اندازه مدل
محدود (منبع تلفن)
نامحدود
باتری / گرما
اثرات با استفاده زیاد
سرور تحت بار، دستگاه آرام است
هزینه
رایگان (منبع دستگاه)
هزینه در هر استفاده
قانون تصمیمگیری: اگر دادههای شخصی/حساس در حال پردازش هستند، نیاز به کار آفلاین دارند یا پاسخ فوری ضروری است، روی دستگاه را انتخاب کنید. اگر به یک مدل بسیار بزرگ نیاز دارید، به ابر مراجعه کنید. این واحد بر روی دستگاه متمرکز است. در بخش بعدی هوش مصنوعی ابری را پوشش خواهیم داد.
نکته: همیشه ویژگیهایی را که دادههای حساس (سلامت، بیومتریک، مکان) را مدیریت میکند، پیشفرض روی دستگاه قرار دهید. عبارت "داده ها از دستگاه خارج نمی شوند" هم برای رعایت حریم خصوصی و هم برای اعتماد کاربر بسیار ارزشمند است و تفاوت زیادی در برچسب حریم خصوصی فروشگاه ایجاد می کند.
سه راه: کیت ML، Core ML، TensorFlow Lite
ML Kit (Google) ساده ترین راه برای شروع است: قابلیت های آماده ای مانند تشخیص متن (OCR - خواندن متن در تصویر)، تشخیص چهره، خواندن بارکد، ترجمه در چند خط را ارائه می دهد. شما نیازی به آموزش مدل خود ندارید. Core ML (Apple) کارآمدترین راه برای اجرای مدل خود یا یک مدل آماده در iOS است. از سخت افزار Neural Engine اپل (پردازنده شبکه عصبی مصنوعی) استفاده می کند. TensorFlow Lite/LiteRT یک راه حل بین پلتفرمی است که به شما امکان می دهد مدل آموزش دیده خود را هم در اندروید و هم در iOS اجرا کنید.
جریان ادغام کلی با هوش مصنوعی به شرح زیر است:
- تعریف استعداد. یک هدف واضح، مانند «میخواهم متن داخل عکس را بخوانم».
- انتخاب مسیر اگر استعداد آماده وجود دارد، ML Kit. Core ML/TF Lite در صورت موجود بودن مدل خاص.
- قالب مدل. .mlmodel (Core ML)، .tflite (TF Lite). مراحل تبدیل هوش مصنوعی را توضیح می دهد.
- کد یکپارچه سازی بارگذاری مدل، پیش پردازش ورودی، تفسیر خروجی.
- تست عملکرد. سرعت، حافظه، اندازه گیری باتری در دستگاه واقعی.
احتیاط: رایج ترین اشتباه هوش مصنوعی در ادغام مدل روی دستگاه، پیش پردازش ورودی است – تبدیل تصویر به اندازه و فرمت رنگی مورد انتظار مدل. اگر مدل انتظار پیکسل 224x224 را داشته باشد و شما به آن 300x300 بدهید، نتیجه بی معنی خواهد بود، اما پیغام خطا دریافت نمی کنید. مقادیر پیش پردازش را از سند مدل تأیید کنید.
دانستن محدودیت های مدل
یک مدل روی دستگاه بر اساس داده هایی که روی آن آموزش دیده است، تصمیم می گیرد. یک مدل تشخیص شی که فقط روی عکسهای گرفته شده در روز آموزش داده شود، در تصاویر شب اشتباه خواهد بود. مدل دارای امتیاز اطمینان است (اطمینان - چقدر مدل در مورد پاسخ خود مطمئن است، معمولاً بین 0 تا 1). ارائه نتایج کم اعتماد به کاربر به عنوان دقیق خطرناک است. به عنوان مثال، یک برنامه اسکن لکه های پوستی نباید بگوید "قطعاً خوش خیم"، بلکه باید بگوید "پیش بینی مدل این است، لطفا با پزشک مشورت کنید". نتیجه مدل یک توصیه است، نه یک تشخیص.
سه کیف کوچک
مورد 1 - شتاب با OCR. یک برنامه ردیابی هزینه بار وارد کردن دستی رسیدها با تشخیص متن ML Kit را برداشته است. کاربر از رسید عکس می گیرد و مبلغ و تاریخ به صورت خودکار پر می شود. زمان ورود دستی از 40 ثانیه به 8 ثانیه در هر رسید کاهش یافت. تیم همیشه از کاربر خواسته بود میزان خواندن هوش مصنوعی را تأیید کند. زیرا رسیدهای چروک شده دارای 6 درصد حاشیه خطا بودند. اتوماسیون + تایید انسانی تعادل مناسبی بود.
مورد 2 - خطای پیش پردازش. یک تیم یک مدل تشخیص گیاه را با TensorFlow Lite ادغام کرد. در آزمایشگر، نتایج تصادفی بود. مشکل این بود که کدی که هوش مصنوعی تولید میکرد، تصویر را در محدوده [0،1] مورد انتظار مدل عادی نمیکرد (مقادیر پیکسل در 0-255 باقی مانده بودند). هنگامی که نرمال سازی اضافه شد، دقت از 30٪ به 89٪ افزایش یافت. درس: پیش پردازش بی صدا اما کشنده است.
مورد 3 - به دست آوردن حریم خصوصی. یک برنامه بهداشتی ناهنجاری را از دادههای ضربان قلب با مدل Core ML روی دستگاه تشخیص داد. داده ها هرگز به سرور نرفتند. این انتخاب اپلیکیشن را قادر میسازد تا عبارت «دادهها را جمعآوری نمیکند» در برچسب حریم خصوصی اپ استور دریافت کند و نرخ دانلود آن را نسبت به رقبا افزایش دهد. انتخاب روی دستگاه هم اخلاقی و هم از نظر تجاری سودآور بود.
اعلان ضعیف / اعلان قوی
اعلان ضعیف: "Add image recognition to my app."
درخواست قدرتمند: "ویژگی خواندن مقدار و تاریخ را به برنامه Android/Kotlin من اضافه کنید. - از Google ML Kit Text Recognition (روی دستگاه، آفلاین) استفاده کنید - از دوربین یا گالری عکس بگیرید - مقدار و تاریخ را از متن شناسایی شده با regex استخراج کنید - نتیجه را برای تایید به کاربر در فیلد EDITABLE WHITEVELE, auto-downdown ارائه دهید. شرایط پیش پردازش و خطا، مراحل را توضیح دهید."
قالب های قابل کپی
الگوی انتخاب مسیر: "میخواهم ویژگی زیر را ایجاد کنم: [ویژگی]. آیا باید روی دستگاه باشد یا ابر؟ بر اساس: حریم خصوصی، نیاز آفلاین، اندازه مدل، باتری، هزینه مقایسه کنید. ابزار مناسب (ML Kit / Core ML / TF Lite) را توصیه کنید و توجیه کنید."
الگوی ادغام: "نوشتن [مدل/قابلیت] ادغام برای [پلتفرم]: 1) بارگذاری مدل2) پیش پردازش ورودی (اندازه مورد انتظار و عادی سازی) 3) استنتاج فراخوانی4) تفسیر خروجی و بررسی امتیاز اطمینان 5) هشدار به کاربر در مورد نتیجه کم اعتماد به من یادآوری کنید که اسناد مدل پیش پردازش را از طریق اسناد بررسی کنم."
الگوی امتیاز اطمینان: "امتیاز اطمینان را در این کد استنتاج در نظر بگیرید: - ارائه نتیجه "دقیق" زیر آستانه (مثلاً 0.6) - نمایش "این یک تخمین" به کاربر است - در صورت وجود منطقه بحرانی (سلامت، ایمنی) به متخصص مراجعه کنید."
الگوی راستیآزمایی عملکرد: "معیارهایی را که باید در دستگاه واقعی برای ادغام مدل روی دستگاه اندازهگیری کنم فهرست کنید: زمان استنتاج، افزایش حافظه، تاثیر باتری، گرمایش. روش اندازهگیری را برای هر کدام بگویید."
اشتباهات رایج
- نادیده گرفتن پیش پردازش یا انجام نادرست آن. اندازه اشتباه / عادی سازی بی سر و صدا نتیجه اشتباه ایجاد می کند.
- نادیده گرفتن امتیاز اعتماد به نفس ارائه تخمین کم اعتماد به عنوان دقیق، کاربر را گمراه می کند.
- تست مدل در شبیه ساز سرعت واقعی دستگاه و باتری بسیار متفاوت است. همیشه با سخت افزار واقعی اندازه گیری کنید.
- ارسال غیر ضروری داده های حساس به ابر انتخاب ابر در زمانی که روی دستگاه امکان پذیر است یک خطر حفظ حریم خصوصی است.
- نادیده گرفتن اندازه مدل برنامههای مدل بزرگ حجم دانلود را افزایش میدهند و در سختافزار کم خراب میشوند.
- فراموش کردن محدودیت آموزشی مدل. مدل در شرایطی که نمی بیند (شب، زبان های مختلف) اشتباه می شود. این را برای کاربر روشن کنید.
به طور خلاصه
هوش مصنوعی روی دستگاه، حریم خصوصی، سرعت و عملکرد آفلاین را با نگهداری داده ها در تلفن فراهم می کند. محدودیت قدرت دستگاه و اندازه مدل است. کیت ML برای قابلیتهای خارج از جعبه استفاده میشود، Core ML (iOS) و TensorFlow Lite (کراس پلتفرم) برای مدلهای سفارشی استفاده میشوند. قاتل خاموش ادغام، پیش پردازش نادرست است. اندازه ورودی و نرمال سازی از مستندات مدل تأیید می شود. هر نتیجه با یک امتیاز اطمینان همراه است و پیشبینیهای با اطمینان پایین به عنوان حقیقت مطلق ارائه نمیشوند. تصمیمات بر روی دستگاه واقعی اندازه گیری می شوند، نه شبیه ساز.
وظیفه کاربردی
برای ویژگی «خواندن متن از روی عکس» یا «خواندن بارکد»، از هوش مصنوعی بپرسید که آیا باید روی دستگاه باشد یا ابری با «الگوی انتخاب مسیر»، سپس یک طرح اولیه مبتنی بر کیت ML با «الگوی ادغام» بخواهید. بررسی کنید که مرحله پیش پردازش و جریان تأیید/ویرایش کاربر در کد وجود دارد. یک آستانه نمره اعتماد تعیین کنید و بنویسید که اگر نتیجه اعتماد پایین باشد چه کاری انجام خواهید داد.
چک لیست
- [ ] من تصمیم بر روی دستگاه/ابر را بر اساس معیارها گرفتم
- [ ] من ابزار مناسبی را انتخاب کردم (ML Kit / Core ML / TF Lite)
- [ ] من بعد پیش پردازش و عادی سازی را از مستندات مدل تأیید کردم
- [ ] من امتیاز اعتماد را بررسی کردم و در مورد نتایج اعتماد پایین هشدار دادم
- [ ] من نتیجه را با تایید/ویرایش به کاربر ارائه کردم، کورکورانه آن را ذخیره نکردم
- [ ] من عملکرد را روی دستگاه واقعی اندازهگیری کردم، نه شبیهساز