الاستدلال على الجهاز: ما الذي يكلّفه فعلًا
التكلفة لم تختفِ، بل انتقلت من فاتورة الخادم إلى بطارية المستخدم ومساحته وذاكرته — وكيف تقيسها قبل أن يقيسها هو.
MrBebo
الإجابة المختصرة
الاستدلال على الجهاز هو تنفيذ نموذج تعلّم آلي محليًا على معالج المستخدم بدل خادم، وتكلفته تُدفع من أربعة موارد: مساحة التطبيق، ذاكرة التشغيل، الطاقة، والحرارة التي تخفّض تردد المعالج تدريجيًا. قِس على أقدم جهاز تدعمه وبعد عشرين تشغيلة متتالية، لا مرة واحدة على جهاز بارد.
في هذه الصفحة
الاستدلال على الجهاز يبدو قرارًا سهلًا: لا خادم، لا تكلفة استدعاء، لا بيانات تغادر هاتف المستخدم. ثم تشحن الميزة فتصل تقارير عن تطبيق حجمه تضاعف، وهاتف يسخن، وبطارية تنفد أثناء معالجة ملف واحد.
الاستدلال على الجهاز هو تنفيذ نموذج تعلّم آلي محليًا على معالج المستخدم بدل إرساله إلى خادم، والمقايضة فيه ليست بين «مجاني» و«مدفوع» بل بين تكلفة تدفعها أنت على الخادم وتكلفة يدفعها المستخدم من بطاريته وذاكرته ومساحته. هذا المقال عن الثانية: ما الذي تكلّفه فعلًا، وكيف تقيسه قبل أن يقيسه المستخدمون بدلًا عنك.
أين تذهب التكلفة؟
أربعة موارد، ولكل منها حدّ مختلف تمامًا في الوضوح.
المساحة. نموذج الاستدلال على الجهاز يُشحن مع التطبيق أو يُنزَّل بعد التثبيت. نموذج بحجم 150 ميغابايت يضاعف حجم تطبيق عادي، وحجم التطبيق يؤثر مباشرة في معدل التثبيت — خصوصًا مع حد التنزيل عبر بيانات الجوال.
الذاكرة. النموذج يُحمَّل كاملًا إلى الذاكرة أثناء التشغيل. هذا هو القيد الأقسى على الأجهزة الأقدم، وتجاوزه لا ينتج بطئًا بل إنهاءً فوريًا للتطبيق من النظام دون رسالة مفهومة للمستخدم.
الطاقة. الاستدلال على الجهاز بشكل متصل يرفع استهلاك البطارية بوضوح، وهو ما يظهر في تقرير البطارية باسم تطبيقك لا باسم الميزة.
الحرارة. وهذه أخطرها لأنها تتراكم: الجهاز الساخن يخفّض تردد المعالج، فتصبح العملية العاشرة أبطأ من الأولى بفارق ملموس على الجهاز نفسه.
على الخادم تدفع لكل استدعاء. على الجهاز يدفع المستخدم — من بطاريته ومساحته وصبره.
النقطة الرابعة هي التي تُفسد القياسات. أن تقيس مرة واحدة على جهاز بارد يعطيك رقمًا لا يمثّل الاستخدام الحقيقي، والفارق بين أول تشغيل والتشغيل بعد خمس دقائق متواصلة كبير بما يكفي ليقلب قرار التصميم.
| المورد | يظهر للمستخدم كـ | متى يصبح حرجًا |
|---|---|---|
| المساحة | حجم التطبيق | قبل التثبيت |
| الذاكرة | إغلاق مفاجئ | على الأجهزة الأقدم |
| الطاقة | بطارية تنفد | مع الاستخدام المتصل |
| الحرارة | بطء تدريجي | بعد دقائق من التشغيل |
متى يكون الجهاز هو المكان الصحيح؟
معيار اختيار الاستدلال على الجهاز ليس «هل يمكن؟» بل «هل يستحق؟»، وثلاث حالات تجعل الجواب نعم.
- البيانات حساسة أو خاصة بطبيعتها. الصوت والصور والمستندات الشخصية. حين تكون الخصوصية جزءًا من المنتج فإن عدم مغادرة البيانات للجهاز ليس تحسينًا بل هو الميزة نفسها، وهو المنطق وراء التفريغ النصي المحلي في تطبيقات التسجيل مثل TapMemo.
- الاستخدام متكرر وصغير. آلاف الاستدعاءات القصيرة يوميًا تكلّف كثيرًا على خادم وتكاد لا تُلاحظ محليًا.
- العمل بلا إنترنت مطلوب. إن كانت الميزة يجب أن تعمل في الطائرة أو في مكان بلا تغطية، فلا خيار غير الجهاز.
وفي المقابل، ثلاث حالات يكون الخادم فيها هو الجواب الصحيح: نموذج كبير لا يمكن تصغيره دون خسارة جودة حقيقية، أو نموذج يتغيّر أسبوعيًا (تحديثه على الخادم لحظي، وعلى الأجهزة يستغرق أسابيع حتى يصل)، أو ميزة تُستخدم مرة كل شهر ولا تبرر شحن 200 ميغابايت لكل مستخدم.
الحالة الوسطى شائعة أكثر مما يُظن: نموذج صغير على الجهاز للمهمة السريعة، ونموذج أكبر على الخادم للحالات التي تستحق الانتظار. اختيار المسار وقت التشغيل بحسب حجم المدخل وحالة الشبكة يعطي أفضل النتيجتين، ويكلّف تعقيدًا في المسار الواحد لا في المنتج كله.
كيف تقيس قبل أن يقيس المستخدم؟
قياس الاستدلال على الجهاز مختلف عن قياس دالة عادية، لأن الرقم الذي يهم ليس متوسط الزمن.
- قِس على أقدم جهاز تدعمه، لا على جهازك. الفارق بين أحدث جهاز وجهاز عمره أربع سنوات قد يكون ثلاثة أضعاف أو أكثر في الزمن، وأكبر من ذلك في الحرارة.
- قِس بعد الإحماء. شغّل العملية عشرين مرة متتالية وسجّل زمن الأولى والعاشرة والعشرين. إن ارتفع الزمن باطراد فأنت أمام خفض تردد حراري، وهذا رقمك الحقيقي.
- قِس الذروة لا المتوسط في الذاكرة. الإنهاء يحدث عند الذروة، والمتوسط لا يخبرك بشيء عنها.
- قِس استهلاك الطاقة لا زمن المعالجة فقط. أدوات Xcode تعرض تأثير الطاقة أثناء التشغيل، وهو المؤشر الأقرب لما سيراه المستخدم في تقرير البطارية.
- قِس مع تشغيل بقية التطبيق. الاستدلال في معزل عن الواجهة يعطي أرقامًا متفائلة لا تتحقق حين تتنافس المهمتان على المعالج نفسه.
الخطوة الثانية هي التي تكشف أغلب المفاجآت. ميزة تعمل في 1.2 ثانية في الاختبار قد تصل إلى 4 ثوانٍ في الاستخدام المتصل، وهذا فارق بين تجربة مقبولة وأخرى تُهجر.
ماذا عن جودة النتيجة نفسها؟
الحديث عن الموارد يحجب سؤالًا أهم: هل النموذج الصغير يكفي أصلًا؟ ولا جواب عامًا عليه، لكن هناك طريقة منضبطة للوصول إليه.
ابنِ مجموعة تقييم صغيرة من بيانات حقيقية — خمسين أو مئة حالة من الاستخدام المتوقّع، لا عيّنات مثالية — وشغّل عليها النموذج المحلي والنموذج الخادمي معًا، وقارن النتائج يدويًا مرة واحدة. هذه الساعة الواحدة تحسم قرارًا ستعيش معه سنة.
ثلاث ملاحظات تتكرر في هذه المقارنة:
- الفجوة ليست موزّعة بالتساوي. النموذج الصغير غالبًا يضاهي الكبير في الحالات السهلة ويتراجع بوضوح في الصعبة: الضجيج، اللهجات، المصطلحات الخاصة. متوسط الدقة يخفي ذلك تمامًا.
- التكميم يضرّ بعض المهام أكثر من غيرها. التصنيف يتحمّله جيدًا، والتوليد الحرّ أقل تحمّلًا، والفارق يظهر في الحالات الطرفية أولًا.
- العربية تستحق تقييمًا منفصلًا. كثير من النماذج مُقيَّمة أساسًا على الإنجليزية، والنتيجة المنشورة لا تنقل الأداء على نص عربي أو صوت عربي.
النقطة الثالثة عملية جدًا لأي منتج موجّه لمستخدم عربي: لا تعتمد رقمًا منشورًا، بل قِس على بياناتك أنت. وإن جاءت النتيجة متوسطة، فالحل المسار المزدوج — محلي للسريع، وخادم عند الحاجة — لا التخلي عن أحد الطرفين.
قرارات تصميم تخفّض التكلفة فعليًا
خمسة إجراءات تخفّض تكلفة الاستدلال على الجهاز، مرتّبة بحسب أثرها الحقيقي.
نزّل النموذج بعد التثبيت لا معه. حجم التطبيق في المتجر يبقى صغيرًا، والنموذج يصل عند أول استخدام فعلي للميزة. هذا أكبر مكسب منفرد لأنه يحمي معدل التثبيت.
استخدم التكميم (Quantization). تحويل الأوزان إلى دقة أقل يقلّص الحجم والذاكرة بنسبة كبيرة مقابل خسارة جودة غالبًا غير محسوسة في مهام التصنيف والتفريغ. جرّبه وقِس الفرق بدل افتراضه.
عالِج على دفعات لا لكل حدث. تجميع العمل في نافذة قصيرة أوفر بكثير من إيقاظ المعالج عشرات المرات.
نفّذ العمل الثقيل بينما الجهاز يشحن. إن كانت النتيجة غير عاجلة — فهرسة، تحليل مكتبة كاملة — فأجّلها إلى وقت الشحن. المستخدم لا يلاحظ الاستهلاك حينها إطلاقًا.
اجعل الإلغاء ممكنًا وفوريًا. عملية طويلة بلا زر إيقاف تُقرأ كتعليق للتطبيق، ويظهر ذلك في التقييمات كـ«يتجمّد».
وفي المقابل، أفدح خطأين شيوعًا: تحميل النموذج عند إقلاع التطبيق «تحسبًا»، وهو ما يبطئ الإقلاع ويستهلك ذاكرة قد لا تُستخدم أصلًا؛ وتشغيل الاستدلال على الخيط الرئيسي، وهو ما يجمّد الواجهة تمامًا مهما كان النموذج صغيرًا.
ما الذي يراه المستخدم؟
الجزء الذي يُهمَل في هذا النقاش هو الواجهة، والفارق بين ميزة تُستخدم وأخرى تُتجنَّب يقع هنا غالبًا.
اعرض تقدّمًا حقيقيًا لا شريطًا غير محدّد، لأن العملية المحلية تعرف عادة كم بقي. اذكر أن المعالجة تجري على الجهاز — فهذه ميزة يقدّرها المستخدم إن قيلت له، وتضيع إن لم تُقل. وبيّن أي نموذج استُخدم حين يوجد أكثر من خيار، لأن الجودة تختلف والمستخدم يستحق أن يعرف سبب الفرق. أخيرًا، تعامل مع أول تشغيل باعتباره حالة خاصة: تنزيل النموذج وتهيئته يستغرقان وقتًا لن يتكرر، وقول ذلك صراحة يمنع انطباعًا أوليًا سيئًا يصعب إصلاحه لاحقًا.
وثمة تفصيل أخير يخصّ التحديث: النموذج على الجهاز يتقادم مع بقية التطبيق. إن أصدرت نسخة أفضل منه بعد ستة أشهر، فالوصول إلى المستخدمين يمرّ بتحديث التطبيق أو بتنزيل منفصل، وكلاهما يستغرق أسابيع حتى يغطي القاعدة. لذلك افصل النموذج عن الكود منذ البداية — نسخة معلنة، وتنزيل مستقل، وقدرة على التراجع إلى النسخة السابقة إن ظهر تراجع في الجودة. هذا الفصل رخيص وقت التصميم وباهظ إن أُجّل، لأن ربط النموذج بحزمة التطبيق قرار يصعب فكّه لاحقًا.
مزيد عن الجانب الهندسي في الذكاء الاصطناعي والموبايل وأدوات المطوّر. وثائق Core ML تغطّي التحويل والتكميم وقياس الأداء على الجهاز.
الخلاصة
الاستدلال على الجهاز ليس مجانيًا؛ التكلفة انتقلت فقط من فاتورتك إلى بطارية المستخدم ومساحته وذاكرته.
اختر الجهاز حين تكون البيانات حساسة أو الاستخدام متكررًا أو العمل بلا إنترنت مطلوبًا، ونزّل النموذج بعد التثبيت، وكمّمه، وأجّل الثقيل إلى وقت الشحن — وقِس على أقدم جهاز تدعمه بعد عشرين تشغيلة متتالية، لأن الرقم بعد الإحماء هو الرقم الذي سيعيشه المستخدم.
أسئلة شائعة
- لماذا تصبح العملية أبطأ مع التكرار؟
- بسبب خفض التردد الحراري. الجهاز الساخن يقلّل سرعة المعالج للحماية، فتكون العملية العشرين أبطأ من الأولى بفارق ملموس على الجهاز نفسه.
- هل أشحن النموذج مع التطبيق؟
- الأفضل غالبًا تنزيله بعد التثبيت عند أول استخدام فعلي للميزة، لأن حجم التطبيق في المتجر يؤثر مباشرة في معدل التثبيت.
- متى يكون الخادم أفضل من الجهاز؟
- حين يكون النموذج كبيرًا لا يُصغَّر دون خسارة جودة، أو يتغيّر أسبوعيًا فتحديثه على الخادم لحظي، أو تُستخدم الميزة نادرًا فلا تبرر شحن مئات الميغابايت لكل مستخدم.
- ما الخطأ الأكثر تكرارًا؟
- تحميل النموذج عند إقلاع التطبيق تحسبًا، فيبطئ الإقلاع ويستهلك ذاكرة قد لا تُستخدم؛ يليه تشغيل الاستدلال على الخيط الرئيسي فتتجمّد الواجهة مهما كان النموذج صغيرًا.
المصادر
- Core ML documentation — Apple Developer
- Improving your app's performance — Apple Developer
- TapMemo: AI Voice Recorder — Tecno Blocks

MrBebo
محتوى تقني عربي يقدمه بهاء طه حول البرمجة، الذكاء الاصطناعي، Web2 وWeb3، تطوير التطبيقات، بناء المنتجات وأدوات المطورين.
عن المدوّنة
