스크립트
00:00:00أصدرت جوجل للتو مكتبة وقت تشغيل جديدة تتيح لك تشغيل نماذج تعلم الآلة والذكاء الاصطناعي
00:00:05داخل المتصفح بسرعات تقارب السرعة الأصلية. تسمى LiteRT.js وهي مثيرة للإعجاب حقاً. لذا
00:00:12في هذا الفيديو سنلقي نظرة على LiteRT.js، ونرى كيف تعمل، وسنقوم باختبارها عن طريق
00:00:18بناء تطبيق لالتقاط الحركة ثلاثي الأبعاد في الوقت الفعلي يعمل بالكامل داخل المتصفح. سيكون الأمر
00:00:24ممتعاً للغاية، لذا دعونا نغوص فيه. فما هي LiteRT.js بالضبط؟ حسناً، إنها رابط JavaScript لـ
00:00:36LiteRT، وهي بيئة تشغيل الاستدلال على الجهاز، والتي تعمل على تشغيل النماذج على Android وiOS والأنظمة المدمجة
00:00:42لسنوات حتى الآن. لكن LiteRT.js تجلب بيئة التشغيل نفسها إلى المتصفح عبر WebAssembly باستخدام
00:00:50حزمة npm الأساسية لـ LiteRT.js. وإليك ما يجعل LiteRT.js مختلفة. جوجل لديها بالفعل
00:00:58مكتبة تعلم آلة للمتصفح، تسمى TensorFlow.js، وهي موجودة منذ سنوات. لكن
00:01:04TensorFlow.js تعمل على نواة تعتمد على JavaScript، وهذا يشكل عنق زجاجة كبيراً. كما ترى، نواة JavaScript
00:01:11لا يمكنها استغلال وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU) بالكامل كما تفعل بيئة التشغيل الأصلية. لذا تخلفت TensorFlow.js دائماً عن
00:01:19أداء التطبيقات الأصلية. لكن LiteRT.js تستخدم WebAssembly، وتأتي مع نواتها المحسنة الخاصة.
00:01:27لذا فإن بيئة التشغيل الأصلية نفسها التي تدعم الاستدلال على Android وiOS يتم تجميعها إلى WASM ثم تُكشف لـ
00:01:34LiteRT.js. لذا فأنت لا تحصل على طبقة تجريد بنكهة الويب بعد الآن، بل تحصل فعلياً على
00:01:40محرك بيئة تشغيل محسن حقاً. وهذا يظهر أيضاً في هندسة الواجهة الخلفية لديهم. تمتلك LiteRT.js
00:01:47ثلاث طبقات مختلفة تسمح لها بالأداء الجيد على وحدات المعالجة المركزية، ووحدات معالجة الرسومات، وحتى وحدات معالجة الشبكات العصبية (NPUs). لذا على جانب وحدة المعالجة المركزية،
00:01:55تستخدم XNNPack، وهي مكتبة نواة وحدة المعالجة المركزية المحسنة من جوجل، والتي تتميز بتعدد الخيوط مع دعم SIMD المرن.
00:02:04وهذا هو خيارك الاحتياطي الشامل الذي سيعمل في أي مكان، دون الحاجة إلى وحدة معالجة رسومات. ولكن بالنسبة لوحدات معالجة الرسومات،
00:02:11فهي تستخدم ML drift عبر Web GPU، وهنا يكمن الأداء الحقيقي. فهي تستخدم نواتها الأصلية لوحدة معالجة الرسومات
00:02:18لذا فإن أشياء مثل برامج التظليل (shaders) لم تعد تُعرض باستخدام نوع من تنسيق JavaScript. وبالنسبة لـ
00:02:24وحدات معالجة الشبكات العصبية، فهي تمتلك WebNN، والذي لا يزال تجريبياً في متصفحي Chrome وEdge، وهو يستهدف أجهزة
00:02:31معالجة عصبية مخصصة للاستدلال الموفر للطاقة. ووفقاً لمعايير الأداء الخاصة بجوجل، والتي أجروها
00:02:37على جهاز MacBook Pro لعام 2024 بمعالج M4، يبدو أنها تتمتع باستدلال أسرع بثلاث مرات من
00:02:45بيئات تشغيل الويب الأخرى على وحدة المعالجة المركزية ووحدة معالجة الرسومات عبر نماذج الرؤية والصوت. وعند تشغيل أعباء عمل مثل
00:02:53تتبع الأشياء، أو تحويل الصوت إلى نص، أو معالجة الصور على وحدة معالجة الرسومات أو وحدة معالجة الشبكات العصبية بدلاً من وحدة المعالجة المركزية،
00:03:00نحصل على تعزيزات في الأداء تقفز من خمس مرات وصولاً إلى 60 مرة أسرع في النتائج،
00:03:07اعتماداً على المهمة. ويجدر بالذكر أن ذلك يمثل أفضل سيناريو. كما تقر جوجل
00:03:13بذلك. لذا قد تختلف تجربتك، مع الأخذ في الاعتبار وحدة معالجة الرسومات الخاصة بك،
00:03:18والاختناق الحراري، وجودة برنامج التشغيل. وهناك شيء آخر يهم حقاً في بيئة التشغيل هذه.
00:03:24إذا كان لديك بالفعل نماذج تستخدمها للتشغيل على PyTorch أو TensorFlow، إذا كان لديك ملف
00:03:30TF Lite موجود، فيمكن لـ LiteRT.js تشغيله مباشرة. وإذا كنت تستخدم PyTorch، فهناك أيضاً LiteRT
00:03:38Torch، وهو مسار تحويل يأخذ نموذجك مباشرة إلى صيغة .TF Lite. بالإضافة إلى ذلك، هناك أيضاً أداة
00:03:44Quantizer للذكاء الاصطناعي على الحافة لتقليل أحجام النماذج دون الحاجة إلى إعادة كتابة كاملة. لذا يمكن بسهولة نقل سير العمل القديم الذي كنت تستخدمه على
00:03:50TensorFlow.js إلى LiteRT.js الجديد، وهو أمر رائع جداً. ولكن ماذا يمكنك
00:03:58أن تفعل به فعلياً؟ حسناً، لدى جوجل بعض العروض التوضيحية الرائعة، والتي تعطيك فكرة عن
00:04:03النطاق. لذا يمكنك القيام باكتشاف الأشياء باستخدام YOLO في الوقت الفعلي، وتقدير العمق الأحادي مع
00:04:09مكتبة “depth anything” التي تحول بث كاميرا الويب الخاص بك إلى سحابة نقاط ثلاثية الأبعاد حية. ويمكنها أيضاً إجراء تحسين لدقة الصور
00:04:16باستخدام مكتبة ESR GAN الحقيقية. وتعمل كل هذه العروض التوضيحية بالكامل من جانب العميل مع
00:04:23عدم وجود واجهات خلفية، أو واجهات برمجة تطبيقات، مباشرة داخل متصفحك. وقد أعلنوا بالفعل عما هو قادم،
00:04:29LiteRT.LM.js. وسيكون هذا لتشغيل نماذج لغوية كاملة محلياً في المتصفح.
00:04:36لذا هذا ليس مخصصاً لرؤية الحاسوب فقط. قريباً سيوفر أيضاً استدلالاً للنماذج اللغوية الكبيرة محلياً.
00:04:42حسناً، كل ذلك يبدو رائعاً، لكنني أردت اختباره بنفسي لأرى مدى قوته فعلياً.
00:04:48لذا بالنسبة لهذا العرض التوضيحي، قررت إنشاء تطبيق حركة حقيقي يستخدم كاميرا الويب الخاصة بك لـ
00:04:55تقدير الوضعية في الوقت الفعلي. وهو يعمل أيضاً بالكامل على متصفحك، من جانب العميل، وبدون اتصال بالإنترنت دون أي
00:05:03شروط. لذا قمت ببرمجة هذا التطبيق على cloud code باستخدام نموذج Fable 5 الجديد. وإليك النتيجة النهائية.
00:05:10وبالمناسبة، إذا كنت ترغب في تنزيل هذا المستودع وتجربته بنفسك، فقد أضفت أيضاً رابطاً إلى
00:05:15المشروع في الوصف أدناه. لذا هنا تعمل LiteRT.JS عبر المتصفح باستخدام نموذج blaze pose
00:05:23مع 33 علامة للجسم، مما يحرك شخصية ثلاثية الأبعاد في الوقت الفعلي باستخدام 3.js. لا يوجد خادم خلفي و
00:05:31كل ما تراه يحدث على هذا الجهاز الآن تماماً دون اتصال. لذا يمكننا أن نرى هنا أنه على
00:05:38وحدة المعالجة المركزية، نحن نحقق متوسطاً يبلغ حوالي 38 إطاراً في الثانية مع استدلال يبلغ 23.3 مللي ثانية. ويمكننا أيضاً رؤية أن تقدير
00:05:47الوضعية يتأخر قليلاً. ولكن الآن إذا قمنا بالتبديل إلى نسخة Web GPU، يمكننا أن نرى أننا نحصل الآن على
00:05:54120 إطاراً في الثانية بثبات مع استدلال يبلغ 8.4 مللي ثانية. كما أن تقدير الوضعية أسرع
00:06:02قليلاً. وهذا يمثل قفزة تقريبية بثلاث مرات في معدل الإطارات وانخفاضاً بمقدار 2.8 مرة في وقت الاستدلال، وهو ما
00:06:10يتماشى مع أرقام جوجل الخاصة، على الرغم من أنه في الجانب المتواضع مما نشروه. ولكن يجب أن
00:06:16نأخذ في الاعتبار أن blaze pose هو نموذج صغير حقاً. لذا هناك قدرة حوسبة خام أقل لوحدة معالجة الرسومات
00:06:23لتحليلها. ولكن حتى مع ذلك، فإن نقل عمليات التنسور الحسابية من وحدة المعالجة المركزية إلى Web GPU يقلل من زمن الوصول
00:06:30بما يكفي ليكون التأخير أقل بشكل ملحوظ. وقد أضفت أيضاً ميزة حيث يمكنك تسجيل الرسوم المتحركة لالتقاط وضعيتك
00:06:36وتصديرها كـ JSON أو كملف التقاط حركة حيوي، ثم فتح ذلك في
00:06:44برنامج مثل Blender وإعادة توجيه تلك الرسوم المتحركة إلى شخصيتك المخصصة. وكما ترون هنا،
00:06:49الأمر ليس مثالياً. الحركات ليست مفصلة أو محسنة جداً. لذا لا يزال هذا عملاً قيد
00:06:56التطوير. لكن من الرائع جداً أنني تمكنت من جعل هذا الإصدار الأولي يعمل في 10 دقائق فقط
00:07:01باستخدام LiteRT.js الجديد. إذن ها هي، يا رفاق. هذه هي LiteRT.js باختصار. إنه
00:07:08أمر مذهل حقاً أن نرى إلى أي مدى دفعت WebAssembly قدرات تشغيل التطبيقات المعقدة
00:07:14على المتصفح. وتثبت مكتبة LiteRT.js الجديدة هذه حقاً أن JavaScript في بعض الأحيان يمكن أن
00:07:21تكون عنق زجاجة حقيقياً للوصول إلى تلك السرعات التي تقارب الأداء الأصلي. لذا أنا معجب جداً بهذه
00:07:27المكتبة ولا أطيق الانتظار لتجربة LiteRT.js عندما يتم إطلاقها أخيراً في وقت لاحق من هذا العام. ولكن ما رأيك
00:07:35في LiteRT.js؟ هل جربتها؟ هل ستستخدمها؟ أخبرنا في التعليقات أدناه. ويا رفاق،
00:07:40إذا أعجبتكم هذه الأنواع من التحليلات التقنية، يرجى إخباري عن طريق الضغط على زر الإعجاب
00:07:45أسفل الفيديو. وأيضاً لا تنسوا الاشتراك في قناتنا. كان معكم أندريس من
00:07:50BetterStack وسأراكم في الفيديوهات القادمة.