بعد ست سنوات من التطوير، أصبح WebGPU على وشك الإطلاق عبر معظم متصفحات الويب الرئيسية. يعد هذا أمرًا هائلاً: تتمتع تطبيقات الويب الآن بإمكانية وصول شبه أصلية إلى وحدة معالجة الرسومات، مع سعة إضافية للتظليل الحسابي.
WebGPT عبارة عن تطبيق Vanilla JS وHTML لنموذج المحولات، والمقصود منه أن يكون إثباتًا للمفهوم بالإضافة إلى مورد تعليمي. تم اختبار WebGPT للعمل مع نماذج تصل إلى 500 مليون معلمة، على الرغم من أنه من المحتمل أن يدعم المزيد من خلال مزيد من الاختبار/التحسين.
2020 M1 Mac: 3 مللي ثانية/الرمز المميز عند معلمات 5M بدقة f32.
2020 M1 Mac: 30 مللي ثانية/الرمز المميز عند 117 مليون معلمة بدقة f32.
2020 M1 Mac: 70 مللي ثانية/الرمز المميز عند 377 مليون معلمة بدقة f32.
2020 M1 Mac: 120 مللي ثانية/الرمز المميز عند 775 مليون معلمة بدقة f32.
1.5B يعمل ولكنه غير مستقر، ويصل إلى حوالي 1000 مللي ثانية/الرمز المميز بسبب عدم الكفاءة.
يعد تشغيل WebGPT أمرًا بسيطًا للغاية، لأنه مجرد مجموعة من ملفات HTML + JS. نظرًا لأن WebGPU لا يزال في طور الإصدار، فستحتاج إلى فتحه باستخدام متصفح متوافق. يتوفر WebGPU حاليًا على Chrome v113 ولكن الطريقة الأكثر مباشرة لضمان الأداء المناسب هي تثبيت Chrome Canary أو Edge Canary.
لقد قمت بتضمين نموذجين مختلفين: نموذج لعبة GPT-Shakespeare (وهو نموذج غير مدرب بشدة) وGPT-2 117M. راجع main.js لمزيد من المعلومات حول كيفية تشغيل هذه النماذج. إذا كنت ترغب في استيراد نماذج مخصصة، فقم بإلقاء نظرة على Misc/conversion_scripts.
إذا كنت ترغب في تجربة WebGPT، قم بزيارة الموقع التجريبي هنا KMeans.org. أوصي عمومًا باستنساخ الريبو وتشغيله محليًا، فقط لأن تحميل الأوزان عن بُعد أبطأ بشكل ملحوظ.
ملاحظة: ستحتاج إلى استخدام Git LFS لتنزيل ملفات النموذج، بعد استنساخ المستودع.
عندما بدأت هذا المشروع لم تكن لدي أي فكرة عن كيفية عمل المحولات أو كيفية تنفيذها (أو وحدات معالجة الرسومات أو نواة matmul أو WebGPU أو الترميز في هذا الشأن)، لذا فإن سلسلة Andrej Karpathy حول الشبكات العصبية وبناء GPT من الصفر كانت لا تقدر بثمن: يوتيوب Andrej. لقد استخدمت أيضًا بعض التعليمات البرمجية من مستودع nanoGPT: nanoGPT.
لقد قمت بالنسخ من تطبيق LatitudeGames لرمز OpenAI's GPT-3 المميز في Javascript: GPT-3-Encoder.