第五部分: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