پرش به محتوای اصلی
پرش به محتوای مقاله

فریم‌ورک Espresso سرعت استنتاج ترنسفورمرها در مک را ۴.۷۶ برابر کرد

·۱۴ تیر ۱۴۰۵۵ دقیقه مطالعه۱ بازدید
آموزش و اجرای مدل‌های ترنسفورمر مستقیماً روی پردازنده عصبی اپل با سوئیفت، بدون نیاز به CoreML
آموزش و اجرای مدل‌های ترنسفورمر مستقیماً روی پردازنده عصبی اپل با سوئیفت، بدون نیاز به CoreML
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

نخستین دسترسی مستقیم و مهندسی‌شده به ANE برای ترنسفورمرها که CoreML را کاملاً دور می‌زند و امکان آموزش (Training) روی موتور عصبی را فراهم می‌کند.

اگر امروز از مدل‌های زبانی روی مک استفاده می‌کنید، احتمالاً بخشی از قدرت سخت‌افزار شما در لایه‌های نرم‌افزاری اپل حبس شده است. طبق گزارش منتشر شده در ۵ جولای ۲۰۲۶، فریم‌ورک جدیدی به نام 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 مراجعه کنید.

چرا این موضوع مهم است؟

این پروژه با اثبات بهره‌وری ۴ برابری، اعتبار ادعاهای اپل درباره بهینگی CoreML را به چالش می‌کشد. دسترسی مستقیم به ANE، استقرار مدل‌های زبانی محلی را از یک تجربه «کافی» به یک تجربه «آنی» تبدیل می‌کند.

تأثیر برای ایران

به دلیل ماهیت Open-source و عدم نیاز به APIهای ابری، این ابزار برای توسعه‌دهندگان ایرانی که با محدودیت‌های دسترسی به GPUهای ابری مواجه‌اند، راهکاری ایده‌آل برای استخراج حداکثری قدرت مک‌های موجود است.

·نگاه ما
تحریریه دات‌هوش

دسترسی Espresso به APIهای خصوصی اپل نشان می‌دهد که فاصله بین «توان سخت‌افزاری» و «بهره‌وری نرم‌افزاری» در اکوسیستم مک بسیار عمیق‌تر از تصور است. این ابزار در واقع مدل توسعه‌دهندگان را از مصرف‌کننده APIهای مدیریت‌شده به مهندسان سطح پایین بازمی‌گرداند؛ جایی که به قیمت ریسک پذیرفتن در توزیع (رد شدن در اپ‌استور)، کنترل کامل بر سیلیکون به دست می‌آید.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.