أول مشروع ذكاء اصطناعي: خطة عطلة نهاية أسبوع
خطة محدّدة لإنجاز أول مشروع ذكاء اصطناعي في عطلة واحدة: اختيار المهمة، وخط أساس قبل النموذج، وتجنّب تسريب البيانات، ونشر عرض مجاني.
اختر مهمة واحدة تُقاس بعدد واحد. مثال صالح: تصنيف رسائل بريدك إلى «يحتاج ردًّا» و«لا يحتاج»، والمقياس هو نسبة الرسائل التي صنّفها النظام صوابًا على مجموعة لم يرها. مثال غير صالح لمشروع أول: «مساعد ذكي يدير بريدي»، لأنه لا يُقاس، فلا تعرف متى انتهيت ومتى فشلت.
هذا الفرق يحسم مصير عطلة نهاية الأسبوع. المشروع الذي له مخرَج محدد ومقياس واحد يُنجَز في يومين. والمشروع المعرَّف بالنيّة لا بالمخرَج يستهلك اليومين في تجريب أدوات، وينتهي بلا شيء يمكن الحكم عليه.
الساعة الأولى: البيئة والبيانات
استعمل Google Colab: خدمة دفاتر Jupyter مُستضافة، لا تحتاج أي تثبيت، وتوفّر وصولًا مجانيًّا إلى موارد حسابية تشمل وحدات معالجة رسوميات (Colab FAQ). لكن اقرأ الشرط المُعلَن في التوثيق نفسه: موارد Colab غير مضمونة وليست بلا حدود، وحدود الاستخدام تتقلّب أحيانًا، والوصول إلى الموارد المكلفة كوحدات الرسوميات مقيَّد بشدّة في النسخة المجانية، والأجهزة الافتراضية تُحذَف عند الخمول ولها عمر أقصى يفرضه النظام (Colab FAQ).
النتيجة العملية لهذا القيد: لا تبنِ مشروعًا يفترض تدريبًا يستمر ساعات، ولا تحفظ شيئًا مهمًّا داخل الجلسة. اختر بيانات صغيرة، وحمّل النتائج إلى مخزن خارجي في نهاية كل خطوة.
الساعة الثانية: خط أساس قبل أي نموذج
قبل أن تدرّب شيئًا، درّب مصنّفًا يتجاهل البيانات. صنف DummyClassifier في scikit-learn موجود لهذا الغرض بالضبط: يُنتج تنبؤات تتجاهل خصائص المدخل، ويُستعمل خطَّ أساس بسيطًا للمقارنة مع مصنّفات أكثر تعقيدًا؛ فاستراتيجية most_frequent تُعيد دائمًا أكثر التصنيفات تكرارًا في بيانات التدريب (scikit-learn).
هذه الخطوة أرخص ما تفعله وأكثره نفعًا. إن كانت ٨٥٪ من رسائلك لا تحتاج ردًّا، فخطّ الأساس يبلغ ٨٥٪ دقّة بلا تعلّم شيء. ونموذجك الذي يبلغ ٨٧٪ لا يستحق النشر. من دون هذا الرقم ستقرأ ٨٧٪ نجاحًا، وهي في الحقيقة ضجيج.
الساعة الثالثة: الخطأ الذي يُهلك أول مشروع
تسريب البيانات (Data Leakage) هو أن تُحسَب معلومة من مجموعة الاختبار وتدخل في التدريب، فتُخرِج لك درجةً عالية زائفة. يوصي توثيق scikit-learn في فصل المزالق الشائعة باستعمال Pipeline لأنه يقلّل احتمال نسيان تحويلٍ ما، ويساعد على تجنّب تسريب بيانات الاختبار إلى بيانات التدريب، ويضمن تطبيق الطريقة المناسبة على الجزء الصحيح من البيانات؛ كما ينصّ على أن اختيار الخصائص يجب أن يستعمل بيانات التدريب وحدها (scikit-learn).
القاعدة العملية: كل ما «يتعلّم» شيئًا من البيانات — قياس المقاييس، واختيار الخصائص، وتعويض القيم الناقصة — يوضَع داخل خط المعالجة لا قبله. وثبّت random_state بعدد صحيح، فالتوثيق يذكر أن تمرير عدد صحيح لمقسّمات التحقّق المتقاطع هو الأسلم والأفضل عادةً، ويجعل نتائج التقسيم قابلة للمقارنة بين النداءات (scikit-learn).
أي شكل تختار لمشروعك الأول؟
| الشكل | ما تكتبه | ما يتطلّبه | ما تتعلّمه فعلًا | المقايضة |
|---|---|---|---|---|
| تصنيف جدولي بـ scikit-learn | خط معالجة من عشرين سطرًا | معالج مركزي فقط | التقييم، والتسريب، وخط الأساس | لا يستعمل نماذج كبيرة |
| استدعاء نموذج مُدرَّب مسبقًا | أسطر قليلة للاستدلال | تنزيل أوزان | حدود النماذج الجاهزة | لا تفهم التدريب |
| ضبط دقيق (Fine-tuning) | إعداد وسائط التدريب والبيانات | مسرّع حسابي ووقت | حلقة التدريب كاملة | أكبر من عطلة واحدة عادةً |
الشكل الأول هو المرشَّح لأول مشروع، والثاني مناسب إن كانت بياناتك نصًّا أو صورًا. في مكتبة Transformers، صنف Pipeline يشغّل الاستدلال بنموذج مُدرَّب مسبقًا ويدعم مهامًّا منها توليد النصّ وتقطيع الصور والتعرّف التلقائي على الكلام والإجابة عن أسئلة المستندات، وواجهة AutoClass تستنتج المعمارية المناسبة تلقائيًّا من اسم الأوزان أو مسارها (Transformers). أما الضبط الدقيق فيمرّ عبر Trainer وTrainingArguments اللذين يوفّران حلقة تدريب وتقييم كاملة — وهذا نطاق أوسع من يومين لمبتدئ.
اليوم الثاني: واجهة ونشر
اجعل النموذج قابلًا للتجربة من متصفّح. مكتبة Gradio تلفّ أي دالة بايثون بواجهة استخدام: صنف Interface يأخذ ثلاثة وسائط جوهرية — fn للدالة، وinputs وoutputs للمكوّنات — ويمكن أن تكون الدالة دالةَ التنبؤ لنموذج مُدرَّب مسبقًا؛ وبتمرير share=True إلى launch() يُنشأ رابط عام للعرض (Gradio).
للنشر الدائم، استعمل Hugging Face Spaces. البيئة الافتراضية محدودة بذاكرة ومساحة قرص غير دائمة، وعتاد المستوى المجاني بلا تكلفة ساعية، والمساحات الساكنة مجانية للجميع؛ وعلى العتاد المجاني تنام المساحة وتتوقف عن التنفيذ بعد فترة من عدم الاستخدام (Hugging Face Spaces). وتحقّق من شروط إنشاء نوع المساحة الذي تريده قبل أن تبني الواجهة لا بعدها، فالشروط تتغيّر.
آخر ساعة: بطاقة النموذج
اكتب صفحة واحدة بجوار المشروع. اقترح باحثون في ورقة Model Cards for Model Reporting أن تُصاحِب النماذجَ المنشورة وثائق قصيرة تُبيّن خصائص الأداء، وتوضّح السياق الذي يُقصَد استخدام النموذج فيه، وتفاصيل إجراءات التقييم؛ والغرض المُعلَن هو تقليل استخدام النموذج في سياقات لا يصلح لها (arXiv:1810.03993). البطاقة أيضًا حاجزك الشخصي أمام المبالغة: صعبٌ أن تعِد بما لا يفعله النظام وأنت تكتب رقم خط الأساس بجوار رقم نموذجك.
متى لا تحتاج مشروع تعلّم آلي
إن كانت مهمتك محسومة بقاعدة صريحة — كلمة مفتاحية في العنوان، أو حدّ رقمي، أو نطاق مُرسِل معروف — فاكتب القاعدة. أدقّ وأرخص وقابلة للتدقيق سطرًا بسطر. وإن كنت لا تملك بيانات موسومة ولا تستطيع وسم مئتَي مثال بيدك في ساعة، فالمشروع ليس مشروع نمذجة بعد، بل مشروع جمع بيانات؛ ابدأ به وسمّه باسمه. وإن كان هدفك تعلّم الاستدعاء البرمجي لواجهات النماذج الجاهزة فقط، فلا تحتاج خط تدريب ولا تقييمًا متقاطعًا، بل تطبيقًا صغيرًا يستدعي الواجهة ويعرض الناتج.
الأسئلة الشائعة
هل أحتاج وحدة معالجة رسوميات لأول مشروع؟
لا في الغالب. مشروع تصنيف جدولي بـ scikit-learn يعمل على المعالج المركزي في ثوانٍ. وإن احتجت مسرّعًا، فتوثيق Colab ينصّ صراحةً على أن الوصول إلى الموارد المكلفة مقيَّد بشدّة في النسخة المجانية وأن الموارد غير مضمونة (Colab FAQ)، فلا تجعل نجاح المشروع معلّقًا عليها.
ما الدقّة التي تُعدّ نجاحًا؟
لا رقم مطلق. الرقم المرجعي هو خطّ أساسك: مصنّف DummyClassifier باستراتيجية most_frequent يعيد دائمًا أكثر التصنيفات تكرارًا ويتجاهل الخصائص تمامًا (scikit-learn). النجاح فرق واضح ومستقرّ فوق هذا الرقم على بيانات لم يرها النموذج.
لماذا تنخفض الدقّة كثيرًا بعد النشر؟
السبب الأشهر في أول مشروع هو تسريب البيانات: معلومة من مجموعة الاختبار دخلت مرحلة التدريب عبر معالجة مطبَّقة على البيانات كلها قبل التقسيم. توثيق scikit-learn يعرض هذا مزلقًا أول ويوصي بخط المعالجة وسيلةً لتجنّبه (scikit-learn).
كيف أشارك المشروع بلا خادم ولا تكلفة؟
عبر Gradio مع share=True للحصول على رابط عام مؤقّت بينما يبقى الحساب على جهازك (Gradio)، أو باستضافة دائمة على Spaces مع مراعاة أن العتاد المجاني ينام عند عدم الاستخدام وأن قرصه غير دائم (Hugging Face Spaces).
المراجع
- Google. Colaboratory: Frequently Asked Questions. research.google.com
- scikit-learn. Common pitfalls and recommended practices. scikit-learn.org
- scikit-learn. sklearn.dummy.DummyClassifier — API reference. scikit-learn.org
- Hugging Face. Transformers Quickstart. huggingface.co
- Hugging Face. Spaces Overview. huggingface.co
- Gradio. Quickstart — the Interface class and sharing demos. gradio.app
- Mitchell et al. Model Cards for Model Reporting. arXiv:1810.03993
اقرأ بعده
كيف يتعلّم الكمبيوتر من البيانات؟ والفرق عن التعلّم البشري
شرح دقيق لكيفية تعلّم الكمبيوتر من البيانات: ما معنى التعلّم في الآلة، وكيف يختلف عن التعلّم البشري، مع أمثلة ومقارنة عملية.
اقرأ المقالالنماذج اللغوية الكبيرة: كيف تتنبأ بالكلمة التالية ولماذا
شرح دقيق لكيفية عمل النماذج اللغوية الكبيرة عبر التنبؤ بالكلمة التالية، ولماذا تجعلها هذه الآلية بارعة في الصياغة وضعيفة في الحساب.
اقرأ المقالواجهة API للذكاء الاصطناعي: ما الذي ترسله وما يعود؟
شرح مبسّط لواجهة API للذكاء الاصطناعي: ما الذي ترسله إلى النموذج، وما الذي يعود، ولماذا لا يحتاج أغلب المطوّرين إلى تشغيل نموذج بأنفسهم.
اقرأ المقالنشرة إسناد الأسبوعية
ثلاثة أشياء مفيدة كل أسبوع: ورقة بحثية مشروحة، قياس عملي، وخطأ شائع رأيناه في الإنتاج. بلا حشو وبلا رعايات مخفية.