در راهاندازی و سرویسدهی مدلهای زبانی بزرگ، اتکا به اعدادی مثل «نرخ پردازش توکن در ثانیه» اغلب فریبنده است. اگر سیستمی بتواند هزاران توکن پردازش کند اما پاسخها با تاخیر به دست کاربر برسند یا نشستها قطع شوند، زیرساخت در عمل شکست خورده است. برای سنجش کیفیت واقعی تجربه کاربری، به تفکیک دقیق گلوگاههای تاخیر در مراحل مختلف نیاز دارید.
این درس به کالبدشکافی شاخصهای کلیدی استنتاج یعنی زمان تا اولین توکن (TTFT)، زمان تولید هر توکن (TPOT / ITL)، تاخیر سرتاسری (E2E) و معیار ترکیبی گودپوت (Goodput) میپردازد. همچنین تلههای آماری استفاده از میانگین و دلایل اختلاف ارقام در ابزارهای بنچمارک مطرح را مرور میکنیم تا بتوانید توافقنامههای سطح سرویس (SLO) دقیق و قابل اتکا تدوین کنید.
پنج معیار نشان میدهند استقرار استنتاج (Inference) شما درست کار میکند یا نه. زمان تا اولین توکن (Time to First Token یا TTFT) حاصلجمع زمان پیشپرکنی (Prefill)، صف و شبکه است. زمان به ازای هر توکن خروجی (Time Per Output Token یا TPOT که معمولاً با عنوان تاخیر بینتوکنی یا ITL گزارش میشود، هرچند ابزارها سر اینکه ITL توکن اول را هم میشمارد یا نه همنظر نیستند) هزینهی رمزگشایی (Decode) محدود به حافظه به ازای هر توکن است. تاخیر سرتاسری (End-to-end latency) برابر است با TTFT بهعلاوهی TPOT ضربدر طول خروجی. نرخ پردازش (Throughput) مجموع تعداد توکنهای پردازششده در ثانیه در کل کلاستر است. اما معیاری که برای موفقیت محصول تعیینکننده است، گودپوت (Goodput) نام دارد؛ یعنی نسبت درخواستهایی که توانستهاند همزمان به تکتک اهداف سطح سرویس (SLO) برسند. نرخ پردازش بالا با گودپوت پایین یعنی توکنهایی تولید میکنید که هیچوقت بهموقع دست کاربر نمیرسند. اعداد مرجع مدل Llama-3.1-8B-Instruct روی TRT-LLM در سال 2026: میانگین TTFT برابر با 162 میلیثانیه، میانگین TPOT معادل 7.33 میلیثانیه و میانگین تاخیر سرتاسری 1,093 میلیثانیه. همیشه صدکهای P50، P90 و P99 را گزارش کنید، نه صرفاً میانگین را. مراقب تلهی اندازهگیری هم باشید: GenAI-Perf در محاسبهی ITL مقدار TTFT را کنار میگذارد، ولی LLMPerf آن را حساب میکند؛ به همین خاطر دو ابزار برای یک اجرای کاملاً یکسان، ارقام متفاوتی برای TPOT میدهند.
اهداف یادگیری
- تعریف دقیق TTFT، TPOT، ITL، E2E، نرخ پردازش و گودپوت، و شناخت بخشی که هر کدام اندازه میگیرند.
- توضیح اینکه چرا میانگین آمارهی غلطی برای ارزیابی سرویسدهی مدلهای زبانی است و چطور باید صدکهای P50/P90/P99 را تحلیل کرد.
- تعریف یک SLO چندشرطی (مثلاً TTFT کمتر از 500 میلیثانیه AND تاخیر TPOT کمتر از 15 میلیثانیه AND تاخیر سرتاسری کمتر از 2 ثانیه) و محاسبهی گودپوت بر اساس آن.
- نام بردن دو ابزار بنچمارک که برای یک اجرای یکسان مقادیر متفاوتی از TPOT گزارش میکنند و توضیح دلیل این تفاوت.
صورت مسئله
«نرخ پردازش ما 15,000 توکن در ثانیه است.» خب که چه؟ اگر 40% درخواستها تاخیر سرتاسری بالای 2 ثانیه داشته باشند، کاربر نشست (Session) را میبندد و میرود. نرخ پردازش بهتنهایی نشان نمیدهد محصول واقعاً کار میکند یا نه.
استنتاج، ابعاد مختلفی از تاخیر دارد و هر بعد هم به شکل متفاوتی افت میکند. پیشپرکنی، محدود به توان پردازشی (Compute-bound) است و با طول پرامپت (Prompt) بالا میرود. رمزگشایی، محدود به پهنای باند حافظه (Memory-bound) است و متناسب با اندازهی بچ (Batch size) افزایش مییابد. تاخیر صف یک مشکل عملیاتی است. تاخیر شبکه هم به فاصلهی فیزیکی ربط دارد. برای هرکدام از اینها به معیاری جداگانه نیاز دارید؛ به صدکها نیاز دارید؛ و نهایتاً به یک معیار ترکیبی واحد نیاز دارید که نشان دهد «آیا کاربر همان کیفیتی را که انتظار داشت دریافت کرد یا نه»؛ این معیار، گودپوت است.
مفاهیم پایه
زمان تا اولین توکن (TTFT)
TTFT = queue_time + network_request + prefill_time
وقتی پرامپتها طولانی باشند، فاز پیشپرکنی زمان اصلی را میبلعد. روی مدل Llama-3.3-70B FP8 روی شتابدهندهی H100، یک پرامپت 32k حدود 800 میلیثانیه پیشپرکنی خالص میبرد. زمان صف ناشی از رفتار اسکژولر (Scheduler) زیر بار است. زمان درخواست شبکه هم مدتزمان انتقال داده روی کابل همراه با سربار TLS است. TTFT تاخیری است که کاربر قبل از بازگشت اولین تکه از خروجی جریانی (Stream) تجربه میکند.
تاخیر بین توکنها (TPOT / ITL)
برای یک مفهوم واحد، اسمهای مختلفی هست: TPOT (زمان به ازای هر توکن خروجی)، ITL (تاخیر بینتوکنی)، decode latency per token (تاخیر رمزگشایی به ازای هر توکن)؛ همگی یکی هستند. این معیار، فاصلهی زمانی بین توکنهای متوالی و پشتسرهم بعد از تولید توکن اول است.
TPOT = (decode_forward_time + scheduler_overhead) / tokens_produced
روی همان استک Llama-3.3-70B روی H100 همراه با پیشپرکنی تکهای (Chunked prefill)، میانگین TPOT حدود 7 میلیثانیه است. بدون پیشپرکنی تکهای، اگر در یک توالیِ همجوار پیشپرکنیِ سنگینی اجرا شود، ممکن است TPOT ناگهان تا 50 میلیثانیه جهش کند. همیشه P99 را رصد کنید، نه میانگین را.
تاخیر سرتاسری (E2E)
E2E = TTFT + TPOT * output_tokens + network_response
در خروجیهای طولانی (بیش از 500 توکن)، بخش عمدهی E2E تحت تاثیر TPOT است. در خروجیهای کوتاه با پرامپتهای طولانی، TTFT سهم اصلی را دارد. به همین دلیل تاخیر سرتاسری را همیشه مشروط به طول خروجی گزارش کنید.
نرخ پردازش (Throughput)
throughput = total_output_tokens / elapsed_time
یک معیار تجمیعی است. کارایی کل کلاستر را نشان میدهد، اما از سلامت تکتک درخواستها اطلاعی نمیدهد.
گودپوت (Goodput) — معیاری که واقعاً اهمیت دارد
goodput = fraction of requests meeting (TTFT <= a) AND (TPOT <= b) AND (E2E <= c)
اهداف سطح سرویس چندشرطی هستند. یک درخواست تنها وقتی «خوب» تلقی میشود که همهی شرطها را برآورده کند. گودپوت سهم این درخواستهاست. بعضی مقالات و داشبوردها گودپوت را به شکل یک نرخ گزارش میکنند: تعداد درخواستهایی در ثانیه که تمام SLOها را پاس کردهاند. برای تبدیل این دو حالت به هم، کافی است این نسبت را در نرخ درخواستها ضرب کنید. نرخ پردازش بالا با گودپوت 60% یک شکست است؛ هدف اصلی، نرخ پردازش پایینتر با گودپوت 99% است.
در سال 2026، گودپوت معیار اصلی نتایج ارائهشده به MLPerf Inference v6.0 و پایش داخلی توافقنامههای سطح خدمات (SLA) در پلتفرمهای ابری هوش مصنوعی است.
چرا میانگین آمارهی غلطی است؟
توزیع تاخیر در مدلهای زبانی چولگی به راست (Right-skewed) دارد. یک بچ در فاز رمزگشایی با همسایهای که درگیر پیشپرکنی طولانی است، میتواند 500 توکن را با TPOT حدود 7 میلیثانیه و 20 توکن را با TPOT حدود 60 میلیثانیه تحویل دهد. میانگین TPOT حدود 9 میلیثانیه میشود، اما P99 آن 65 میلیثانیه است. کاربران مرتباً با همین تاخیر P99 برخورد میکنند و دقیقاً به خاطر همین تاخیر است که سرویس را ترک میکنند.
همیشه سهگانه (Triple) صدکهای (P50، P90، P99) را بیاورید. برای بهبود تجربهی کاربری، شاخصی که باید برایش بهینهسازی (Optimization) کنید، P99 است.
ارقام مرجع — Llama-3.1-8B-Instruct روی TRT-LLM، سال 2026
- میانگین TTFT: معادل 162 میلیثانیه
- میانگین TPOT: معادل 7.33 میلیثانیه
- میانگین تاخیر سرتاسری: معادل 1,093 میلیثانیه
- صدک P99 تاخیر TPOT: بسته به تنظیمات پیشپرکنی تکهای، بین 10 تا 25 میلیثانیه متغیر است.
این اعداد، ارقام مرجع منتشرشده توسط NVIDIA هستند و با تغییر اندازهی مدل (مدل 70B ارقامی بین 3 تا 5 برابر نشان میدهد)، سختافزار (H100 در مقایسه با B200 حدود 3 برابر تفاوت دارد) و بار کاری تغییر میکنند.
تلهی اندازهگیری
دو تا از پرکاربردترین ابزارهای بنچمارک در سال 2026، برای یک اجرای کاملاً یکسان ارقام متفاوتی از TPOT میدهند:
- NVIDIA GenAI-Perf: تاخیر TTFT را در محاسبهی ITL حساب نمیکند و ITL را از توکن دوم به بعد در نظر میگیرد.
- LLMPerf: زمان TTFT را در فرمول وارد میکند و ITL را از توکن اول میشمارد.
برای درخواستی با TTFT برابر 500 میلیثانیه و خروجی 100 توکن طی 700 میلیثانیه زمان رمزگشایی در کل، ابزار GenAI-Perf مقدار ITL = 700/99 = 7.07 ms را نشان میدهد، اما LLMPerf به عدد ITL = 1200/100 = 12.00 ms میرسد. انتخاب ابزار (Tool Choice) خروجی محاسبات را عوض میکند.
همیشه صراحتاً مشخص کنید از کدام ابزار استفاده کردهاید و شیوهی محاسبهتان را هم بنویسید.
طراحی یک SLO
یک نمونه SLO منطقی برای محصول نهایی با مدل گفتوگوی 70B در سال 2026:
- صدک P99 تاخیر TTFT کمتر یا مساوی 800 میلیثانیه.
- صدک P99 تاخیر TPOT کمتر یا مساوی 25 میلیثانیه.
- صدک P99 تاخیر سرتاسری کمتر یا مساوی 3 ثانیه برای خروجیهای زیر 300 توکن.
- هدف گودپوت بزرگتر یا مساوی 99%.
در SLOهای سازمانی معمولاً TTFT سختگیرانهتر (200 تا 400 میلیثانیه) و E2E بازتر در نظر گرفته میشود. اصل ماجرا این است که این موارد را مکتوب کنید، هر سه را بسنجید و گودپوت را به عنوان یک معیار جامع پایش کنید.
روش اندازهگیری
- تست را روی ترافیک واقعی یا ترافیک مصنوعی شبیهسازیشده به ترافیک واقعی اجرا کنید (مثلاً با LLMPerf و پارامترهای
--mean-input-tokens 800 --stddev-input-tokens 300 --mean-output-tokens 150). - بنچمارک را روی ترافیکی معادل 2 برابر اوج همزمانی اجرا کنید.
- تست را در 30 تا 50 تکرار اجرا کنید و صدکها را از کل نمونههای تجمیعشده به دست آورید.
- نتایج را با ذکر نام ابزار، نسخهی ابزار، مدل، سختافزار، سطح همزمانی و توزیع پرامپت منتشر کنید.
اجرای عملی
اسکریپت code/main.py یک محاسبهگر سادهی گودپوت است. میتوانید یک توزیع تاخیر مصنوعی بسازید، یک SLO روی آن اعمال کنید و گودپوت را تحویل بگیرید. این کد همچنین تفاوت TPOT بین GenAI-Perf و LLMPerf را روی همان ردگیری محاسبات (Trace) به شما نشان میدهد.
آزمایشگاه بصری Inside an LLM Serving GPU نشان میدهد زمان به ازای هر توکن خروجی روی پردازندهی NVIDIA L4 صرف چه بخشهایی میشود. در یک گام رمزگشایی باید 16.41 گیگابایت وزن خوانده شود که با پهنای باند 300 گیگابایت بر ثانیه حداقل 54.7 میلیثانیه زمان میبرد؛ مرحلهی اندازهگیریشده در عمل 60.16 میلیثانیه طول کشیده است.
پیادهسازی نهایی
خروجی این درس، فایل outputs/skill-slo-goodput-gate.md است. این الگو بر اساس بار کاری و SLO مشخص، یک چکلیست بنچمارک آماده برای پایپلاین CI/CD تولید میکند تا انتشار نهایی، به جای نرخ پردازش، مشروط به دستیابی به گودپوت مطلوب شود.
تمرینها
- اسکریپت
code/main.pyرا اجرا کنید. توزیعی با جهش 1 درصدی در دم بسازید. وقتی حد P99 معیار TPOT را از 30 میلیثانیه به 15 میلیثانیه کاهش میدهید، گودپوت چقدر تغییر میکند؟ - یک ارائهدهندهی زیرساخت ادعا میکند به «15,000 توکن در ثانیه روی مدل Llama 3.3 70B با پردازندهی H100» رسیده است. قبل از اعتماد به این ادعا، چه سه سوالی باید از او بپرسید؟
- چرا پیشپرکنی تکهای از P99 تاخیر TPOT محافظت میکند اما روی میانگین TPOT اثری ندارد؟
- برای یک دستیار صوتی (جایی که توکن اول شنیده میشود، نه خوانده) یک SLO مصرفکننده بنویسید. کدام معیار برای کاربر ملموستر است؟
- فایل راهنمای LLMPerf و مستندات GenAI-Perf را بخوانید. سه معیار دیگر را پیدا کنید که این دو ابزار در محاسبهی آنها با هم اختلاف نظر دارند.
اصطلاحات کلیدی
| اصطلاح | در گفتار عامیانه | معنای دقیق فنی |
|---|---|---|
| TTFT | «زمان تا اولین توکن» | صف + شبکه + پیشپرکنی؛ در پرامپتهای طولانی بخش عمدهاش به پیشپرکنی مربوط است |
| TPOT | «زمان به ازای هر توکن خروجی» | هزینهی رمزگشایی محدود به حافظه برای هر توکن بعد از توکن اول |
| ITL | «تاخیر بینتوکنی» | در اغلب ابزارها معادل TPOT است (نه در همه؛ GenAI-Perf را ببینید) |
| E2E | «سرتاسری» | حاصلجمع TTFT بهعلاوهی TPOT ضربدر طول خروجی؛ بههمراه تاخیر شبکه در مسیر بازگشت پاسخ |
| Throughput | «توکن در ثانیه» | شاخص بهرهوری کلاستر؛ بدون صدکهای تاخیر عملاً بیفایده است |
| Goodput | «نرخ پاس شدن SLO» | نسبت درخواستهایی که همزمان تکتک شروط تعیینشده در SLO را پاس کردهاند |
| P99 | «تاخیر دُم» | بدترین حالت تاخیر در بین 1 مورد از هر 100 مورد؛ معیار اصلی سنجش تجربهی کاربر |
| SLO multi-constraint | «چندشرطی» | اشتراکِ (AND) هر سه حد تاخیر؛ نقض هر کدام از آنها یعنی کل درخواست رد شده است |
| GenAI-Perf vs LLMPerf | «تلهی ابزارها» | اختلاف ابزارها بر سر اینکه آیا TTFT باید در محاسبهی ITL لحاظ شود یا نه |
منابع تکمیلی
- NVIDIA NIM — LLM Benchmarking Metrics — تعاریف مرجع و رسمی برای TTFT، ITL و TPOT.
- Anyscale — LLM Serving Benchmarking Metrics — تعاریف جایگزین و راهنمای عملی اندازهگیری.
- BentoML — LLM Inference Metrics — اندازهگیری عملیاتی شاخصها در محیطهای واقعی.
- LLMPerf — ابزار بنچمارک متنباز مبتنی بر Ray.
- GenAI-Perf — ابزار اختصاصی بنچمارک شرکت NVIDIA.
- MLPerf Inference — استاندارد صنعتی ارزیابی عملکرد بر مبنای گودپوت.
