اگر امروز از مدلهای زبانی روی مک استفاده میکنید، احتمالاً بخشی از قدرت سختافزار شما در لایههای نرمافزاری اپل حبس شده است. طبق گزارش منتشر شده در ۵ جولای ۲۰۲۶، فریمورک جدیدی به نام Espresso معرفی شده است که توانسته است سرعت رمزگشایی (Decoding) در مدلهای ترنسفورمر (Transformer) را ۴.۷۶ برابر افزایش دهد. این موفقیت از طریق حذف کامل CoreML و دور زدن آن ممکن شده است.
در حالی که مسیرهای استاندارد به APIهای سطح بالا متکی هستند، Espresso مستقیماً با واحد پردازش عصبی (ANE) صحبت میکند. این کار از طریق مهندسی معکوس رابطهای خصوصی (Private Interfaces) انجام شده است. ANE شبیه به یک اتوبان اختصاصی برای دادههای هوش مصنوعی است که ترافیک پردازشهای عادی را دور میزند. بر اساس مستندات پروژه، این تغییر ساختاری باعث شد تأخیر رمزگشایی در تراشه M3 Max از ۵.۰۹ میلیثانیه در هر توکن در CoreML، به تنها ۱.۰۸ میلیثانیه کاهش یابد.
همانطور که در تحلیلهای پیشین ما دربارهی بهینهسازی مدلهای محلی اشاره کردیم، گلوگاه اصلی همیشه مدیریت حافظه و دسترسی به سختافزار بوده است. برای اکثر توسعهدهندگان، ANE تا کنون یک «جعبه سیاه» بود که فقط از طریق ابزارهای رسمی اپل قابل دسترسی بود. این ابزارها اغلب به دلیل بازسازی مداوم توکنها (Per-token recompilation) و جابجایی دادهها (Data marshaling)، سربار زیادی ایجاد میکنند. تصور کنید در یک قطار سریعسیر باشید که گیت بلیط رسمی (CoreML) باعث ایجاد ترافیک و گلوگاه میشود؛ Espresso در واقع این گیت را حذف کرده تا مدل مستقیماً روی سیلیکون جریان یابد. این رویکردی سطح پایین برای دسترسی به سختافزار است، مشابه آنچه در پروژه ساخت مدل GPT-2 از صفر با C و CUDA دیدیم که هدفش حذف لایههای انتزاعی برای دستیابی به حداکثر کارایی بود.
زمینه و ادغام
این پروژه بر پایه زبان Swift 6.2 بنا شده است و از قابلیتهای پیشرفته این زبان بهره میبرد. از جمله این ویژگیها میتوان به تانسورهای تک-نسخهای (~Copyable move-only tensors)، همروندی سختگیرانه (Strict concurrency) و پرتابهای تایپشده (Typed throws) اشاره کرد. Espresso برای حفظ حداکثر کارایی، هیچ وابستگی خارجی ندارد (Zero-dependency footprint) و تنها بر روی فریمورکهای سیستمی اپل متکی است.
فرآیند ادغام این ابزار برای توسعهدهندگان بسیار ساده شده و از طریق Swift Package Manager انجام میشود. برنامهنویسان تنها کافی است وابستگی .package(url: "https://github.com/christopherkarani/Espresso.git", from: "1.0.0") را اضافه کرده و کتابخانههای ANERuntime و ANETypes را وارد پروژه کنند.
جزئیات فنی
طبق مستندات این پروژه در گیتهاب، کتابخانه مذکور از APIهای خصوصی مانند _ANEClient و _ANEInMemoryModel استفاده میکند. معماری فنی Espresso بر روی سه بهینهسازی محوری متمرکز است:
- هستههای ادغامشده (Fused Kernels): این سیستم قادر است سه لایه ترنسفورمر را در یک دستور ارسال (Dispatch) واحد به ANE پردازش کند. در یک مدل ۶ لایه، این رویکرد نیاز به فراخوانهای ارزیابی (Eval calls) را از ۶ بار به تنها ۲ بار کاهش میدهد.
- ورودی/خروجی بدون کپی (Zero-Copy I/O): سیستم از بافرهای IOSurface و خواندنهای برداری NEON با استفاده از vDSP argmax برای جابجایی دادهها بهره میبرد. این مکانیزم فرآیند پرهزینه جابجایی و کپی کردن دادهها را که در CoreML اجباری است، کاملاً حذف میکند. این بهینهسازی در مدیریت دادهها، یادآور راهکارهای استفاده از Cross-Origin Storage برای جلوگیری از بارگذاریهای تکراری و کاهش اتلاف منابع در محیطهای وب است.
- کامپایل مستقیم: برنامههای MIL تنها یکبار به باینریهای ANE E5 تبدیل شده و توسط سیستم کش میشوند. این برنامه در تمام گامهای رمزگشایی مجدداً استفاده میشود و از بازسازی تکراری در هر توکن جلوگیری میکند.
معماری داخلی این فریمورک به ماژولهای تخصصی تقسیم شده است:
- ANEInterop: پلی است که از
dlopenبرای دسترسی به_ANEClientو_ANEInMemoryModelهمراه با ورودی/خروجی برداری NEON استفاده میکند. - MILGenerator: مدیریت بیش از ۲۸ گونهی کرنل (Kernel variant) را برای پاسهای رفت (Forward)، برگشت (Backward) و رمزگشایی (Decode) بر عهده دارد.
- CPUOps: پیادهسازی RMSNorm، RoPE، Embedding، Softmax و Adam را از طریق Accelerate/vDSP انجام میدهد.
- ANETypes: مدیریت تانسورهای
~Copyable،SurfaceIO و سریالسازی وزنها را بر عهده دارد.
در بنچمارکهای اجرا شده روی یک آرتیفکت محلی ۶ لایه (با ابعاد dim=768، ۱۲ هد، واژگان ۳۲ هزارتایی و طول توالی ۲۵۶) روی تراشه M3 Max با سیستمعامل macOS 15، مدل Espresso به توان عملیاتی خیرهکننده ۹۲۶ توکن در ثانیه (۱.۰۸ میلیثانیه در هر توکن) رسید. در مقابل، مسیر ترکیبی .cpuAndNeuralEngine در CoreML تنها ۱۹۶ توکن در ثانیه (۵.۰۹ میلیثانیه در هر توکن) تولید کرد. حتی llama.cpp در مسیرهای GPU متال (Metal) با سرعت ۵۰ تا ۸۵ توکن در ثانیه (حدود ۱۲ تا ۲۰ میلیثانیه در هر توکن) عقبتر است و مسیر خالص CPU (ggml) آن تا ۲۵-۴۰ توکن در ثانیه سقوط میکند.
علاوه بر استنتاج (Inference)، Espresso قابلیتهای کامل آموزش (Training) را روی ANE معرفی کرده است. این شامل پاسهای رفت و برگشت با تجمع گرادیان (Gradient accumulation) و بهینهساز Adam میشود. برای تضمین دقت، هر گام رمزگشایی دو توکن تأیید شده با بررسی تساوی (Parity) تولید میکند.
پلتفرم مدل Espresso
این فریمورک یک پلتفرم مدل اختصاصی را عرضه میکند که حول محور بستههای قابل حمل با پسوند .esp میچرخد. این فرمت توسط یک لایه کش کامپایل شده مشتق شده با پسوند .espc پشتیبانی میشود.
کاربران میتوانند این آرتیفکتها را با مجموعهای از ابزارهای خط فرمان (CLI) مدیریت کنند:
espc: دایرکتوریهای بومی مدل را به بستههای.espتبدیل میکند.esprun: به بازرسی، حل و اجرای آرتیفکتهای بسته میپردازد.espresso-generate --bundle <path>: دقیقاً همان مرز بستهای (Bundle boundary) را اجرا میکند که توسط محیط اجرا (Runtime) استفاده میشود.
برای تست آمادگی سیستم، کاربران میتوانند دستور ./espresso doctor را اجرا کنند. نقاط دسترسی دیگر شامل ./espresso "Hello" برای تولید متن، ./espresso install برای انتقال باینری به مسیر ~/.local/bin و ./espresso compare --no-power "Hello" برای مقایسه مستقیم و همزمان با CoreML است.
سازگاری سختافزاری
این فریمورک طیف گستردهای از تراشههای اپل سیلیکون را پشتیبانی میکند:
- M1 / M1 Pro / Max / Ultra: ANE ۱۶ هستهای (پشتیبانی از مجموعه کامل ویژگیها).
- M2 / M2 Pro / Max / Ultra: ANE ۱۶ هستهای (پشتیبانی از مجموعه کامل ویژگیها).
- M3 / M3 Pro / Max: ANE ۱۸ هستهای (سختافزار مرجع).
- M4 / M4 Pro / Max: ANE ۳۸ هستهای (سرعت بالاتر در گرم کردن کش کامپایل).
مکهای اینتل به دلیل نبود موتور عصبی (Neural Engine) پشتیبانی نمیشوند. دستگاههای سری A در iOS از نظر فنی پشتیبانی میشوند اما به مجوزهای (Entitlements) خاص نیاز دارند. همچنین برای عملیات، داشتن macOS 15 یا نسخههای جدیدتر الزامی است.
این پیشرفت، معیار (Benchmark) هوش مصنوعی روی دستگاه را تغییر میدهد و ثابت میکند که سختافزار اپل توسط استک نرمافزاری خودش بسیار کمتر از حد توان به کار گرفته میشود. با تبدیل ANE به یک هدف محاسباتی خام به جای یک سرویس مدیریت شده، Espresso سطحی از کارایی را آزاد کرد که پیش از این فقط برای اپلیکیشنهای داخلی و رسمی اپل رزرو شده بود.
با این حال، یک معامله یا Trade-off حیاتی در مورد توزیع وجود دارد. به دلیل تکیه بر APIهای خصوصی و مستندنشده، هر اپلیکیشنی که از Espresso استفاده کند، توسط اپاستور مک یا iOS رد خواهد شد. بنابراین، این ابزار همچنان یک ابزار قدرتمند برای پژوهشهای داخلی، ابزارهای سازمانی و اپلیکیشنهای Sideload شده باقی میماند. این نوع دسترسی کنترلشده به سختافزار برای کاربردهای حساس، مشابه رویکردی است که ninoxAI برای حذف ریسکهای محیط Production به کار گرفت تا محیطهای عملیاتی را امنتر کند.
توسعهدهندگان میتوانند فوراً با کلون کردن مخزن و اجرای دستور ./espresso رابط کاربری متنی (TUI) را اجرا کنند؛ این دستور به طور خودکار پروژه را میسازد و وزنهای دمو را دانلود میکند. برای تأیید صحت عملکرد، پروژه هفت مجموعه تست (Test suites) شامل تولید MIL، کرنلهای CPU و ارزیابی سختافزاری ارائه میدهد.
گام بعدی شما
- اگر توسعهدهنده مک هستید، مخزن گیتهاب را کلون کرده و با دستور
./espressoمحیط رابط کاربری متنی (TUI) را اجرا کنید. - برای بررسی تفاوت سرعت، دستور
compareرا با ورودیهای متنوع تست کنید تا گلوگاههای CoreML را در مدل خود شناسایی کنید. - اگر در حال آموزش مدلهای کوچک هستید، قابلیت Gradient Accumulation را در ANE امتحان کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو