Shepherd Model Gateway: وقتی Rust جای Python رو میگیره
خلاصهٔ کاملتر
وقتی تیم سازنده SMG داشتن روی load balancing آگاه به کش کار میکردن، به یه مشکل بزرگتر رسیدن: در هر دو فریمورک SGLang و vLLM، توکنسازی و معکوسکردنش تبدیل به گلوگاه شده بود. نه در تئوری، بلکه در محیط واقعی با ترافیک واقعی.
ریشه مشکل معماری بود. هر دو موتور از کتابخونههای Rust یا C++ برای توکنایزر استفاده میکنن، ولی این فراخوانیها از طریق پایتون میگذرن. یعنی GIL. یعنی یه سقف تکرشتهای روی کارهای CPU-bound که مستقیماً توی مسیر سرویسدهی نشسته. در مقیاسهای بزرگ با disaggregated serving و expert parallelism روی کلاسترهای GPU، این مشکل خیلی جدی میشه چون GPUها آنقدر سریعن که CPU تبدیل به تنگنا میشه.
راهحل SMG ساده ولی جسورانهست: تمام کارهای CPU رو از مسیر GPU جدا کن و توی یه لایه Rust اجرا کن. نه پایتون که Rust رو صدا بزنه — بلکه Rust خالص. بدون GIL. بدون سقف تکرشتهای. بدون مرز فرآیند پایتون.
معماری SMG بر یه اصل بنا شده: GPUها باید tensor math انجام بدن، نه هیچ چیز دیگهای. همه کارهای CPU مثل توکنسازی، پارس کردن خروجی reasoning، استخراج function call، orchestration ابزارهای MCP، پیشپردازش multimodal، مدیریت تاریخچه چت، و تشخیص stop sequence — همه و همه به لایه Rust منتقل شدن. این لایه از طریق gRPC با موتور inference ارتباط داره و پروتکل خیلی سادهست: توکنهای آمادهشده میره داخل، توکنهای تولیدشده مییاد بیرون.
یکی از جالبترین بخشها، توکنایزر دو سطحیه. سطح L0 برای promptهای تکراری exact match میکنه و سطح L1 با آگاهی از prefix در مرزهای special-token کار میکنه. موتور inference هرگز توکنایزر رو لمس نمیکنه — ورودی از قبل توکنشده میرسه.
پردازش multimodal هم یه دستاورد بزرگه. تیم SMG بخشهای اصلی image processor کتابخونه transformers هاگینگفیس رو از پایتون به Rust بازنویسی کردن — شامل pipelineهای پیشپردازش vision، عملیات tensor، و تبدیلهای مخصوص هر مدل. نتیجه اینه که SMG تنسورهای آمادهشده رو مستقیم از طریق gRPC به موتور میفرسته بدون هیچ overhead پایتونی. مدلهایی مثل Llama 4 Vision و Qwen VL پشتیبانی میشن.
پروتکل gRPC با نام smg-grpc-proto روی PyPI منتشر شده و هم vLLM (PR #36169) و هم NVIDIA TensorRT-LLM (پنج PR ادغامشده) اون رو پذیرفتن. این جداسازی تمیز یعنی میشه گیتوی رو (parser جدید، پروتکل جدید، ابزار جدید) بدون دست زدن به موتور ارتقا داد، و موتور رو (kernel جدید، quantization جدید) بدون دست زدن به گیتوی آپدیت کرد.
SMG همچنین از پنج API اصلی پشتیبانی میکنه: Chat Completions (OpenAI)، Responses API (OpenAI)، Messages API (Anthropic)، Interactions API (Gemini)، و Realtime API (WebSocket/WebRTC). اینها لایه ترجمه نیستن — هر کدوم پیادهسازی first-class دارن. جالبه که میشه workflowهای طراحیشده برای Claude رو روی Llama 4، Qwen 3، یا DeepSeek با وفاداری کامل پروتکل اجرا کرد.
نکات کلیدی:
- GIL پایتون در مقیاسهای بزرگ تبدیل به تنگنای اصلی میشه و SMG با جابجایی همه کارهای CPU به Rust این مشکل رو حل کرده
- پروتکل gRPC بین گیتوی و موتور inference خیلی سادهست: توکن آماده میره، توکن تولیدشده مییاد — بقیهاش مسئولیت گیتویه
- توکنایزر دو سطحی (L0 exact-match و L1 prefix-aware) بدون هیچ تداخلی با موتور inference کار میکنه
- پیشپردازش multimodal برای اولین بار در صنعت از پایتون به Rust بازنویسی شده
- middleware مبتنی بر WASM امکان توسعهپذیری برنامهپذیر بدون fork کردن codebase رو میده
- پروتکل smg-grpc-proto توسط vLLM و NVIDIA TensorRT-LLM پذیرفته شده




