اگر توسعهدهندهای هستید که میخواهید مدلهای هوش مصنوعی را بدون سرور و مستقیماً در مرورگر کاربر اجرا کنید، تازه متوجه شدید که گلوگاه اصلی شما دیگر وجود ندارد. در ۱ سپتامبر ۲۰۲۶، شرکت Hugging Face از کتابخانه @huggingface/kernels پردهبرداری کرد؛ مجموعهای از ۲۰۷ کرنل بهینهشده که سرعت استنتاج را در لایههای زیرین مرورگر متحول میکند.
اجرای محلی هوش مصنوعی در مرورگر همیشه نبردی میان قابلیت جابهجایی و عملکرد بوده است. در حالی که WebGPU یک رابط برنامهنویسی مشترک برای GPUهای مختلف فراهم میکند، یک کد ساده که روی تراشه اینتل سریع است، ممکن است روی Apple M4 بهشدت کند باشد. این شکاف باعث میشد توسعهدهندگان میان یک اجرای کند اما جهانی، یا بهینهسازیهای تکهتکه برای هر دستگاه، یکی را انتخاب کنند.
همانطور که در تحلیل قبلی ما دربارهی ابزارهای هوش مصنوعی محلی مانند OpenShot 4.0 اشاره کردیم که قابلیتهای ماسکگذاری را به دسکتاپ آورد، این اقدام Hugging Face تمرکز را به مرورگر منتقل میکند. هدف این است که وب به محیطی درجهیک برای یادگیری ماشین با عملکرد بالا تبدیل شود.
نیاز به کرنلهای تخصصی
هر مدلی که در مرورگر اجرا میشود، در نهایت به توالیای از عملیات GPU تبدیل میشود. این عملیات شامل ضرب ماتریسی، نرمالسازی و عملیات کوانتش (Quantization) — که شبیه به فشردهسازی یک فایل حجیم برای اشغال فضای کمتر است — میشود. طبق مستندات Hugging Face، قابلیت جابهجایی WebGPU به معنای تضمین سرعت نیست.
دو کد مختلف میتوانند خروجی یکسانی تولید کنند اما روی شتابدهندههای مختلف رفتاری کاملاً متفاوت داشته باشند. عملکرد مدل به شدت تحت تأثیر اندازه گروههای کاری و الگوهای دسترسی به حافظه است. به همین دلیل، کرنلها لایه بنیادی استنتاج (Inference) — یعنی همان لحظهای که مدل واقعاً جواب تولید میکند، شبیه به خودِ آشپزی و نه دورهی آموزش آشپز — در مرورگر هستند. این اهمیت دقت در طراحی کرنلها بیش از پیش احساس میشود، چرا که بررسیهای اخیر نشان داده است که بخش بزرگی از کرنلهای تولیدشده توسط مدلهای زبانی حاوی خطاهای فنی هستند و میتوانند پایداری سیستم را به خطر اندازند.
معماری @huggingface/kernels
به جای ارائه یک کتابخانه حجیم و ایستا، Hugging Face با هر کرنل مانند یک قطعه نرمافزاری نسخهبندیشده برخورد میکند. هر یک از ۲۰۷ کرنل در مخزن خود در Hub قرار دارد و یک «کارت کرنل» دارد که جزئیات ورودی، خروجی و انواع دادههای پشتیبانیشده را شرح میدهد.
به نقل از مستندات فنی این پروژه، برای مثال کرنل ai.onnx.Add شامل موارد زیر است:
- manifest.json: منبع حقیقت برای قرارداد عملیات و قوانین استخراج شکل دادهها.
- metadata.json: ثبت شناسهها و منشأ کرنل.
- test.json: موارد تست برای بررسی صحت خروجی.
- bench.json: موارد محکزنی برای ارزیابی فشار کاری.
- قالبهای شیدر WGSL: فایلهای پارامتریک برای تولید شیدرهای متناسب با هر دستگاه.
پیادهسازی در جاوااسکریپت
توسعهدهندگان میتوانند این بسته را از طریق npm install @huggingface/kernels@preview نصب کنند. این کتابخانه به مرورگری نیاز دارد که از WebGPU پشتیبانی کند. کتابخانه به عنوان یک پل عمل میکند؛ توسعهدهنده با استفاده از getKernel یک شناسه را فراخوانی کرده و تابع بازگشتی را با دادههای ورودی اجرا میکند.
در عملیات سنگینی مانند ضرب ماتریسی (ai.onnx.MatMul)، سیستم بهطور خودکار بهترین نسخه را برای دستگاه کاربر انتخاب میکند. اگر ورودیها شکل یکسانی داشته باشند، مسیر برداری سریع انتخاب میشود و در غیر این صورت، منطق ایندکسگذاری متفاوتی به کار میرود، بدون اینکه API تغییر کند.
تحلیل سرعت و نتایج
برای اثبات تأثیر، Hugging Face این کرنلها را در برابر ORT WebGPU روی GPU مدل Apple M4 تست کرد. بر اساس گزارش این شرکت، از میان ۸۰۹ مورد تست شده که خروجیهای یکسانی داشتند، کرنلهای جدید بهطور میانگین ۲.۵۷ برابر سریعتر بودند.
برخی از دستاوردهای چشمگیر عبارتاند از:
- Add: افزایش سرعت ۳.۵۲ برابری
- Softmax: افزایش سرعت ۲.۱۱ برابری
- LayerNormalization: افزایش سرعت ۲.۲۲ برابری
- MatMul: افزایش سرعت ۱.۱۴ برابری
در موارد حاد، تفاوتها خیرهکننده بود. یک مورد خاص از Einsum در حالی که با ORT WebGPU حدود ۱,۳۹۶ میلیثانیه زمان میبرد، با کرنل Hugging Face تنها در ۰.۱۳۶ میلیثانیه اجرا شد؛ یعنی افزایشی بیش از ۱۰,۰۰۰ برابری.
جمعسپاری سختافزار با Fleet
به دلیل تفاوت شدید عملکرد GPUها در سیستمعاملهای مختلف، Hugging Face ابزار Fleet را معرفی کرد. Fleet یک مجموعه تست در مرورگر است که به جامعه کاربران اجازه میدهد صحت و عملکرد کرنلها را روی سختافزار خود بررسی کنند.
با رضایت کاربر، هر اجرا شواهدی را به یک مجموعه داده جمعی اضافه میکند. این کار به تیم اجازه میدهد تا خطاهای خاص هر دستگاه را شناسایی کرده و قوانین بهینهسازی را بهبود ببخشد، بدون اینکه نیاز باشد هزاران دستگاه فیزیکی در آزمایشگاه داشته باشند.
مسیری به سوی زیرساخت مشترک
انتشار این کرنلها تحت لایسنس Apache-2.0، زیرساختی مشترک برای اکوسیستم WebAI ایجاد میکند. این رویکرد، پیادهسازی کرنل را از محیط اجرای سطح بالا جدا میکند. به این ترتیب، اپلیکیشنها به یک قرارداد پایدار در جاوااسکریپت متکی هستند، در حالی که کرنلهای زیرین بهطور مداوم ارتقا مییابند.
برای کاربر نهایی، این یعنی برنامههای محلی — از ویرایشگرهای تصویر تا مدلهای زبانی بزرگ — سریعتر و قابلاعتمادتر میشوند و دیگر «قرعهکشی عملکرد» (که برنامه روی یک لپتاپ عالی است اما روی دیگری هنگ میکند) وجود نخواهد داشت.
گام بعدی شما
- اگر توسعهدهنده JS هستید، بسته
@huggingface/kernelsرا در پروژههای آزمایشی خود تست کنید. - وضعیت پشتیبانی WebGPU را در مرورگرهای هدف کاربران خود بررسی کنید.
- در پروژه Fleet مشارکت کنید تا بهینهسازی مدلها برای سختافزار خودتان تسریع شود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید که در کنار آن مقایسهای میان تراشه Jalapeño و Blackwell در زمینه بازدهی انرژی صورت گرفته است.




گفتگو