本書旨在協助機器學習工程師與資料科學家在 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)
判別式模型#
判別式模型(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 展示了各類型驅動的常見任務。
什麼是 GenAI?為何日益受到關注?#
GenAI 運用現代生成式演算法訓練模型,使其能產生圖像、影片、文字、音訊等新資料樣本。
GenAI 之所以廣受歡迎,主要有兩個原因:
- 跨領域的多功能性: 這些模型能執行多樣任務——生成文字、創造逼真圖像、作曲——使其在創意藝術、醫療保健、軟體開發等各行各業中極具價值。
- 生產力提升: GenAI 應用顯著提升生產力。例如,ChatGPT [7] 等大型語言模型(LLM)可協助回答複雜問題並進行有意義的對話。McKinsey 報告 [8] 預測 GenAI 將在 2040 年前「每年提升 0.1% 至 0.6% 的勞動生產力」。
為何 GenAI 愈來愈強大#
三大關鍵因素推動了這項進展:
- 資料(Data)
- 模型容量(Model Capacity)
- 算力(Compute)
資料#
ML 模型的效能取決於訓練資料。GenAI 成功的關鍵驅動力之一是自監督式學習(Self-Supervised Learning)——不同於通常需要標註資料的經典模型,GenAI 模型能從未標註資料中學習。這使它們得以利用網路上的大量資料集,無需耗費高昂的標註成本。
現代 GenAI 模型在海量資料集上訓練,有時超過數十億篇文本文件或圖像:
- Meta 的 Llama 3 [9] 使用 15 兆個 token(約 50 TB 資料)進行訓練
- Google 的 Flamingo [10] 使用 18 億組(圖像、文字)配對進行訓練
在如此大量的資料上訓練,有助於模型學習複雜模式與細微差異,進而產出高品質的輸出。
模型容量#
模型容量(Model Capacity)透過兩種方式衡量:參數數量(Number of Parameters) 與 FLOP 計數(FLOP Count)。
參數數量#
參數是模型在訓練過程中學習到的數值。參數越多的模型通常具備更大的能力來學習複雜模式,往往能帶來更好的效能(前提是有足夠的訓練資料)。
| Model Name | Parameters |
|---|---|
| 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)中所需的浮點運算次數來衡量計算複雜度,包括加法、乘法及資料通過模型各層時的其他算術運算。
以一個具有 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] 發現兩個關鍵洞察:
- 規模擴大對效能的影響遠比架構變化更為顯著。
- 隨著模型大小、資料集大小或算力增加,效能依循冪律趨勢(Power-Law Trend) 提升。
![Figure 5: OpenAI’s scaling law (Credit: [17])](figure-1-5-IMR6D6IU.png)
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 概念的理解、設計流程與推理能力。
遵循結構化框架,避免雜亂無章的回答掩蓋你的思路。
此框架包含以下步驟:
- 釐清需求(Clarifying Requirements)
- 將問題建構為 ML 任務(Framing the Problem as an ML Task)
- 資料準備(Data Preparation)
- 模型開發(Model Development)
- 評估(Evaluation)
- 整體 ML 系統設計(Overall ML System Design)
- 部署與監控(Deployment and Monitoring)
釐清需求#
開發 ML 系統時,起初往往只有極少資訊。面試題目同樣如此,通常十分模糊(例如「設計一個圖像生成系統」)。第一步是提出釐清問題,幫助你理解問題空間與具體目標。
問題分為兩類:
- 功能性需求(Functional Requirements)——系統應該做什麼
- 非功能性需求(Non-Functional Requirements)——系統應如何表現
功能性需求#
功能性需求描述系統的核心能力。例如,「根據使用者的提示詞生成圖像並自訂其風格」就是文字轉圖像系統的功能性需求。這些需求決定了高層架構,並引導核心元件的開發。
非功能性需求#
非功能性需求聚焦於效能特性——延遲(Latency)、吞吐量(Throughput)、公平性(Fairness)、安全性(Security)與可擴展性(Scalability)。雖然它們可能不會大幅改變初始架構,但及早識別至關重要,因為它們會影響後續的設計階段。
釐清問題範例#
- 商業目標: 主要目標為何?(例如:電商的詳細產品描述 vs. 社群媒體的簡短圖說)
- 系統功能: 哪些功能可能影響 ML 設計?(例如:使用者回饋、支援語言)
- 資料: 資料來源為何?資料集多大?資料是否已標註?
- 限制條件: 可用的計算資源為何?雲端或端側裝置?
- 系統規模: 預期使用者數量?預期的需求成長?
- 效能: 是否需要即時生成?品質與速度何者優先?
完成此步驟後,你應與面試官就系統範圍與需求達成共識。
將問題建構為 ML 任務#
將問題建構為 ML 任務決定了後續設計的方向。兩個關鍵步驟:
- 定義系統的輸入與輸出
- 選擇合適的 ML 方法
定義系統的輸入與輸出#
定義輸入資料的模態(Modality)——文字、圖像、音訊、影片——以及預期輸出。例如,在聊天機器人中,輸入是使用者的文字查詢,輸出是系統的回應。
選擇合適的 ML 方法#
定義輸入與輸出後,依照以下步驟選擇最合適的 ML 方法:
判別式 vs. 生成式: 根據系統的輸出來決定。物件偵測(輸出類別)屬於判別式;聊天機器人(產生文字)屬於生成式。
辨識任務類型: 判別式模型用於分類和迴歸;生成式模型用於文字、圖像、音訊或影片生成。系統的輸出決定了任務類型。
選擇合適的演算法: 考量因素包括處理不同輸入模態的能力、效率與品質期望。例如,在文字轉圖像系統中,VAEs 或 GANs 雖然具備圖像生成能力,但可能不太理想,因為演算法還需處理文字輸入。
討論要點#
- 根據需求,系統的輸入與輸出為何?
- 模型需要處理哪些資料模態?應使用單一模型處理所有模態,還是使用專門模型?
- 哪種生成式演算法(例如擴散模型、VAEs、GANs)最適合?為什麼?
- 在品質、效率與易用性方面有哪些取捨?
- 所選方法是否有足夠的可擴展性以因應未來變化?
資料準備#
ML 模型直接從資料中學習,因此高品質資料對有效訓練至關重要。
資料類型#
資料通常分為結構化(Structured) 與非結構化(Unstructured) 兩類。
結構化資料可組織為具有列與欄的表格(例如資料庫、試算表):
- 類別型資料(Categorical Data): 不同的群組或類別(例如性別、顏色)
- 數值型資料(Numerical Data): 可量測的數值(例如銷售量、房價)
- 序數型資料(Ordinal Data): 具有預定順序的資料(例如滿意度評分)
非結構化資料沒有底層結構或定義——文字、圖像、影片、音訊,或其組合(例如社群媒體貼文、電子郵件)。
傳統 ML 模型通常使用結構化資料進行訓練。GenAI 模型主要處理圖像、文字、影片等非結構化資料,因此資料準備方式有顯著差異。
傳統 ML 的資料準備#
準備結構化資料涉及兩個關鍵步驟:
資料工程#
建構與維護用於收集、儲存、檢索和處理資料的系統。核心元件是 ETL(Extract, Transform, Load)[21],它從各種來源擷取資料、轉換為可用格式,並載入至資料倉儲。
特徵工程#
從原始資料中選擇與提取具預測力的特徵(Feature),並轉換為 ML 模型可使用的格式。此流程常使用特徵儲存庫(Feature Store),如 Tecton [22] 或 Amazon SageMaker [23]。包含的技術有處理缺失值、表示類別型特徵、分桶(Bucketing)等。
由於本書聚焦 GenAI,更深入的資料工程與特徵工程內容請參閱 [24]。
GenAI 的資料準備#
對於生成式模型,重心從特徵工程轉移至:
- 收集大量資料
- 確保資料品質高且安全
- 使用工具高效儲存與檢索資料
資料收集#
先進的 GenAI 模型擁有數十億參數,需要大量訓練資料。例如,Llama 3 使用 15 兆個 token(約 50 TB)的各類網路來源進行訓練。資料收集流程從網站、社群媒體與論壇中爬取文字,彙整成大型資料集。
隨著模型規模持續擴大,以 AI 生成(合成)資料擴充訓練資料集已成為趨勢。
合成資料的優點:
- 提升資料多樣性: 增加變異性,強化模型的泛化能力
- 可擴展性: 提供可擴展的方式來建立難以手動收集的大型資料集
合成資料的缺點:
- 品質疑慮: 低品質的合成資料可能散播偏見或錯誤
- 代表性問題: 可能無法良好地代表原始資料
- 真實世界分布落差: 可能無法完全捕捉真實世界場景的複雜性
更多合成資料的資訊請參閱 [25]。
資料清理#
大型網路資料集通常含有雜訊,且可能包含低品質或不當內容。關鍵清理步驟:
- 過濾有害內容
- 偵測 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-Net 或 DiT 架構。在面試中,應探討不同選項並權衡其優缺點。
選定架構後,分析其特定層以及輸入如何轉換為輸出。例如,在 U-Net 架構中,輸出的尺寸應與輸入圖像相同。
你可能被要求修改架構以支援新功能——例如在圖像生成模型中加入風格控制,或在文字轉影片模型中加入動作方向控制。
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])](figure-1-17-XWUCRSYN.png)
多頭注意力#
為捕捉不同類型的關係與上下文依賴,自注意力被擴展為多頭注意力(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])](figure-1-18-QXDPSFDA.png)
沒有放諸四海皆準的架構。面試官想評估的是你對不同 ML 架構的理解、各架構的優缺點,以及根據具體需求選擇合適架構的能力。
模型訓練#
模型訓練透過調整模型的參數(權重)來產出期望的輸出。需要討論的關鍵面向:
- 訓練方法論(Training Methodology)
- 訓練資料(Training Data)
- ML 目標與損失函數(ML Objective and Loss Function)
- 任務特定挑戰與緩解措施
訓練方法論#
每種模型遵循不同的訓練流程。例如:
- 擴散模型逐步對資料去噪,從雜訊中生成高品質樣本
- GANs 依賴對抗訓練(Adversarial Training),生成器與判別器相互競爭
許多模型採用多階段訓練。LLM 通常經歷三個階段:
- 預訓練(Pretraining):在大型資料集上學習通用模式
- 監督式微調(Supervised Finetuning):針對特定任務進行調適
- 對齊(Alignment):確保輸出符合人類價值觀
訓練資料#
資料可能因 GenAI 應用與訓練階段而異。例如,訓練 LLM 時:
- 預訓練: 使用 Common Crawl [38] 等公開資料集
- 對齊: 使用專家標註、精心策劃的資料
討論資料集時應涵蓋其來源、為何有價值,以及估計規模。
ML 目標與損失函數#
ML 目標是訓練期間的目標。例如:
- LLM:準確預測下一個 token(次 token 預測,Next-Token Prediction)
- VAE:重建原始圖像
損失函數(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) 使訓練能在多台機器或裝置上高效平行進行。
常見的平行化技術:
資料平行(Data Parallelism): 資料集分散至多個裝置,每個裝置保存完整模型副本。參數伺服器(Parameter Server)負責協調更新與分發模型參數。
參數更新的兩種方式:
- 同步式(Synchronous): 所有裝置完成計算後將梯度發送至參數伺服器,由伺服器匯總並更新模型。可確保一致性,但速度可能較慢(需等待最慢的裝置)。
- 非同步式(Asynchronous): 每個裝置完成後立即發送梯度。速度較快,但可能導致不一致,因為各裝置可能使用不同版本的模型。
更多資料平行的資訊請參閱 [39]。
模型平行(Model Parallelism): 將單一模型拆分至多個裝置,每個裝置僅計算部分運算。當模型過大而無法放入單一裝置的記憶體時特別有用。
兩種類型:
管線平行(Pipeline Parallelism, PP): 模型層被拆分至各裝置,以管線方式執行計算。對於非常深的模型特別有用 [40] [41]。
張量平行(Tensor Parallelism, TP): 將單一層內的運算拆分至各裝置。當單一層過大而無法放入記憶體時特別有用 [46] [47] [48]。
混合平行(Hybrid Parallelism): 結合資料平行與模型平行。ZeRO [49](Microsoft)和 FSDP [50](Meta)等技術透過減少跨裝置的記憶體與計算冗餘,進一步優化資源利用。
結合平行化技術(FSDP)、記憶體節省方法(梯度檢查點)與最佳化手段(AMP),可高效擴展大型複雜模型的訓練。扎實理解這些技術對建構可擴展的 AI 系統至關重要。
模型取樣#
訓練完成後,下一步是取樣(Sampling)——從訓練好的模型生成新資料。不同應用有各種取樣方法。對於 LLM:
- 貪婪搜尋(Greedy Search)
- 束搜尋(Beam Search) [51]——產出連貫的文字,但可能限制多樣性
- Top-k 取樣 [52]
在面試中,應討論各種取樣方法、其優缺點,並選擇適合你系統的方法。
討論要點#
- 模型架構: 有哪些可行架構?各自的優缺點?使用了哪些特定層?為什麼?
- 訓練方法論: 訓練流程如何運作(例如擴散、對抗訓練)?
- 訓練資料: 如何取得?規模多大?不同階段是否使用不同資料?
- 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 系統設計面試問題了。