第 8 題:故障類型診斷¶
< 返回目錄 | < 上一題:二元常態與相關性 | 下一題:延遲與 Token 聯合分析 >
場景:告警響了,然後呢?¶
凌晨四點,你的告警系統響了——失敗率異常升高。
「知道了,系統出問題。」你揉揉眼睛,「但問題是:到底是哪裡出問題?」
失敗有很多種:
- 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 次」