Latency Patterns for Faster Applications

Cover Image

原始來源與檔名:2026-09-01T101512+0800-Latency Patterns for Faster Applications.md


SOURCE | 資訊源評估

NAPKIN | 餐巾紙

餐巾紙公式

降低延遲的終極策略 = 縮短依賴距離 (Locality) + 砍掉不必要的工作 (Work Reduction) + 平行處理獨立任務 (Concurrent Execution) + 預先猜測並準備 (Anticipation)

模型推理速度只是關鍵路徑上的一小部分,不要因為模型慢,就忽略了其他 90% 可以優化的架構設計。

一句話

提升 AI 應用的速度不能只靠壓縮模型或加快 Token 生成,而是必須從整體架構著手,運用快取、並行、預取與減少無效 Context 等 19 種系統級優化模式,來全面縮短使用者的體感等待時間。

餐巾紙草圖

┌───────────────────────────────────────
│ 效能優化四大象限 (The 4 Families)

│ 1. 縮短距離 (Locality)       │ 2. 減少工作 (Work Reduction)
│    - Colocation 共置         │    - 演算法優化 (用 Index 取代 Scan)
│    - 複製與分區              │    - 過濾無效 Context 再餵給 LLM
│    - Caching (最重要!)       │    - 合併請求 (Coalescing)
│ ─────────────────────────────┼─────────────────────────────
│ 3. 重疊執行 (Concurrency)    │ 4. 提前準備 (Anticipation)
│    - 平行呼叫獨立 Tool       │    - 預取資料 (Prefetching)
│    - Streaming 漸進式回應    │    - 樂觀更新 (UI 先動)
│    - 對沖請求 (防長尾延遲)   │    - Prewarming (暖機)
└───────────────────────────────────────

ROUND 1: SKELETON | 骨架掃描

“這本書在說什麼”

章節骨架

  1. 引言: 延遲的定義 (從用戶操作到第一個有用結果出現的時間)。模型只是其中一環。
  2. 第一類:Locality (縮短距離): 透過共置、複製、分區、快取,讓資料離運算更近。
  3. 第二類:Work Reduction (減少工作): 演算法替換、過濾無效資料、連線複用、合併請求。
  4. 第三類:Concurrent Execution (重疊執行): 移除鎖、獨立併發、漸進式回應(Streaming)、控制併發預算、對沖請求。
  5. 第四類:Anticipation (提前準備): 預取、樂觀更新 UI、推測執行、預先計算 (如先算好 Embeddings)、預熱 (Prewarming)。
  6. 結論與矩陣: 不要盲目套用,先 Trace 找出瓶頸,再查表對症下藥。

ROUND 2: DISSECTION | 血肉解剖

“憑什麼這麼說”

論證鏈

使用者只在乎端到端延遲 --> AI 應用包含了檢索、LLM、工具、驗證等多個環節 --> 任何環節的阻塞都會拖慢整體 --> 必須針對關鍵路徑(Critical Path)應用四大優化策略 --> 才能有效降低延遲

關鍵證據

  1. 選擇性資料處理 (Selective Data Processing):如果把大量未篩選的檢索資料直接丟給 LLM(作為 Context),不僅增加 Token 成本,還會嚴重拖慢模型的 Prefill(預填充)速度。在進入 Prompt 前先進行過濾與排序,是減少工作的核心。
  2. 獨立併發 (Independent Concurrency):如果一個 Research Agent 需要查三個不同的資料源,且這三個動作互不依賴,就應該平行發出請求,而不是循序等待。這樣總等待時間就會從 A+B+C 縮短為 Max(A, B, C)
  3. 預先準備 (Prewarming & Precomputation):與其在用戶請求到來時才去啟動沙盒或計算文件的 Embedding,不如在背景預先算好、預先啟動。這將極耗時的冷啟動 (Cold-start) 從用戶的等待路徑中移除了。

隱形假設與邊界

ROUND 3: SOUL | 靈魂提取

“還能怎麼用”

留白提問 (Guided Reflection)

跨域映射

DEEP READ | 精讀指引 (Must-Read Segments)

[!IMPORTANT] 學習的本質需要「認知阻力」。請親自回到原文閱讀以下核心段落,感受原始論述的阻力,不要只依賴 AI 的總結。

  1. Selective Data Processing (選擇性資料處理)
    • 「刪除過多資料可能導致另一次檢索和模型來回,使整條路徑更慢並降低品質;因此優化目標應該是『足夠的 Context』,而不是『盡可能最小的 Prompt』。」
    • 推薦理由: 這點出了 RAG 優化中的核心權衡 (Trade-off)。一味追求短 Prompt 來省錢省時間,反而會因為模型推理失敗而導致重試,最終適得其反。
  2. Measure the End-to-End Result (測量端到端結果)
    • 「不要從選擇模式開始。從 Tracing 完整的請求開始,找出延遲在哪裡進入關鍵路徑 (Critical Path)。」
    • 推薦理由: 這是所有效能優化工程師的鐵律。在沒有經過 Profiling / Tracing 證明瓶頸在哪裡之前,所有的優化都是盲目的「過早最佳化 (Premature Optimization)」。

STRUCTURE MAP | 全書結構圖

┌──────────────────────────────────────────────
│ 效能優化決策矩陣 (The Latency Matrix)

│ ┌─ [第一步: 定位瓶頸] ──────────────────┐
│ │ 延遲出現在哪裡?是檢索?LLM?還是工具呼叫?
│ └───────────────────────────────────────┘
│                 ▼
│ ┌─ [第二步: 對應四大解法] ──────────────┐
│ │
│ │ 1. 依賴太遠? ➔ Locality (縮短距離)
│ │    [ 共置 | 複製 | 分區 | 快取 ]
│ │
│ │ 2. 做了多餘的事? ➔ Work Reduction (減少工作)
│ │    [ 演算法替換 | 過濾資料 | 連線複用 | 合併請求 ]
│ │
│ │ 3. 循序排隊阻塞? ➔ Concurrency (重疊執行)
│ │    [ 移除鎖 | 平行呼叫 | Streaming | 對沖請求 ]
│ │
│ │ 4. 可預測的下一步? ➔ Anticipation (提前準備)
│ │    [ 預取 | 樂觀更新UI | 推測執行 | 預熱/預計算 ]
│ └───────────────────────────────────────┘
└──────────────────────────────────────────────

Latency Patterns for Faster Applications (Architectural Deep Dive)

前言/背景

當我們談論 AI 應用程式的延遲時,往往會把責任推給大語言模型 (LLM) 生成 Token 的速度。然而,真正的延遲定義是:「從使用者觸發動作,到出現第一個有用結果的時間。」在這個關鍵路徑 (Critical Path) 上,包含了身分驗證、上下文檢索、工具呼叫、Agent 協調與 UI 渲染。這篇文章將軟體工程中經典的 19 種延遲優化模式,歸納為四大策略,並精準映射到現代 AI 應用的開發中。

章節詳細總結

1. 縮短距離 (Locality: Bring Dependencies Closer)

距離包含了地理區域、微服務之間、進程之間,甚至 CPU 核心與記憶體之間的距離。

2. 減少工作 (Work Reduction: Remove Unnecessary Work)

最快的程式碼就是沒有執行的程式碼。在想辦法讓工具變快之前,先想想能不能不要呼叫它。

3. 重疊執行 (Concurrent Execution: Overlap Independent Work)

如果任務之間沒有相依性,就不應該循序執行。

4. 提前準備 (Anticipation: Move Predictable Work Earlier)

把能在使用者點擊前做完的事,提早做完。

總結與結論

Source URL: https://x.com/bibryam/status/2093791913258209304