跳轉到

第五部分:GPU 叢集與可靠性

< 返回目錄 | < 上一題:月度成本預測 | 下一題:二元常態與相關性 >


場景:老闆的靈魂拷問

「需要幾張 A100?」老闆盯著你。

你正準備解釋「要看流量、模型大小、batch size...」,老闆揮揮手打斷:「假設尖峰 200 QPS,給我一個數字。還有,別忘了 GPU 會壞掉。」

你深吸一口氣。這個問題聯起來簡單,但背後藏著三個子問題:

  1. 一張 GPU 能處理多少請求?(會波動!)
  2. 需要多少張才能「保證」處理 200 QPS?
  3. 加上故障冗餘後,總共要幾張?

你的問題:如何用機率模型回答這些問題?


第 6 題:GPU 容量規劃

場景:老闆的靈魂拷問

「需要幾張 A100?」老闆盯著你。

「呃...要看流量...」你開始冒汗。

「假設尖峰 200 QPS,給我一個數字。還有,別忘了 GPU 會壞掉。」

在回答這個問題之前,你先要理解:請求是怎麼分配到各 GPU 的?


(a) 負載均衡的數學基礎

3 分大二

在討論單 GPU 處理能力之前,先來看請求是怎麼分配的。

你的負載均衡器使用「隨機分配」:每個請求獨立、等機率地分配到 \(m\) 張 GPU 之一。

你需要知道:Uniform 分布——「等機率」的數學表達

題目:假設在 10 分鐘的觀測窗口內,請求到達時間 \(U\) 均勻分布在 \([0, 10]\) 分鐘。

  1. 寫出 \(U\) 的 PDF、CDF、期望、變異數
  2. 求「前 5 分鐘到達的請求比例」的期望值
  3. \(n = 1000\) 個請求獨立到達,「前 5 分鐘到達的請求數」\(X\) 服從什麼分布?
  4. 計算 \(P(X > 550)\)(前半時間到達超過 55% 的請求)
解答

Step 1:Uniform 分布性質

\(U \sim \text{Uniform}(0, 10)\)

性質 公式 本題數值
PDF \(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 分布
性質 公式
PDF \(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。

題目

  1. 為什麼用 Poisson 建模處理能力?
  2. 計算 \(P(C_i < 40)\)(某秒處理能力不足 40 的機率)
  3. 若有 \(m\) 張 GPU,總處理能力 \(C = \sum_{i=1}^m C_i\) 服從什麼分布?
解答
  1. Poisson 的合理性

    • 處理能力受隨機因素影響(請求複雜度、排隊、快取)
    • 期望 = 變異數符合「適度波動」的特性
    • 處理事件可視為「單位時間內完成的獨立任務數」
  2. \(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\)

  3. 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)\),且獨立,則:

\[X_1 + X_2 \sim \text{Pois}(\lambda_1 + \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 為:

\[M_X(t) = E[e^{tX}] = \sum_{k=0}^\infty e^{tk} \frac{\lambda^k e^{-\lambda}}{k!} = e^{-\lambda} \sum_{k=0}^\infty \frac{(\lambda e^t)^k}{k!} = e^{-\lambda} \cdot e^{\lambda e^t} = e^{\lambda(e^t - 1)}\]

Step 2:利用獨立性

對於獨立隨機變數,和的 MGF = 各自 MGF 的乘積:

\[M_C(t) = \prod_{i=1}^m M_{C_i}(t) = \prod_{i=1}^m e^{\mu(e^t - 1)} = \left[e^{\mu(e^t - 1)}\right]^m = e^{m\mu(e^t - 1)}\]

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。但這忽略了波動!

你需要知道:需要多少「餘裕」才能以高機率滿足需求?

題目

  1. 設需求為 \(P(C \geq 200) \geq 0.99\),推導 \(m\) 的下界
  2. 求滿足條件的最小 \(m\)
  3. 說明為什麼不能剛好用 4 張(\(4 \times 50 = 200\)
解答
  1. \(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\]
  2. 解不等式:\(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

  3. 為什麼不能用 4 張

    \(m = 4\) 時,\(C \sim \text{Pois}(200)\)\(P(C < 200) \approx 0.5\)

    一半時間處理能力不足!需要餘裕來應對波動。

這個計算有什麼用?

回答老闆的第一個問題:需要 5 張 GPU,不是 4 張。

一般化公式:要以 \(1-\alpha\) 機率滿足需求 \(D\),需要:

\[m \geq \frac{D}{\mu} + \frac{z_\alpha^2}{2\mu} + z_\alpha \sqrt{\frac{D}{\mu} + \frac{z_\alpha^2}{4\mu^2}}\]

其中 \(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\) 故障。

  1. 證明 \(F \sim B(m, p_f)\)
  2. 若要「以 99.9% 機率至少有 5 張正常運作」,求最小 \(m\)
  3. 說明「N+K 冗餘」策略的數學依據
解答
  1. 每張 GPU 獨立以機率 \(p_f\) 故障,故 \(F \sim B(m, p_f)\)

  2. 需要 \(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

  3. 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

< 返回目錄 | < 上一題:月度成本預測 | 下一題:二元常態與相關性 >