本書旨在協助機器學習工程師與資料科學家在 ML 系統設計面試中脫穎而出,重點聚焦於生成式 AI(Generative AI, GenAI)。本書是前作 ML System Design Interview [1] 的延伸,前作涵蓋搜尋與推薦系統等傳統主題,而本書則探討 GenAI 應用及其獨特的系統設計挑戰,同時也是理解 GenAI 實務應用的指南。

本章涵蓋兩大主題:

  • GenAI 概覽:基礎概念與應用
  • ML 系統設計的通用框架:適用於實務開發與面試準備

此框架將作為後續章節開發各類 GenAI 系統的基礎。

GenAI 概覽#

什麼是 AI 與 ML?#

人工智慧(AI) 是電腦科學的分支,專注於建構能執行需要人類智慧之任務的系統,例如推理、規劃與問題解決。機器學習(ML) 是 AI 的子集,透過演算法從資料中學習,而非依賴預先定義的規則。這些演算法分析資料、辨識模式,並根據所學模式進行預測或生成新內容。推薦系統、詐欺偵測、自動駕駛車輛與聊天機器人等應用,通常皆由 ML 模型驅動。

ML 模型大致分為兩類:

  • 判別式模型(Discriminative Models)
  • 生成式模型(Generative Models)

Figure 1: The relationship between AI and ML

判別式模型#

判別式模型(Discriminative Models)透過學習類別之間的差異來分類資料。形式上,它們學習條件機率 $P(Y|X)$,其中 $Y$ 為目標變數,$X$ 為輸入特徵。

判別式模型可用於分類(Classification)(判定輸入屬於哪個類別)和迴歸(Regression)(預測連續數值)。例如:

  • 詐欺偵測:判別式模型透過分析交易金額、購買紀錄等特徵,將交易分類為合法或詐欺。
  • 電影推薦:模型根據使用者的歷史互動紀錄,預測其對某部電影的評分。

常見的判別式模型演算法包括:

  • 邏輯迴歸(Logistic Regression): 線性模型,根據輸入特徵預測二元結果的機率。
  • 支持向量機(Support Vector Machines, SVMs): 在特徵空間中尋找最佳分隔超平面;可透過核函數(Kernel Functions)擴展至非線性邊界 [2]。
  • 決策樹(Decision Trees): 根據目標變數遞迴地將資料分割為子群。變體包括隨機森林(Random Forests)。
  • K 近鄰演算法(K-Nearest Neighbors, KNN): 非參數方法,根據最近鄰居的多數標籤對樣本進行分類。
  • 神經網路(Neural Networks): 由多層互連神經元組成,使用加權輸入、激活函數(Activation Functions)與反向傳播(Backpropagation)來近似複雜函數。

雖然這些演算法能從輸入特徵預測目標變數,但大多數無法學習生成新資料所需的底層資料分布。為此,我們需要生成式模型。

生成式模型#

生成式模型(Generative Models)旨在理解並複製資料的底層分布。形式上,它們建模:

  • $P(X)$:僅關注輸入資料(例如圖像生成)
  • $P(X, Y)$:同時考慮輸入資料與目標變數(例如文字轉圖像生成)

這使它們能從學習到的分布中取樣,生成新的資料實例。與判別式模型不同,生成式模型能創造新實例,使其與原始資料高度相似——例如,從訓練於人臉圖像的模型中生成全新的人臉。

經典生成式演算法#

經典演算法擅長從結構化資料中學習模式,但在處理複雜或非結構化資料時可能力不從心:

  • 樸素貝氏(Naive Bayes): 基於貝氏定理(Bayes’ Theorem)的機率模型 [3]。
  • 高斯混合模型(Gaussian Mixture Models, GMMs): 將資料表示為多個高斯分布的混合 [4]。
  • 隱馬可夫模型(Hidden Markov Models, HMMs): 建模觀測序列與隱藏狀態的聯合機率 [5]。
  • 波茲曼機(Boltzmann Machines): 基於能量的模型,用於特徵學習或降維 [6]。

現代生成式演算法#

現代演算法能從複雜的資料分布中學習,擅長生成逼真圖像和精確文本等任務:

  • 變分自編碼器(Variational Autoencoders, VAEs): 將資料編碼至潛在空間(Latent Space),再透過解碼器(Decoder)重建原始資料。
  • 生成對抗網路(Generative Adversarial Networks, GANs): 生成器(Generator)與判別器(Discriminator)同時訓練——生成器創造逼真資料,判別器區分真實與生成資料。
  • 擴散模型(Diffusion Models): 透過反向擴散過程學習複雜的資料分布。常用於圖像與影片生成。
  • 自迴歸模型(Autoregressive Models): 根據序列中的前序元素預測下一個元素來生成資料。常用於文本生成與時間序列預測。

判別式模型通常用於分類或預測;生成式模型則用於生成新樣本。圖 2 展示了各類型驅動的常見任務。

Figure 2: Popular ML-powered tasks

什麼是 GenAI?為何日益受到關注?#

GenAI 運用現代生成式演算法訓練模型,使其能產生圖像、影片、文字、音訊等新資料樣本。

GenAI 之所以廣受歡迎,主要有兩個原因:

  1. 跨領域的多功能性: 這些模型能執行多樣任務——生成文字、創造逼真圖像、作曲——使其在創意藝術、醫療保健、軟體開發等各行各業中極具價值。
  2. 生產力提升: GenAI 應用顯著提升生產力。例如,ChatGPT [7] 等大型語言模型(LLM)可協助回答複雜問題並進行有意義的對話。McKinsey 報告 [8] 預測 GenAI 將在 2040 年前「每年提升 0.1% 至 0.6% 的勞動生產力」。

為何 GenAI 愈來愈強大#

三大關鍵因素推動了這項進展:

  1. 資料(Data)
  2. 模型容量(Model Capacity)
  3. 算力(Compute)

資料#

ML 模型的效能取決於訓練資料。GenAI 成功的關鍵驅動力之一是自監督式學習(Self-Supervised Learning)——不同於通常需要標註資料的經典模型,GenAI 模型能從未標註資料中學習。這使它們得以利用網路上的大量資料集,無需耗費高昂的標註成本。

Figure 3: Data scale comparison between training a chatbot and disease diagnosis

現代 GenAI 模型在海量資料集上訓練,有時超過數十億篇文本文件或圖像:

  • Meta 的 Llama 3 [9] 使用 15 兆個 token(約 50 TB 資料)進行訓練
  • Google 的 Flamingo [10] 使用 18 億組(圖像、文字)配對進行訓練

在如此大量的資料上訓練,有助於模型學習複雜模式與細微差異,進而產出高品質的輸出。

模型容量#

模型容量(Model Capacity)透過兩種方式衡量:參數數量(Number of Parameters)FLOP 計數(FLOP Count)

參數數量#

參數是模型在訓練過程中學習到的數值。參數越多的模型通常具備更大的能力來學習複雜模式,往往能帶來更好的效能(前提是有足夠的訓練資料)。

Model NameParameters
Google’s PaLM [11]540B
OpenAI’s GPT-3 [12]175B
Google’s Flamingo [10]80B
Meta’s Llama 3 [9]405B
Google’s Imagen [13]2B

表 1:常見 GenAI 模型及其參數數量

FLOP 計數#

FLOP(Floating Point Operations,浮點運算次數)透過計算前向傳播(Forward Pass)中所需的浮點運算次數來衡量計算複雜度,包括加法、乘法及資料通過模型各層時的其他算術運算。

Figure 4: A simple fully connected layer and arithmetic calculations for a single output neuron

以一個具有 4 個輸入神經元和 3 個輸出神經元的全連接層為例。每個輸出神經元需要 4 次乘法和 3 次加法,如圖 4 所示。總 FLOPs = 3 x (4 + 3) = 21。

參數數量衡量的是模型大小,而 FLOP 衡量的是計算複雜度。參數較多的模型通常 FLOP 計數也較高,但並非總是如此——架構扮演關鍵角色。即使參數數量相同,密集層(Dense Layers)通常比稀疏連接(Sparse Connections)需要更多 FLOPs。

算力#

隨著模型容量增加,訓練所需的計算資源也大幅增長。訓練時的算力以 FLOP 衡量——例如,Google 的 PaLM-2 使用了 $10^{22}$ FLOPs 進行訓練 [14]。

算力由 CPU、GPU、TPU 等硬體提供。效能以 FLOP/S(Floating Point Operations Per Second,每秒浮點運算次數)衡量——例如,Nvidia 的 H100 可提供高達 60 TFLOP/S [15]。

訓練大型 GenAI 模型的成本極高。單張 H100 GPU 需要大約 5.5 年才能完成 PaLM-2 的訓練。Sam Altman 表示,GPT-4 的訓練成本超過 1 億美元 [16]。

能力的躍升主要歸因於:

  • 硬體進步——專為深度學習設計的特製晶片,如 GPU 和 TPU
  • 分散式訓練(Distributed Training)——將工作負載分配至數百或數千台機器並行處理

縮放定律#

在給定的算力預算(以 FLOPs 衡量)下,什麼樣的模型大小與訓練資料組合能達到最低損失?

這是研究人員透過縮放定律(Scaling Laws) 試圖回答的核心問題。

2020 年,OpenAI 研究人員 [17] 發現兩個關鍵洞察:

  1. 規模擴大對效能的影響遠比架構變化更為顯著。
  2. 隨著模型大小、資料集大小或算力增加,效能依循冪律趨勢(Power-Law Trend) 提升。

Figure 5: OpenAI’s scaling law (Credit: [17])

2022 年,DeepMind 研究人員 [18] 進一步擴展了這項理解,指出許多現有 LLM 其實訓練不足——為達到最佳效能,資料量應與模型大小呈線性成長。

隨著 GPT o1 [19] 的出現,研究人員開始推測推論階段(Inference) 也存在縮放定律 [20]。

GenAI 的風險與限制#

GenAI 推動了許多產業的進步,但也帶來關鍵風險:

  • 倫理問題: 偏見、智慧財產權(IP)問題、錯誤資訊以及生成內容的濫用,都可能對社會產生負面影響。
  • 環境影響: 訓練所需的高算力導致大量的能源消耗與碳排放。
  • 模型限制: GenAI 模型往往缺乏真正的理解能力,在複雜推理任務中容易產生不準確的結果與幻覺(Hallucination)。
  • 安全風險: 威脅包括利用深偽技術(Deepfakes)進行勒索或政治操控、自動化釣魚攻擊,以及對醫療和金融等關鍵系統的對抗性攻擊。

應對這些風險需要跨學科的方法,涵蓋技術解決方案、倫理框架、法律規範與社會意識。

ML 系統設計面試框架#

許多工程師認為 ML 演算法(如自迴歸 Transformer 或擴散模型)就是 ML 系統的全部。然而,建構與部署 GenAI 系統涉及更多面向:

  • 資料管線(Data Pipelines):處理與預處理大型資料集
  • 評估機制(Evaluation Mechanisms):評估輸出品質與安全性
  • 基礎設施(Infrastructure):大規模交付 AI 生成的內容
  • 監控(Monitoring):確保系統效能長期穩定

在 ML 系統設計面試中,你會面對開放式問題(例如:設計一個客服聊天機器人、設計一個 AI 圖像編輯工具)。沒有唯一「正確」答案——面試官關注的是你的方法、對 GenAI 概念的理解、設計流程與推理能力。

遵循結構化框架,避免雜亂無章的回答掩蓋你的思路。

此框架包含以下步驟:

  1. 釐清需求(Clarifying Requirements)
  2. 將問題建構為 ML 任務(Framing the Problem as an ML Task)
  3. 資料準備(Data Preparation)
  4. 模型開發(Model Development)
  5. 評估(Evaluation)
  6. 整體 ML 系統設計(Overall ML System Design)
  7. 部署與監控(Deployment and Monitoring)

Figure 6: ML system design steps

釐清需求#

開發 ML 系統時,起初往往只有極少資訊。面試題目同樣如此,通常十分模糊(例如「設計一個圖像生成系統」)。第一步是提出釐清問題,幫助你理解問題空間與具體目標。

問題分為兩類:

  • 功能性需求(Functional Requirements)——系統應該做什麼
  • 非功能性需求(Non-Functional Requirements)——系統應如何表現

功能性需求#

功能性需求描述系統的核心能力。例如,「根據使用者的提示詞生成圖像並自訂其風格」就是文字轉圖像系統的功能性需求。這些需求決定了高層架構,並引導核心元件的開發。

非功能性需求#

非功能性需求聚焦於效能特性——延遲(Latency)、吞吐量(Throughput)、公平性(Fairness)、安全性(Security)與可擴展性(Scalability)。雖然它們可能不會大幅改變初始架構,但及早識別至關重要,因為它們會影響後續的設計階段。

釐清問題範例#

  • 商業目標: 主要目標為何?(例如:電商的詳細產品描述 vs. 社群媒體的簡短圖說)
  • 系統功能: 哪些功能可能影響 ML 設計?(例如:使用者回饋、支援語言)
  • 資料: 資料來源為何?資料集多大?資料是否已標註?
  • 限制條件: 可用的計算資源為何?雲端或端側裝置?
  • 系統規模: 預期使用者數量?預期的需求成長?
  • 效能: 是否需要即時生成?品質與速度何者優先?

完成此步驟後,你應與面試官就系統範圍與需求達成共識。

將問題建構為 ML 任務#

將問題建構為 ML 任務決定了後續設計的方向。兩個關鍵步驟:

  1. 定義系統的輸入與輸出
  2. 選擇合適的 ML 方法

定義系統的輸入與輸出#

定義輸入資料的模態(Modality)——文字、圖像、音訊、影片——以及預期輸出。例如,在聊天機器人中,輸入是使用者的文字查詢,輸出是系統的回應。

Figure 7: Input and output of a chatbot

選擇合適的 ML 方法#

定義輸入與輸出後,依照以下步驟選擇最合適的 ML 方法:

Figure 8: Common ML algorithms

  1. 判別式 vs. 生成式: 根據系統的輸出來決定。物件偵測(輸出類別)屬於判別式;聊天機器人(產生文字)屬於生成式。

    Figure 9: Step one for choosing a suitable ML approach

  2. 辨識任務類型: 判別式模型用於分類和迴歸;生成式模型用於文字、圖像、音訊或影片生成。系統的輸出決定了任務類型。

    Figure 10: Step two for choosing a suitable ML approach

  3. 選擇合適的演算法: 考量因素包括處理不同輸入模態的能力、效率與品質期望。例如,在文字轉圖像系統中,VAEs 或 GANs 雖然具備圖像生成能力,但可能不太理想,因為演算法還需處理文字輸入。

討論要點#

  • 根據需求,系統的輸入與輸出為何?
  • 模型需要處理哪些資料模態?應使用單一模型處理所有模態,還是使用專門模型?
  • 哪種生成式演算法(例如擴散模型、VAEs、GANs)最適合?為什麼?
  • 在品質、效率與易用性方面有哪些取捨?
  • 所選方法是否有足夠的可擴展性以因應未來變化?

資料準備#

ML 模型直接從資料中學習,因此高品質資料對有效訓練至關重要。

資料類型#

資料通常分為結構化(Structured)非結構化(Unstructured) 兩類。

Figure 11: Data categories

結構化資料可組織為具有列與欄的表格(例如資料庫、試算表):

  • 類別型資料(Categorical Data): 不同的群組或類別(例如性別、顏色)
  • 數值型資料(Numerical Data): 可量測的數值(例如銷售量、房價)
  • 序數型資料(Ordinal Data): 具有預定順序的資料(例如滿意度評分)

非結構化資料沒有底層結構或定義——文字、圖像、影片、音訊,或其組合(例如社群媒體貼文、電子郵件)。

傳統 ML 模型通常使用結構化資料進行訓練。GenAI 模型主要處理圖像、文字、影片等非結構化資料,因此資料準備方式有顯著差異。

傳統 ML 的資料準備#

準備結構化資料涉及兩個關鍵步驟:

Figure 12: Data preparation process for structured data

資料工程#

建構與維護用於收集、儲存、檢索和處理資料的系統。核心元件是 ETL(Extract, Transform, Load)[21],它從各種來源擷取資料、轉換為可用格式,並載入至資料倉儲。

特徵工程#

從原始資料中選擇與提取具預測力的特徵(Feature),並轉換為 ML 模型可使用的格式。此流程常使用特徵儲存庫(Feature Store),如 Tecton [22] 或 Amazon SageMaker [23]。包含的技術有處理缺失值、表示類別型特徵、分桶(Bucketing)等。

由於本書聚焦 GenAI,更深入的資料工程與特徵工程內容請參閱 [24]。

GenAI 的資料準備#

對於生成式模型,重心從特徵工程轉移至:

  • 收集大量資料
  • 確保資料品質高且安全
  • 使用工具高效儲存與檢索資料

Figure 13: Data preparation process in GenAI

資料收集#

先進的 GenAI 模型擁有數十億參數,需要大量訓練資料。例如,Llama 3 使用 15 兆個 token(約 50 TB)的各類網路來源進行訓練。資料收集流程從網站、社群媒體與論壇中爬取文字,彙整成大型資料集。

隨著模型規模持續擴大,以 AI 生成(合成)資料擴充訓練資料集已成為趨勢。

Figure 14: Augmenting training data with AI-generated data

合成資料的優點:

  • 提升資料多樣性: 增加變異性,強化模型的泛化能力
  • 可擴展性: 提供可擴展的方式來建立難以手動收集的大型資料集

合成資料的缺點:

  • 品質疑慮: 低品質的合成資料可能散播偏見或錯誤
  • 代表性問題: 可能無法良好地代表原始資料
  • 真實世界分布落差: 可能無法完全捕捉真實世界場景的複雜性

更多合成資料的資訊請參閱 [25]。

資料清理#

大型網路資料集通常含有雜訊,且可能包含低品質或不當內容。關鍵清理步驟:

Figure 15: Common data cleaning steps

  • 過濾有害內容
  • 偵測 NSFW(Not Safe For Work)素材
  • 指派品質分數
  • 移除重複資料
  • 確保多樣性與平衡
資料效率#

管理大型資料集需要高效的儲存檢索工具。

高效儲存: 分散式儲存系統如 HDFS [26] 和 Amazon S3 [27] 可將大量資料分散儲存於多台機器。列式格式(Columnar Formats)如 Parquet [28] 和 ORC [29] 提供更好的壓縮與更快的查詢效能。

高效檢索:

  • 分片(Sharding): 將資料分散至多個裝置以進行平行存取
  • 索引(Indexing): 使用 Apache Lucene [30] 或 Elasticsearch [31] 等技術快速定位資料
  • 預載入或快取(Pre-loading / Caching): 將常用資料載入記憶體以減少 I/O 延遲

討論要點#

  • 資料來源: 有哪些可用資料?資料集的多樣性與規模如何?
  • 資料敏感性: 個人、財務或醫療資料是否需要匿名化處理?
  • 偏見: 是否存在固有偏見?如何偵測與緩解?
  • 資料品質: 如何過濾低品質、無關或雜訊資料?
  • 不當內容: 使用什麼流程偵測與移除有害或 NSFW 內容?
  • 資料預處理: 如何將資料轉換為模型可理解的格式(例如分詞(Tokenization)、嵌入(Embeddings))?

模型開發#

模型開發涉及選擇適當的架構、訓練模型,以及從訓練好的模型生成新資料。

模型架構#

不同 ML 演算法可能有多種可行架構。例如,擴散模型可使用 U-NetDiT 架構。在面試中,應探討不同選項並權衡其優缺點。

選定架構後,分析其特定層以及輸入如何轉換為輸出。例如,在 U-Net 架構中,輸出的尺寸應與輸入圖像相同。

Figure 16: U-Net architecture

你可能被要求修改架構以支援新功能——例如在圖像生成模型中加入風格控制,或在文字轉影片模型中加入動作方向控制。

Transformer 的自注意力架構#

Transformer 是現代 GenAI 的基石。自 2017 年被提出以來 [32],它已成為自然語言處理(NLP)[33] [12]、電腦視覺(Computer Vision)[34] 和多模態學習(Multimodal Learning)[35] [36] 的主流架構。

Transformer 的核心是注意力機制(Attention Mechanism),最初是為機器翻譯而引入的 [37]。它克服了傳統序列模型(RNN、LSTM)的限制,使模型能更有效地捕捉長距離依賴關係(Long-Range Dependencies)與上下文資訊。

自注意力(Self-Attention)(縮放點積注意力,Scaled Dot-Product Attention)使輸入序列中的每個元素都能關注其他所有元素。每個 token 的輸入嵌入會被轉換為三個向量:

  • 查詢(Query, $Q$)鍵(Key, $K$)值(Value, $V$) 向量

這些向量透過可學習的權重矩陣 $W_Q$、$W_K$ 和 $W_V$ 計算:

$$Q=XW_Q,~K=XW_K,~V=XW_V$$

其中 $X$ 代表輸入序列的嵌入向量。

注意力分數的計算方式為:

$$\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_K}}\right)V$$

其中 $d_K$ 是鍵向量的維度。縮放因子 $\frac{1}{\sqrt{d_K}}$ 可防止點積值過大(否則在反向傳播時會產生極小的梯度)。Softmax 將注意力分數正規化為總和為 1,產生值向量 $V$ 的加權總和。

Figure 17: Scaled dot-product attention (Credit: [32])

多頭注意力#

為捕捉不同類型的關係與上下文依賴,自注意力被擴展為多頭注意力(Multi-Head Attention)。輸入被投影至多組(「頭」),每組各有獨立的可學習權重矩陣:

$$\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1,\text{head}_2,\cdots ,\text{head}_h) W_O$$

其中每個頭獨立計算:

$$\text{head}_i=\text{Attention}(QW_Q^i,KW_K^i,VW_V^i )$$

結果被串接並透過輸出權重矩陣 $W_O$ 進行線性轉換。這使模型能同時關注來自不同表示子空間(Representation Subspaces)的資訊,捕捉更豐富的依賴關係。

Figure 18: Multi-head attention (Credit: [32])

沒有放諸四海皆準的架構。面試官想評估的是你對不同 ML 架構的理解、各架構的優缺點,以及根據具體需求選擇合適架構的能力。

模型訓練#

模型訓練透過調整模型的參數(權重)來產出期望的輸出。需要討論的關鍵面向:

  • 訓練方法論(Training Methodology)
  • 訓練資料(Training Data)
  • ML 目標與損失函數(ML Objective and Loss Function)
  • 任務特定挑戰與緩解措施
訓練方法論#

每種模型遵循不同的訓練流程。例如:

  • 擴散模型逐步對資料去噪,從雜訊中生成高品質樣本
  • GANs 依賴對抗訓練(Adversarial Training),生成器與判別器相互競爭

許多模型採用多階段訓練。LLM 通常經歷三個階段:

  1. 預訓練(Pretraining):在大型資料集上學習通用模式
  2. 監督式微調(Supervised Finetuning):針對特定任務進行調適
  3. 對齊(Alignment):確保輸出符合人類價值觀
訓練資料#

資料可能因 GenAI 應用與訓練階段而異。例如,訓練 LLM 時:

  • 預訓練: 使用 Common Crawl [38] 等公開資料集
  • 對齊: 使用專家標註、精心策劃的資料

討論資料集時應涵蓋其來源、為何有價值,以及估計規模。

ML 目標與損失函數#

ML 目標是訓練期間的目標。例如:

  • LLM:準確預測下一個 token(次 token 預測,Next-Token Prediction)
  • VAE:重建原始圖像

Figure 19: Loss computation between training data and generated data

損失函數(Loss Function) 衡量預測結果與期望結果的吻合程度。它透過量化預測誤差來引導最佳化(Optimization)。選擇正確的損失函數至關重要——在大多數情況下,你會根據問題的建構方式從現有選項中選擇。

任務特定挑戰與緩解措施#

不同任務有各自特定的挑戰。例如,訓練大型影片生成模型需要大量資源,可能需要:

  • 平行化技術 [39][40][41]
  • 混合精度訓練(Mixed Precision Training)[42]
  • 潛在擴散模型(Latent Diffusion Models)[43]

訓練大規模模型最常用的三種技術:

梯度檢查點(Gradient Checkpointing) [44] 透過在前向傳播中僅儲存部分激活值來減少記憶體使用。缺失的激活值在反向傳播時重新計算。對於在有限 GPU 記憶體下訓練大型模型特別有用。

混合精度訓練(Mixed Precision Training) 同時使用 16 位元(半精度)和 32 位元(單精度)浮點數來加速訓練並減少記憶體使用。自動混合精度(Automatic Mixed Precision, AMP) [45](由 PyTorch 和 TensorFlow 提供)自動處理精度轉換並套用縮放以維持數值穩定性。

分散式訓練(Distributed Training) 使訓練能在多台機器或裝置上高效平行進行。

Figure 20: Parallelism techniques for distributed training

常見的平行化技術:

資料平行(Data Parallelism): 資料集分散至多個裝置,每個裝置保存完整模型副本。參數伺服器(Parameter Server)負責協調更新與分發模型參數。

Figure 21: Data parallelism

參數更新的兩種方式:

  • 同步式(Synchronous): 所有裝置完成計算後將梯度發送至參數伺服器,由伺服器匯總並更新模型。可確保一致性,但速度可能較慢(需等待最慢的裝置)。
  • 非同步式(Asynchronous): 每個裝置完成後立即發送梯度。速度較快,但可能導致不一致,因為各裝置可能使用不同版本的模型。

更多資料平行的資訊請參閱 [39]。

模型平行(Model Parallelism): 將單一模型拆分至多個裝置,每個裝置僅計算部分運算。當模型過大而無法放入單一裝置的記憶體時特別有用。

兩種類型:

  • 管線平行(Pipeline Parallelism, PP): 模型層被拆分至各裝置,以管線方式執行計算。對於非常深的模型特別有用 [40] [41]。

    Figure 22: Splitting model layers across devices

  • 張量平行(Tensor Parallelism, TP): 將單一層內的運算拆分至各裝置。當單一層過大而無法放入記憶體時特別有用 [46] [47] [48]。

    Figure 23: TP splitting tensor to chunks

混合平行(Hybrid Parallelism): 結合資料平行與模型平行。ZeRO [49](Microsoft)和 FSDP [50](Meta)等技術透過減少跨裝置的記憶體與計算冗餘,進一步優化資源利用。

結合平行化技術(FSDP)、記憶體節省方法(梯度檢查點)與最佳化手段(AMP),可高效擴展大型複雜模型的訓練。扎實理解這些技術對建構可擴展的 AI 系統至關重要。

模型取樣#

訓練完成後,下一步是取樣(Sampling)——從訓練好的模型生成新資料。不同應用有各種取樣方法。對於 LLM:

  • 貪婪搜尋(Greedy Search)
  • 束搜尋(Beam Search) [51]——產出連貫的文字,但可能限制多樣性
  • Top-k 取樣 [52]

Figure 24: Sampling new data from a trained model

在面試中,應討論各種取樣方法、其優缺點,並選擇適合你系統的方法。

討論要點#

  • 模型架構: 有哪些可行架構?各自的優缺點?使用了哪些特定層?為什麼?
  • 訓練方法論: 訓練流程如何運作(例如擴散、對抗訓練)?
  • 訓練資料: 如何取得?規模多大?不同階段是否使用不同資料?
  • ML 目標: 有哪些可行目標?它們如何影響效能?
  • 損失函數: 單一或多個?如何組合?
  • 訓練挑戰: 所選演算法有哪些特定挑戰?如何緩解?
  • 訓練效率: 分散式訓練、AMP 和平行化技術如何提升效率?
  • 取樣: 不同方法(Top-k、Top-p)如何影響品質與創造性?如何在不損失品質的情況下加速取樣?

評估#

模型開發完成後,下一步是使用離線(Offline)線上(Online) 方法進行評估。

離線評估#

離線評估(Offline Evaluation)使用預先收集的資料評估模型效能,無需部署至正式環境。不同模型類型的評估方式有所不同:

判別式模型使用傳統指標將預測結果與真實值(Ground Truth)進行比較:

任務指標
分類(Classification)Precision, Recall, F1 score, Accuracy, Confusion matrix
迴歸(Regression)MSE, MAE, RMSE
排序(Ranking)Precision@k, Recall@k, MRR, mAP, nDCG

表 2:判別式任務的常見指標

生成式模型的評估更為複雜——它們生成的是新內容,而非與固定答案比對,因此需要主觀或人工介入的評估方法:

任務指標
文字生成(Text Generation)Perplexity, BLEU, METEOR, ROUGE, CIDEr
圖像生成(Image Generation)FID, IS, KID, SWD, PPL, LPIPS
文字轉影片(Text-to-Video)FVD, CLIPScore, FID, LPIPS, KID

表 3:生成式任務的常見指標

多個角度評估生成內容。對於文字轉圖像,應同時檢查圖像品質與文字對齊度。對於聊天機器人,應跨不同任務(數學、推理、程式碼生成)進行衡量。

線上評估#

線上評估(Online Evaluation)評估模型在正式環境中的表現。與離線指標不同,線上指標的選擇更為主觀,且需要產品負責人和利害關係人的參與。

指標說明
點擊率(Click-Through Rate, CTR)點擊內容或建議的使用者比例
轉換率(Conversion Rate)與系統互動後完成目標行為的使用者比例
延遲(Latency)模型生成內容所需的時間
互動率(Engagement Rate)使用者互動的衡量指標(例如停留時間)
每用戶收入(Revenue Per User)每位使用者產生的平均收入
流失率(Churn Rate)在一定期間內停止使用系統的使用者比例
使用者滿意度(User Satisfaction)使用者對其體驗的直接回饋
使用者留存率(User Retention)在特定期間內持續使用系統的使用者比例
完成率(Completion Rate)模型成功完成任務的比例

表 4:線上評估的常見指標

討論要點#

  • 離線指標: 哪些指標最能評估品質、多樣性、真實性與連貫性?
  • 線上指標: 哪些指標與商業目標(互動、創造力、創新)一致?
  • 偏見: 如何評估模型在敏感屬性(性別、種族)方面的偏見?
  • 穩健性與安全性: 模型對對抗性攻擊的抵禦能力如何?
  • 人工評估: 人工審閱者如何補充自動評估?哪些方法(問卷調查、A/B 測試、專家審查)最有效?

整體 ML 系統設計#

GenAI 系統不僅僅是訓練一個模型——它們需要多個管線與元件協同運作:

  • 聊天機器人中,額外元件會過濾有害內容以確保安全
  • 影片生成系統中,額外模型會將解析度提升至所需品質

在此階段,整合所有系統正常運作所需的元件。

討論要點#

  • 系統元件: 各元件的角色為何(核心模型、預處理、內容過濾、後處理、升頻)?
  • 安全機制: 如何整合安全性與內容審核(例如 NSFW 過濾器)?
  • 使用者回饋與持續學習: 系統如何整合回饋進行微調與再訓練?
  • 可擴展性: 系統如何擴展(負載平衡器、分散式推論、模型平行)?
  • 安全考量: 如何確保使用者隱私?有哪些協定防範對抗性攻擊、模型篡改或資料洩漏?
  • 偏見: 有哪些策略處理偏見(偵測演算法、公平性稽核、過濾偏見輸出)?
  • 穩健性: 模型在正式環境中對對抗性攻擊的抵禦能力如何?

部署與監控#

最後一步是部署至正式環境,服務數百萬使用者。監控(Monitoring) 追蹤、衡量並記錄指標,以偵測系統故障並快速解決。由於此主題範圍廣泛且非 GenAI 特有,更深入的探討請參閱 [53] 或 ML System Design Interview [1]。

總結#

本章概述了 GenAI 並介紹了 GenAI 系統設計面試的框架。重點摘要:

  • 此框架涵蓋七個步驟:釐清需求、建構問題、資料準備、模型開發、評估、整體系統設計、部署與監控
  • 許多概念廣泛適用於 AI 系統設計,但本書聚焦於 GenAI 獨有的面向
  • 不同角色與公司可能強調不同面向(基礎設施、監控、LLM 開發)——運用此框架理解期望並據此調整

了解了這些基礎知識後,我們準備好來應對最常見的 GenAI 系統設計面試問題了。