فاز 17 · درس 11

سرویس‌دهی چندمنطقه‌ای مدل‌های زبانی و مکان‌مندی کش KV

نوع
مفهومی
زمان
حدود 60 دقیقه
زبان‌ها
Python (stdlib, toy prefix-cache-aware router simulator)
پیش‌نیاز
فاز 17 · درس 04 (سرویس‌دهی با vLLM)، فاز 17 · درس 06 (SGLang RadixAttention)
دیاگرام شبکه بین‌المللی که گره‌های سرور را در قاره‌های مختلف نشان می‌دهد و بسته‌های داده با الگوریتم مسیریابی به سمت حافظه‌های کش هدایت می‌شوند
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مبانی نظری
  4. مسیریابی آگاه از کش
  5. اعداد و ارقام
  6. قید جدید در توزیع بین‌منطقه‌ای: تاخیر شبکه
  7. بی‌اثر بودن سرویس‌های تجاری «استنتاج بین‌منطقه‌ای» در این مسئله
  8. انضباط در بازیابی فاجعه: معضل 32 درصدی فایل‌های فراموش‌شده
  9. استقلال مرزهای اقامت داده
  10. اعدادی که باید به خاطر بسپارید
  11. اجرای عملی
  12. خروجی کار
  13. تمرین‌ها
  14. اصطلاحات کلیدی
  15. برای مطالعه‌ی بیشتر

در معماری سرویس‌های سنتی، توزیع بار نوبت‌گردشی (Round-robin) یکی از متداول‌ترین شیوه‌ها برای مدیریت ترافیک است. اما استنتاج مدل‌های زبانی وضعیتی کاملاً متفاوت دارد؛ پرامپت‌ها و کش کلید-مقدار (KV Cache) ماهیتی وضعیت‌مند ایجاد می‌کنند که ارسال کورکورانه‌ی درخواست به یک سرور تصادفی، نرخ اصابت کش را تا مرز صفر پایین می‌آورد و تاخیر تا تولید نخستین توکن (TTFT) را تا 10 برابر افزایش می‌دهد.

وقتی مقیاس سرویس از یک کلاستر فراتر می‌رود و چند دیتاسنتر یا منطقه را پوشش می‌دهد، چالش‌های جدیدی مثل تاخیر رفت‌وبرگشت شبکه (RTT) و قوانین اقامت داده به میان می‌آیند. در چنین شرایطی، ابزارهایی مثل vLLM Router با دریافت مستقیم رویدادهای کش از انجین‌های استنتاج، درخواست‌ها را بر اساس هش پیشوند هدایت می‌کنند تا از محاسبه‌ی مجدد پیش‌پرکنی (Prefill) جلوگیری شود.

علاوه بر مسیریابی ترافیک زنده، تاب‌آوری سیستم در زمان حوادث غیرمترقبه نیازمند یک برنامه‌ی بازیابی فاجعه (Disaster Recovery) دقیق است. بسیاری از تیم‌های فنی تنها از وزن‌های مدل بکاپ می‌گیرند و فراموش می‌کنند نبود فایل‌های توکنایزر یا تنظیمات کوانتیزه‌سازی، بالا آمدن کپی‌های جایگزین را ناممکن می‌سازد.

توزیع بار نوبت‌گردشی (Round-robin) عملاً به استنتاج مبتنی بر کش در مدل‌های زبانی ضربه می‌زند. وقتی درخواستی روی گرهی ننشیند که پیشوند آن را کش کرده، ناچار است تمام هزینه‌ی پیش‌پرکنی (Prefill) را بپردازد؛ یعنی برای یک پرامپت طولانی، تاخیر در صدک پنجاهم (P50) به‌جای حدود 80 میلی‌ثانیه با اصابت کش، به حدود 800 میلی‌ثانیه می‌رسد. در سال 2026، الگوی پروداکشن استفاده از یک مسیریاب (Router) آگاه از کش (مثل vLLM Router به زبان Rust یا llm-d router) است؛ سامانه‌ای که رویدادهای کش کلید-مقدار (KV cache) را دریافت کرده و ترافیک را بر اساس تطابق هش پیشوند هدایت می‌کند. پژوهش‌های اخیر (پروژه‌ی GORGO) تاخیر شبکه‌ی بین‌منطقه‌ای را نیز به عنوان یک مولفه‌ی صریح در هدف مسیریابی می‌گنجانند. سرویس‌های تجاری «استنتاج بین‌منطقه‌ای» (مانند Bedrock cross-region inference یا GKE multi-cluster gateways) با فرآیند استنتاج مثل جعبه‌ی سیاه برخورد می‌کنند؛ هدف آن‌ها صرفاً پایداری و در‌دسترس‌پذیری است، نه زمان تا دریافت اولین توکن (TTFT). در نوامبر 2024، تغییر مسیر خودکار هنگام خرابی (Failover) در شرکت‌های JPMorgan و Mayo Clinic حدود 22 دقیقه زمان برد. واقعیت بازیابی فاجعه (Disaster Recovery یا DR) این است: 32 درصد از شکست‌های DR در مدل‌های زبانی به این دلیل رخ می‌دهد که تیم‌ها فقط از وزن‌ها بکاپ گرفته‌اند و فایل‌های توکنایزر یا تنظیمات کوانتیزه‌سازی (Quantization) را فراموش کرده‌اند.

اهداف یادگیری

  • توضیح اینکه چرا توزیع بار نوبت‌گردشی به استنتاج کش‌شده ضربه می‌زند و محاسبه‌ی افت ناشی از آن روی TTFT.
  • ترسیم دیاگرام مسیریاب آگاه از کش: ورودی‌ها (رویدادهای کش کلید-مقدار)، الگوریتم (تطابق هش پیشوند) و معیار تساوی‌شکنی (میزان مصرف GPU).
  • نام بردن از عامل 32 درصدی خرابی‌های DR در مدل‌های زبانی (نبود فایل‌های توکنایزر یا تنظیمات کوانتیزه‌سازی) و ارائه‌ی یک چک‌لیست سه‌فایلی برای DR.
  • تمایز سرویس‌های تجاری بین‌منطقه‌ای (مثل Bedrock CRI و GKE Multi-Cluster Gateway) از مسیریابی آگاه از کش کلید-مقدار.

صورت مسئله

سرویس شما در سه منطقه‌ی us-east-1، us-west-2 و eu-west-1 بالا است. یک توزیع‌کننده‌ی بار اپلیکیشن (ALB) با الگوریتم نوبت‌گردشی جلوی آن می‌گذارید. نرخ اصابت کش پیشوند در پروداکشن ناگهان تا 8 درصد سقوط می‌کند. صدک پنجاهم TTFT سه برابر می‌شود. لاگ‌های vLLM نشان می‌دهند که تک‌تک درخواست‌ها دارند هزینه‌ی کامل پیش‌پرکنی را می‌پردازند.

نوبت‌گردشی برای سرویس‌های بی‌وضعیت (Stateless) بهترین گزینه است. اما استنتاج در مدل‌های زبانی ذاتاً وضعیت‌مند است؛ چرا که کش کلید-مقدار تمام چیزهایی را که مدل تاکنون دیده کدگذاری می‌کند. مسیریابی کور یعنی هدایت درخواست به کشی اشتباه.

جدا از این، تیم شما یک برنامه‌ی بازیابی فاجعه هم دارد. وزن‌های مدل را در یک باکت S3 بین‌منطقه‌ای بکاپ می‌گیرید. قطعی در یک منطقه رخ می‌دهد؛ فرآیند تغییر مسیر خودکار هنگام خرابی را آغاز می‌کنید؛ اما کپی‌ها بالا نمی‌آیند. فراموش کرده بودید که فایل tokenizer.json، پیکربندی کوانتیزه‌سازی و تنظیمات مقیاس‌بندی RoPE در باکت دیگری قرار داشتند و همگام نشده بودند.

سرویس‌دهی چندمنطقه‌ای مدل‌های زبانی، مسئله‌ی کش، مسیریابی و رعایت اصول بازیابی فاجعه است؛ نه صرفاً راه‌اندازی یک لودبالانسر.

مبانی نظری

مسیریابی آگاه از کش

درخواست به همراه پرامپت (Prompt) وارد می‌شود. مسیریاب، پیشوند متن (مثلاً 512 توکن اول) را هش می‌کند و از تک‌تک کپی‌ها می‌پرسد: «آیا این پیشوند را در کش داری؟» هم‌زمان با تخصیص یا آزادسازی بلوک‌های حافظه، کپی‌ها این تغییرات را به صورت رویدادهای کش کلید-مقدار روی یک کانال انتشار/اشتراک (Pub/Sub) منتشر می‌کنند. مسیریاب کپی‌ای را انتخاب می‌کند که پیشوند در آن تطابق دارد، و اگر هیچ‌کدام کش را نداشتند، به سراغ معیار تساوی‌شکنی بر اساس میزان مصرف GPU می‌رود.

vLLM Router (به زبان Rust، استک پروداکشن 2026): با سابسکرایب روی رویدادهای kv.cache.block_added، شاخصی از نگاشت هش پیشوند به کپی‌ها نگه می‌دارد و با جستجوی O(1)O(1) مسیر را مشخص می‌کند. در صورت عدم تطابق، کپی دارای کمترین طول صف پردازش انتخاب می‌شود.

llm-d router: همین الگو را در بستر بومی کوبرنتیز اجرا می‌کند و رویدادها را از طریق ControlPlane API انتشار می‌دهد.

SGLang RadixAttention (فاز 17 · درس 06) معادل همین فرایند درون یک کپی واحد است. اما مسیریابی بین چند کپی کاملاً در لایه‌ی بالادستی مدیریت می‌شود.

اعداد و ارقام

صدک پنجاهم TTFT روی پرامپت 2000 توکنی با مدل Llama 3.3 70B در فرمت FP8 روی پردازنده‌ی H100:

  • اصابت کش (همان کپی، پیشوند موجود در حافظه): حدود 80 میلی‌ثانیه.
  • عدم اصابت کش (پیش‌پرکنی سرد): حدود 800 میلی‌ثانیه.

یک شکاف 10 برابری. اگر مسیریاب شما بتواند به نرخ اصابت 60 تا 80 درصدی روی کش پیشوند بین کپی‌ها برسد، به کارایی یک کپی واحد در ظرفیتی معادل N کپی دست پیدا می‌کنید. اما اگر روی 10 درصد بمانید، عملکردتان در حد مقیاس‌پذیری خام و ابتدایی افت می‌کند.

قید جدید در توزیع بین‌منطقه‌ای: تاخیر شبکه

زمان رفت‌وبرگشت شبکه (RTT) بین مناطق:

  • بین us-east-1 و us-west-2: حدود 65 میلی‌ثانیه.
  • بین us-east-1 و eu-west-1: حدود 75 میلی‌ثانیه.
  • بین us-east-1 و ap-southeast-1: حدود 220 میلی‌ثانیه.

اگر مسیریاب درخواستی را از us-east-1 به سمت یک پیشوند آماده در ap-southeast-1 بفرستد، صرفه‌جویی حاصل از پیش‌پرکنی (کاهش از 800 به 80، یعنی 720 میلی‌ثانیه) بعد از پرداخت RTT حدوداً 220 میلی‌ثانیه‌ای عملاً به حدود 500 میلی‌ثانیه می‌رسد. حال اگر منطقه‌ی دوردست درخواست را در صف بگذارد یا پیشوند را تا آن لحظه حذف کرده باشد، همین حاشیه سود هم از بین می‌رود. پروژه‌ی پژوهشی GORGO (سال 2026) دقیقاً به این نکته می‌پردازد: هدف بهینه‌سازی باید کمینه‌سازی هم‌زمان مجموع prefill_time + network_latency باشد، نه صرفاً زمان پیش‌پرکنی. در بیشتر موارد، بهترین راه‌حل این است که ترافیک را درون همان منطقه نگه دارید؛ مگر در پیشوندهای بسیار سنگین چند مگابایتی که هزینه‌ی پیش‌پرکنی دست بالا را دارد.

بی‌اثر بودن سرویس‌های تجاری «استنتاج بین‌منطقه‌ای» در این مسئله

سرویس استنتاج بین‌منطقه‌ای AWS Bedrock زیر بار سنگین، درخواست‌ها را خودکار به مناطق دیگر می‌فرستد. این سرویس به دنبال دردسترس‌پذیری است، نه بهبود TTFT، و فرایند استنتاج را یک جعبه‌ی سیاه در نظر می‌گیرد. سازوکار GKE Multi-Cluster Gateway هم دقیقاً همین است؛ تغییر مسیر در سطح سرویس را پوشش می‌دهد و شناختی از کش کلید-مقدار ندارد.

حتی در صورت استفاده از این سرویس‌ها، باز هم به یک مسیریاب آگاه از کش در لایه‌ی اپلیکیشن نیاز دارید. این پلتفرم‌ها برای مواقعی مثل «آتش‌سوزی در دیتاسنتر us-east-1» ساخته شده‌اند؛ درحالی‌که مسیریابی آگاه از کش روی مدیریت TTFT تمرکز دارد.

انضباط در بازیابی فاجعه: معضل 32 درصدی فایل‌های فراموش‌شده

آماری پرارجاع در سال 2026: 32 درصد از شکست‌های DR در مدل‌های زبانی به این دلیل رخ می‌دهند که تیم‌ها وزن‌ها را بکاپ گرفته‌اند، اما این موارد را جا انداخته‌اند:

  • فایل‌های tokenizer.json یا tokenizer.model
  • فایل‌های پیکربندی کوانتیزه‌سازی (مانند quantize_config.json، مقیاس‌های AWQ، نقاط صفر GPTQ)
  • تنظیمات اختصاصی معماری مدل (مقیاس‌بندی RoPE، ماسک‌های اتنشن، الگوهای چت)
  • پیکربندی انجین استنتاج (vllm_config.yaml، پیش‌فرض‌های نمونه‌برداری، مانیفست تطبیق‌دهنده‌های LoRA)

راه‌حل، داشتن یک مانیفست حداقلی سه‌فایلی برای DR است:

  1. تمام فایل‌های زیرمجموعه‌ی ریپوی مدل در HF (وزن‌ها + تنظیمات + توکنایزر).
  2. تنظیمات سرویس‌دهی اختصاصی انجین.
  3. مانیفست استقرار (شامل کدهای K8s YAML، فایل Dockerfile و لاک‌فایل وابستگی‌ها).

به‌علاوه، هر سه ماه یک بار مانور بازیابی فاجعه اجرا کنید. ریکاوری 22 دقیقه‌ای بانک JPMorgan در قطعی us-east-1 در نوامبر 2024 فقط به این دلیل ممکن شد که دستورالعمل‌های عملیاتی از قبل بارها تمرین شده بودند.

استقلال مرزهای اقامت داده

اطلاعات سلامت و پرونده‌ی پزشکی (PHI) کاربران اروپایی نباید از مرزهای اتحادیه‌ی اروپا خارج شود. اگر مسیریاب آگاه از کش شما درخواستی با مبدا پاریس را فقط به‌خاطر تطابق پیشوند به us-east-1 بفرستد، فارغ از میزان سودی که در TTFT به دست آورده‌اید، مقررات GDPR را نقض کرده‌اید. قبل از اینکه بهینه‌سازی برای کش را پیاده کنید، مسیریاب‌ها را بر اساس مرزهای اقامت داده پارتیشن‌بندی کنید.

اعدادی که باید به خاطر بسپارید

  • اختلاف TTFT در حالت اصابت در برابر عدم اصابت کش: حدود 10 برابر (80 میلی‌ثانیه در برابر 800 میلی‌ثانیه روی پرامپت 2000 توکنی).
  • تاخیر رفت‌وبرگشت (RTT) بین آمریکا و اروپا: حدود 75 میلی‌ثانیه.
  • شکست در DR: 32 درصد خرابی‌ها ناشی از جا ماندن توکنایزر یا تنظیمات کوانتیزه‌سازی است.
  • زمان تغییر مسیر خودکار شرکت JPMorgan در us-east-1 در نوامبر 2024: 22 دقیقه (در برابر تعهد SLA معادل 30 دقیقه).
مسیریاب آگاه از کشمسیریابی درخواست‌ها به رپلیکای حاوی پیشوند آن‌ها
CACHE-AWARE ROUTERRound-robin scatters requests blind, so most miss the cache and pay full prefill. A cache-aware router hashes the prompt prefix and sends every matching request to the replica that already holds those KV blocks — the warm path stays warm and TTFT collapses from prefill-bound to a cache hit.مسیریابرپلیکای 1سردرپلیکای 2کش: Pرپلیکای 3سردPPPمسیریابی با هش پیشونددرخواست‌های P از کش گرم استفاده می‌کنند
مسیریابی نوبت‌گردشی درخواست‌ها را کورکورانه پخش می‌کند، در نتیجه بیشتر آن‌ها کَش را از دست داده و هزینه کامل پیش‌پرکنی (Prefill) را متحمل می‌شوند. یک مسیریاب آگاه از کش، پیشوند پرامپت را هش کرده و تمام درخواست‌های منطبق را به رپلیکایی می‌فرستد که قبلاً آن بلوک‌های KV را در بر دارد — در نتیجه مسیر گرم، گرم می‌ماند و TTFT از حالت وابسته به پیش‌پرکنی، به سطح اصابت به کَش (Cache hit) کاهش می‌یابد.

اجرای عملی

اسکریپت code/main.py سه استراتژی مسیریابی (نوبت‌گردشی، آگاه از کش منطقه‌ای و آگاه از کش سراسری) را روی یک بار کاری چندمنطقه‌ای شبیه‌سازی می‌کند. در خروجی، نرخ اصابت کش، صدک‌های پنجاهم و نودونهم TTFT و هزینه‌ی شبکه بین مناطق گزارش داده می‌شود.

خروجی کار

حاصل این درس سندی تحت عنوان outputs/skill-multi-region-router.md است که با دریافت مناطق، محدودیت‌های اقامت داده و SLA، یک طرح مسیریابی کامل آماده می‌کند.

تمرین‌ها

  1. اسکریپت code/main.py را اجرا کنید. با فرض RTT معادل 75 میلی‌ثانیه، با چه طولی از پرامپت، مسیریابی بین‌منطقه‌ای بر مسیریابی صرفاً محلی غلبه می‌کند؟
  2. نرخ اصابت کش شما از 70 درصد به 12 درصد سقوط می‌کند. سه دلیل احتمالی برای این اتفاق و داده‌های مانیتورینگی که صحت هرکدام را ثابت می‌کنند پیدا کنید.
  3. برای یک مدل 70 میلیاردی با کوانتیزه‌سازی AWQ که روی vLLM با 5 تطبیق‌دهنده‌ی LoRA سرویس می‌دهد، مانیفست DR طراحی کنید. تمام فایل‌ها و تنظیمات لازم را بنویسید.
  4. استدلال کنید که آیا سرویس استنتاج بین‌منطقه‌ای Bedrock برای یک فین‌تک با توافق‌نامه‌های سخت‌گیرانه‌ی TTFT کفایت می‌کند یا خیر. به رفتارهای فنی مشخص ارجاع دهید.
  5. درخواستی از مبدا پاریس با پیشوندی در us-east-1 تطابق پیدا می‌کند. آیا باید آن را به منطقه‌ی دیگر بفرستید؟ خط‌مشی آن را تدوین کنید.

اصطلاحات کلیدی

اصطلاح اصطلاح رایج بازاری معنای دقیق فنی
Cache-aware routing «لودبالانسر هوشمند» هدایت ترافیک بر اساس تطابق هش پیشوند به کپیِ نگه‌دارنده‌ی کش کلید-مقدار
KV-cache events «پاب‌ساب کش» اعلان تخصیص یا آزادسازی بلوک‌ها توسط کپی‌ها؛ ایندکس شدن آن‌ها در مسیریاب
Prefix hash «کلید کش» هش N توکن اول که برای جستجو در جدول مسیریاب استفاده می‌شود
GORGO «پژوهش مسیریابی بین‌منطقه‌ای» مقاله‌ی arXiv 2602.11688؛ در نظر گرفتن تاخیر شبکه به صورت متغیری صریح
Cross-region inference «سرویس CRI در Bedrock» محصولی از AWS؛ تغییر مسیر خودکار هنگام خرابی صرفاً بر اساس در‌دسترس‌پذیری، بدون آگاهی از TTFT
DR manifest «لیست فایل‌های بکاپ» تمام فایل‌های لازم برای بازگردانی سرویس؛ نه فقط وزن‌های خام مدل
Data residency «مرزهای قانونی GDPR» قید حقوقی درباره‌ی اینکه داده‌های کاربر اجازه‌ی حضور در کدام منطقه را دارند
RTT «زمان رفت‌وبرگشت» تاخیر فیزیکی شبکه؛ 75 میلی‌ثانیه بین آمریکا-اروپا، 220 میلی‌ثانیه بین آمریکا-آسیا
LLM-aware LB «لودبالانسر متمرکز بر کش» دسته‌ای از محصولات نرم‌افزاری به عنوان مسیریاب آگاه از کش

برای مطالعه‌ی بیشتر

خودآزمایی

به سؤال‌ها جواب بدهید تا ببینید چقدر از درس در ذهنتان مانده است.

  1. پیش از درسچرا توازن بار نوبت‌گردشی (Round-robin) برای استنتاج کَش‌شده‌ی مدل‌های زبانی مستقیماً آسیب‌رسان است؟
  2. حین درسیک مسیریاب آگاه از کش چه دو ورودی را مصرف می‌کند؟
  3. حین درسشکاف TTFT بین اصابت به کَش و پیش‌پرکنی سرد برای پرامپت 2K توکنی در مدل Llama 3.3 70B FP8 تقریباً چقدر است؟
  4. حین درسچرا مسیریابی بین‌منطقه‌ای (Cross-region) برای اصابت به کَش همیشه بهتر از مسیریابی منطقه‌ای عمل نمی‌کند؟
  5. پس از درسدرس چه عاملی را به عنوان علت 32٪ از شکست‌های بازیابی فاجعه (DR) در مدل‌های زبانی ذکر می‌کند؟
  6. پس از درسدرس درباره سرویس‌های تجاری استنتاج بین‌منطقه‌ای مانند Bedrock CRI چه می‌گوید؟

سؤالات متداول

چرا لودبالانسرهای معمولی مثل Round-robin برای استنتاج LLM مناسب نیستند؟

چون استنتاج LLM وضعیت‌مند است. مسیریابی تصادفی باعث اصابت نکردن به کش KV موجود در سرورها می‌شود و سیستم ناچار است کل هزینه‌ی پردازش پیش‌پرکنی (Prefill) را دوباره بپردازد که TTFT را تا 10 برابر بالا می‌برد.

مسیریاب آگاه از کش (Cache-aware Router) چگونه عمل می‌کند؟

مسیریاب رویدادهای اضافه یا حذف بلوک‌های حافظه را از کپی‌ها دریافت می‌کند، پیشوند پرامپت را هش کرده و درخواست را مستقیماً به گرهی که آن پیشوند را در کش نگه داشته می‌فرستد.

چرا سرویس‌های تجاری مانند AWS Bedrock CRI جایگزین مسیریابی آگاه از کش نمی‌شوند؟

این سرویس‌ها تنها پایداری و دردسترس‌پذیری را در سطح کلان مدیریت می‌کنند و استنتاج را جعبه‌ی سیاه در نظر می‌گیرند؛ بنابراین اطلاعی از محتوای کش KV ندارند و نمی‌توانند TTFT را بهینه کنند.

چک‌لیست حداقل فایل‌های لازم برای DR مدل‌های زبانی چیست؟

شامل 1) کلیه‌ی فایل‌های مخزن مدل (وزن‌ها، توکنایزر و پیکربندی‌های کوانتیزه‌سازی)، 2) تنظیمات اختصاصی انجین سرویس‌دهی (مانند vLLM) و 3) مانیفست‌های استقرار (مانند داکر و کوبرنتیز).

ما رو توی گوگل بیشتر ببین

با افزودن نکست ادمین به «منابع ترجیحی» گوگل، درس‌ها و مطالب ما را در بخش اخبار برتر جستجو بیشتر می‌بینید.