綜合應用案例:LLM API 服務監控(探索版)¶
本案例以「大型語言模型 API 服務監控」為場景,用 SRE 解決問題的視角 探索機率分布。你將扮演 SRE 工程師,從實際問題出發,逐步發現「為什麼需要這個數學工具」。
設計理念:不是「先學分布,再找應用」,而是「遇到問題 → 需要什麼資訊 → 引入數學工具」。
場景背景¶
你是某 AI 公司的 SRE 工程師,負責維運一套類似 OpenAI API 的 LLM 推論服務。
什麼是 SRE?
SRE(Site Reliability Engineering,網站可靠性工程)是 Google 在 2003 年提出的角色,核心理念是「用軟體工程的方法解決運維問題」。
| 領域 | 工作內容 |
|---|---|
| 監控告警 | 設計 metrics、建立 dashboard、設定告警閾值 |
| 可靠性 | 確保系統達成 SLO(如 99.9% 可用性) |
| 容量規劃 | 預測流量、規劃資源、成本優化 |
| 事故響應 | On-call 輪值、故障排查、寫 postmortem |
本案例中的問題正是 SRE 日常會遇到的:失敗率多高要告警?需要幾台 GPU?P99 延遲是多少?
根據歷史監控數據:
| 參數 | 符號 | 數值 | 說明 |
|---|---|---|---|
| 請求成功率 | \(p\) | \(0.95\) | 單次 API 請求成功完成的機率 |
| 平均請求率 | \(\lambda\) | \(200\) 次/秒 | 尖峰時段每秒平均請求數 |
| 平均響應時間 | \(\mu\) | \(2\) 秒 | 單次請求的完整響應時間(非流式) |
| 服務等級目標 | SLO | \(99.9\%\) 可用性 | 月度目標 |
關於響應時間的說明
本案例假設 非流式(non-streaming) 場景:客戶端等待完整回覆後才收到響應。
實際 LLM 的響應時間受多種因素影響,波動很大:
- 輸入長度:prompt 越長,prefill 時間越長
- 輸出長度:生成 token 數越多,總時間越長
- 系統負載:排隊等待時間
因此響應時間通常不是常數,而是服從某種分布(如 Gamma 或 Log-Normal)。第 3 題會深入探討這個問題。
失敗原因分類:
- GPU 記憶體不足(40%)
- 推論超時(35%)
- 模型載入錯誤(15%)
- 其他錯誤(10%)
第一部分:告警系統設計¶
場景:凌晨三點,你被告警叫醒¶
手機震動,PagerDuty1 顯示:「API 請求失敗」。你睡眼惺忪地看著螢幕,腦中閃過第一個念頭:
「又來了?」
這已經是本週第五次被單次失敗叫醒。每次查完都發現系統正常——只是偶發的單次失敗。
你決定:受夠了這種無效告警,要重新設計一個真正有用的告警系統。
你開始思考問題的根源:現在的告警是「事件驅動」的——每發生一次失敗就觸發。但這個觀察維度根本沒有判斷力,因為正常系統本來就會偶爾失敗。
你需要換一個觀察維度:不看「這一次失敗了沒」,而是看「這段時間內,失敗的次數是否異常」。這就把問題從「單一事件的是非題」變成「時間窗口內的統計量」。
但問題來了:什麼叫「異常」?要回答這個,你得先知道「正常」長什麼樣——正常系統在一段時間內,預期會失敗幾次?波動範圍多大?超過多少才算不正常?這些問題,需要建立「正常狀態的數學模型」來回答。
第 1 題:從「一次失敗」到「完整告警系統」¶
這道題將帶你從「一個請求失敗了」這個簡單觀察出發,逐步建立完整的數學工具箱。每個小題解決一個具體問題,最後你會發現:這些工具有一個共同的名字。
(a) 單次請求的判斷力¶
3 分 ・ 大二
監控系統剛收到一個請求失敗的通知。同事緊張地問:「系統是不是掛了?」
你需要知道:正常系統下,單次請求失敗的機率是多少?
題目:
-
定義隨機變數 \(X\) 表示單次請求結果(成功 = 1,失敗 = 0)。若系統正常時成功率 \(p = 0.95\),寫出 \(P(X=0)\) 和 \(P(X=1)\)
-
從定義出發,計算 \(E[X]\)(不可直接套公式)
解答
-
\[P(X = 1) = 0.95, \quad P(X = 0) = 0.05\]
這可以統一寫成:\(P(X = x) = p^x (1-p)^{1-x}\),其中 \(x \in \{0, 1\}\)
-
\[E[X] = \sum_{x \in \{0,1\}} x \cdot P(X=x) = 0 \times 0.05 + 1 \times 0.95 = 0.95\]
為什麼這樣算就是「期望值」?
這個公式其實是「加權平均」:每個可能的值 \(x\),乘以它出現的機率 \(P(X=x)\),再加總。機率越大的值,對平均的貢獻越大。
直覺上,如果你做 1000 次實驗:大約 950 次得到 1,50 次得到 0。全部加起來除以 1000:
\[\frac{950 \times 1 + 50 \times 0}{1000} = \frac{950}{1000} = 0.95\]這正是 \(E[X]\) 的值。所以期望值代表「長期下來的平均結果」。
這個計算有什麼用?
回答你的問題:光看一次失敗,判斷不了系統是否異常。因為 \(P(X=0) = 0.05\),正常系統平均每 20 次請求就會失敗一次——這是「底噪」,不是故障。
建立基準線:\(E[X] = 0.95\) 代表「長期下來,平均每 100 次請求有 95 次成功」。這是你告警系統的**基準線**。
| 週期 | 請求數 \(n\) | 預期失敗 = \(n \times 0.05\) |
|---|---|---|
| 10 秒 | 2,000 | 100 次 |
| 1 分鐘 | 12,000 | 600 次 |
| 5 分鐘 | 60,000 | 3,000 次 |
(b) 正常波動的範圍¶
3 分 ・ 大二
好,你知道正常失敗率是 5% 了。那直接設「超過 5% 就告警」不行嗎?
問題是:5%(期望值)是「中線」,不是「上界」。
你盯著 dashboard 看了幾天,發現每分鐘的失敗次數都不一樣:612、589、623、571、608... 系統都正常,但數字在 600 上下跳動。這是因為每次請求成功或失敗本身就有隨機性,觀測值天生會波動。
期望值是這個波動的「中心點」——大約 50% 的正常觀測會在期望值以上,50% 在以下。如果用期望值當閾值,你會有一半的時間在告警,但系統根本沒壞。
所以問題變成:正常波動的「邊界」在哪裡? 超過多少才算「真的不正常」而不是「運氣差一點」?
你需要知道:正常波動的範圍有多大?
要回答這個,你需要知道 變異數——它量化「波動幅度」。有了它,你才能設一個合理的閾值:高於正常波動範圍才告警。
題目:從定義出發,計算 \(\text{Var}(X)\)
解答
\(X^2\) 是什麼?它是一個新的隨機變數,定義為「對 \(X\) 的每個取值平方」。由於這裡 \(X \in \{0, 1\}\),而 \(0^2 = 0\)、\(1^2 = 1\),所以 \(X^2 = X\),於是:
為什麼這樣算就是「波動幅度」?
變異數的原始定義是 \(\text{Var}(X) = E[(X - \mu)^2]\),也就是「每次結果離平均值的偏差,取平方,再算期望」。
為什麼要平方?因為偏差有正有負(有時高於平均,有時低於平均),直接加總會互相抵消。平方後全變正數,就能累積起來。
從原始定義到計算公式:
期望值的線性性質(常數可以提出來、加法可以拆開):
因為 \(\mu = E[X]\),所以 \(\text{Var}(X) = E[X^2] - (E[X])^2\)。
直覺驗證:如果做 1000 次實驗:
- 950 次得到 1,偏差 = \(1 - 0.95 = 0.05\),平方 = \(0.0025\)
- 50 次得到 0,偏差 = \(0 - 0.95 = -0.95\),平方 = \(0.9025\)
加權平均:\(0.95 \times 0.0025 + 0.05 \times 0.9025 = 0.0475\)
這就是變異數。它代表「平均來說,結果離期望值有多遠(的平方)」。
這個計算有什麼用?
設計告警 buffer:假設觀察 \(n\) 次請求,失敗次數 \(F = \sum_{i=1}^{n} (1 - X_i)\)。由於獨立性:
標準差 \(\sigma_F = \sqrt{n \times 0.0475}\)。
告警邏輯:if 失敗次數 > 預期 + k × 標準差 → 告警
例如 \(n = 12000\)(1 分鐘),\(\sigma_F = \sqrt{12000 \times 0.0475} \approx 23.9\)
若 \(k = 3\),則「失敗次數 > 600 + 72 = 672」才告警。
數學小結:你剛才發現了 Bernoulli 分布
你定義的 \(X\)——只有 0 和 1 兩個值、機率分別為 \(1-p\) 和 \(p\)——數學上叫做 Bernoulli 分布,記作 \(X \sim \text{Bernoulli}(p)\)。
| 性質 | 公式 |
|---|---|
| PMF | \(P(X=x) = p^x(1-p)^{1-x}\),\(x \in \{0,1\}\) |
| 期望值 | \(E[X] = p\) |
| 變異數 | \(\text{Var}(X) = p(1-p)\) |
© 告警閾值設計¶
4 分 ・ 大三
現在你有兩個數字:
- 期望值:正常情況下失敗次數的「中線」
- 標準差:正常波動的「幅度」(變異數開根號,讓單位一致)
怎麼用這兩個數字設閾值?直覺的做法是:中線往上推幾倍波動幅度,就是「正常範圍的邊界」。
這裡的 \(k\) 代表「容忍幾倍波動」。但為什麼需要 \(k\)?直覺上 1 倍波動不就是「正常範圍」了嗎?
問題是:1 倍標準差只能覆蓋「大部分」正常情況,不是「幾乎全部」。\(k\) 越大,覆蓋的正常情況越多,誤報越少——但也越可能漏掉真正的故障。
\(k\) 是一個業務決策,取決於你對誤報的容忍度:
- 告警很重要、寧可誤報不可漏報 → \(k\) 小一點
- 告警成本高、不想半夜被吵醒 → \(k\) 大一點
但問題來了:給定一個 \(k\),誤報率「具體」是多少?
- \(k\) 太小 → 正常波動也會觸發(誤報)
- \(k\) 太大 → 真正故障也不告警(漏報)
你需要知道:給定 \(k\),誤報率是多少?
如果你能算出這個,選 \(k\) 就有數學依據了。比如:「我每個月最多能接受被誤報叫醒 3 次,對應的誤報率是多少?\(k\) 應該設多少?」
要精確回答這個問題,光知道期望和標準差還不夠——你得知道「\(n\) 次請求中失敗幾次」的 完整分布,才能算出「超過閾值的機率」。
這裡有一個建模上的轉換:前面我們一直在講「週期」(1 分鐘、10 秒),但數學上我們用「\(n\) 次請求」來表達。週期只是決定了 \(n\) 的大小:
| 週期 | 請求次數 \(n\) |
|---|---|
| 10 秒 | 2,000(200 次/秒 × 10 秒) |
| 1 分鐘 | 12,000 |
| 5 分鐘 | 60,000 |
這樣我們就把時間維度抽象掉,專注於一個更簡單的問題:「\(n\) 次請求中,成功幾次?」
(c-1) 推導成功次數的機率公式
令 \(S_n\) =「\(n\) 次獨立請求中,成功的次數」。推導 \(P(S_n = k)\) 的公式(\(k\) 次成功的機率)。
提示
\(S_n = k\) 表示「\(n\) 次中恰好 \(k\) 次成功」。有多少種選法?每種選法的機率是多少?
解答
思考過程:
- 先想一種「特定排列」,比如「前 k 次都成功,後 n-k 次都失敗」
- 這種特定排列的機率 = \(p^k \times (1-p)^{n-k}\)
- 但「恰好 k 次成功」不只這一種排列,成功可以落在任意位置
- 從 n 個位置選 k 個當成功,有 \(\binom{n}{k}\) 種選法
- 每種選法機率一樣,所以總機率 = 選法數 × 單一排列機率
結論:
(c-2) 從單次統計量到週期統計量
前面 (b) 題建立了告警的概念:「期望 + k 倍標準差」。但那是針對單次請求 \(X\) 的。
實際監控時,你不會看「這一次請求成功沒」,而是看「這一分鐘內失敗了幾次」。所以要把告警公式應用到 \(S_n\)(n 次請求的成功總數)上:
問題是:\(E[S_n]\) 和 \(\text{Var}(S_n)\) 怎麼從 \(E[X]\) 和 \(\text{Var}(X)\) 算出來?
題目:證明 \(E[S_n] = n \cdot E[X]\) 和 \(\text{Var}(S_n) = n \cdot \text{Var}(X)\)。
解答
期望值:
- \(S_n = X_1 + X_2 + \cdots + X_n\)(定義)
- \(E[S_n] = E[X_1 + X_2 + \cdots + X_n]\)
- \(= E[X_1] + E[X_2] + \cdots + E[X_n]\)(期望值的線性性質:和的期望 = 期望的和)
- \(= n \cdot E[X]\)(每個 \(X_i\) 期望都一樣)
- \(= n \cdot p\)
為什麼 \(E[X] = p\)?
這是 Bernoulli 分布的特性。因為我們用 0 表示失敗、1 表示成功:
「失敗」的貢獻是 0(0 乘以任何東西都是 0),「成功」的貢獻剛好就是它的機率 p。這不是數學巧合,而是 0/1 編碼的結果。
變異數:
- \(\text{Var}(S_n) = \text{Var}(X_1 + X_2 + \cdots + X_n)\)
- \(= \text{Var}(X_1) + \text{Var}(X_2) + \cdots + \text{Var}(X_n)\)(獨立時,和的變異數 = 變異數的和)
- \(= n \cdot \text{Var}(X)\)
- \(= n \cdot p(1-p)\)
為什麼 \(\text{Var}(X) = p(1-p)\)?
同樣從 Bernoulli 的 0/1 結構推導。(b) 題算過:\(\text{Var}(X) = E[X^2] - (E[X])^2 = p - p^2 = p(1-p)\)。
對接前面的週期概念:
\(E[S_n] = n \times E[X]\),就是「單次請求的成功率 × 週期內的請求數 = 週期內的成功次數期望」。
| 週期 | \(n\) | \(E[S_n] = n \times 0.95\) |
|---|---|---|
| 10 秒 | 2,000 | 1,900 次成功 |
| 1 分鐘 | 12,000 | 11,400 次成功 |
這樣就把「週期」和「成功次數分布」連接起來了。
(c-3) 計算誤報率,評估方案可行性
假設你打算用「期望 − 2 倍標準差」當閾值(成功次數太低就告警)。
設 \(n = 100\),\(p = 0.95\),\(k = 2\):
- 計算 \(E[S_n]\) 和 \(\sigma(S_n)\)
- 算出閾值
- 計算誤報率 \(P(S_n \leq \text{閾值})\)
- 如果監控系統每分鐘檢查一次,這個誤報率在業務上可接受嗎?
解答
1. 計算期望和標準差:
- \(E[S_n] = n \times p = 100 \times 0.95 = 95\)
- \(\sigma = \sqrt{\text{Var}(S_n)} = \sqrt{n \times p \times (1-p)} = \sqrt{100 \times 0.95 \times 0.05} = \sqrt{4.75} \approx 2.18\)
2. 計算閾值:
閾值 \(= E[S_n] - k \times \sigma = 95 - 2 \times 2.18 \approx 90\)
(成功次數低於 90 就告警,即失敗超過 10 次)
3. 計算誤報率:
誤報率約 2%。
4. 業務評估:
2% 意味著每 50 次檢查就會誤報 1 次。
如果監控系統每分鐘檢查一次:
- 每小時 60 次檢查 → 平均每小時誤報 1.2 次
- 每天誤報約 29 次
結論:k = 2 這個閾值太鬆了,你會被正常波動吵死,不可接受。
(c-4) 調整閾值,滿足業務需求
(c-3) 告訴你 k = 2 會導致每小時被吵醒 1 次。主管說:「這太誇張了,我希望每週最多被誤報叫醒 1 次。」
k 該調到多少?
解答
從業務需求反推誤報率:
- 每週 = 7 × 24 × 60 = 10,080 分鐘 = 10,080 次檢查
- 最多誤報 1 次 → 誤報率 ≤ 1/10,080 ≈ 0.01%
反推 k:
設閾值為「失敗次數 > \(\mu + k\sigma\)」,誤報率 ≈ \(\Phi(-k)\)。
要讓 \(\Phi(-k) \leq 0.0001\),查表得 \(k \approx 3.7\)。
結論:
從 k = 2 調整到 k = 3.7,誤報率從 2% 降到 0.01%。
以 1 分鐘為週期(n = 12,000):
- 期望失敗次數 = 600,標準差 ≈ 23.9
- 原閾值(k=2):600 + 2 × 23.9 = 648
- 新閾值(k=3.7):600 + 3.7 × 23.9 ≈ 688
告警規則:1 分鐘內失敗超過 688 次才告警。
小結:完整的告警設計流程
回顧整個過程,你完成了一個完整的告警系統設計:
- (a) 算出單次請求的期望值 → 建立基準線
- (b) 算出變異數 → 知道正常波動範圍
- (c-1) 推導完整分布 → 能精確計算任意閾值的誤報率
- (c-2) 把單次統計量擴展到週期 → 連接業務場景
- (c-3) 給定閾值算誤報率 → 評估方案
- (c-4) 給定誤報率反推閾值 → 滿足業務需求
這就是用數學解決實際問題的完整流程。
數學小結:你剛才發現了 Binomial 分布
\(n\) 個獨立 Bernoulli 的和,數學上叫做 Binomial 分布,記作 \(S_n \sim B(n, p)\)。
| 性質 | 公式 |
|---|---|
| PMF | \(P(S_n=k) = \binom{n}{k} p^k (1-p)^{n-k}\) |
| 期望值 | \(E[S_n] = np\) |
| 變異數 | \(\text{Var}(S_n) = np(1-p)\) |
進階挑戰:不知道分布怎麼辦?¶
3 分 ・ 大二
前面的推導依賴三個假設:
- 每次請求獨立
- 每次只有成功或失敗
- 成功率固定是 0.95
但 PM 質疑:「這些假設在實際場景中真的成立嗎?」
- 獨立性可能不成立:如果一台 GPU 掛了,會同時影響很多請求,它們就不是獨立的
- 成功率可能不固定:尖峰時段負載高,成功率可能下降;凌晨負載低,成功率可能更高
- 可能有其他複雜因素:網路波動、請求排隊效應...
當這些假設不完全成立時,Binomial 公式就不一定準了。有沒有更穩健的方法?
你需要知道:Chebyshev 不等式——只需要知道期望和變異數,不管分布長什麼樣都成立!
Chebyshev 不等式:對任意分布, $\(P(|X - \mu| \geq k\sigma) \leq \frac{1}{k^2}\)$
題目:設 1 分鐘處理 \(n = 1200\) 次請求,失敗次數 \(F\) 的期望 \(\mu = 60\),標準差 \(\sigma = 7.55\)。
- 用 Chebyshev 不等式估計 \(P(F > 90)\) 的上界
- 與 Binomial 精確計算(或常態近似)比較
- 討論 Chebyshev 為什麼「保守」
提示
\(F > 90\) 意味著 \(|F - 60| > 30\)。先把 30 換算成幾個標準差。
解答
Step 1:Chebyshev 估計
\(F > 90\) 意味著 \(|F - 60| > 30 = 3.97\sigma\)
所以 \(P(F > 90) \leq 0.063\)(實際更小,因為只考慮右尾)
Step 2:常態近似
Step 3:比較
- Chebyshev:\(\leq 6.3\%\)(保守)
- 常態近似:\(\approx 0.004\%\)(精確)
- 差異:Chebyshev 高估了約 1500 倍!
這個不等式有什麼用?
穩健性:當你不確定分布形式時,Chebyshev 給出 最壞情況的保證。
考試技巧:
- 題目說「不假設分布」→ 用 Chebyshev
- 題目說「服從某分布」→ 用精確計算或 CLT
數學小結:Chebyshev 不等式
| 特性 | 說明 |
|---|---|
| 前提 | 只需 \(\mu, \sigma\) 存在 |
| 公式 | \(P(\|X - \mu\| \geq k\sigma) \leq 1/k^2\) |
| 優點 | 對任意分布成立 |
| 缺點 | 通常很保守(高估機率) |
| 典型應用 | 不知道分布、穩健估計 |
(d) 一失敗就告警?¶
4 分 ・ 大三
另一種策略:你的同事說:「累積看 \(n\) 次太慢了,為什麼不『一發現失敗就告警』?」
這聽起來很靈敏,但會不會 太敏感?正常系統平均多久會出現一次失敗?
你需要知道:「第一次失敗」發生在第幾次請求?
題目:
令 \(W\) 為「第一次失敗」發生的位置(例如:第 1 次就失敗則 \(W=1\),前 2 次成功、第 3 次失敗則 \(W=3\))。
- 推導 \(P(W = k)\),\(k = 1, 2, 3, \ldots\)
- 計算 \(E[W]\)
- 若「一失敗就告警」,正常系統的誤報率是多少?
提示
\(W = k\) 表示「前 \(k-1\) 次都成功,第 \(k\) 次失敗」。
解答
-
\(W = k\) 表示前 \(k-1\) 次成功、第 \(k\) 次失敗:
\[P(W = k) = p^{k-1} (1-p) = (0.95)^{k-1} (0.05), \quad k = 1, 2, 3, \ldots\] -
令 \(q = 1 - p = 0.05\):
\[E[W] = \sum_{k=1}^{\infty} k \cdot p^{k-1} q = \frac{1}{q} = \frac{1}{0.05} = 20\] -
「一失敗就告警」的誤報率 = \(P(\text{第一次請求就失敗}) = P(W=1) = 0.05 = 5\%\)
或者換個角度:正常系統平均每 20 次請求就會觸發一次告警——太頻繁了!
這個計算有什麼用?
評估「一失敗就告警」策略:誤報率 5% 太高了!如果每秒 200 次請求,平均每秒會誤報 10 次。
結論:需要更「容忍」的策略。
數學小結:你剛才發現了 Geometric 分布
「等到第一次失敗」的位置,數學上叫做 Geometric 分布,記作 \(W \sim \text{Geom}(q)\)(\(q = 1-p\) 是失敗機率)。
| 性質 | 公式 |
|---|---|
| PMF | \(P(W=k) = p^{k-1} q\),\(k = 1, 2, \ldots\) |
| 期望值 | \(E[W] = 1/q\) |
| 變異數 | \(\text{Var}(W) = p/q^2\) |
| 無記憶性 | \(P(W > m+n \mid W > m) = P(W > n)\) |
進階:無記憶性證明¶
2 分 ・ 大二
你盯著螢幕,系統已經連續成功 50 次了。直覺告訴你: 「運氣這麼好,是不是接下來更容易失敗?」
你需要知道:連續成功的歷史,會不會影響「還要多久才失敗」?
題目:證明 Geometric 分布的無記憶性:
證明
其中 \(P(W > k) = (1-q)^k\) 是「前 \(k\) 次都成功」的機率。
這個證明有什麼用?
結論:不論已經連續成功多少次,「還要多久才失敗」的分布**完全相同**。
實務意義:告警系統可以放心「重置計數器」——過去 50 次成功不影響接下來的判斷。 這就是 Geometric 分布的**無記憶性**,也是它區別於其他離散分布的標誌性質。
類比:擲公平硬幣已經連續 10 次正面,下一次正面的機率仍是 50%——不是「該出反面了」!
(e) 累積 r 次失敗告警¶
4 分 ・ 大三
更好的策略:「一次就告警」太敏感,那 累積 \(r\) 次失敗才告警 呢?
例如 \(r = 5\):連續觀察直到第 5 次失敗才告警。這樣可以降低誤報率,同時保持一定靈敏度。
你需要知道:累積到第 \(r\) 次失敗,平均需要多少次請求?
題目:
令 \(T_r\) 為「第 \(r\) 次失敗」發生的位置。
- 說明 \(T_r\) 與 \(W\)(第一次失敗的位置)的關係
- 推導 \(P(T_r = k)\),\(k = r, r+1, r+2, \ldots\)
- 計算 \(E[T_r]\)
- 若 \(r = 5\),\(q = 0.05\),平均需要多少次請求才會告警?
提示
\(T_r = k\) 表示「前 \(k-1\) 次中恰好 \(r-1\) 次失敗,第 \(k\) 次是第 \(r\) 次失敗」。
解答
-
\(T_r\) 可以看成 \(r\) 個獨立 Geometric 的和:\(T_r = W_1 + W_2 + \cdots + W_r\)
其中 \(W_i\) 是「第 \(i-1\) 次失敗後,等到第 \(i\) 次失敗的額外請求數」。
-
\(T_r = k\) 表示「前 \(k-1\) 次中恰好 \(r-1\) 次失敗,第 \(k\) 次失敗」:
\[P(T_r = k) = \binom{k-1}{r-1} q^r p^{k-r}, \quad k = r, r+1, \ldots\] -
由於 \(T_r = \sum_{i=1}^r W_i\),各 \(W_i\) 獨立且 \(E[W_i] = 1/q\):
\[E[T_r] = r \cdot E[W] = \frac{r}{q}\] -
\(r = 5\),\(q = 0.05\):
\[E[T_5] = \frac{5}{0.05} = 100\]平均需要 100 次請求才會累積到 5 次失敗。
這個計算有什麼用?
設計折衷告警策略:
| \(r\) | \(E[T_r]\) | 平均多久告警一次(假設 200 QPS) |
|---|---|---|
| 1 | 20 | 0.1 秒 |
| 3 | 60 | 0.3 秒 |
| 5 | 100 | 0.5 秒 |
| 10 | 200 | 1 秒 |
選擇 \(r\) 時需要權衡:\(r\) 越大,誤報越少,但發現故障越慢。
數學小結:你剛才發現了 Negative Binomial 分布
「等到第 \(r\) 次失敗」的位置,數學上叫做 Negative Binomial 分布,記作 \(T_r \sim \text{NB}(r, q)\)。
| 性質 | 公式 |
|---|---|
| PMF | \(P(T_r=k) = \binom{k-1}{r-1} q^r p^{k-r}\),\(k = r, r+1, \ldots\) |
| 期望值 | \(E[T_r] = r/q\) |
| 變異數 | \(\text{Var}(T_r) = rp/q^2\) |
| 與 Geometric 關係 | \(T_r = W_1 + \cdots + W_r\)(\(r\) 個獨立 Geom 的和) |
(f) 假設檢定框架¶
4 分 ・ 碩一
整合所有工具:現在你手上有多種策略:
- 累積 \(n\) 次看失敗比例:用 Binomial 分布
- 第一次失敗就告警:用 Geometric 分布
- 累積 \(r\) 次失敗才告警:用 Negative Binomial 分布
哪種最好?這取決於你願意承受多少 誤報(Type I Error)和 漏報(Type II Error)。
題目:
設正常狀態下失敗率 \(q_0 = 0.05\),異常狀態下失敗率 \(q_1 = 0.15\)。
- 使用假設檢定框架:\(H_0\): 系統正常(\(q = q_0\)),\(H_1\): 系統異常(\(q = q_1\))
- 對於「累積 \(n = 100\) 次,失敗超過 \(k\) 次就告警」的策略,推導 Type I Error(誤報率 \(\alpha\))和 Type II Error(漏報率 \(\beta\))的公式
- 畫出 \(\alpha\) 和 \(\beta\) 關於 \(k\) 的變化曲線(示意圖即可)
- 若要求 \(\alpha \leq 0.01\),求最小的 \(k\);此時 \(\beta\) 是多少?
解答
-
假設檢定框架:
- \(H_0\): \(q = 0.05\)(正常)
- \(H_1\): \(q = 0.15\)(異常)
- 檢定統計量:\(F_n\) = \(n\) 次請求中的失敗次數
- 拒絕域:\(F_n > k\)
-
誤報率和漏報率:
\[\alpha(k) = P(F_n > k \mid H_0) = \sum_{j=k+1}^{n} \binom{n}{j} (0.05)^j (0.95)^{n-j}\]\[\beta(k) = P(F_n \leq k \mid H_1) = \sum_{j=0}^{k} \binom{n}{j} (0.15)^j (0.85)^{n-j}\] -
曲線特性:
- \(k\) 增大 → \(\alpha\) 減小(更不容易誤報)
- \(k\) 增大 → \(\beta\) 增大(更容易漏報)
- 需要找平衡點
-
\(n = 100\),求 \(\alpha \leq 0.01\):
使用常態近似,\(H_0\) 下 \(F_n \approx N(5, 4.75)\):
需要 \(P(F_n > k) \leq 0.01\),即 \(\frac{k - 5}{\sqrt{4.75}} \geq 2.33\)
\(k \geq 5 + 2.33 \times 2.18 = 10.1\),取 \(k = 11\)
此時 \(\beta = P(F_n \leq 11 \mid H_1)\),\(H_1\) 下 \(F_n \approx N(15, 12.75)\):
\(\beta \approx \Phi\left(\frac{11 - 15}{\sqrt{12.75}}\right) = \Phi(-1.12) \approx 0.13\)
這個計算有什麼用?
設計最優告警策略:
- 若 \(\alpha = 0.01\)(每天誤報不超過 1 次),需要 \(k = 11\)
- 此時 \(\beta = 0.13\),即 13% 機率漏掉真正的故障
權衡:誤報讓人疲勞,漏報造成損失。根據業務需求調整 \(k\)。
進階:最優閾值設計¶
4 分 ・ 碩一
凌晨五點,SRE 又被叫醒,結果是誤報。他怒吼:「閾值設太低了!」 第二天,系統真的掛了 10 分鐘才發現。老闆冷冷地說:「閾值設太高了。」
你需要知道:有沒有一個 \(k^*\),讓「誤報 ≤ 1%」且「漏報 ≤ 1%」同時成立?
題目:設 1 分鐘處理 \(n = 12000\) 次請求,以失敗次數 \(F\) 作為告警指標。
- 正常時 \(F \sim B(12000, 0.05)\),求 \(k^*\) 使 \(P(F > k^*) \leq 0.01\)(誤報約束)
- 故障時 \(F' \sim B(12000, 0.20)\),求 \(k^*\) 使 \(P(F' \leq k^*) \leq 0.01\)(漏報約束)
- 找出可行區間 \([k_{\min}, k_{\max}]\)
解答
參數計算:
- 正常:\(E[F] = 600\),\(\sigma_F = \sqrt{12000 \times 0.05 \times 0.95} \approx 23.9\)
- 故障:\(E[F'] = 2400\),\(\sigma_{F'} = \sqrt{12000 \times 0.20 \times 0.80} \approx 43.8\)
誤報約束(正常時 \(P(F > k^*) \leq 0.01\)):
漏報約束(故障時 \(P(F' \leq k^*) \leq 0.01\)):
可行區間:\(k^* \in [656, 2298]\)
這個計算有什麼用?
這是一個**最優化問題**——在「SRE 睡眠品質」與「系統可靠性」之間找平衡點。
可行區間很寬(656 到 2298),說明正常 vs 故障的區分度很高(好消息!)。
建議:取 \(k^* = 700\),留有安全邊際。
| 閾值設定 | 誤報率 | 漏報率 | 說明 |
|---|---|---|---|
| \(k^* = 656\) | 1% | ~0% | 激進(更快發現故障) |
| \(k^* = 700\) | <0.5% | ~0% | 推薦(平衡) |
| \(k^* = 1000\) | ~0% | ~0% | 保守(減少誤報) |
數學小結:假設檢定的最優設計
這道題展示了**假設檢定**的核心權衡:
| 概念 | 符號 | 本題數值 |
|---|---|---|
| 虛無假設 | \(H_0\):系統正常 | \(p = 0.05\) |
| 對立假設 | \(H_1\):系統故障 | \(p' = 0.20\) |
| Type I Error(誤報率) | \(\alpha = P(\text{拒絕} H_0 \mid H_0 \text{為真})\) | \(\leq 0.01\) |
| Type II Error(漏報率) | \(\beta = P(\text{接受} H_0 \mid H_1 \text{為真})\) | \(\leq 0.01\) |
| 檢定力 | \(1 - \beta\) | \(\geq 0.99\) |
設計原則:樣本量 \(n\) 越大,可行區間越寬,越容易同時滿足 \(\alpha\) 和 \(\beta\) 約束。
進階挑戰:告警響了,系統真的壞了嗎?¶
3 分 ・ 大三
你設計的告警系統響了。但上週已經被 5 次誤報叫醒,你開始懷疑: 收到告警,系統真的故障的機率是多少?
這不是「系統故障時觸發告警的機率」(那是告警的**靈敏度**)。 這是「告警觸發後,系統真的故障的機率」——完全不同的問題!
你需要知道:如何從「觀察結果」反推「真實狀態」?
題目:假設:
- 系統故障的先驗機率 \(P(\text{故障}) = 0.01\)(系統 99% 時間正常)
- 故障時告警響起的機率 \(P(\text{告警}|\text{故障}) = 0.95\)(靈敏度 95%)
-
正常時告警響起的機率 \(P(\text{告警}|\text{正常}) = 0.02\)(誤報率 2%)
-
用 Bayes' Theorem 計算 \(P(\text{故障}|\text{告警})\)
- 解釋為什麼結果這麼低(這叫「基率謬誤」)
- 若要使 \(P(\text{故障}|\text{告警}) > 50\%\),誤報率應降到多少?
解答
Step 1:Bayes 公式
Step 2:計算 \(P(\text{告警})\)(全機率公式)
Step 3:後驗機率
基率謬誤解釋:
雖然告警靈敏度高達 95%,但因為系統故障本身很罕見(1%),「正常但誤報」的絕對數量(\(0.99 \times 0.02 = 1.98\%\))遠大於「故障且正確告警」(\(0.01 \times 0.95 = 0.95\%\))。
降低誤報率的計算:
設 \(P(\text{告警}|\text{正常}) = x\),要使後驗 > 50%:
誤報率需降到 0.96% 以下(從原來的 2% 降低一半以上)。
這個計算有什麼用?
SRE 的日常:告警響了,但大部分時候系統沒壞——這就是「基率謬誤」的真實體現。
改善方向:
| 策略 | 效果 |
|---|---|
| 降低誤報率 | 最有效!從 2% 降到 1% 就能大幅提升後驗機率 |
| 提高靈敏度 | 效果有限(已經 95% 了) |
| 多重確認 | 連續 2 次告警才行動,等效於降低誤報率 |
數學小結:Bayes' Theorem
| 概念 | 符號 | 本題意義 |
|---|---|---|
| 先驗 | \(P(A)\) | 系統故障率(1%) |
| 似然 | \(P(B\|A)\) | 靈敏度/誤報率 |
| 後驗 | \(P(A\|B)\) | 收到告警後故障的機率 |
| 公式 | \(P(A\|B) = \frac{P(B\|A)P(A)}{\sum_i P(B\|A_i)P(A_i)}\) | 全機率 + 條件機率 |
關鍵洞察:後驗機率不只取決於似然(靈敏度),更取決於**先驗**(基率)。 當事件很罕見時(低基率),即使檢測器很準,「陽性結果為真」的機率仍可能很低。
第 1 題小結:你的告警工具箱¶
凌晨三點,你被告警叫醒
│
▼
「系統掛了嗎?」
├─► 需要知道:正常失敗率 → 工具:Bernoulli(E[X], Var(X))
│
▼
「波動多大算異常?」
├─► 需要知道:失敗次數的分布 → 工具:Binomial
│
▼
「一失敗就告警?」
├─► 需要知道:第一次失敗何時發生 → 工具:Geometric
│
▼
「太敏感,累積 r 次呢?」
├─► 需要知道:第 r 次失敗何時發生 → 工具:Negative Binomial
│
▼
「哪種策略最好?」
├─► 工具:假設檢定(平衡誤報與漏報)
│
▼
「告警響了,系統真的壞了嗎?」
└─► 工具:Bayes' Theorem(從觀察反推狀態)
分布關係圖:
Bernoulli(p)
│
│ n 個獨立的和
▼
Binomial(n, p)
Bernoulli(p) → 等到第一次失敗 → Geometric(1-p)
│
│ r 個獨立的和
▼
Negative Binomial(r, 1-p)
第二部分:請求到達與批次處理¶
場景:工程師的爭論¶
你的團隊正在討論推論服務的架構。工程師 A 說:「我們應該用 Static Batching,等湊齊 8 個請求再一起送進 GPU。」工程師 B 反駁:「不對,Continuous Batching 更好,請求一來就處理。」
你的問題:哪種策略的吞吐量更高?延遲更低?
要回答這個問題,你首先需要理解「請求是怎麼到達的」。
第 2 題:批次處理策略比較¶
(a) 請求到達模型¶
3 分 ・ 大二
第一個問題:請求不是均勻到達的——有時候一秒內來了 300 個,有時候只有 150 個。這種「隨機到達」該怎麼描述?
你需要知道:建模請求到達的隨機過程
假設請求到達滿足以下條件:
- 獨立性:不同時段的到達互不影響
- 齊次性:每秒平均到達率 \(\lambda = 200\) 不變
- 稀疏性:極短時間內(如 1ms)最多到達 1 個請求
題目:
令 \(N(t)\) 為時間 \([0, t]\) 內到達的請求數。
- 推導 \(P(N(t) = k)\) 的公式
- 計算 \(E[N(t)]\) 和 \(\text{Var}(N(t))\)
- 若 \(\lambda = 200\),\(t = 1\) 秒,計算 \(P(N(1) \geq 250)\)
提示
把 \([0, t]\) 分成 \(n\) 個小區間,每個區間長度 \(t/n\)。當 \(n\) 很大時,每個小區間最多到達 1 個請求,機率約 \(\lambda t / n\)。這是 \(n\) 次 Bernoulli 試驗,成功機率 \(p = \lambda t / n\)。令 \(n \to \infty\)...
解答
-
把 \([0, t]\) 分成 \(n\) 個小區間,每個區間到達機率 \(p = \lambda t / n\)。
\(N(t) \approx B(n, \lambda t / n)\),當 \(n \to \infty\):
\[P(N(t) = k) = \lim_{n \to \infty} \binom{n}{k} \left(\frac{\lambda t}{n}\right)^k \left(1 - \frac{\lambda t}{n}\right)^{n-k} = \frac{(\lambda t)^k e^{-\lambda t}}{k!}\] -
\[E[N(t)] = \lambda t, \quad \text{Var}(N(t)) = \lambda t\]
(期望 = 變異數是這個分布的重要特徵)
-
\(\lambda t = 200\),求 \(P(N(1) \geq 250)\):
常態近似:\(N(1) \approx N(200, 200)\),\(\sigma = \sqrt{200} \approx 14.14\)
\[P(N(1) \geq 250) \approx 1 - \Phi\left(\frac{249.5 - 200}{14.14}\right) = 1 - \Phi(3.50) \approx 0.00023\]
這個計算有什麼用?
理解流量波動:即使平均 200 QPS,實際每秒的請求數會在 200 附近波動。標準差 \(\sqrt{200} \approx 14\),所以大部分時間在 \([172, 228]\) 之間。
這對容量規劃很重要:如果 GPU 只能處理 200 QPS,會有一定機率過載。
數學小結:你剛才發現了 Poisson 分布
單位時間內的隨機到達計數,數學上叫做 Poisson 分布,記作 \(N(t) \sim \text{Pois}(\lambda t)\)。
| 性質 | 公式 |
|---|---|
| PMF | \(P(N=k) = \frac{(\lambda t)^k e^{-\lambda t}}{k!}\),\(k = 0, 1, 2, \ldots\) |
| 期望值 | \(E[N] = \lambda t\) |
| 變異數 | \(\text{Var}(N) = \lambda t\)(期望 = 變異數!) |
| 可加性 | \(\text{Pois}(\lambda_1) + \text{Pois}(\lambda_2) = \text{Pois}(\lambda_1 + \lambda_2)\) |
進階:Poisson 極限定理¶
3 分 ・ 大三
你的服務有 1000 萬個潛在用戶,每個用戶每秒發請求的機率是 \(2 \times 10^{-5}\)。 理論上,每秒請求數應該是 \(\text{Binomial}(10^7, 2 \times 10^{-5})\)。
但問題是:\(\binom{10^7}{k}\) 根本算不動!
你需要知道:有沒有更簡單的近似方法?
題目:證明 Poisson 極限定理——當 \(n \to \infty\), \(p \to 0\), \(np \to \lambda\) 時:
證明
設 \(p_n = \lambda/n\),則:
當 \(n \to \infty\):
- \(\frac{n(n-1)\cdots(n-k+1)}{n^k} \to 1\)(因為 \(k\) 固定,\(n\) 很大)
- \(\left(1 - \frac{\lambda}{n}\right)^n \to e^{-\lambda}\)(經典極限)
- \(\left(1 - \frac{\lambda}{n}\right)^{-k} \to 1\)(因為 \(k\) 固定)
這個證明有什麼用?
直接用 Poisson(200) 就好——不用算 \(\binom{10^7}{k}\) 這種天文數字。
這就是為什麼「稀有事件計數」用 Poisson:
- 用戶很多(\(n\) 大)
- 每個用戶發請求機率很小(\(p\) 小)
- 但總數是穩定的 \(\lambda = np\)
實務經驗法則:當 \(n \geq 20\) 且 \(p \leq 0.05\) 時,Binomial 就可以用 Poisson 近似。
(b) Static Batching 等待時間¶
4 分 ・ 大三
工程師 A 的策略:等湊齊 \(n = 8\) 個請求,再一起送進 GPU 做 batch 推論。
你需要知道:「湊齊 \(n\) 個請求」平均要等多久?
這等於問:「第 \(n\) 個請求什麼時候到達?」
題目:
令 \(W_i\) 為第 \(i-1\) 個請求到達後,等到第 \(i\) 個請求的時間(即「請求間隔」)。
- 推導 \(W_i\) 的分布:\(P(W_i > t) = ?\)
- 令 \(T_n = W_1 + W_2 + \cdots + W_n\)(湊齊 \(n\) 個請求的總等待時間)。推導 \(T_n\) 的 PDF
- 計算 \(E[T_n]\) 和 \(\text{Var}(T_n)\)
- 若 \(\lambda = 200\),\(n = 8\),平均等待時間是多少?
提示
\(W_i > t\) 表示「時間 \(t\) 內沒有請求到達」,即 \(N(t) = 0\)。
解答
-
\(P(W_i > t) = P(N(t) = 0) = e^{-\lambda t}\)
這是 CDF 的補函數,所以 \(W_i\) 的 CDF 是 \(F_{W}(t) = 1 - e^{-\lambda t}\)
PDF:\(f_{W}(t) = \lambda e^{-\lambda t}\),\(t \geq 0\)
-
\(T_n = W_1 + \cdots + W_n\),各 \(W_i\) 獨立同分布。
用 MGF 或卷積可得:
\[f_{T_n}(t) = \frac{\lambda^n t^{n-1} e^{-\lambda t}}{(n-1)!}, \quad t \geq 0\] -
\(E[T_n] = n \cdot E[W] = \frac{n}{\lambda}\)
\(\text{Var}(T_n) = n \cdot \text{Var}(W) = \frac{n}{\lambda^2}\)
-
\(\lambda = 200\),\(n = 8\):
\[E[T_8] = \frac{8}{200} = 0.04 \text{ 秒} = 40 \text{ ms}\]
這個計算有什麼用?
評估 Static Batching 延遲:平均需要等 40ms 才能湊齊 8 個請求。這是「batching 帶來的額外延遲」,要加在推論時間之上。
權衡:batch size 越大,GPU 效率越高(吞吐量增加),但等待時間也越長(延遲增加)。
數學小結:你剛才發現了 Exponential 和 Gamma 分布
請求間隔(等到下一個請求)服從 Exponential 分布:\(W \sim \text{Exp}(\lambda)\)
| 性質 | 公式 |
|---|---|
| \(f(t) = \lambda e^{-\lambda t}\),\(t \geq 0\) | |
| CDF | \(F(t) = 1 - e^{-\lambda t}\) |
| 期望值 | \(E[W] = 1/\lambda\) |
| 變異數 | \(\text{Var}(W) = 1/\lambda^2\) |
| 無記憶性 | \(P(W > s+t \mid W > s) = P(W > t)\) |
\(n\) 個請求的總等待時間 服從 Gamma 分布:\(T_n \sim \text{Gamma}(n, \lambda)\)
| 性質 | 公式 |
|---|---|
| \(f(t) = \frac{\lambda^n t^{n-1} e^{-\lambda t}}{(n-1)!}\),\(t \geq 0\) | |
| 期望值 | \(E[T_n] = n/\lambda\) |
| 變異數 | \(\text{Var}(T_n) = n/\lambda^2\) |
| 與 Exponential 關係 | \(\text{Gamma}(n, \lambda) = \sum_{i=1}^n \text{Exp}(\lambda)\) |
進階挑戰:用 MGF 驗證 Gamma 分布¶
3 分 ・ 大三
你的同事質疑:「為什麼 \(n\) 個 Exponential 的和是 Gamma?你能證明嗎?」
你需要知道:MGF 的唯一性——分布由 MGF 唯一確定
題目:
- 推導 \(\text{Exponential}(\lambda)\) 的 MGF:\(M_X(t) = ?\)
- 設 \(S = X_1 + \cdots + X_n\),其中 \(X_i \stackrel{iid}{\sim} \text{Exp}(\lambda)\),求 \(M_S(t)\)
- 驗證這是 \(\text{Gamma}(n, \lambda)\) 的 MGF
提示
MGF 定義:\(M_X(t) = E[e^{tX}]\)。對 Exponential 分布,這是一個可積分的指數積分。
解答
Step 1:Exponential 的 MGF
當 \(t < \lambda\) 時,積分收斂:
Step 2:獨立和的 MGF
由於 \(X_1, \ldots, X_n\) 獨立,MGF 相乘:
Step 3:Gamma 的 MGF
\(\text{Gamma}(n, \lambda)\) 的 MGF 正是 \(\left(\frac{\lambda}{\lambda - t}\right)^n\),與上式相同。
由 MGF 唯一性定理,\(S \sim \text{Gamma}(n, \lambda)\)。\(\square\)
這個技巧有什麼用?
考試必備:MGF 是證明「和的分布」的標準工具。
| 原分布 | 和的分布 | MGF 相乘後 |
|---|---|---|
| \(n\) 個 \(\text{Exp}(\lambda)\) | \(\text{Gamma}(n, \lambda)\) | \(\left(\frac{\lambda}{\lambda-t}\right)^n\) |
| \(n\) 個 \(N(\mu, \sigma^2)\) | \(N(n\mu, n\sigma^2)\) | \(e^{n\mu t + n\sigma^2 t^2/2}\) |
| \(n\) 個 \(\text{Pois}(\mu)\) | \(\text{Pois}(n\mu)\) | \(e^{n\mu(e^t - 1)}\) |
比直接算卷積積分簡單得多!
© Continuous Batching¶
4 分 ・ 碩一
工程師 B 的策略:請求一來就處理,不等湊齊。這是經典的「排隊系統」。
你需要知道:Continuous Batching 的平均等待時間是多少?
題目:
建立 M/M/1 排隊模型: - 到達過程:Poisson,rate \(\lambda\) - 服務時間:Exponential,rate \(\mu\)(平均服務時間 \(1/\mu\))
- 定義利用率 \(\rho = \lambda / \mu\)。說明穩態存在的條件
- 推導穩態下系統中顧客數 \(L\) 的分布:\(P(L = k)\)
- 計算 \(E[L]\) 和平均等待時間 \(W\)(使用 Little's Law)
- 若 \(\lambda = 200\),\(\mu = 250\),計算 \(\rho\)、\(E[L]\) 和 \(W\)
解答
-
穩態條件:\(\rho = \lambda / \mu < 1\)
若 \(\rho \geq 1\),到達率 ≥ 服務率,隊列會無限增長。
-
穩態分布:
\[P(L = k) = (1 - \rho) \rho^k, \quad k = 0, 1, 2, \ldots\]這是 Geometric 分布!
-
期望隊列長度:
\[E[L] = \sum_{k=0}^{\infty} k (1-\rho) \rho^k = \frac{\rho}{1 - \rho}\]Little's Law:\(E[L] = \lambda \cdot W\)
\[W = \frac{E[L]}{\lambda} = \frac{\rho}{\lambda(1-\rho)} = \frac{1}{\mu - \lambda}\] -
\(\lambda = 200\),\(\mu = 250\):
\(\rho = 200/250 = 0.8\)
\(E[L] = 0.8 / 0.2 = 4\)
\(W = 1 / (250 - 200) = 1/50 = 0.02\) 秒 = 20 ms
這個計算有什麼用?
比較兩種策略:
| 策略 | 平均等待時間 | 說明 |
|---|---|---|
| Static Batching (\(n=8\)) | 40 ms | 等湊齊 batch |
| Continuous Batching | 20 ms | 排隊等服務 |
在這個設定下,Continuous Batching 延遲更低!
但注意:這沒考慮 batching 帶來的 GPU 效率提升。實際上 Static Batching 的有效 \(\mu\) 會更高。
(d) 穩態存在條件¶
3 分 ・ 大三
關鍵問題:排隊系統最怕的是 \(\rho \to 1\)。當利用率接近 100% 時會發生什麼?
題目:
- 當 \(\rho \to 1^-\) 時,\(E[L]\) 和 \(W\) 如何變化?
- 若要求平均等待時間 \(W \leq 50\) ms,\(\lambda = 200\),\(\mu\) 至少要多少?
- 說明「80% 利用率」法則的數學原因
解答
-
當 \(\rho \to 1^-\):
\[E[L] = \frac{\rho}{1-\rho} \to \infty$$ $$W = \frac{1}{\mu - \lambda} \to \infty\]系統會「爆掉」——隊列無限增長,延遲無限大。
-
\(W \leq 0.05\) 秒:
\[\frac{1}{\mu - 200} \leq 0.05 \Rightarrow \mu - 200 \geq 20 \Rightarrow \mu \geq 220\]服務率至少要 220 QPS(比到達率高 10%)。
-
80% 利用率法則:
\(\rho = 0.8\) 時,\(E[L] = 4\),\(W = 4/\lambda\)
\(\rho = 0.9\) 時,\(E[L] = 9\),\(W = 9/\lambda\)
\(\rho = 0.95\) 時,\(E[L] = 19\),\(W = 19/\lambda\)
結論:利用率從 80% 升到 95%,延遲增加近 5 倍!所以生產系統通常保持 \(\rho \leq 0.8\)。
這個計算有什麼用?
容量規劃:如果預期流量 \(\lambda = 200\),服務能力不能剛好 200——需要留餘裕。
業界經驗:\(\mu \geq 1.25 \lambda\)(即 \(\rho \leq 0.8\))是安全的設計。
(e) 策略選擇¶
4 分 ・ 碩一
最終決策:綜合考慮延遲和吞吐量,什麼情況下選 Static Batching,什麼情況下選 Continuous Batching?
題目:
假設: - Static Batching:batch size = 8,等待時間 \(T_8 \sim \text{Gamma}(8, \lambda)\),GPU 推論時間 50ms - Continuous Batching:M/M/1 模型,單次推論時間 100ms(因為沒有 batch,GPU 效率低)
- 計算兩種策略的「端到端延遲」(等待 + 推論)
- 計算兩種策略的「有效吞吐量」
- 推導「選擇 Static Batching」的條件
解答
-
端到端延遲:
Static Batching:\(E[T_8] + 50 = 40 + 50 = 90\) ms
Continuous Batching:\(W + 100 = 20 + 100 = 120\) ms
→ Static Batching 延遲更低!
-
有效吞吐量:
Static Batching:每 90ms 處理 8 個請求 → \(8/0.09 = 89\) QPS per GPU
Continuous Batching:每 120ms 處理 1 個請求 → \(1/0.12 = 8.3\) QPS per GPU
→ Static Batching 吞吐量高 10 倍!
-
選擇條件:
設 Static Batching 推論時間 \(t_s\),Continuous Batching 推論時間 \(t_c\)。
選 Static 當且僅當:\(E[T_n] + t_s < W + t_c\)
即:\(\frac{n}{\lambda} + t_s < \frac{1}{\mu - \lambda} + t_c\)
當 \(t_c \gg t_s\)(batch 效率提升顯著)或 \(\lambda\) 很大(等待時間短)時,選 Static Batching。
這個計算有什麼用?
架構決策:
- 低負載(\(\lambda\) 小):Continuous Batching 更好,因為等待時間長
- 高負載(\(\lambda\) 大):Static Batching 更好,因為 batch 效率提升顯著
實際上,現代推論框架(如 vLLM)使用「動態 batching」——結合兩者優點。
第 2 題小結:你的批次處理工具箱¶
「請求怎麼到達?」
├─► 工具:Poisson 分布(計數)
│
▼
「請求間隔多長?」
├─► 工具:Exponential 分布(等待時間)
│
▼
「湊齊 n 個要等多久?」
├─► 工具:Gamma 分布(n 個 Exponential 的和)
│
▼
「排隊等服務要多久?」
├─► 工具:M/M/1 排隊論
│
▼
「系統什麼時候爆掉?」
└─► 工具:利用率分析(ρ < 1 穩態條件)
分布關係圖:
第三部分:響應時間與 SLO 設計¶
場景:PM 問你「P99 延遲是多少?」¶
產品經理拿著合約來找你:「客戶要求我們承諾 P99 延遲不超過 10 秒,我們做得到嗎?」
你打開 Grafana,看到響應時間的分布圖——有些請求 1 秒就完成,有些要 5 秒,偶爾還有超過 10 秒的。
你的問題:響應時間的 P99 是多少?該怎麼設定超時閾值?
第 3 題:響應時間分布分析¶
(a) 響應時間分布¶
3 分 ・ 大二
第一個問題:響應時間不是固定的——有時快、有時慢。這種「隨機等待」該怎麼描述?
你需要知道:建模響應時間的分布
觀察到響應時間有一個重要特性:無記憶性——已經等了 1 秒,接下來還要等多久,跟「沒等過」是一樣的。(GPU 不會因為你等久了就加速處理)
題目:
假設單次響應時間 \(T\) 服從參數為 \(\lambda\) 的分布,滿足無記憶性:
- 從無記憶性推導 \(P(T > t)\) 的形式
- 若平均響應時間 \(E[T] = 2\) 秒,求 \(\lambda\)
- 計算 \(P(T > 5)\)(響應時間超過 5 秒的機率)
提示
令 \(g(t) = P(T > t)\)。無記憶性意味著 \(g(s+t) = g(s) \cdot g(t)\)。什麼函數滿足這個性質?
解答
-
令 \(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)\)
-
\(E[T] = \frac{1}{\lambda} = 2\) 秒 \(\Rightarrow \lambda = 0.5\) /秒
-
\(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\):
數學小結: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\)。
- 推導 \(S_n\) 的 PDF
- 若 \(n = 100\)(生成 100 個 token),\(\lambda = 50\)(每秒生成 50 個 token),計算 \(E[S_n]\) 和 \(\text{Var}(S_n)\)
- 計算 \(P(S_{100} > 3)\)(生成 100 token 超過 3 秒的機率)
解答
-
\(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\] -
\(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{ 秒}\] -
常態近似:\(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\)
- 求 \(M'(t)\),代入 \(t=0\) 得 \(E[X]\)
- 求 \(M''(t)\),代入 \(t=0\) 得 \(E[X^2]\)
- 計算 \(\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]\)
Step 2:求 \(E[X^2]\)
Step 3:求 \(\text{Var}(X)\)
這個技巧有什麼用?
考試必備:很多題目會要求「用 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\)。
- 用全期望公式計算 \(E[S]\)
- 用全變異公式計算 \(\text{Var}(S)\)
- 比較 (b) 中「\(n\) 固定」和這裡「\(N\) 隨機」的變異數差異
提示
全期望:\(E[S] = E[E[S|N]]\)
全變異:\(\text{Var}(S) = E[\text{Var}(S|N)] + \text{Var}(E[S|N])\)
解答
-
全期望:
\[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{ 秒}\] -
全變異:
\[\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{ 秒}\] -
比較:
模型 \(\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 分 ・ 碩一
回答 PM 的問題:P99 延遲是多少?
你需要知道:求分布的分位數
題目:
使用 © 的模型(\(E[S] = 2\) 秒,\(\text{Var}(S) = 0.08\) 秒²),假設 \(S\) 近似 Normal。
- 計算 P50(中位數)、P90、P99 延遲
- 若客戶要求 P99 ≤ 10 秒,我們能承諾嗎?
- 若 P99 實際是 3 秒,反推 \(\sigma\) 是多少?
解答
-
\(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 秒
-
P99 = 2.65 秒 ≪ 10 秒,可以承諾!
但要注意:這是「正常情況」。系統過載、GPU 故障時可能更高。
-
若 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 分 ・ 大三
PM 追問:「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)}\) 為順序統計量。
- 推導最大值 \(T_{(n)}\) 的 CDF:\(F_{T_{(n)}}(t) = ?\)
- 若 \(T_i \sim \text{Exp}(\lambda)\),求 \(E[T_{(n)}]\) 並與 \(F^{-1}(0.99)\) 比較
- 推導第 \(k\) 個順序統計量 \(T_{(k)}\) 的 PDF(一般公式)
- 用順序統計量解釋:為什麼「100 個樣本的最大值」不等於「P99」?
解答
Step 1:\(T_{(n)}\) 的 CDF
\(T_{(n)} \leq t\) 意味著所有 \(T_i\) 都 \(\leq t\):
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}\)
使用公式(或查表):
其中 \(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(一般公式)
這可以用組合論推導:第 \(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 題小結:你的 SLO 設計工具箱¶
「單次響應時間分布?」
├─► 工具:Exponential(無記憶假設)
│
▼
「多步驟的總時間?」
├─► 工具:Gamma(n 個 Exponential 的和)
│
▼
「步數也是隨機的?」
├─► 工具:全期望、全變異公式
│
▼
「P99 延遲是多少?」
└─► 工具:Normal 近似、分位數計算
第四部分:計費與成本分析¶
場景:財務部的靈魂拷問¶
財務長看著帳單皺眉:「為什麼實際支出總比預估高 5%?而且每個月波動這麼大,我怎麼做預算?」
你解釋說 API 是按 token 計費的,但每次請求的 token 數不固定...
你的問題:如何預測月度成本?波動從哪裡來?
第 4 題:Token 計費模型¶
(a) Token 數量分布¶
3 分 ・ 大二
第一個問題:每次請求產生多少 token?
你需要知道:建模 token 數量的分布
假設每次請求的輸出 token 數 \(T\) 服從指數分布,平均 \(E[T] = 1000\) tokens。
題目:
- 求 \(T\) 的參數 \(\lambda\)
- 計算 \(P(T > 2000)\)(超過 2000 tokens 的機率)
- API 按 100 tokens 為單位向上取整計費,令 \(W = 100 \cdot \lceil T/100 \rceil\)。計算 \(P(W = 100)\)、\(P(W = 200)\)
解答
-
\(E[T] = \frac{1}{\lambda} = 1000 \Rightarrow \lambda = 0.001\)
-
\(P(T > 2000) = e^{-0.001 \times 2000} = e^{-2} \approx 0.135\)
-
\(W = 100\) 當且僅當 \(0 < T \leq 100\):
\[P(W = 100) = P(T \leq 100) = 1 - e^{-0.1} \approx 0.095\]\(W = 200\) 當且僅當 \(100 < T \leq 200\):
\[P(W = 200) = e^{-0.1} - e^{-0.2} \approx 0.086\]
這個計算有什麼用?
理解計費結構:向上取整意味著「實際支付 > 實際使用」,這就是為什麼帳單比預期高。
初步診斷:13.5% 的請求會超過 2000 tokens,這些「長尾請求」會顯著拉高平均成本。
數學小結:你剛才用了 Exponential 分布建模
Token 數量用 Exponential 分布 建模,是因為它的「無記憶性」:
- 已經生成了 500 tokens,「還要再生成多少」的分布跟「從頭開始」一樣
- 這符合 LLM 逐 token 生成的特性(簡化假設)
| 性質 | 公式 |
|---|---|
| \(f(t) = \lambda e^{-\lambda t}\),\(t \geq 0\) | |
| CDF | \(F(t) = 1 - e^{-\lambda t}\) |
| 期望值 | \(E[T] = 1/\lambda\) |
| 變異數 | \(\text{Var}(T) = 1/\lambda^2\) |
| 無記憶性 | \(P(T > s+t \mid T > s) = P(T > t)\) |
(b) 取整損失分析¶
4 分 ・ 大三
關鍵問題:向上取整導致的「額外支出」是多少?
你需要知道:比較 \(E[W]\) 和 \(E[T]\)
題目:
- 證明取整後的計費金額 \(W\) 服從某種離散分布,並推導其 PMF
- 計算 \(E[W]\)
- 計算取整損失率 \(\frac{E[W] - E[T]}{E[T]}\)
提示
令 \(q = e^{-0.1}\),觀察 \(P(W = 100k)\) 的形式。
解答
-
\(P(W = 100k) = P(100(k-1) < T \leq 100k) = e^{-0.1(k-1)} - e^{-0.1k}\)
\(= e^{-0.1(k-1)}(1 - e^{-0.1}) = (1-q) q^{k-1}\),其中 \(q = e^{-0.1} \approx 0.905\)
這是 Geometric 分布(乘以 100)!
-
\(E[W] = 100 \cdot E[\text{Geom}(1-q)] = \frac{100}{1-q} = \frac{100}{1 - e^{-0.1}} \approx 1052\) tokens
-
取整損失率 = \(\frac{1052 - 1000}{1000} = 5.2\%\)
這個計算有什麼用?
解釋帳單差異:這 5.2% 就是財務長問的「為什麼比預估高」的原因!
談判策略:如果能將計費單位從 100 改為 50,取整損失會減半。
| 計費單位 | 取整損失率 |
|---|---|
| 100 tokens | 5.2% |
| 50 tokens | 2.6% |
| 10 tokens | 0.5% |
數學小結:離散化產生了 Geometric 分布
當連續的 Exponential 分布被「向上取整」時,離散化後的結果服從 Geometric 分布(縮放版)。
這個現象叫做「離散化」:
- 原始分布:\(T \sim \text{Exp}(\lambda)\)(連續)
- 離散化後:\(W/\Delta \sim \text{Geom}(1 - e^{-\lambda\Delta})\)(離散)
| 性質 | 公式 |
|---|---|
| PMF | \(P(W = k\Delta) = (1-q) q^{k-1}\),\(q = e^{-\lambda\Delta}\) |
| 期望值 | \(E[W] = \frac{\Delta}{1-q}\) |
| 取整損失 | \(\frac{E[W] - E[T]}{E[T]} = \frac{\lambda\Delta/2}{1 - e^{-\lambda\Delta}} - \frac{1}{2} \approx \frac{\lambda\Delta}{2}\)(小 \(\Delta\)) |
© 每秒總成本分布¶
4 分 ・ 碩一
整合問題:每秒有 \(N \sim \text{Pois}(200)\) 個請求,每個請求的計費金額 \(W_i\) 獨立同分布。令 \(C = \sum_{i=1}^{N} W_i\) 為每秒總成本。
你需要知道:「隨機數量的隨機金額」加總的分布
題目:
- 說明 \(C\) 服從什麼分布(名稱即可)
- 用全期望公式計算 \(E[C]\)
- 用全變異公式計算 \(\text{Var}(C)\)
解答
-
\(C\) 服從 複合 Poisson 分布(Compound Poisson)
-
全期望:
\[E[C] = E[E[C|N]] = E[N \cdot E[W]] = \lambda \cdot E[W] = 200 \times 1052 = 210400 \text{ tokens/秒}\] -
全變異:
\[\text{Var}(C) = E[\text{Var}(C|N)] + \text{Var}(E[C|N])\]\[= E[N] \cdot \text{Var}(W) + E[W]^2 \cdot \text{Var}(N)\]\[= \lambda \cdot \text{Var}(W) + E[W]^2 \cdot \lambda = \lambda \cdot E[W^2]\](需要計算 \(E[W^2]\),這裡省略細節)
數學小結:複合 Poisson 分布
當「事件數」服從 Poisson、「每次事件的量」獨立同分布時,總量服從 複合 Poisson 分布。
| 性質 | 公式 |
|---|---|
| 全期望 | \(E[C] = \lambda \cdot E[W]\) |
| 全變異 | \(\text{Var}(C) = \lambda \cdot E[W^2]\) |
這在保險、金融、網路流量分析中非常常見。
進階:全變異公式推導¶
3 分 ・ 碩一
財務長追問:「成本波動是從哪來的?是請求數量不穩定,還是單次金額不穩定?」
你需要知道:如何分解總變異數的來源?
題目:推導全變異公式(Law of Total Variance):
並說明每一項的物理意義。
推導
起點:\(\text{Var}(C) = E[C^2] - (E[C])^2\)
Step 1:展開 \(E[C^2]\)
由於 \(E[C^2|N] = \text{Var}(C|N) + (E[C|N])^2\),得:
Step 2:展開 \((E[C])^2\)
Step 3:相減
這個推導有什麼用?
物理意義:
-
第一項 \(E[\text{Var}(C|N)]\):「給定請求數 \(N\),成本的波動」的期望
- 這是**單次金額的變異性**貢獻
- 對應:\(E[N] \cdot \text{Var}(W)\)
-
第二項 \(\text{Var}(E[C|N])\):「給定請求數 \(N\),成本期望值」的波動
- 這是**請求數量的變異性**貢獻
- 對應:\(\text{Var}(N) \cdot (E[W])^2\)
實務決策:比較兩項大小,決定優化方向
- 第一項大 → 優化單次金額的穩定性(如:壓縮輸出長度)
- 第二項大 → 優化流量的穩定性(如:流量平滑、限流)
第 5 題:月度成本預測¶
場景延續:財務長聽完你解釋「5.2% 取整損失」後,點點頭:「好,那下個月的 API 成本會落在什麼範圍?我需要一個 95% 信賴區間來做預算。」
你的問題:如何從「每秒成本」推算「月度成本」的信賴區間?
(a) 日成本分布¶
3 分 ・ 大三
往上累積:一天有 86400 秒,日成本 \(C_{day} = \sum_{t=1}^{86400} C_t\)。
你需要知道:大量獨立隨機變數的和近似什麼分布?
題目:
- 用中央極限定理說明 \(C_{day}\) 的近似分布
- 計算 \(E[C_{day}]\) 和 \(\text{Var}(C_{day})\)(假設 \(E[C] = 210400\),\(\text{Var}(C) = 4.5 \times 10^{10}\))
- 日成本的 95% 信賴區間是多少?
解答
-
由 CLT,\(C_{day} \approx N(\mu_{day}, \sigma^2_{day})\)
-
\(E[C_{day}] = 86400 \times 210400 = 1.82 \times 10^{10}\) tokens
\(\text{Var}(C_{day}) = 86400 \times 4.5 \times 10^{10} = 3.89 \times 10^{15}\)
\(\sigma_{day} = 6.2 \times 10^{7}\) tokens
-
95% CI = \(\mu \pm 1.96\sigma = [1.70 \times 10^{10}, 1.94 \times 10^{10}]\) tokens
這個計算有什麼用?
預算規劃:日成本約 182 億 tokens,波動約 6.2 億(約 3.4%)。
換算成美元(假設 $0.01/1K tokens):日均 $182K,波動 $6.2K。
數學小結:中央極限定理 (CLT)
中央極限定理 是統計學最重要的定理之一:
無論原始分布是什麼,大量獨立同分布隨機變數的**和**近似 Normal 分布。
設 \(X_1, X_2, \ldots, X_n\) iid,\(E[X_i] = \mu\),\(\text{Var}(X_i) = \sigma^2\),則:
實用形式:\(\sum_{i=1}^n X_i \approx N(n\mu, n\sigma^2)\)
| 應用場景 | 原始分布 | CLT 近似 |
|---|---|---|
| 日成本 | 複合 Poisson | Normal |
| 月成本 | Normal 的和 | Normal |
| 請求數 | Poisson | Normal(當 \(\lambda\) 大) |
(b) 月成本信賴區間¶
3 分 ・ 大三
最終答案:月成本 \(C_{month} = \sum_{d=1}^{30} C_{day,d}\)。
題目:
- 計算 \(E[C_{month}]\) 和 \(\sigma_{month}\)
- 給財務長一個「95% 信賴區間」的預算範圍
- 為什麼「月波動率」比「日波動率」小?
解答
-
\(E[C_{month}] = 30 \times E[C_{day}] = 5.46 \times 10^{11}\) tokens
\(\text{Var}(C_{month}) = 30 \times \text{Var}(C_{day})\)
\(\sigma_{month} = \sqrt{30} \times \sigma_{day} = 3.4 \times 10^{8}\) tokens
-
95% CI = \([5.39 \times 10^{11}, 5.53 \times 10^{11}]\) tokens
換算:月預算 $5.46M ± $67K(約 1.2% 波動)
-
波動率下降:\(\frac{\sigma_{month}}{E[C_{month}]} = \frac{\sqrt{30} \sigma_{day}}{30 \cdot \mu_{day}} = \frac{1}{\sqrt{30}} \cdot \frac{\sigma_{day}}{\mu_{day}}\)
月波動率 = 日波動率 / \(\sqrt{30}\) ≈ 日波動率 / 5.5
這是「大數法則」的效果——平均後波動變小。
這個計算有什麼用?
回答財務長的問題:月成本約 $5.46M,95% 的月份落在 $5.39M 到 $5.53M 之間。
預算建議:設定預算為 $5.6M(上限 + 緩衝),超支機率 < 2.5%。
進階挑戰:為什麼財務喜歡 MAD?¶
3 分 ・ 大二
財務長說:「標準差我懂,但能不能給我一個更直觀的『平均偏離預算多少』的數字?」
你想到:Mean Absolute Deviation (MAD) = \(E[|X - \mu|]\)
你需要知道:MAD 與標準差的數學關係
題目:假設月成本 \(C \sim N(\mu, \sigma^2)\)。
- 利用 Normal 的對稱性,計算 \(E[|C - \mu|]\)
- 證明:對 Normal 分布,MAD \(= \sigma \sqrt{2/\pi} \approx 0.798\sigma\)
- 若 \(\sigma = 1.2\) 億 tokens(約 $67K 美元),MAD 是多少?
- 給財務長一個直觀的說法:「平均每月偏離預算 ___ 萬美元」
- 討論:MAD vs 標準差,哪個對離群值更穩健?
解答
Step 1:計算 \(E[|C - \mu|]\)
令 \(Z = (C - \mu)/\sigma \sim N(0, 1)\),則 \(|C - \mu| = \sigma |Z|\)。
由對稱性,\(|Z|\) 相當於 \(Z\) 的絕對值(半常態分布):
令 \(u = z^2/2\),\(du = z\,dz\):
Step 2:MAD 公式
Step 3:數值計算
\(\sigma = 1.2\) 億 tokens = $67K:
Step 4:給財務長的說法
「平均每月的實際成本偏離預算約 5.3 萬美元。」
(比「標準差 6.7 萬美元」更直觀!)
Step 5:穩健性比較
| 指標 | 對離群值的敏感度 | 解釋 |
|---|---|---|
| 標準差 | 高(平方放大) | 一個極端值會大幅拉高 |
| MAD | 中等(絕對值) | 受影響較小 |
| 中位數絕對離差 | 低 | 最穩健 |
財務喜歡 MAD 的原因: - 單位直觀(美元) - 偶爾的極端成本不會過度影響 - 與預算偏離的「平均感受」更貼近
數學小結:絕對離差
| 分布 | \(E[|X - \mu|]\) 公式 | |------|-------------------| | Normal | \(\sigma \sqrt{2/\pi} \approx 0.798\sigma\) | | Exponential | \(2/\lambda \cdot e^{-1} \approx 0.736 / \lambda\) | | Uniform(a,b) | \((b-a)/4\) |
用途: - 財務報表中的「平均偏離」 - 異常檢測中的穩健距離度量 - 比標準差更直觀的波動描述
第 4-5 題小結:你的成本分析工具箱¶
「為什麼帳單比預期高 5%?」
│
├─► 單次 token 數是隨機的
│ └─► 工具:Exponential 分布
│
▼
「取整計費造成多少損失?」
│
├─► 離散化後的分布
│ └─► 工具:Geometric 分布(離散化 Exponential)
│
▼
「每秒總成本怎麼算?」
│
├─► 隨機數量 × 隨機金額
│ └─► 工具:複合 Poisson 分布、全期望/全變異
│
▼
「日成本/月成本的分布?」
│
├─► 大量隨機變數的和
│ └─► 工具:中央極限定理 → Normal 近似
│
▼
「95% 信賴區間是多少?」
│
└─► 工具:Normal 分位數計算
分布轉換鏈:
第五部分:GPU 叢集與可靠性¶
場景:老闆的靈魂拷問¶
「需要幾張 A100?」老闆盯著你。
你正準備解釋「要看流量、模型大小、batch size...」,老闆揮揮手打斷:「假設尖峰 200 QPS,給我一個數字。還有,別忘了 GPU 會壞掉。」
你深吸一口氣。這個問題聽起來簡單,但背後藏著三個子問題:
- 一張 GPU 能處理多少請求?(會波動!)
- 需要多少張才能「保證」處理 200 QPS?
- 加上故障冗餘後,總共要幾張?
你的問題:如何用機率模型回答這些問題?
第 6 題:GPU 容量規劃¶
場景:老闆的靈魂拷問¶
「需要幾張 A100?」老闆盯著你。
「呃...要看流量...」你開始冒汗。
「假設尖峰 200 QPS,給我一個數字。還有,別忘了 GPU 會壞掉。」
在回答這個問題之前,你先要理解:請求是怎麼分配到各 GPU 的?
(a) 負載均衡的數學基礎¶
3 分 ・ 大二
在討論單 GPU 處理能力之前,先來看請求是怎麼分配的。
你的負載均衡器使用「隨機分配」:每個請求獨立、**等機率**地分配到 \(m\) 張 GPU 之一。
你需要知道:Uniform 分布——「等機率」的數學表達
題目:假設在 10 分鐘的觀測窗口內,請求到達時間 \(U\) 均勻分布在 \([0, 10]\) 分鐘。
- 寫出 \(U\) 的 PDF、CDF、期望、變異數
- 求「前 5 分鐘到達的請求比例」的期望值
- 若 \(n = 1000\) 個請求獨立到達,「前 5 分鐘到達的請求數」\(X\) 服從什麼分布?
- 計算 \(P(X > 550)\)(前半時間到達超過 55% 的請求)
解答
Step 1:Uniform 分布性質
\(U \sim \text{Uniform}(0, 10)\)
| 性質 | 公式 | 本題數值 |
|---|---|---|
| \(f(u) = \frac{1}{b-a} = \frac{1}{10}\) | \(0 \leq u \leq 10\) | |
| CDF | \(F(u) = \frac{u-a}{b-a} = \frac{u}{10}\) | |
| 期望 | \(E[U] = \frac{a+b}{2} = 5\) | 分鐘 |
| 變異數 | \(\text{Var}(U) = \frac{(b-a)^2}{12} = \frac{100}{12} \approx 8.33\) |
Step 2:前 5 分鐘的機率
\(P(U \leq 5) = F(5) = \frac{5}{10} = 0.5\)
期望比例 = 50%
Step 3:前 5 分鐘到達的請求數
每個請求獨立,到達前 5 分鐘的機率是 0.5。
\(X \sim \text{Binomial}(1000, 0.5)\)
Step 4:計算 \(P(X > 550)\)
\(E[X] = 500\),\(\text{Var}(X) = 250\),\(\sigma = 15.81\)
\(P(X > 550) \approx P\left(Z > \frac{550 - 500}{15.81}\right) = P(Z > 3.16) \approx 0.0008\)
前半時間收到超過 55% 請求的機率只有 0.08%——負載很均衡!
這個計算有什麼用?
負載均衡評估:Uniform 分布意味著「隨機到達」,是理想情況。
實際中可能有: - 尖峰時段:到達不均勻 → 需要更多 buffer - 批次請求:某些時段集中 → 需要排隊機制
數學小結:Uniform 分布
| 性質 | 公式 |
|---|---|
| \(f(x) = \frac{1}{b-a}\),\(a \leq x \leq b\) | |
| CDF | \(F(x) = \frac{x-a}{b-a}\) |
| 期望 | \(E[X] = \frac{a+b}{2}\) |
| 變異數 | \(\text{Var}(X) = \frac{(b-a)^2}{12}\) |
用途:建模「在區間內等機率」的隨機事件(到達時間、隨機分配)。
(b) 單 GPU 處理能力¶
3 分 ・ 大二
第一個子問題:一張 GPU 每秒能處理多少請求?
直覺上你可能會說「50 QPS」,但實際情況是:有時候 45,有時候 55——因為每個請求的複雜度不同、GPU 排程也有隨機性。
你需要知道:如何建模「會波動」的處理能力?
假設每張 GPU 每秒能處理的請求數 \(C_i\) 服從 Poisson 分布,\(C_i \sim \text{Pois}(\mu)\),\(\mu = 50\) QPS。
題目:
- 為什麼用 Poisson 建模處理能力?
- 計算 \(P(C_i < 40)\)(某秒處理能力不足 40 的機率)
- 若有 \(m\) 張 GPU,總處理能力 \(C = \sum_{i=1}^m C_i\) 服從什麼分布?
解答
-
Poisson 的合理性:
- 處理能力受隨機因素影響(請求複雜度、排隊、快取)
- 期望 = 變異數符合「適度波動」的特性
- 處理事件可視為「單位時間內完成的獨立任務數」
-
\(C_i \sim \text{Pois}(50)\),常態近似 \(C_i \approx N(50, 50)\)
\(P(C_i < 40) \approx \Phi\left(\frac{39.5 - 50}{\sqrt{50}}\right) = \Phi(-1.48) \approx 0.069\)
-
Poisson 可加性:\(C = \sum_{i=1}^m C_i \sim \text{Pois}(m\mu) = \text{Pois}(50m)\)
這個計算有什麼用?
評估單 GPU 風險:即使平均 50 QPS,約 7% 的時間處理能力會低於 40。
多 GPU 的好處:加 GPU 不只是線性增加容量,還能降低波動的相對影響。
數學小結:Poisson 分布的可加性
Poisson 分布 有一個重要性質:獨立 Poisson 的和仍是 Poisson。
若 \(X_1 \sim \text{Pois}(\lambda_1)\),\(X_2 \sim \text{Pois}(\lambda_2)\),且獨立,則:
| 性質 | 公式 |
|---|---|
| 可加性 | \(\sum_{i=1}^m \text{Pois}(\lambda_i) = \text{Pois}\left(\sum_{i=1}^m \lambda_i\right)\) |
| 期望 | \(E[X_1 + X_2] = \lambda_1 + \lambda_2\) |
| 變異數 | \(\text{Var}(X_1 + X_2) = \lambda_1 + \lambda_2\) |
這讓 \(m\) 張 GPU 的總處理能力計算變得簡單。
進階:Poisson MGF 可加性¶
2 分 ・ 大三
上面說「獨立 Poisson 的和仍是 Poisson」,但這真的對嗎?
你需要知道:如何嚴格證明這個性質?
題目:使用動差生成函數(MGF)證明:若 \(C_i \sim \text{Pois}(\mu)\) 獨立,則 \(C = \sum_{i=1}^m C_i \sim \text{Pois}(m\mu)\)
證明
Step 1:Poisson 分布的 MGF
設 \(X \sim \text{Pois}(\lambda)\),其 MGF 為:
Step 2:利用獨立性
對於獨立隨機變數,和的 MGF = 各自 MGF 的乘積:
Step 3:識別分布
\(e^{m\mu(e^t - 1)}\) 正是 \(\text{Pois}(m\mu)\) 的 MGF。
由 MGF 唯一決定分布,故 \(C \sim \text{Pois}(m\mu)\)。\(\square\)
這個證明有什麼用?
MGF 技巧的威力:不用做複雜的卷積計算,只需相乘 MGF 再識別分布。
容量規劃的保證:5 張 GPU 的總處理能力 \(\sim \text{Pois}(250)\),可以直接套用單一 Poisson 的性質。
© GPU 數量計算¶
4 分 ・ 大三
第二個子問題:知道了單 GPU 的處理能力分布,接下來要回答老闆的核心問題。
直覺上,200 QPS 需要 \(200/50 = 4\) 張 GPU。但這忽略了波動!
你需要知道:需要多少「餘裕」才能以高機率滿足需求?
題目:
- 設需求為 \(P(C \geq 200) \geq 0.99\),推導 \(m\) 的下界
- 求滿足條件的最小 \(m\)
- 說明為什麼不能剛好用 4 張(\(4 \times 50 = 200\))
解答
-
\(C \sim \text{Pois}(50m)\),常態近似 \(C \approx N(50m, 50m)\)
需要 \(P(C < 200) \leq 0.01\)
\[\Phi\left(\frac{200 - 50m}{\sqrt{50m}}\right) \leq 0.01\]\[\frac{200 - 50m}{\sqrt{50m}} \leq -2.33\] -
解不等式:\(200 - 50m \leq -2.33\sqrt{50m}\)
令 \(x = \sqrt{m}\):\(200 - 50x^2 \leq -2.33\sqrt{50} \cdot x\)
\(50x^2 - 16.5x - 200 \geq 0\)
解得 \(x \geq 2.13\),即 \(m \geq 4.54\)
最小 \(m = 5\) 張 GPU
-
為什麼不能用 4 張:
\(m = 4\) 時,\(C \sim \text{Pois}(200)\),\(P(C < 200) \approx 0.5\)
一半時間處理能力不足!需要餘裕來應對波動。
這個計算有什麼用?
回答老闆的第一個問題:需要 5 張 GPU,不是 4 張。
一般化公式:要以 \(1-\alpha\) 機率滿足需求 \(D\),需要:
其中 \(z_\alpha\) 是標準常態的 \(\alpha\) 分位數。
| 可靠性目標 | \(z_\alpha\) | 需要的 GPU |
|---|---|---|
| 90% | 1.28 | 5 |
| 99% | 2.33 | 5 |
| 99.9% | 3.09 | 6 |
(d) 故障冗餘設計¶
4 分 ・ 碩一
第三個子問題:老闆補了一句「別忘了 GPU 會壞掉」。
如果 5 張 GPU 中有 1 張故障,剩下 4 張的處理能力平均只有 200 QPS——回到「一半時間不夠」的窘境。
你需要知道:考慮故障後,需要多少張才能「幾乎肯定」有足夠的正常 GPU?
題目:
令 \(F\) 為故障 GPU 數量,每張獨立以機率 \(p_f = 0.05\) 故障。
- 證明 \(F \sim B(m, p_f)\)
- 若要「以 99.9% 機率至少有 5 張正常運作」,求最小 \(m\)
- 說明「N+K 冗餘」策略的數學依據
解答
-
每張 GPU 獨立以機率 \(p_f\) 故障,故 \(F \sim B(m, p_f)\)
-
需要 \(P(F \leq m - 5) \geq 0.999\)
試 \(m = 6\):\(P(F \leq 1) = (0.95)^6 + 6(0.05)(0.95)^5 = 0.967\) ✗
試 \(m = 7\):\(P(F \leq 2) = \sum_{k=0}^{2} \binom{7}{k}(0.05)^k(0.95)^{7-k} = 0.996\) ✗
試 \(m = 8\):\(P(F \leq 3) = 0.9998\) ✓
最小 \(m = 8\) 張 GPU
-
N+K 冗餘:需要 N=5 張,實際配置 N+3=8 張。
冗餘 K=3 張能容忍最多 3 張同時故障。
一般而言,K 滿足 \(P(F \leq K) \geq 1 - \alpha\)。
這個計算有什麼用?
最終回答老闆:「需要 8 張 A100。」
| 計算階段 | 結果 | 說明 |
|---|---|---|
| 理想情況 | 4 張 | \(200 / 50 = 4\) |
| 考慮波動 | 5 張 | 99% 可靠性 |
| 考慮故障 | 8 張 | 99.9% 可用性 |
冗餘成本:多 3 張 GPU 換取 99.9% 可用性,值不值得由業務決定。
數學小結:Binomial 分布的可靠性應用
可靠性工程 中常用 Binomial 分布建模「\(m\) 個元件中有幾個故障」。
若每個元件獨立以機率 \(p_f\) 故障,故障數 \(F \sim B(m, p_f)\)。
| 概念 | 公式 |
|---|---|
| 系統可用 | \(P(\text{正常} \geq N) = P(F \leq m - N)\) |
| N+K 冗餘 | 配置 \(m = N + K\) 個元件 |
| 所需冗餘 K | \(P(F \leq K) \geq 1 - \alpha\) 的最小 K |
常見冗餘策略: - N+1:容忍 1 個故障(適用低故障率) - N+2:容忍 2 個故障(生產環境常用) - 2N:完全備援(關鍵系統)
第 6 題小結:你的容量規劃工具箱¶
「需要幾張 GPU?」
│
├─► 問題 1:單 GPU 處理能力如何?
│ └─► 工具:Poisson 分布(建模波動)
│
▼
「平均 50 QPS,但會波動」
│
├─► 問題 2:需要多少張才能「保證」200 QPS?
│ └─► 工具:Poisson 可加性 + 常態近似
│
▼
「需要 5 張(不是 4 張!)」
│
├─► 問題 3:考慮故障冗餘呢?
│ └─► 工具:Binomial 分布(故障計數)
│
▼
「最終答案:8 張 GPU」
教訓:
- 「平均值」騙人——波動很重要
- 4 張變 5 張:應對 隨機波動(+25%)
- 5 張變 8 張:應對 故障冗餘(+60%)
- 實際配置 = 理想配置 × 2
第六部分:進階主題¶
第 7 題:二元常態與相關性分析¶
場景:奇怪的相關性
你在 Grafana 上盯著兩條曲線——響應時間和錯誤率。
「奇怪,每次響應時間飆高的時候,錯誤率也跟著上升...」你喃喃自語。
同事湊過來:「這是巧合嗎?還是有因果關係?」
你想了想:「不一定是因果,但可能有**相關性**。如果能量化這個關係,也許可以用響應時間來**預警**錯誤率即將超標。」
你的問題:響應時間和錯誤率之間,有沒有數學上可量化的關聯?能不能用一個來預測另一個?
(a) 相關係數估計¶
3 分 ・ 大三
第一個問題:如何量化「兩個變數一起變動」的程度?
你需要知道:描述兩個變數聯合分布的數學工具
假設某時段的(平均響應時間 \(X\), 錯誤率 \(Y\))服從二元常態分布。
題目:
- 寫出二元常態的聯合 PDF
- 從 \(n = 100\) 組觀測計算樣本相關係數 \(\hat{\rho}\)
- 說明 \(\rho = 0\) 與「\(X\)、\(Y\) 獨立」的關係
解答
-
聯合 PDF:
\[f_{X,Y}(x,y) = \frac{1}{2\pi\sigma_X\sigma_Y\sqrt{1-\rho^2}} \exp\left(-\frac{Q}{2(1-\rho^2)}\right)\]其中 \(Q = \left(\frac{x-\mu_X}{\sigma_X}\right)^2 - 2\rho\left(\frac{x-\mu_X}{\sigma_X}\right)\left(\frac{y-\mu_Y}{\sigma_Y}\right) + \left(\frac{y-\mu_Y}{\sigma_Y}\right)^2\)
-
樣本相關係數:
\[\hat{\rho} = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i-\bar{x})^2 \sum(y_i-\bar{y})^2}}\] -
二元常態特殊性質:\(\rho = 0\) 等價於 \(X \perp Y\)
(對一般分布,\(\rho = 0\) 只表示「線性無關」,不一定獨立)
這個計算有什麼用?
量化觀察:你的直覺「響應時間高時錯誤率也高」可以用 \(\rho\) 來量化。
- \(\rho > 0\):正相關——一個高,另一個也傾向高
- \(\rho < 0\):負相關——一個高,另一個傾向低
- \(|\rho|\) 越接近 1:關聯越強
計算出 \(\hat{\rho} = 0.6\),說明有中等程度的正相關。
數學小結:你剛才發現了二元 Normal 分布
當兩個變數有線性相關性時,可以用 二元 Normal 分布 建模。
| 性質 | 公式 |
|---|---|
| 邊際分布 | \(X \sim N(\mu_X, \sigma_X^2)\),\(Y \sim N(\mu_Y, \sigma_Y^2)\) |
| 相關係數 | \(\rho = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y}\),\(-1 \leq \rho \leq 1\) |
| 獨立性 | 二元常態下,\(\rho = 0 \Leftrightarrow X \perp Y\) |
重要性質:二元常態的邊際分布和條件分布都是常態!
進階挑戰:ρ = 0 就代表獨立嗎?¶
4 分 ・ 大三
你算出響應時間 \(X\) 和錯誤率 \(Y\) 的相關係數 \(\rho \approx 0\)。同事說:「太好了,它們獨立!」
但你猶豫了...
你需要知道:\(\rho = 0\) 只表示「線性無關」,不一定獨立!
題目:考慮 \((X, Y)\) 的聯合 PDF: $\(f(x, y) = \begin{cases} \frac{1}{\pi} & \text{if } x^2 + y^2 \leq 1 \\ 0 & \text{otherwise} \end{cases}\)$ (均勻分布在單位圓盤上)
- 求邊際分布 \(f_X(x)\)
- 計算 \(\text{Cov}(X, Y)\),驗證 \(\rho = 0\)
- 判斷 \(X\) 和 \(Y\) 是否獨立(檢驗 \(f(x,y) = f_X(x) f_Y(y)\))
提示
- 邊際分布:對 \(y\) 積分,積分範圍是 \([-\sqrt{1-x^2}, \sqrt{1-x^2}]\)
- 利用圓的對稱性:\(E[X] = E[Y] = 0\),\(E[XY] = ?\)
- 獨立性:取一個具體的點 \((0.5, 0.5)\),比較 \(f(0.5, 0.5)\) 和 \(f_X(0.5) \cdot f_Y(0.5)\)
解答
Step 1:邊際分布
同理 \(f_Y(y) = \frac{2\sqrt{1-y^2}}{\pi}\)
Step 2:計算 Cov(X, Y)
由對稱性,\(E[X] = E[Y] = 0\)
由圓的對稱性,\(E[XY] = 0\)(被積函數 \(xy\) 關於原點反對稱)
所以 \(\rho = 0\)
Step 3:獨立性判斷
如果獨立,則 \(f(x,y) = f_X(x) \cdot f_Y(y) = \frac{4\sqrt{(1-x^2)(1-y^2)}}{\pi^2}\)
在點 \((0.5, 0.5)\): - 實際:\(f(0.5, 0.5) = \frac{1}{\pi} \approx 0.318\)(因為 \(0.5^2 + 0.5^2 = 0.5 < 1\)) - 假設獨立:\(f_X(0.5) \cdot f_Y(0.5) = \frac{4 \times 0.866 \times 0.866}{\pi^2} \approx 0.304\)
\(0.318 \neq 0.304\),不獨立!
這個計算有什麼用?
考試必考:「不相關」和「獨立」的區別是經典考點。
- 不相關(\(\rho = 0\)):只說明沒有 線性 關係
- 獨立:完全沒有任何關係(\(f(x,y) = f_X(x) f_Y(y)\))
獨立 \(\Rightarrow\) 不相關,但 不相關 \(\not\Rightarrow\) 獨立!
數學小結:獨立性 vs 不相關
| 性質 | 符號 | 含義 | 條件 |
|---|---|---|---|
| 獨立 | \(X \perp Y\) | \(f(x,y) = f_X(x)f_Y(y)\) | 強條件 |
| 不相關 | \(\rho = 0\) | \(\text{Cov}(X,Y) = 0\) | 弱條件 |
| 關係 | 獨立 → 不相關 | 但反之不成立 | |
| 例外 | 二元常態下:\(\rho = 0 \Leftrightarrow\) 獨立 | 特殊! |
(b) 條件分布預警¶
4 分 ・ 碩一
更進一步的問題:知道 \(\rho = 0.6\),那**如果知道響應時間,能預測錯誤率嗎**?
這就是「條件期望」的應用——用已知資訊縮小不確定性。
你需要知道:給定 \(X = x\) 時,\(Y\) 的條件分布
題目:
- 推導 \(Y | X = x\) 的條件分布
- 若 \(\rho = 0.6\),\(\mu_X = 2\)s,\(\sigma_X = 0.3\)s,\(\mu_Y = 0.05\),\(\sigma_Y = 0.01\),當 \(X = 3\)s 時,預測 \(E[Y|X=3]\)
- 設計預警規則:響應時間超過多少時,預期錯誤率會超過 10%?
解答
-
二元常態的條件分布:
\[Y | X = x \sim N\left(\mu_Y + \rho \frac{\sigma_Y}{\sigma_X}(x - \mu_X), \sigma_Y^2(1-\rho^2)\right)\]條件期望是 \(x\) 的**線性函數**!
-
\(E[Y|X=3] = 0.05 + 0.6 \times \frac{0.01}{0.3} \times (3 - 2) = 0.05 + 0.02 = 0.07\)
預期錯誤率 7%
-
解 \(E[Y|X=x_0] = 0.10\):
\(0.05 + 0.6 \times \frac{0.01}{0.3} \times (x_0 - 2) = 0.10\)
\(0.02(x_0 - 2) = 0.05\)
\(x_0 = 4.5\) 秒
預警規則:當響應時間 > 4.5 秒,預警錯誤率可能超標。
這個計算有什麼用?
建立預警系統:
- 不用等到錯誤率真的超標才告警
- 當響應時間飆高時,就可以**提前預警**
比直接監控更早:響應時間異常通常比錯誤率上升更早發生(因為系統先變慢,然後才開始超時失敗)。
| 響應時間 | 預期錯誤率 | 動作 |
|---|---|---|
| 2s(正常) | 5% | 正常 |
| 3s | 7% | 注意 |
| 4.5s | 10% | 預警 |
| 6s | 13% | 告警 |
進階挑戰:推導二元常態的條件分布¶
4 分 ・ 大三
「你怎麼知道 \(Y|X\) 是常態分布?能推導嗎?」
你需要知道:從聯合 PDF 推導條件 PDF 的完整過程
題目:設 \((X, Y)\) 服從二元常態,聯合 PDF 為: $\(f(x,y) = \frac{1}{2\pi\sigma_X\sigma_Y\sqrt{1-\rho^2}} \exp\left(-\frac{Q}{2(1-\rho^2)}\right)\)$ 其中 $\(Q = \frac{(x-\mu_X)^2}{\sigma_X^2} - 2\rho\frac{(x-\mu_X)(y-\mu_Y)}{\sigma_X\sigma_Y} + \frac{(y-\mu_Y)^2}{\sigma_Y^2}\)$
- 求邊際分布 \(f_X(x)\)(提示:對 \(y\) 積分,配方)
- 求條件 PDF \(f_{Y|X}(y|x) = \frac{f(x,y)}{f_X(x)}\)
- 識別 \(Y|X=x\) 的分布(期望、變異數)
提示
- 邊際分布的積分用 Gaussian 積分公式:\(\int_{-\infty}^{\infty} e^{-ax^2} dx = \sqrt{\pi/a}\)
- 條件 PDF 的計算:把 \(Q\) 中關於 \(y\) 的部分配方成 \((y - \text{某個函數})^2\) 的形式
- 觀察指數裡的形式,識別出 Normal 分布
解答
Step 1:邊際分布(略證)
對 \(y\) 積分,利用 Gaussian 積分公式: $\(f_X(x) = \frac{1}{\sqrt{2\pi}\sigma_X} \exp\left(-\frac{(x-\mu_X)^2}{2\sigma_X^2}\right)\)$ 即 \(X \sim N(\mu_X, \sigma_X^2)\)
Step 2:條件 PDF
將 \(Q\) 中關於 \(y\) 的部分配方: $\(Q = \left(\frac{y - \mu_Y - \rho\frac{\sigma_Y}{\sigma_X}(x-\mu_X)}{\sigma_Y\sqrt{1-\rho^2}}\right)^2 + \text{(與 } y \text{ 無關的項)}\)$
Step 3:識別分布
- 條件期望:\(E[Y|X=x] = \mu_Y + \rho\frac{\sigma_Y}{\sigma_X}(x-\mu_X)\)
- 條件變異數:\(\text{Var}(Y|X) = \sigma_Y^2(1-\rho^2)\)(與 \(x\) 無關!)
這個推導有什麼用?
考試必考:二元常態的條件分布是經典題型。
記憶技巧: - 條件期望是 \(X\) 的 線性函數(斜率 = \(\rho\sigma_Y/\sigma_X\)) - 條件變異數是 常數(不依賴 \(X\)) - \(|\rho|\) 越大 → 條件變異數越小 → 預測越準
數學小結:二元常態的條件分布
| 性質 | 公式 |
|---|---|
| 條件分布 | \(Y \mid X=x \sim N(\mu_{Y \mid X}, \sigma_{Y \mid X}^2)\) |
| 條件期望 | \(\mu_{Y \mid X} = \mu_Y + \rho\frac{\sigma_Y}{\sigma_X}(x - \mu_X)\) |
| 條件變異數 | \(\sigma_{Y \mid X}^2 = \sigma_Y^2(1 - \rho^2)\) |
幾何意義: - 條件期望是 迴歸線:\(E[Y \mid X=x] = a + bx\) - 條件變異數是 殘差變異:預測誤差的大小
第 7 題小結:你的相關性分析工具箱¶
「響應時間高時,錯誤率也高?」
│
├─► 問題 1:如何量化這個關聯?
│ └─► 工具:相關係數 ρ(二元 Normal)
│
▼
「ρ = 0.6,中等正相關」
│
├─► 問題 2:能用響應時間預測錯誤率嗎?
│ └─► 工具:條件期望 E[Y|X=x]
│
▼
「當 X > 4.5s,預期錯誤率 > 10%」
│
└─► 應用:比直接監控更早的預警系統
第 8 題:故障類型診斷¶
場景:告警響了,然後呢?
凌晨四點,你的告警系統響了——失敗率異常升高。
「知道了,系統出問題。」你揉揉眼睛,「但問題是:到底是哪裡出問題?」
失敗有很多種:
- GPU 記憶體不足(OOM)
- 推論超時
- 模型載入錯誤
- 其他錯誤
不同的故障原因,需要不同的處理方式。 如果是 OOM,要檢查 batch size;如果是超時,要檢查負載;如果是載入錯誤,要檢查模型伺服器。
你的問題:如何從失敗類型的「分布」中找線索?
(a) 失敗類型分布¶
3 分 ・ 大三
第一個問題:正常情況下,不同類型的失敗各佔多少比例?
你需要知道:多種類別的機率模型
歷史數據顯示,正常狀態下的失敗類型分布為:
| 類型 | 機率 |
|---|---|
| GPU OOM | \(p_1 = 0.40\) |
| 超時 | \(p_2 = 0.35\) |
| 載入錯誤 | \(p_3 = 0.15\) |
| 其他 | \(p_4 = 0.10\) |
題目:
- 若觀察 \(n = 100\) 次失敗,令 \((X_1, X_2, X_3, X_4)\) 為各類型的計數。寫出聯合 PMF
- 計算 \(E[X_1]\) 和 \(\text{Var}(X_1)\)
- 證明 \(\text{Cov}(X_i, X_j) = -n p_i p_j\)(\(i \neq j\))
解答
-
聯合 PMF(多項分布):
\[P(X_1=x_1, \ldots, X_4=x_4) = \frac{n!}{x_1! x_2! x_3! x_4!} p_1^{x_1} p_2^{x_2} p_3^{x_3} p_4^{x_4}\]其中 \(x_1 + x_2 + x_3 + x_4 = n\)
-
\(E[X_1] = np_1 = 100 \times 0.4 = 40\)
\(\text{Var}(X_1) = np_1(1-p_1) = 100 \times 0.4 \times 0.6 = 24\)
-
\(\text{Cov}(X_i, X_j) = E[X_i X_j] - E[X_i]E[X_j]\)
由於 \(X_i + X_j \leq n\),增加 \(X_i\) 會減少 \(X_j\) 的「空間」,所以:
\(\text{Cov}(X_i, X_j) = -n p_i p_j < 0\)(負相關)
這個計算有什麼用?
建立基準線:正常時 OOM 約 40 次、超時約 35 次...
理解約束:各類別計數是**負相關**的——一種變多,其他種必然變少。
數學小結:你剛才發現了 Multinomial 分布
Multinomial 分布 是 Binomial 的多類別推廣。
| 性質 | 公式 |
|---|---|
| PMF | \(\frac{n!}{\prod x_i!} \prod p_i^{x_i}\) |
| 邊際分布 | \(X_i \sim B(n, p_i)\) |
| 期望 | \(E[X_i] = np_i\) |
| 變異數 | \(\text{Var}(X_i) = np_i(1-p_i)\) |
| 共變異數 | \(\text{Cov}(X_i, X_j) = -np_i p_j\)(\(i \neq j\)) |
(b) 分布變化檢定¶
4 分 ・ 大三
新的問題:現在觀察到 \(n = 100\) 次失敗,分布為 \((55, 25, 12, 8)\)。
這跟歷史分布 \((40, 35, 15, 10)\) 不一樣——但這是**正常波動**還是**真的變了**?
你需要知道:如何判斷觀察值與期望值的差異是否「顯著」
題目:
- 計算卡方統計量 \(\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}\)
- 在 \(\alpha = 0.05\) 下,判斷分布是否顯著改變
- 說明卡方檢定的適用條件
解答
-
計算各類別的貢獻:
類型 期望 \(E_i\) 觀測 \(O_i\) \((O-E)^2/E\) OOM 40 55 \(15^2/40 = 5.63\) 超時 35 25 \(10^2/35 = 2.86\) 載入 15 12 \(3^2/15 = 0.60\) 其他 10 8 \(2^2/10 = 0.40\) \(\chi^2 = 5.63 + 2.86 + 0.60 + 0.40 = 9.49\)
-
\(df = k - 1 = 4 - 1 = 3\)
臨界值 \(\chi^2_{0.05,3} = 7.81\)
\(9.49 > 7.81\),拒絕 \(H_0\):分布顯著改變(p < 0.05)
-
適用條件:所有 \(E_i \geq 5\)(本例滿足)
這個計算有什麼用?
統計顯著性:不是「看起來不一樣」,而是「統計上顯著不一樣」。
結論:失敗類型的分布**確實改變了**,不是隨機波動。
數學小結:卡方適合度檢定
卡方檢定 用於比較觀測分布與期望分布。
| 概念 | 說明 |
|---|---|
| 虛無假設 | \(H_0\): 觀測來自期望分布 |
| 統計量 | \(\chi^2 = \sum \frac{(O_i - E_i)^2}{E_i}\) |
| 自由度 | \(df = k - 1\)(\(k\) 是類別數) |
| 拒絕域 | \(\chi^2 > \chi^2_{\alpha, df}\) |
當 \(H_0\) 為真時,\(\chi^2 \sim \chi^2(df)\)。
© 異常類別定位¶
3 分 ・ 大三
進一步追問:知道分布變了,但**具體是哪個類型異常**?
你需要知道:逐類別分析卡方統計量的貢獻
題目:
- 根據 (b) 的結果,找出貢獻最大的類別
- 判斷該類別是「變多」還是「變少」
- 給出故障診斷建議
解答
-
各類別對 \(\chi^2\) 的貢獻:
- OOM: 5.63(最大!)
- 超時: 2.86
- 載入: 0.60
- 其他: 0.40
-
OOM:觀測 55 > 期望 40,變多
超時:觀測 25 < 期望 35,變少
-
診斷結論:GPU OOM 異常增多
行動建議: - 檢查 GPU 記憶體配置 - 是否有 batch size 過大的請求 - 是否有記憶體洩漏
這個計算有什麼用?
定位問題:不只知道「有問題」,還知道「問題在哪」。
優先級:貢獻越大的類別,越需要優先處理。
(d) 序貫分析 SPRT¶
4 分 ・ 碩一
新的需求:上面的方法需要等到累積 \(n = 100\) 次觀測才能判斷。
能不能「一邊觀測一邊判斷」,更快發現問題?
你需要知道:序貫機率比檢定 (SPRT)
題目:
假設要檢測 OOM 比例是否從 \(p_0 = 0.4\) 升高到 \(p_1 = 0.5\)。
- 定義對數似然比 \(\Lambda_n = \sum_{i=1}^{n} \log \frac{P(X_i | p_1)}{P(X_i | p_0)}\)
- 設定停止邊界 \(A, B\) 使得 \(\alpha \leq 0.05\),\(\beta \leq 0.10\)
- 比較 SPRT 與固定樣本檢定的期望樣本量
提示
SPRT 的停止規則:當 \(\Lambda_n \geq A\) 時接受 \(H_1\),當 \(\Lambda_n \leq B\) 時接受 \(H_0\)。
解答
-
對於 Bernoulli 觀測(OOM = 1,非 OOM = 0):
\[\Lambda_n = \sum_{i=1}^{n} X_i \log\frac{p_1}{p_0} + (1-X_i)\log\frac{1-p_1}{1-p_0}\]\[= S_n \log\frac{0.5}{0.4} + (n - S_n)\log\frac{0.5}{0.6}\]其中 \(S_n = \sum_{i=1}^n X_i\) 是 OOM 的累積計數。
-
Wald 邊界:
\[A = \log\frac{1-\beta}{\alpha} = \log\frac{0.9}{0.05} \approx 2.89\]\[B = \log\frac{\beta}{1-\alpha} = \log\frac{0.1}{0.95} \approx -2.25\] -
期望樣本量:
在 \(H_0\) 下(\(p = 0.4\)):\(E_0[N] \approx 45\)
在 \(H_1\) 下(\(p = 0.5\)):\(E_1[N] \approx 35\)
比固定樣本(\(n = 100\))少約 50-65%!
這個計算有什麼用?
更快發現異常:
| 方法 | 需要觀測數 | 優點 |
|---|---|---|
| 固定樣本 | 100 | 簡單 |
| SPRT | ~40 | 快 60% |
實際應用:在高頻監控中,SPRT 可以更早發出告警。
數學小結:序貫機率比檢定 (SPRT)
SPRT(Sequential Probability Ratio Test)是 Wald 在二戰期間發明的,用於品質管制。
| 概念 | 說明 |
|---|---|
| 核心思想 | 「邊觀測邊決策」,不用等到固定樣本量 |
| 統計量 | 對數似然比 \(\Lambda_n\) |
| 停止規則 | \(\Lambda_n \geq A\) 接受 \(H_1\);\(\Lambda_n \leq B\) 接受 \(H_0\) |
| 優點 | 期望樣本量比固定樣本少 30-50% |
| 缺點 | 樣本量是隨機的,可能很長 |
在 SRE 場景中,SPRT 特別適合**持續監控**——不用等到累積夠多數據才判斷。
第 8 題小結:你的故障診斷工具箱¶
「告警響了,哪裡出問題?」
│
├─► 問題 1:失敗類型的「正常分布」是什麼?
│ └─► 工具:Multinomial 分布
│
▼
「OOM 40%、超時 35%、...」
│
├─► 問題 2:現在的分布是否「異常」?
│ └─► 工具:卡方適合度檢定
│
▼
「χ² = 9.49 > 7.81,分布顯著改變!」
│
├─► 問題 3:具體是哪個類型變多了?
│ └─► 工具:逐類別貢獻分析
│
▼
「OOM 貢獻最大(5.63)→ 檢查 GPU 記憶體」
│
├─► 問題 4:能不能更快發現問題?
│ └─► 工具:SPRT 序貫分析
│
▼
「從 100 次觀測減少到 ~40 次」
第 9 題:延遲與 Token 的聯合分析¶
場景:PM 的追問¶
「等等,」PM 皺著眉頭看著儀表板,「響應時間長的請求,是不是 token 也比較多?」
你想了想:「對,輸出越長,當然需要越多時間。」
「那你能量化這個關係嗎?我想知道:如果一個請求已經跑了 3 秒,預期它會輸出多少 token?」
你意識到這不是獨立的兩個變數——延遲 T 和相對 Token 數 N 有某種聯合分布。 而且這個分布的支撐區域不是矩形:N 越大,T 通常越大。
核心問題:如何處理「非矩形區域」的聯合分布?如何從一個變數預測另一個?
(a) 非矩形區域的邊際 PDF¶
4 分 ・ 大三
假設延遲 T(秒)和相對 Token 數 N(歸一化到 0-1)的聯合 PDF 為:
直覺:\(t\) 越大,\(n\) 的可能範圍越大(上界 \(1 - e^{-t}\) 趨近 1),表示「跑越久,token 可以越多」。
你需要知道:如何在非矩形區域求邊際分布?
題目:
- 畫出支撐區域(\(t\)-\(n\) 平面上哪些點有機率密度)
- 驗證這是有效的 PDF:\(\iint f(t,n) \, dn\, dt = 1\)
- 求邊際 PDF \(f_T(t)\)(對 \(n\) 積分)
- 求邊際 PDF \(f_N(n)\)(關鍵:積分範圍是 \(t \geq -\ln(1-n)\))
解答
Step 1:支撐區域
這是一個由 \(n = 0\)(下界)、\(n = 1 - e^{-t}\)(上界曲線)和 \(t = 0\)(左邊界)圍成的區域。 當 \(t \to \infty\) 時,上界趨近 \(n = 1\)。
Step 2:驗證 PDF
Step 3:邊際 PDF \(f_T(t)\)
Step 4:邊際 PDF \(f_N(n)\)
給定 \(n\),\(t\) 的範圍是 \(t \geq -\ln(1-n)\)(從 \(n \leq 1 - e^{-t}\) 反解):
這是一個**線性遞減**的 PDF,說明小 token 數更常見。
這個計算有什麼用?
非矩形區域的關鍵:求 \(f_N(n)\) 時,積分下界是 \(n\) 的函數!
考試技巧: 1. 先畫支撐區域 2. 確定「給定一個變數,另一個變數的範圍」 3. 積分範圍可能是變數的函數
(b) 條件分布與預測¶
4 分 ・ 大三
PM 追問:「如果我看到一個請求已經跑了 \(t\) 秒,預期的 token 數是多少?」
你需要知道:條件 PDF 和條件期望
題目:
- 求條件 PDF \(f_{N|T}(n|t)\)
- 計算 \(E[N|T=t]\)
- 若請求已經跑了 3 秒,預期的相對 Token 數是多少?
- 比較 \(E[N|T=1]\) 和 \(E[N|T=5]\),驗證「跑越久,token 越多」
解答
Step 1:條件 PDF
這是 \([0, 1-e^{-t}]\) 上的**均勻分布**!
Step 2:條件期望
因為 \(N|T=t \sim \text{Uniform}(0, 1-e^{-t})\):
Step 3:T = 3 秒
預期相對 token 數約 47.5%。
Step 4:比較
- \(E[N|T=1] = \frac{1-e^{-1}}{2} = \frac{0.632}{2} = 0.316\)
- \(E[N|T=5] = \frac{1-e^{-5}}{2} = \frac{0.993}{2} = 0.497\)
確實「跑越久,token 越多」。
這個計算有什麼用?
實務應用:
| 延遲 (秒) | 預期 Token 比例 | 說明 |
|---|---|---|
| 1 | 31.6% | 快速回應,輸出較短 |
| 3 | 47.5% | 中等 |
| 5 | 49.7% | 接近上限 |
預測公式:\(E[N|T=t] = \frac{1-e^{-t}}{2}\)
© 變數變換:效率指標¶
4 分 ・ 碩一
你想定義一個「效率指標」:\(W = T - 2N\)(延遲減去 token 的兩倍)。
\(W\) 越大,表示「花的時間比應該的多」——可能是系統效能問題。
你需要知道:如何用變數變換求新隨機變數的分布?
題目:
- 計算 \(E[W] = E[T] - 2E[N]\)
- 計算 \(\text{Var}(W)\)(需要 \(\text{Cov}(T, N)\))
- 設計「低效請求」告警閾值 \(w_0\):若超過多少標準差算異常?
解答
Step 1:計算 \(E[T]\) 和 \(E[N]\)
Step 2:計算 \(\text{Var}(W)\)
需要 \(E[T^2]\), \(E[N^2]\), \(E[TN]\):
Step 3:告警閾值
若設 \(w_0 = E[W] + 2\sigma_W = 0.833 + 1.6 = 2.43\),則超過此值的請求可能有效能問題。
數學小結:一般聯合 PDF 操作
| 操作 | 公式 | 本題範例 |
|---|---|---|
| 邊際 PDF | \(f_X(x) = \int f_{X,Y}(x,y) \, dy\) | 注意積分範圍 |
| 條件 PDF | \(f_{Y\|X}(y\|x) = f(x,y)/f_X(x)\) | 本題得到 Uniform |
| 條件期望 | \(E[Y\|X=x] = \int y \cdot f_{Y\|X}(y\|x) \, dy\) | \(\frac{1-e^{-t}}{2}\) |
| 變數變換 | \(E[g(X,Y)] = \iint g(x,y) f(x,y) \, dx\, dy\) | 求 \(E[W]\), \(\text{Cov}\) |
關鍵技巧:非矩形區域時,積分上下界是另一變數的函數。
第 9 題小結:聯合分布工具箱¶
「延遲和 Token 數有關係嗎?」
│
▼
問題 1:邊際分布是什麼?
├─► 對另一變數積分(注意非矩形區域!)
│
▼
問題 2:知道延遲,能預測 Token 嗎?
├─► 條件 PDF → 條件期望 E[N|T=t]
│
▼
問題 3:如何定義「效率」?
└─► 變數變換 W = T - 2N → 求 E[W], Var(W)
總結:分布關係全景圖¶
┌─────────────────┐
│ Bernoulli(p) │
└────────┬────────┘
│
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Binomial(n,p)│ │ Geometric(p) │ │ Poisson(λ) │
│ (n 次的和) │ │ (等到第 1 次) │ │ (n→∞, np→λ) │
└───────────────┘ └───────┬───────┘ └───────┬───────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Neg Binom(r,p)│ │ Exponential(λ)│
│ (r 個 Geom 和)│ │ (等待時間) │
└───────────────┘ └───────┬───────┘
│
▼
┌───────────────┐
│ Gamma(n,λ) │
│ (n 個 Exp 和) │
└───────┬───────┘
│ CLT
▼
┌───────────────┐
│ Normal(μ,σ²) │
└───────────────┘
從場景到分布:
| 場景問題 | 數學工具 |
|---|---|
| 單次成功/失敗 | Bernoulli |
| n 次中成功幾次 | Binomial |
| 等到第 1 次成功 | Geometric |
| 等到第 r 次成功 | Negative Binomial |
| 單位時間內事件數 | Poisson |
| 等待下一個事件 | Exponential |
| 等待 n 個事件 | Gamma |
| 大量隨機變數的和 | Normal (CLT) |
| 兩變數的相關性 | 二元 Normal |
| 多類別的計數 | Multinomial → 卡方檢定 |
-
PagerDuty 是一個事件管理與告警平台,負責整合各種監控系統的告警、管理 On-call 排班、並透過電話/簡訊/Slack 通知值班人員。簡單說:它就是那個凌晨三點叫醒 SRE 的工具。類似產品還有 Opsgenie、VictorOps 等。 ↩