قمت بتشغيل نموذج لغوي كبير محلي على Raspberry Pi عمره 12 عاماً (لقد نجح الأمر حقاً!)
BBetter Stack
Computing/SoftwareConsumer Electronics
Transcript
00:00:00هذا هو الجيل الأول من Raspberry Pi، والذي صدر في عام 2014.
00:00:05يحتوي على معالج أحادي النواة بتردد 700 ميجاهرتز وذاكرة وصول عشوائي (RAM) بسعة 512 ميجابايت.
00:00:12بالمقاييس الحديثة، هذا الجهاز هو مجرد آلة حاسبة تقريبًا.
00:00:16لكننا اليوم سنرى ما إذا كان بإمكاننا دفع هذه الأجهزة التي يبلغ عمرها 12 عامًا
00:00:21إلى أقصى حدودها من خلال تشغيل نموذج لغوي ضخم عليها محليًا.
00:00:26في هذا الفيديو، سأوضح لكم ما هو النموذج الصغير الذي يمكن تشغيله على Raspberry Pi،
00:00:30وسنرى كيفية أدائه، وسأوضح لكم كيفية تثبيت جميع الملحقات الضرورية
00:00:35حتى تتمكنوا من تجربته بأنفسكم.
00:00:37سيكون الأمر ممتعًا للغاية، لذا دعونا نبدأ.
00:00:40بصراحة، لم أكن أعتقد أنه من الممكن العثور على نموذج
00:00:47خفيف بما يكفي لهذه البنية المعمارية.
00:00:49ولكن بعد البحث المطول، وجدتُ مرشحاً بالفعل.
00:00:52تعرفوا على Falcon H1 Tiny.
00:00:54إنه نموذج مضغوط بشكل مذهل مع 90 مليون معلمة فقط.
00:00:59تم تطويره من قبل معهد الابتكار التكنولوجي في أبو ظبي
00:01:03خصيصًا لاستكشاف الحدود الدنيا القصوى لنماذج اللغة.
00:01:08لكن كيف استطاعوا صنع نموذج بهذا الصغر؟
00:01:10هل هناك نوع من “الخلطة السرية” التقنية وراء ذلك؟
00:01:13حسنًا، ليس تمامًا.
00:01:14إنهم يستخدمون أساسًا نفس البنية الهجينة (Transformer + Mamba)
00:01:19التي استخدمتها شركات مثل IBM في نماذج Granite 4 الصغيرة.
00:01:24والتي قمت بعمل فيديو عنها أيضًا إذا كنتم ترغبون في مشاهدته.
00:01:27لكن إليكم الأمر.
00:01:28لحشر هذا النموذج بنجاح في الذاكرة، يجب أن نتحدث عن التكميم (Quantization).
00:01:33تتوفر نماذج Falcon بنسخ 2-بت، و4-بت، و8-بت.
00:01:38قد تميلون لتجربة تكميم الأهمية (IQ) فائق النحافة.
00:01:43لكن هنا تكمن المشكلة.
00:01:45تعتمد تلك الأساليب الحديثة على معالجة معقدة للبتات
00:01:49تتطلب تعليمات معالج حديثة لتكون فعالة.
00:01:52على شريحة ARMv6 القديمة في جهاز Raspberry Pi، لن يفلح ذلك.
00:01:57لذا بدلاً من ذلك، علينا اختيار نماذج Q4 التقليدية
00:02:01وهي المعيار الذهبي لحالتنا هذه.
00:02:04فهي تستخدم طريقة تكميم قديمة متوسطة الحجم
00:02:07يمكن لمعالج Pi التعامل معها بالفعل دون اختناق.
00:02:11فهي تمنحنا أفضل نسبة ذكاء لكل ميجابايت مع الحفاظ على سلامة المنطق.
00:02:17لكن تشغيل هذا النموذج على الجيل الأول من Raspberry Pi ليس مهمة سهلة.
00:02:22بما أن Pi يستخدم بنية ARMv6،
00:02:26فهو يفتقر لتعليمات neon الحديثة التي تعتمد عليها معظم مكتبات الذكاء الاصطناعي.
00:02:31لكن لحسن الحظ، هناك llama.cpp الذي يمكننا استخدامه لتشغيل الاستدلال.
00:02:36ولكن للقيام بذلك، يجب علينا تجميع الملف الثنائي (binary) خصيصًا لـ ARMv6.
00:02:42وإذا حاولت تجميعه مباشرة على Pi،
00:02:45فقد يستغرق المجمع 18 ساعة لإنهاء العملية.
00:02:49هذا في حال لم يتوقف بسبب أخطاء نقص الذاكرة أولاً.
00:02:53لذا لتجاوز ذلك، يجب أن نكون مبدعين قليلاً.
00:02:56نحتاج إلى التجميع العابر (cross-compile) لهذه الملفات على الكمبيوتر المحمول مسبقًا باستخدام dockcross،
00:03:02مستهدفين مجموعة تعليمات ARMv6 مع تفعيل وحدة الحساب VFP
00:03:08ثم نسخها عبر SSH حتى نتمكن من البدء مباشرة في الاستدلال.
00:03:13وهذا بالضبط ما سنفعله الآن.
00:03:15أولاً، نحتاج لتثبيت أخف نظام تشغيل ممكن على جهاز Pi باستخدام Raspberry Pi imager.
00:03:22بالنسبة للوحة بها 512 ميجابايت فقط من الذاكرة، كل ميجابايت له قيمته.
00:03:28لذا سأختار Raspberry Pi OS Lite، نسخة 32-بت،
00:03:32لأنها لا تحتوي على واجهة سطح مكتب وتستهلك جزءًا ضئيلاً من الذاكرة
00:03:38مقارنة بالنظام القياسي، مما يترك كامل الذاكرة تقريبًا متاحة للنموذج.
00:03:44وهنا ملاحظة مهمة أخرى، تأكد من استخدام الإعدادات المتقدمة
00:03:47لتهيئة الواي فاي مسبقًا وتفعيل SSH.
00:03:51لأنه في هذه اللوحات القديمة، من الأسهل إدارة كل شيء عن بعد،
00:03:55حتى لا تضطر للتعامل مع تلك المحطة الطرفية المحلية البطيئة.
00:03:58الآن، بمجرد تشغيل Pi وتسجيل الدخول عبر SSH، نحتاج لمعالجة مشكلة ARMv6.
00:04:05فإذا حاولنا تجميع llama CPP هنا،
00:04:08سيقضي جهاز Pi اليوم ونصف القادم في معالجة ملفات الترويسة فقط.
00:04:13بدلاً من ذلك، سنقوم بذلك على كمبيوتر محمول عادي لتسريع الحساب وتوفير الوقت.
00:04:18لذا دعونا نستنسخ الكود المصدري لـ llama CPP وننشئ مجلد بناء مخصص
00:04:23حيث سنقوم بتخزين النسخة التي سنستخدمها على Raspberry Pi.
00:04:28والآن، هناك مشكلة أخرى.
00:04:29جهاز الماك الخاص بي يستخدم ARMv8، وهي نسخة 64-بت، وليس ARMv6 بنسخة 32-بت.
00:04:37ولهما مجموعات تعليمات مختلفة.
00:04:40لذا لتجميع ملف ثنائي لـ Pi، نحتاج لاستخدام dockcross،
00:04:45وهي سلسلة أدوات تجميع عابر تعمل على الماك الخاص بي،
00:04:48لكنها تولد ملفات ثنائية مخصصة لبنية Pi القديمة.
00:04:53بعد ذلك، نحتاج إلى تهيئة البناء.
00:04:55وهنا يجب أن نكون دقيقين للغاية.
00:04:58نحتاج لتمرير بعض العلامات (flags) المحددة للغاية.
00:05:00أولاً، يجب إيقاف المكتبات المشتركة لإنشاء ملف ثنائي واحد محمول.
00:05:05ثم يجب إيقاف neon لأن Pi يفتقر لتلك التعليمات الحسابية الحديثة.
00:05:10ويجب تعطيل OpenMP لتقليل استهلاك الذاكرة قدر الإمكان.
00:05:15نحن أساسًا نجرد البرنامج من كل الرفاهيات الحديثة
00:05:18لضمان توافق الملف الثنائي مع لوحة Pi القديمة.
00:05:22والآن إذا ضغطنا على بناء، في غضون دقيقتين تقريبًا، سيكون لدينا
00:05:26ملف llama ثنائي مجمع ومحسن وجاهز للنسخ على لوحة Pi.
00:05:31والآن سأستخدم SSH للاتصال مباشرة بـ Pi عبر الشبكة
00:05:35وإنشاء مجلد جديد، ثم استخدام SCP لنسخ الملف الثنائي المخصص إليه.
00:05:42وشيء أخير نحتاج للقيام به هنا.
00:05:44دعونا نقوم بتحميل نماذج Falcon المكممة تقليديًا بنسخ 2-بت و4-بت و8-بت،
00:05:50لأننا سنختبرها جميعًا بالتتابع.
00:05:53ثم نقوم بنسخها إلى Pi واحدًا تلو الآخر عبر الشبكة في مجلد النماذج.
00:05:58الآن نأتي للجزء الممتع.
00:05:59دعونا ننتقل إلى Pi وننفذ أول اختبار استدلال.
00:06:03سنبدأ بأكثر ضغط هجومي، وهو نموذج 2-بت المكمم.
00:06:07وهنا نحتاج لتشغيل هذا الأمر الطويل.
00:06:10وبشكل أساسي، ما أفعله هنا هو إعطاؤه أمرًا بسيطًا:
00:06:13“مرحباً، كيف حالك؟” مع تحديد المخرجات بـ 32 رمزاً (tokens).
00:06:18ونقوم بتحديد خيط معالجة واحد فقط، لأن هذا كل ما نملكه.
00:06:22ونحافظ أيضًا على حجم سياق صغير عند 128 رمزًا لتوفير كل بايت ممكن من الذاكرة.
00:06:29لكن العلامة الأكثر أهمية هنا هي no M map.
00:06:32عادةً، يستخدم llama CPP تعيين الذاكرة لتحميل النماذج، وهو أمر رائع لمعالجات الرسوميات القوية،
00:06:38لكنه كابوس للوحة Pi الخاصة بنا.
00:06:41على نظام 32-بت بذاكرة وصول عشوائي 512 ميجابايت فقط،
00:06:45يمكن أن يفشل M map إذا لم يجد كتلة متصلة من مساحة العناوين.
00:06:50لذا بتعطيله، نجبر النموذج على التحميل مباشرة في الذاكرة الحرة (heap)،
00:06:55مما يمنحنا تحكمًا أكثر استقرارًا في ذاكرتنا المحدودة.
00:06:58ومع ذلك، دعونا نشغل الأمر.
00:07:00وها هي ذي، أولى رموزنا.
00:07:03كما نرى هنا، نسخة 2-بت تعاني كثيراً.
00:07:08أولاً، نلاحظ أنها تعالج رمزاً واحداً كل ثلاث ثوانٍ تقريباً،
00:07:14وهو أمر متوقع على لوحة Raspberry Pi قديمة.
00:07:18لكن الأهم من ذلك، أن الإجابة مجرد هراء محض.
00:07:21في نموذج بـ 90 مليون معلمة، تكون الأوزان مضغوطة للغاية
00:07:25لدرجة أن المنطق اللغوي قد انهار تمامًا.
00:07:28إنه غير مترابط بالكاد، لكنه من الناحية التقنية يعمل.
00:07:32الآن دعونا نرى ما سيحدث إذا استبدلناه بنموذج 4-بت.
00:07:35انظروا إلى ذلك، الآن حصلنا على تحية مترابطة.
00:07:40هذا نجاح بالفعل.
00:07:42لدينا الآن نموذج ذكاء اصطناعي فعلي يعمل محليًا على Pi
00:07:47ويستجيب بشكل منطقي لأوامرنا.
00:07:49رائع!
00:07:50الآن دعونا نذهب لأبعد من ذلك.
00:07:53لنرى ما إذا كان بإمكان Pi التعامل مع نموذج 8-بت.
00:07:56وهذه المرة سأسأله شيئاً أكثر ذكاءً،
00:07:59مثل ما هي عاصمة ألبانيا؟
00:08:02حسنًا، هذا خطأ لأن عاصمة ألبانيا هي تيرانا
00:08:08وهذا بوضوح غير صحيح من الناحية الواقعية.
00:08:10لكن إذا سألت ما هي عاصمة بلجيكا، فإنه يجيب بشكل صحيح.
00:08:15وهذا يوضح لنا أمراً مثيراً للاهتمام.
00:08:17يبدو أن تقليص المعلمات إلى 90 مليونًا يأتي بتكلفة.
00:08:22قد يمتلك معرفة دقيقة عن الدول الكبيرة والأكثر شهرة،
00:08:26لكنه يفتقر للمعرفة عن الدول الأقل شهرة وربما المواضيع الأقل تداولاً.
00:08:31وهذه هي طبيعة المعرفة ببساطة.
00:08:33هناك قدر محدود من المعلومات التي يمكنك وضعها في 90 مليون معلمة.
00:08:38ومع ذلك، النتيجة رائعة حقاً.
00:08:41وهذا تأكيد على أنه نعم، توجد بالفعل نماذج ذكاء اصطناعي صغيرة بما يكفي
00:08:46وخفيفة بما يكفي لتعمل على Raspberry Pi عمره 12 عاماً.
00:08:50هل هو سريع؟
00:08:51بالتأكيد لا.
00:08:52هل هو دقيق؟
00:08:53قد لا يكون كذلك.
00:08:54هل يجب استخدامه في بيئة العمل؟
00:08:55على الأرجح لا.
00:08:57إلا إذا كنت تريد بناء روبوت بطيء للغاية.
00:09:02لكن الأهم من ذلك، أننا نعرف الآن أنه ممكن نظرياً.
00:09:06وهذا أساساً كل ما أردت إثباته في هذا الفيديو.
00:09:09ولأكون صادقاً، كانت هذه التجربة ممتعة للغاية.
00:09:13ها أنتم ذا يا رفاق.
00:09:14هذه هي نماذج Falcon H1 Tiny.
00:09:17ربما تكون أصغر نماذج ذكاء اصطناعي موجودة حالياً.
00:09:20ونحن نعلم الآن أنها صغيرة بما يكفي لتعمل على الجيل الأول من Raspberry Pi،
00:09:25وهو أمر رائع جداً.
00:09:27لا أستطيع التوقف عن الاحتفال بمدى روعة هذه الحقيقة.
00:09:30على الرغم من أن التطبيق العملي لها غير مفيد، إلا أنها لا تزال رائعة.
00:09:35أخبروني يا رفاق إذا كانت لديكم أي أفكار مضحكة،
00:09:37تعليقات أو ملاحظات حول ما شهدتموه للتو.
00:09:40اكتبوها في قسم التعليقات بالأسفل.
00:09:42ويا رفاق، إذا أعجبتكم هذه الأنواع من التحليلات التقنية،
00:09:45يرجى إخباري من خلال الضغط على زر الإعجاب أسفل الفيديو.
00:09:49ولا تنسوا أيضاً الاشتراك في قناتنا.
00:09:51كان معكم أندريس من Better Stack، وسأراكم في الفيديوهات القادمة.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video