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

درون معماری دو-مسیره Aegis برای عبور از گلوگاه پایتون

·۱ تیر ۱۴۰۵۴ دقیقه مطالعه
پل زدن پایتون و راست: کاهش تنگناهای GIL در دروازه پرتوان مدل زبانی بزرگ
پل زدن پایتون و راست: کاهش تنگناهای GIL در دروازه پرتوان مدل زبانی بزرگ
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی یک معماری «دومسیره» که با انتقال محاسبات MMR به Rust، تأخیر گیت‌وی را به سطح میکروثانیه برده و هم‌زمان دلیل شکست مقیاس‌دهی عمودی در مدل‌های ترکیبی پایتون-راست را افشا کرده است.

اگر برای استقرار مدل‌های زبانی در محیط‌های حساس و نظارتی برنامه‌ریزی می‌کنید، تأخیر در لایه‌ی گیت‌وی می‌تواند تفاوت بین یک سیستم پاسخ‌گو و یک شکست عملیاتی باشد. Aegis توانسته است تأخیر مسیر بحرانی (Hot-path) خود را به عدد خیره‌کننده‌ی ۲.۴۳ میکروثانیه (p50) برساند. این پروکسی حاکمیتی که با OpenAI سازگار است و به صورت متن‌باز عرضه شده، این رقم را از طریق جداسازی پردازش درخواست‌ها به دو جریان مجزا به دست آورده است تا ترافیک کاربر به‌طور مؤثر از وظایف سنگین حسابرسی جدا شود. این رویکرد در مدیریت ترافیک، یادآور راهکارهای بهینه‌سازی هزینه‌ها در لایه‌های مسیریابی است؛ مشابه آنچه در بررسی کاهش هزینه‌های CrewAI با استفاده از لایه‌ی مسیریابی Lynkr مشاهده شد.

زمینه‌ی معماری

ساخت یک پروکسی امن نیازمند ایجاد توازن بین سرعت توسعه و عملکرد خام است. در حالی که فریم‌ورک FastAPI در پایتون (ASGI) امکان انطباق سریع APIها را فراهم می‌کند، عملیات‌های با عملکرد بالا مانند «محدوده کوهستانی مرکل» (MMR) و «ثبت پیش‌نویس» (WAL) به زبان‌های کامپایل‌شده نیاز دارند. برای حل این چالش، تیم توسعه بخش‌های رمزنگاری و ثبت لاگ را به یک افزونه کامپایل‌شده با زبان Rust به نام aegis_rust_v2 منتقل کردند و برای ایجاد پیوند (Binding) بین این دو، از PyO3 و Maturin استفاده نمودند.

این تنش معماری یادآور نیاز به دقت در مدل‌های کوچک‌تر است؛ مشابه آنچه در پوشش‌های قبلی ما درباره‌ی چگونگی افزایش دقت مدل‌های بسیار کوچک مانند Qwen 3 0.6B از طریق Fine-tuning ذکر شد.

بر اساس گزارش فنی، Aegis از یک «مدل اجرای دومسیره» (Two-Path Execution Model) استفاده می‌کند. مسیر سریع (Hot Path) چرخه فوری درخواست را مدیریت می‌کند: این مسیر شامل گاردها (Smuggling guards)، احراز هویت، دیوار آتش وب (WAF)، محدودیت نرخ (Rate-limiting)، آداپتور و هدایت‌کننده (Forwarder) است تا در نهایت درخواست را به LLM بالادستی ارسال کند.

به‌طور هم‌زمان، سیستم تابع _spawn_background() را برای فعال‌سازی مسیر پس‌زمینه از طریق asyncio.create_task اجرا می‌کند. این مسیر وظیفه‌ی پردازش ResponseAnalyzer، دفتر کل حسابرسی رمزنگاری (CryptographicAuditLedger)، MMR و Write-Ahead Log را بر عهده دارد. در یک محیط بنچمارک (پردازنده Intel Xeon با فرکانس ۲.۸۰ گیگاهرتز و ۴ هسته)، این بلوک زمان‌بندی — که شامل ردیابی مجموعه‌ی پس‌زمینه و به‌روزرسانی شاخص‌های Prometheus است — تنها ۲.۴۳ میکروثانیه در p50 و ۶.۷۸ میکروثانیه در p99 هزینه دارد.

پل زدن پایتون و راست: کاهش تنگناهای GIL در دروازه پرتوان مدل زبانی بزرگ

جزئیات فنی Rust MMR

برای شتاب‌بخشی به مسیر حسابرسی، تیم توسعه لایه‌ی Rust را برای مدیریت تجمع‌کننده‌ی MMR طراحی کرد. برخلاف درخت‌های مرکل باینری کلاسیک و متوازن، MMR یک تجمع‌کننده‌ی لگاریتمی «فقط-افزودنی» (Append-only) است که اثبات‌های شمول و سازگاری را بدون نیاز به هزینه‌های سنگین بازتعادل‌سازی (Rebalancing) ارائه می‌دهد.

در پایتون خالص، عملیات هش کردن برگ‌ها در مقیاس بالا باعث ایجاد فشار قابل‌اندازه‌گیری روی مدیریت حافظه (GC) می‌شود، زیرا ادغام قله‌ها (Merging peaks) مستلزم تخصیص تعداد زیادی شیء کوچک از نوع bytes است. پیاده‌سازی Rust این مشکل را از طریق MmrAccumulator حل می‌کند که از SHA-256 بومی برای ادغام قله‌ها بدون تخصیص حافظه (Zero-allocation) استفاده می‌کند. لایه‌ی شتاب‌دهنده‌ی Rust سرعت پایداری بین ۳.۰۱ تا ۳.۳۴ برابر نسبت به خط مبنای پایتون خالص ایجاد کرد:

  • ۱۰۰ برگ: ۲.۸۸ برابر سریع‌تر (۹۵۸,۵۱۰ برگ در ثانیه در مقابل ۳۳۲,۴۶۰ در پایتون)
  • ۱,۰۰۰ برگ: ۲.۷۹ برابر سریع‌تر (۸۱۴,۰۰۰ برگ در ثانیه در مقابل ۲۹۲,۰۵۰ در پایتون)
  • ۱۰,۰۰۰ برگ: ۳.۰۳ برابر سریع‌تر (۷۶۰,۲۶۰ برگ در ثانیه در مقابل ۲۵۰,۶۵۰ در پایتون)
  • ۱۰۰,۰۰۰ برگ: ۳.۳۴ برابر سریع‌تر (۷۰۹,۲۴۰ برگ در ثانیه در مقابل ۲۱۲,۱۸۰ در پایتون)

دیوار تصادم GIL

با وجود این شتاب‌ها، تیم توسعه در جریان بررسی‌های عملکردی حلقه‌بسته (Loopback) برای درخواست‌های /health با سدی به نام «دیوار تصادم GIL» مواجه شد. آن‌ها روند متناقضی را مشاهده کردند که در آن با افزایش هم‌زمانی (Concurrency)، توان عملیاتی (Throughput) افت می‌کرد، در حالی که استفاده از CPU در واقع کاهش می‌یافت:

  • هم‌زمانی ۱: ۶۵۰ RPS | تأخیر ۱.۴۹ میلی‌ثانیه p50 | ۳۵.۷٪ CPU
  • هم‌زمانی ۴: ۹۰۲ RPS | تأخیر ۴.۰۵ میلی‌ثانیه p50 | ۴۳.۱٪ CPU
  • هم‌زمانی ۳۲: ۳۳۹ RPS | تأخیر ۶۵.۲ میلی‌ثانیه p50 | ۱۸.۷٪ CPU
  • هم‌زمانی ۱۲۸: ۲۴۶ RPS | تأخیر ۲۹۷.۶ میلی‌ثانیه p50 | ۱۳.۸٪ CPU

این فروپاشی به این دلیل رخ می‌دهد که هرگاه رشته‌های Rust — که استخر Tokio پس‌زمینه یا فراخوانی‌های رمزنگاری PyO3 را اجرا می‌کنند — قفل سراسری مفسر (GIL) را در اختیار بگیرند، حلقه‌ی ASGI پایتون متوقف می‌شود. هزینه دریافت و آزادسازی GIL از طریق رابط FFI با افزایش هم‌زمانی مقیاس می‌یابد و باعث ایجاد مسدودشدگی ابتدای صف (Head-of-line blocking) در حلقه رویداد می‌شود.

برای توسعه‌دهندگان، این بدان معناست که بهینه‌ترین راه برای مقیاس‌بندی سیستم‌های ترکیبی پایتون و Rust، مقیاس‌دهی افقی (Scale-out) است و نه عمودی (Scale-up). استراتژی استقرار توصیه شده برای Aegis این است که یک فرآیند Worker یوویکورن (Uvicorn) به ازای هر هسته فیزیکی اجرا شود و محدودیت‌های CPU کانتینر دقیقاً با تعداد Workerها تطبیق یابد تا از throttling توسط CFS جلوگیری شود. قرار دادن یک Load Balancer (مانند NGINX، HAProxy یا AWS ALB) با استفاده از هشینگ نزدیکی مستاجر (Tenant-affinity hashing) در مقابل این سیستم، باعث می‌شود حلقه رویداد از تصادم‌های FFI پاک بماند. این نوع بهینه‌سازی زیرساختی برای اجرای بهینه مدل‌ها، در راستای روندی است که در تحلیل ابزارهای اجرای محلی عامل‌های هوش مصنوعی بدون نیاز به سخت‌افزارهای صنعتی نیز مورد بحث قرار گرفت.

اگر در حال استقرار هوش مصنوعی مولد در بخش‌های تحت نظارت هستید، باید کدهای Aegis تحت لایسنس AGPLv3 را دنبال کنید تا ببینید چگونه این گلوگاه‌های رشته‌ای (Threading) مدیریت می‌شوند.

گام بعدی شما

  • اگر در بخش‌های نظارتی فعالیت می‌کنید، کدهای Aegis را در لایه‌ی AGPLv3 بررسی کنید تا با مدیریت گلوگاه‌های Threading آشنا شوید.
  • معماری دومسیره را برای جداسازی منطق تجاری از لایه‌های حسابرسی در گیت‌وی‌های خود پیاده کنید.
  • در استقرار مدل‌های ترکیبی، به جای افزایش CPU یک کانتینر، تعداد Workerها را با تعداد هسته‌های فیزیکی تطبیق دهید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

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

این رویکرد با تکیه بر تخصص مهندسی سیستم‌های توزیع‌شده، راهکاری برای حذف تأخیر در لایه‌های نظارتی (Governance) ارائه می‌دهد. این تغییر باعث می‌شود سازمان‌ها بتوانند بدون افت سرعت، سخت‌گیرانه‌ترین استانداردهای امنیتی و حسابرسی را روی جریان داده‌های هوش مصنوعی اعمال کنند.

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

برنامه‌نویسان ایرانی که گیت‌وی‌های داخلی برای دسترسی به LLMها توسعه می‌دهند، می‌توانند از معماری Aegis برای کاهش تأخیر و مدیریت بهتر ترافیک در مقیاس بالا استفاده کنند.

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

جایگزینی بخش‌های حساس با Rust در پروکسی‌های AI دیگر یک انتخاب نیست، بلکه ضرورتی برای بقاست. نکته کلیدی اینجاست که حتی با Rust، قفل GIL در پایتون همچنان یک «سقف شیشه‌ای» است که مقیاس‌پذیری عمودی راe می‌کشد. این گزارش ثابت می‌کند که در معماری‌های مدرن AI، مدیریت حافظه و توالی اجرا (Execution Flow) اهمیت بیشتری نسبت به قدرت پردازش خام دارد.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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