跳轉到

第三部分:處理時間與 SLO 監控

< 返回目錄 | < 上一題:延遲監控 | 下一題:Token 計費模型 >


從排隊延遲到處理時間

Q2 你知道了「排隊要等多久」。但這只是延遲的一部分。

總延遲 = 排隊延遲 + 處理時間

處理時間也是隨機的——不同請求生成的 token 數量不同,每個 token 的生成速度也有波動。

要設延遲告警閾值,你得知道「處理時間的分布」,才能回答:

  • P99 是多少?(99% 的請求在多少時間內完成)
  • 超時閾值該設多少?(設太短會誤殺正常請求,設太長會拖慢故障偵測)

第 3 題:響應時間分布分析


(a) 響應時間分布

3 分大二

第一個問題:響應時間不是固定的——有時快、有時慢。這種「隨機等待」該怎麼描述?

你需要知道:建模響應時間的分布

觀察到響應時間有一個重要特性:無記憶性——已經等了 1 秒,接下來還要等多久,跟「沒等過」是一樣的。(GPU 不會因為你等久了就加速處理)

題目

假設單次響應時間 \(T\) 服從參數為 \(\lambda\) 的分布,滿足無記憶性:

\[P(T > s + t \mid T > s) = P(T > t)\]
  1. 從無記憶性推導 \(P(T > t)\) 的形式
  2. 若平均響應時間 \(E[T] = 2\) 秒,求 \(\lambda\)
  3. 計算 \(P(T > 5)\)(響應時間超過 5 秒的機率)
提示

\(g(t) = P(T > t)\)。無記憶性意味著 \(g(s+t) = g(s) \cdot g(t)\)。什麼函數滿足這個性質?

解答
  1. \(g(t) = P(T > t)\)。由無記憶性:

    \[g(s+t) = g(s) \cdot g(t)\]

    這是 Cauchy 函數方程,連續解為 \(g(t) = e^{-\lambda t}\)\(\lambda > 0\)

    所以 \(P(T > t) = e^{-\lambda t}\),即 \(T \sim \text{Exp}(\lambda)\)

  2. \(E[T] = \frac{1}{\lambda} = 2\)\(\Rightarrow \lambda = 0.5\) /秒

  3. \(P(T > 5) = e^{-0.5 \times 5} = e^{-2.5} \approx 0.082\)

    約 8.2% 的請求會超過 5 秒。

這個計算有什麼用?

評估超時風險:如果設定超時為 5 秒,約 8.2% 的請求會被中斷。這可能太高了!

設計超時閾值:若要求「超時率 < 1%」,需要 \(P(T > t_0) < 0.01\)

\[e^{-0.5 t_0} < 0.01 \Rightarrow t_0 > \frac{\ln 100}{0.5} = 9.2 \text{ 秒}\]
數學小結:Exponential 分布的無記憶性

Exponential 分布 是唯一具有無記憶性的連續分布。

無記憶性的直覺: - 「等了 1 秒還沒好」不會讓你更接近完成 - 每個瞬間「完成」的機率是恆定的 \(\lambda dt\)

這對建模「隨機等待時間」非常有用。


(b) 更複雜的分布

4 分大三

新的問題:Exponential 假設「無記憶性」,但實際 LLM 響應時間不滿足這個假設!

  • 輸出越長的請求,「已經生成了很多 token」意味著「還要生成更多」
  • 響應時間的分布通常是「右偏」的——大部分請求較快,少數請求很慢

你需要知道:更符合實際的響應時間模型

題目

假設 LLM 生成 \(n\) 個 token,每個 token 的生成時間獨立同分布 \(T_i \sim \text{Exp}(\lambda)\)。總響應時間 \(S_n = T_1 + T_2 + \cdots + T_n\)

  1. 推導 \(S_n\) 的 PDF
  2. \(n = 100\)(生成 100 個 token),\(\lambda = 50\)(每秒生成 50 個 token),計算 \(E[S_n]\)\(\text{Var}(S_n)\)
  3. 計算 \(P(S_{100} > 3)\)(生成 100 token 超過 3 秒的機率)
解答
  1. \(S_n = \sum_{i=1}^n T_i\),各 \(T_i\) 獨立同分布 \(\text{Exp}(\lambda)\)

    \(S_n \sim \text{Gamma}(n, \lambda)\),PDF 為:

    \[f_{S_n}(t) = \frac{\lambda^n t^{n-1} e^{-\lambda t}}{(n-1)!}, \quad t \geq 0\]
  2. \(n = 100\)\(\lambda = 50\)

    \[E[S_{100}] = \frac{100}{50} = 2 \text{ 秒}\]
    \[\text{Var}(S_{100}) = \frac{100}{50^2} = 0.04 \text{ 秒}^2, \quad \sigma = 0.2 \text{ 秒}\]
  3. 常態近似:\(S_{100} \approx N(2, 0.04)\)

    \[P(S_{100} > 3) \approx 1 - \Phi\left(\frac{3 - 2}{0.2}\right) = 1 - \Phi(5) \approx 0\]

    幾乎不可能!但這是因為 \(n\) 固定。實際上 \(n\) 也是隨機的...

這個計算有什麼用?

Gamma 分布 比 Exponential 更適合建模「多步驟完成」的總時間。

\(n\) 很大時,Gamma 近似 Normal(中央極限定理),波動相對較小。


進階挑戰:用 MGF 求 Gamma 的期望與變異數

3 分大三

直接積分太麻煩?用 MGF 可以一次搞定所有動差!

你需要知道\(E[X^k] = M^{(k)}(0)\)(MGF 在 0 點的第 \(k\) 階導數)

題目:已知 \(\text{Gamma}(n, \lambda)\) 的 MGF 為 \(M(t) = \left(\frac{\lambda}{\lambda - t}\right)^n\)

  1. \(M'(t)\),代入 \(t=0\)\(E[X]\)
  2. \(M''(t)\),代入 \(t=0\)\(E[X^2]\)
  3. 計算 \(\text{Var}(X) = E[X^2] - (E[X])^2\)
提示

用連鎖法則:\(\frac{d}{dt}\left(\frac{\lambda}{\lambda-t}\right)^n = n \left(\frac{\lambda}{\lambda-t}\right)^{n-1} \cdot \frac{\lambda}{(\lambda-t)^2}\)

解答

Step 1:求 \(E[X]\)

\[M'(t) = n \cdot \left(\frac{\lambda}{\lambda - t}\right)^{n-1} \cdot \frac{\lambda}{(\lambda-t)^2} = \frac{n\lambda^n}{(\lambda - t)^{n+1}}\]
\[E[X] = M'(0) = \frac{n\lambda^n}{\lambda^{n+1}} = \frac{n}{\lambda}\]

Step 2:求 \(E[X^2]\)

\[M''(t) = \frac{d}{dt}\left[\frac{n\lambda^n}{(\lambda - t)^{n+1}}\right] = \frac{n(n+1)\lambda^n}{(\lambda - t)^{n+2}}\]
\[E[X^2] = M''(0) = \frac{n(n+1)\lambda^n}{\lambda^{n+2}} = \frac{n(n+1)}{\lambda^2}\]

Step 3:求 \(\text{Var}(X)\)

\[\text{Var}(X) = E[X^2] - (E[X])^2 = \frac{n(n+1)}{\lambda^2} - \frac{n^2}{\lambda^2} = \frac{n}{\lambda^2}\]
這個技巧有什麼用?

考試必備:很多題目會要求「用 MGF 求期望和變異數」。

記憶技巧:MGF 的導數在 \(t=0\) 處給出動差

  • \(M'(0) = E[X]\)(一階動差)
  • \(M''(0) = E[X^2]\)(二階動差)
  • \(\text{Var}(X) = M''(0) - [M'(0)]^2\)
數學小結:MGF 的動差公式
動差 公式 應用
\(E[X]\) \(M'(0)\) 一階導數代入 0
\(E[X^2]\) \(M''(0)\) 二階導數代入 0
\(\text{Var}(X)\) \(M''(0) - [M'(0)]^2\) 結合一二階
\(E[X^n]\) \(M^{(n)}(0)\) \(n\) 階導數代入 0

© 隨機輸出長度

4 分碩一

更真實的模型:不只每個 token 的生成時間是隨機的,輸出長度 \(N\) 本身也是隨機的

你需要知道:當「步數」和「每步時間」都是隨機時,總時間的分布

題目

設輸出 token 數 \(N \sim \text{Pois}(\mu_N)\)\(\mu_N = 100\)),每個 token 生成時間 \(T_i \sim \text{Exp}(\lambda)\)\(\lambda = 50\)),\(N\)\(\{T_i\}\) 獨立。總響應時間 \(S = \sum_{i=1}^N T_i\)

  1. 用全期望公式計算 \(E[S]\)
  2. 用全變異公式計算 \(\text{Var}(S)\)
  3. 比較 (b) 中「\(n\) 固定」和這裡「\(N\) 隨機」的變異數差異
提示

全期望:\(E[S] = E[E[S|N]]\)

全變異:\(\text{Var}(S) = E[\text{Var}(S|N)] + \text{Var}(E[S|N])\)

解答
  1. 全期望

    \[E[S|N] = N \cdot E[T] = \frac{N}{\lambda}\]
    \[E[S] = E\left[\frac{N}{\lambda}\right] = \frac{E[N]}{\lambda} = \frac{100}{50} = 2 \text{ 秒}\]
  2. 全變異

    \[\text{Var}(S|N) = N \cdot \text{Var}(T) = \frac{N}{\lambda^2}\]
    \[E[\text{Var}(S|N)] = \frac{E[N]}{\lambda^2} = \frac{100}{2500} = 0.04\]
    \[\text{Var}(E[S|N]) = \text{Var}\left(\frac{N}{\lambda}\right) = \frac{\text{Var}(N)}{\lambda^2} = \frac{100}{2500} = 0.04\]
    \[\text{Var}(S) = 0.04 + 0.04 = 0.08 \text{ 秒}^2, \quad \sigma = 0.28 \text{ 秒}\]
  3. 比較

    模型 \(\text{Var}(S)\) \(\sigma\)
    \(n\) 固定 = 100 0.04 0.2 秒
    \(N \sim \text{Pois}(100)\) 0.08 0.28 秒

    \(N\) 隨機」增加了額外的變異來源,\(\sigma\) 增加 40%!

這個計算有什麼用?

理解變異來源:響應時間的波動來自兩部分: 1. 每個 token 生成時間的波動\(E[\text{Var}(S|N)]\)) 2. 輸出長度的波動\(\text{Var}(E[S|N])\)

如果想降低波動,可以:限制最大輸出長度、使用更穩定的解碼策略。


(d) P99 延遲計算

4 分碩一

現在你可以回答最關鍵的問題:P99 延遲是多少?

你需要知道:求分布的分位數

題目

使用 © 的模型(\(E[S] = 2\) 秒,\(\text{Var}(S) = 0.08\) 秒²),假設 \(S\) 近似 Normal。

  1. 計算 P50(中位數)、P90、P99 延遲
  2. 若客戶要求 P99 ≤ 10 秒,我們能承諾嗎?
  3. 若 P99 實際是 3 秒,反推 \(\sigma\) 是多少?
解答
  1. \(S \approx N(2, 0.08)\)\(\sigma = 0.28\)

    • P50 = \(\mu\) = 2 秒
    • P90 = \(\mu + 1.28\sigma\) = \(2 + 1.28 \times 0.28\) = 2.36 秒
    • P99 = \(\mu + 2.33\sigma\) = \(2 + 2.33 \times 0.28\) = 2.65 秒
  2. P99 = 2.65 秒 ≪ 10 秒,可以承諾

    但要注意:這是「正常情況」。系統過載、GPU 故障時可能更高。

  3. 若 P99 = 3 秒:

    \[\mu + 2.33\sigma = 3 \Rightarrow 2 + 2.33\sigma = 3 \Rightarrow \sigma = 0.43 \text{ 秒}\]
這個計算有什麼用?

制定 SLO

指標 數值 意義
P50 2 秒 一半請求在 2 秒內完成
P90 2.4 秒 90% 請求在 2.4 秒內完成
P99 2.7 秒 99% 請求在 2.7 秒內完成

設定超時:通常設為 P99 的 2-3 倍,如 6-8 秒。


進階挑戰:P99 延遲的真正含義

4 分大三

但你發現一個問題:P99 = 2.65 秒是用 Normal 近似算的,但原始分布是 Gamma。而且,P99 本身也是隨機的——今天測 2.65 秒,明天可能是 2.70 秒。P99 的分布是什麼?

你需要知道:Order Statistics(順序統計量)——樣本排序後第 \(k\) 個值的分布

題目:設 \(T_1, \ldots, T_n \stackrel{iid}{\sim} F(t)\),令 \(T_{(1)} \leq T_{(2)} \leq \cdots \leq T_{(n)}\) 為順序統計量。

  1. 推導最大值 \(T_{(n)}\) 的 CDF:\(F_{T_{(n)}}(t) = ?\)
  2. \(T_i \sim \text{Exp}(\lambda)\),求 \(E[T_{(n)}]\) 並與 \(F^{-1}(0.99)\) 比較
  3. 推導第 \(k\) 個順序統計量 \(T_{(k)}\) 的 PDF(一般公式)
  4. 用順序統計量解釋:為什麼「100 個樣本的最大值」不等於「P99」?
解答

Step 1:\(T_{(n)}\) 的 CDF

\(T_{(n)} \leq t\) 意味著所有 \(T_i\)\(\leq t\)

\[F_{T_{(n)}}(t) = P(T_{(n)} \leq t) = P(\text{所有 } T_i \leq t) = \prod_{i=1}^{n} F(t) = [F(t)]^n\]

PDF\(f_{T_{(n)}}(t) = n [F(t)]^{n-1} f(t)\)

Step 2:Exponential 情況

\(F(t) = 1 - e^{-\lambda t}\)\(f(t) = \lambda e^{-\lambda t}\)

\[E[T_{(n)}] = \int_0^\infty t \cdot n [1-e^{-\lambda t}]^{n-1} \lambda e^{-\lambda t} \, dt\]

使用公式(或查表):

\[E[T_{(n)}] = \frac{1}{\lambda} \sum_{k=1}^{n} \frac{1}{k} = \frac{H_n}{\lambda}\]

其中 \(H_n = 1 + \frac{1}{2} + \cdots + \frac{1}{n}\) 是調和級數。

\(n = 100\)\(H_{100} \approx 5.19\),若 \(\lambda = 1\)

  • \(E[T_{(100)}] \approx 5.19\)
  • \(F^{-1}(0.99) = -\frac{\ln(0.01)}{\lambda} = 4.61\)

結論\(E[\text{樣本最大值}] > \text{理論 P99}\)

Step 3:\(T_{(k)}\) 的 PDF(一般公式)

\[f_{T_{(k)}}(t) = \frac{n!}{(k-1)!(n-k)!} [F(t)]^{k-1} [1-F(t)]^{n-k} f(t)\]

這可以用組合論推導:第 \(k\) 個順序統計量在 \(t\) 處,需要恰好有 \(k-1\) 個樣本 \(< t\)\(n-k\) 個樣本 \(> t\)

Step 4:最大值 vs P99

  • 理論 P99\(F^{-1}(0.99)\) 是分布的 99% 分位數,是一個常數
  • 樣本最大值\(T_{(n)}\) 是一個隨機變數,其期望值通常 > 理論 P99

對於 \(n = 100\) 個樣本: - 樣本的第 99 個順序統計量 \(T_{(99)}\) 才是「樣本 P99」 - 但 \(T_{(99)}\) 的期望仍不完全等於理論 P99

這個計算有什麼用?

監控實務

概念 定義 用途
理論 P99 \(F^{-1}(0.99)\) 設定 SLO 目標
樣本 P99 100 個樣本中第 99 大的值 實際測量值
樣本最大值 100 個樣本中最大的值 更極端的指標

注意:樣本 P99 的變異性隨樣本量增加而減小。

數學小結:Order Statistics
性質 公式
\(T_{(n)}\) 的 CDF \([F(t)]^n\)
\(T_{(1)}\) 的 CDF \(1 - [1-F(t)]^n\)
\(T_{(k)}\) 的 PDF \(\frac{n!}{(k-1)!(n-k)!} [F(t)]^{k-1} [1-F(t)]^{n-k} f(t)\)
Exp 最大值期望 \(E[T_{(n)}] = \frac{H_n}{\lambda}\)(調和級數)

考試技巧:Order Statistics 常與 Uniform、Exponential 分布結合考。


第 3 題小結:你的處理時間監控工具箱

「單次處理時間分布?」
    ├─► 工具:Exponential(無記憶假設)
「多步驟的總時間?」
    ├─► 工具:Gamma(n 個 Exponential 的和)
「步數也是隨機的?」
    ├─► 工具:全期望、全變異公式
「P99 該設多少?」
    ├─► 工具:Normal 近似、分位數計算
「超時閾值該設多少?」
    └─► 經驗法則:P99 的 2-3 倍

< 返回目錄 | < 上一題:延遲監控 | 下一題:Token 計費模型 >