فاز 17 · درس 28

انتخاب موتور استنتاج خودمیزبان LLM بر اساس سخت‌افزار و مقیاس

نوع
مفهومی
زمان
حدود 45 دقیقه
زبان‌ها
Python (stdlib, engine-decision tree walker)
پیش‌نیاز
تمام درس‌های فاز 17 که موتورهای استنتاج را پوشش می‌دهند (درس‌های 04، 06، 07، 09 و 18)
درخت تصمیم‌گیری فلزی با شاخه‌هایی متصل به چهار پردازنده‌ی گرافیکی مختلف و تراشه‌های محاسباتی
فهرست مطالب
  1. اهداف یادگیری
  2. صورت مسئله
  3. مبانی نظری
  4. پنج موتور اصلی
  5. تصمیم اول: سخت‌افزار
  6. تصمیم دوم: مقیاس
  7. تصمیم سوم: نوع بار کاری
  8. دام وضعیت نگهداری در TGI
  9. الگوی پایپ‌لاین
  10. نکته‌ی مهم درباره‌ی Ollama
  11. تصمیم‌گیری مستقل میان خودمیزبانی و سرویس‌های ابری مدیریت‌شده
  12. اعدادی که باید به خاطر بسپارید
  13. استفاده از ابزارهای واقعی
  14. خروجی این درس
  15. تمرین‌ها
  16. اصطلاحات کلیدی
  17. برای مطالعه‌ی بیشتر

راه‌اندازی مدل‌های زبانی روی سرورهای اختصاصی (Self-hosted) دغدغه‌ی مشترک بسیاری از تیم‌های مهندسی است. در دسترس نبودن کارت‌های اعتباری بین‌المللی برای شارژ مداوم API سرویس‌های ابری و هزینه‌های بالای اشتراک ارزی، میزبانی داخلی مدل‌ها را به انتخابی منطقی و ضروری تبدیل کرده است. با این حال، انتخاب میان ابزارهایی مانند vLLM ،SGLang ،llama.cpp یا Ollama اغلب تیم‌ها را دچار سردرگمی می‌کند.

تهیه‌ی پردازنده‌های گرافیکی قدرتمند خارجی برای کاربران ایرانی با چالش‌های هزینه و دسترسی همراه است؛ بنابراین باید متناسب با دقیق‌ترین دارایی‌های موجود، از پردازنده‌های معمولی (CPU) گرفته تا سرورهای مجهز به کارت‌های NVIDIA یا AMD، بیشترین بازدهی ممکن استخراج شود. اجرای مدلی که می‌تواند با دقت بالا روی CPU اجرا شود در یک فریم‌ورک نامناسب، منجر به اتلاف شدید منابع یا کُندی سرویس خواهد شد.

در این درس یاد می‌گیرید که چطور بر اساس سه متغیر کلیدی — نوع سخت‌افزار، مقیاس کاربران هم‌زمان و نوع بار کاری (از چت معمولی تا سیستم‌های ایجنتی چندمرحله‌ای) — بهترین موتور استنتاج را برگزینید و پایپ‌لاین مهاجرت از محیط آزمایشگاهی و لپ‌تاپ تا محیط عملیاتی را به‌درستی معماری کنید.

انتخاب موتور استنتاج تابعی از سخت‌افزار، مقیاس و زیست‌بوم ابزارهاست، نه رتبه‌بندی لیدربوردها. در سال 2026 چهار موتور بر استنتاج خودمیزبان (Self-hosted) مسلط هستند: llama.cpp، Ollama، vLLM و SGLang؛ و TGI نیز در وضعیت نگهداری (Maintenance mode) عقب مانده است. llama.cpp سریع‌ترین گزینه روی CPU است؛ با گسترده‌ترین پشتیبانی از مدل‌ها و کنترل کامل روی کوانتیزه‌سازی (Quantization) و ریسه‌بندی (Threading). Ollama گزینه‌ی نصب تک‌دستوری روی لپ‌تاپ توسعه است؛ حدود 15 تا 30 درصد کُندتر از llama.cpp (به دلیل لایه‌های Go، CGo و سریال‌سازی HTTP) و با افت 3 برابری نرخ پردازش (Throughput) زیر بار شبه‌پروداکشن. TGI در تاریخ 11 دسامبر 2025 وارد وضعیت نگهداری شد؛ از این پس فقط اصلاح باگ دریافت می‌کند، نرخ پردازش خام آن حدود 10 درصد از vLLM کمتر است، اما از قدیم بهترین رصدپذیری (Observability) و یکپارچگی را با زیست‌بوم Hugging Face داشته است. همین وضعیت نگهداری، آن را به انتخابی پرریسک برای بلندمدت تبدیل می‌کند؛ بنابراین برای پروژه‌های جدید، SGLang یا vLLM گزینه‌های پیش‌فرضِ امن‌تری هستند. vLLM انتخاب پیش‌فرض و همه‌منظوره برای محیط عملیاتی (پروداکشن) است؛ نسخه‌ی v0.15.1 (فوریه‌ی 2026) پشتیبانی از PyTorch 2.10، معماری RTX Blackwell SM120 و بهینه‌سازی H200 را اضافه کرده است. SGLang متخصص بارهای کاری ایجنتی چندنوبتی (Multi-turn) و پیشوندهای سنگین است؛ با بیش از 400,000 پردازنده‌ی گرافیکی فعال در پروداکشن (xAI، LinkedIn، Cursor، Oracle، GCP، Azure و AWS). محدودیت‌های سخت‌افزاری: اولویت با CPU ← llama.cpp؛ سخت‌افزار AMD یا غیر NVIDIA ← موتور vLLM قوی‌ترین مسیر پشتیبانی‌شده است (چرا که TRT-LLM فقط به سخت‌افزار NVIDIA محدود است). الگوی پایپ‌لاین در سال 2026: توسعه = Ollama، استیجینگ = llama.cpp، پروداکشن = vLLM یا SGLang. این موتورها فرمت‌های وزنی متفاوتی می‌پذیرند؛ GGUF برای خانواده‌ی llama.cpp و safetensors هاگینگ‌فیس برای موتورهای GPU؛ بنابراین ممکن است بین مراحل به تبدیل فرمت نیاز داشته باشید.

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

  • انتخاب موتور مناسب با توجه به سخت‌افزار (CPU / AMD / NVIDIA Hopper / Blackwell)، مقیاس (1 کاربر / 100 / 10,000) و نوع بار کاری (چت عمومی / ایجنت / زمینه‌ی طولانی).
  • شناخت وضعیت نگهداری TGI در سال 2026 (از تاریخ 11 دسامبر 2025) و چرایی سوق دادن پروژه‌های جدید به سمت vLLM یا SGLang.
  • توصیف پایپ‌لاین توسعه/استیجینگ/پروداکشن، همراه با محل قرارگیری تبدیل فرمت وزنی GGUF به safetensors میان مراحل.
  • توضیح چرایی ارجاع «اولویت با CPU» به llama.cpp و اینکه چرا انتخاب «AMD» موتور TRT-LLM را حذف می‌کند.

صورت مسئله

تیم شما پروژه‌ی جدیدی بر پایه‌ی یک مدل زبانی خودمیزبان آغاز می‌کند. یک مهندس Ollama را پیشنهاد می‌دهد، دیگری vLLM را مطرح می‌کند و سومی می‌گوید: «مگر TGI بدون دردسر و آماده‌ی کار نیست؟» هر سه نفر برای سناریوهای متفاوتی درست می‌گویند، اما هیچ گزینه‌ای برای همه‌ی سناریوها مناسب نیست.

در سال 2026 درخت تصمیم‌گیری اهمیت ویژه‌ای دارد: اول سخت‌افزار، دوم مقیاس، سوم بار کاری. از طرفی یک رویداد خاص در اواخر سال 2025 — ورود TGI به وضعیت نگهداری در 11 دسامبر — گزینه‌ی پیش‌فرض را برای پروژه‌های جدید تغییر داده است.

مبانی نظری

پنج موتور اصلی

موتور بهترین برای توضیحات
llama.cpp پردازنده‌ی CPU / محاسبات لبه (Edge) / حداقل نیازمندی‌ها / بیشترین تنوع مدل سریع‌ترین روی CPU، کنترل کامل
Ollama لپ‌تاپ‌های توسعه، تک‌کاربر، نصب تک‌دستوری 15 تا 30 درصد کُندتر از llama.cpp؛ افت 3 برابری نرخ پردازش در پروداکشن
TGI زیست‌بوم HF، صنایع با رگولاتوری سخت‌گیرانه ورود به وضعیت نگهداری در 11 دسامبر 2025
vLLM مصارف عمومی پروداکشن، بیش از 100 کاربر گزینه‌ی پیش‌فرض و فراگیر پروداکشن؛ نسخه‌ی v0.15.1 در فوریه‌ی 2026
SGLang سناریوهای ایجنتی چندنوبتی، بارهای متکی بر اشتراک پیشوند بیش از 400,000 پردازنده‌ی گرافیکی در پروداکشن

تصمیم اول: سخت‌افزار

اولویت با CPU ← موتور llama.cpp. کار با Ollama هم ممکن است اما کُندتر اجرا می‌شود. هیچ موتور دیگری روی CPU توان رقابت با آن را ندارد.

پردازنده‌ی گرافیکی AMD ← موتور vLLM بهترین مسیر پشتیبانی‌شده است (پشتیبانی از AMD ROCm). موتور SGLang هم کار می‌کند. اما TRT-LLM حذف می‌شود چون منحصراً به NVIDIA قفل شده است.

معماری NVIDIA Hopper (مدل‌های H100 / H200) ← انتخاب بین vLLM، SGLang یا TRT-LLM؛ هر سه در بالاترین سطح عمل می‌کنند.

معماری NVIDIA Blackwell (مدل‌های B200 / GB200) ← موتور TRT-LLM در نرخ پردازش پیشتاز است (فاز 17 · 07). موتورهای vLLM و SGLang با فاصله‌ی اندکی آن را تعقیب می‌کنند.

اپل سیلیکون (سری M) ← موتور llama.cpp (از طریق Metal). ابزار Ollama نیز لایه‌ای روی همین بستر است.

تصمیم دوم: مقیاس

1 کاربر / توسعه‌ی محلی ← موتور Ollama. یک دستور اجرا می‌کنید و خروجی نخستین توکن ظرف چند ثانیه تولید می‌شود.

10 تا 100 کاربر / تیم کوچک ← یک نمونه vLLM با تک‌GPU.

100 تا 10 هزار کاربر / پروداکشن ← پشته‌ی پروداکشن vLLM (فاز 17 · 18) یا SGLang.

بیش از 10 هزار کاربر / سازمان‌های بزرگ ← پشته‌ی پروداکشن vLLM + معماری تفکیک‌شده (Disaggregated؛ فاز 17 · 17) + کش LMCache (فاز 17 · 18).

تصمیم سوم: نوع بار کاری

چت عمومی / پرسش و پاسخ ← موتور vLLM به لطف سازگاری گسترده و پیش‌فرض بودن برنده است.

سناریوهای ایجنتی چندنوبتی (ابزارها، برنامه‌ریزی، حافظه) ← سازوکار RadixAttention در SGLang (فاز 17 · 06) بی‌رقیب است.

سیستم‌های RAG با استفاده‌ی مجدد و سنگین از پیشوند ← موتور SGLang.

تولید کد ← موتور vLLM مناسب است؛ اما SGLang به دلیل عملکرد بهتر کش برتری اندکی دارد.

زمینه‌ی طولانی (بیش از 128K) ← موتور vLLM همراه با پیش‌پرکنی تکه‌ای (Chunked prefill)؛ یا SGLang همراه با حافظه‌ی KV چندسطحی (Tiered KV).

دام وضعیت نگهداری در TGI

موتور TGI متعلق به Hugging Face در 11 دسامبر 2025 وارد وضعیت نگهداری شد و از این پس فقط اصلاح باگ دریافت می‌کند. مزایای همیشگی آن: رصدپذیری عالی، عمیق‌ترین یکپارچگی با زیست‌بوم HF (شناسنامه‌های مدل، ابزارهای ایمنی)؛ هرچند از نظر نرخ پردازش خام اندکی عقب‌تر از vLLM بود.

برای پروژه‌های جدید در سال 2026: سراغ TGI نروید. سرویس‌های فعال مبتنی بر TGI می‌توانند فعلاً به کارشان ادامه دهند اما در نهایت باید مهاجرت کنند. موتورهای SGLang و vLLM پیش‌فرض‌های امن‌تری به شمار می‌روند.

الگوی پایپ‌لاین

توسعه (Ollama) ← استیجینگ (llama.cpp) ← پروداکشن (vLLM). این موتورها فرمت‌های وزنی متفاوتی دریافت می‌کنند: GGUF برای خانواده‌ی llama.cpp و HF safetensors برای موتورهای مبتنی بر GPU؛ بنابراین ممکن است بین این مراحل نیاز به تبدیل فرمت داشته باشید. مهندسان روی لپ‌تاپ به‌سرعت تغییرات را آزمایش می‌کنند، استیجینگ وضعیت کوانتیزه‌سازی پروداکشن را شبیه‌سازی می‌کند و پروداکشن بستر نهایی سرویس‌دهی است.

نکته‌ی مهم درباره‌ی Ollama

ابزار Ollama برای محیط توسعه عالی است، اما برای محیط عملیاتی اشتراکی مناسب نیست: سریال‌سازی HTTP در زبان Go سربار ایجاد می‌کند، مدیریت همروندی آن بسیار ساده‌تر از vLLM است و پشتیبانی آن از OpenTelemetry عقب‌تر از رقباست. از Ollama در نقطه‌ی قوتش استفاده کنید — یک کاربر، یک دستور — و برای بارهای کاری اشتراکی سراغ vLLM بروید.

تصمیم‌گیری مستقل میان خودمیزبانی و سرویس‌های ابری مدیریت‌شده

فاز 17 · 01 (سرویس‌های ابری بزرگ) و فاز 17 · 02 (پلتفرم‌های استنتاج) مسیرهای مدیریت‌شده را پوشش می‌دهند. در این درس فرض بر این است که از قبل تصمیم به خودمیزبانی گرفته‌اید. دلایل روی آوردن به خودمیزبانی: قوانین ماندگاری داده (Data residency)، مدل‌های سفارشیِ فاین‌تون‌شده، هزینه‌ی کل مالکیت (TCO) کمتر در مقیاس بالا و عدم ارائه‌ی مدل‌های تخصصی روی سرویس‌های ابری عمومی.

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

  • آغاز وضعیت نگهداری TGI: 11 دسامبر 2025.
  • نسخه‌ی vLLM v0.15.1: فوریه‌ی 2026؛ پشتیبانی از PyTorch 2.10 و معماری Blackwell SM120.
  • ردپای عملیاتی SGLang: بیش از 400,000 پردازنده‌ی گرافیکی.
  • اختلاف نرخ پردازش Ollama در مقایسه با llama.cpp: بین 15 تا 30 درصد کُندتر؛ و 3 برابر افت ظرفیت زیر بار پروداکشن.
موازی‌سازی دادهتعداد GPU را بکشید
DATA PARALLELISMEach GPU holds a complete copy of the model and processes a different slice of the global batch. After the backward pass an all-reduce sums every GPU’s gradients so the copies stay identical. Throughput scales close to linearly with GPU count, but memory does not drop because every device still stores the whole model.GPU 1نسخه کامل64 ردیفGPU 2نسخه کامل64 ردیفGPU 3نسخه کامل64 ردیفGPU 4نسخه کامل64 ردیفall-reduce گرادیان‌ها در 4 GPU
هر GPU یک نسخه‌ی کامل از مدل را نگه می‌دارد و برشی متفاوت از بچ سراسری را پردازش می‌کند. پس از گام رو به عقب، یک all-reduce گرادیان‌های تمام GPUها را با هم جمع می‌کند تا نسخه‌ها یکسان بمانند. نرخ پردازش تقریباً به‌صورت خطی با تعداد GPU افزایش می‌یابد، اما مصرف حافظه کاهش پیدا نمی‌کند زیرا هر دستگاه همچنان کل مدل را ذخیره می‌کند.

استفاده از ابزارهای واقعی

اسکریپت code/main.py یک پیمایش‌گر درخت تصمیم است: بر اساس ورودی‌های سخت‌افزار، مقیاس و بار کاری، موتور مناسب را انتخاب می‌کند و دلیل آن را توضیح می‌دهد.

خروجی این درس

این درس سند outputs/skill-engine-picker.md را ایجاد می‌کند؛ سندی که با توجه به محدودیت‌های مشخص‌شده، موتور مناسب را برمی‌گزیند و برنامه‌ی مهاجرت را تدوین می‌کند.

تمرین‌ها

  1. اسکریپت code/main.py را با مشخصات سخت‌افزار، مقیاس و بار کاری سیستم خود اجرا کنید. آیا نتیجه با حدس اولیه‌ی شما همخوانی دارد؟
  2. زیرساخت شما شامل 12 پردازنده‌ی H100 و 8 پردازنده‌ی AMD MI300X است. چه موتوری را انتخاب می‌کنید؟ چرا TRT-LLM از گزینه‌ها کنار می‌رود؟
  3. تیمی قصد دارد در سال 2026 همچنان از TGI استفاده کند چون «با آن راحت‌تر هستیم». استدلال‌های فنی خود را برای ضرورت مهاجرت بیان کنید.
  4. انتقال از Ollama در محیط توسعه به vLLM در پروداکشن: چه تغییراتی در کوانتیزه‌سازی، پیکربندی و رصدپذیری رخ می‌دهد؟
  5. محصولی مبتنی بر RAG دارید که صدک 99 (P99) طول پیشوند آن 8K توکن است و میان کاربران مختلف اشتراک بالایی دارد. موتور مناسب را برگزینید و پشته‌ی آن را با فازهای 17 · 11 و 17 · 18 هماهنگ کنید.

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

اصطلاح اصطلاح رایج بازاری معنای دقیق فنی
llama.cpp «موتور مخصوص CPU» بیشترین پشتیبانی از مدل‌ها، سریع‌ترین عملکرد روی CPU
Ollama «موتور روی لپ‌تاپ» نصب با یک دستور، نرخ پردازش در حد محیط توسعه
TGI «موتور هاگینگ‌فیس» در وضعیت نگهداری از دسامبر 2025
vLLM «موتور پیش‌فرض» خط مبنای (Baseline) فراگیر برای پروداکشن در سال 2026
SGLang «موتور سیستم‌های ایجنتی» بهینه‌سازی‌شده برای پیشوندهای سنگین به کمک RadixAttention
TRT-LLM «موتور قفل‌شده به NVIDIA» پیشتاز نرخ پردازش در معماری Blackwell، منحصراً روی تراشه‌های NVIDIA
GGUF «فرمت مخصوص llama.cpp» بسته‌بندی متغیرهای کوانتیزه‌سازی با روش K-quant
پشته‌ی پروداکشن (Production-stack) «اجرای vLLM روی کوبرنتیز» پیکربندی مرجع استقرار در فاز 17 · 18
الگوی پایپ‌لاین (Pipeline pattern) «چرخه‌ی توسعه، استیجینگ و پروداکشن» زنجیره‌ی Ollama ← llama.cpp ← vLLM؛ فرمت وزن‌ها به تفکیک موتور تغییر می‌کند

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

خودآزمایی

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

  1. پیش از درسدرس کدام موتور را به‌عنوان پیش‌فرض تک‌دستوری لپ‌تاپِ توسعه انتخاب می‌کند؟
  2. حین درسچه رویدادی در سال 2025 باعث تغییر پیش‌فرض پروژه‌های جدید از TGI شد؟
  3. حین درسکدام محدودیت سخت‌افزاری استفاده از llama.cpp را اجباری کرده و vLLM / TRT-LLM را حذف می‌کند؟
  4. حین درسدرس به لطف RadixAttention کدام موتور را برای بارهای کاری چندنوبته‌ی مبتنی بر ایجنت و پیشوندهای سنگین مناسب می‌داند؟
  5. پس از درسدرس چه پایپ‌لاینی را از توسعه تا پروداکشن روی وزن‌های یکسان GGUF یا HF پیشنهاد می‌کند؟
  6. پس از درسچرا استفاده از Ollama برای محیط عملیاتی (پروداکشن) اشتراکی توصیه نمی‌شود؟

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

چرا Ollama برای محیط عملیاتی (پروداکشن) با کاربران بالا مناسب نیست؟

ابزار Ollama به دلیل لایه‌های Go ،CGo و سریال‌سازی HTTP حدود 15 تا 30 درصد کُندتر از llama.cpp است و زیر بار کاری هم‌زمان پروداکشن، تا 3 برابر افت ظرفیت پردازش نسبت به موتورهای سروری نشان می‌دهد.

در صورت استفاده از سرورهای مجهز به پردازنده‌ی گرافیکی AMD کدام موتور مناسب است؟

موتور vLLM از طریق بستر ROCm قوی‌ترین و پایدارترین پشتیبانی را از AMD ارائه می‌دهد و پس از آن SGLang گزینه‌ی بعدی است، در حالی که TensorRT-LLM تنها به کارت‌های NVIDIA محدود است.

چرا پروژه‌های جدید در سال 2026 نباید به سراغ TGI بروند؟

موتور TGI از 11 دسامبر 2025 وارد وضعیت نگهداری (Maintenance mode) شده و ویژگی جدیدی دریافت نمی‌کند؛ بنابراین انتخاب vLLM یا SGLang برای پروژه‌های جدید ایمن‌تر و آینده‌نگرانه‌تر است.

برای بارهای کاری ایجنتی و چندنوبتی کدام موتور بهترین بازدهی را دارد؟

موتور SGLang به لطف قابلیت RadixAttention در استفاده‌ی مجدد و کش کردن بهینه‌ی پیشوندهای مشترک، بهترین عملکرد را در بارهای کاری ایجنتی و زمینه‌های طولانی دارد.

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

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