晶片層 開放閱讀

自動調優

Auto-Tuning

概念 ID
auto-tuning
更新時間
2026-05-29
來源數量
待補

3 秒看懂

一句話:自動調優是讓編譯器/架構”自動試跑”成百上千種實現方案,找到在特定硬體上最快的那一套配置——本質是用搜索代替人工經驗

類比:廚師接到一道菜,要決定刀工大小、火候、翻炒時長。經驗老道的大廚憑直覺選,自動調優則是讓新手把所有組合都試一遍,用秒錶計時,選出最優解。


3 分鐘產業解釋

為什麼需要自動調優?

深度學習運算元(如卷積、矩陣乘、注意力)在不同硬體上的”最優實現”天差地別:

變數可選空間示例
迴圈切分 (Tiling)對 M/N/K 維度分別切成多大的塊
並行策略哪些維度分配給執行緒/Block/Warp
記憶體版面配置NHWC vs NCHW、是否需要 transpose
向量化寬度一次 load 多少位元組
融合策略哪些運算元合併成一個 kernel

人工調優的痛點

  • 不同 GPU 架構(Ampere vs Hopper vs CDNA)最優配置不同
  • 不同輸入形狀(batch size、序列長度)最優配置不同
  • 一個大型模型有數百個 unique 運算元,逐一手動調優不現實

自動調優的價值:讓編譯器自己搜尋最優配置,開發者只需定義”正確性約束”。

產業影響

  • 降低硬體適配成本:新晶片上市後,無需等廠商手寫最佳化庫,編譯器可自動適配
  • 釋放異構算力:CPU/GPU/NPU/FPGA 統一排程,每種硬體自動找到最優實現
  • 加速模型迭代:新架構(如 MoE、稀疏注意力)可快速獲得高效能實現

15 分鐘專家深入

核心工作流

┌─────────────────────────────────────────────────────┐
│                   Auto-Tuning Pipeline               │
├─────────────────────────────────────────────────────┤
│  1. 定義搜尋空間 (Search Space)                       │
│     └─ 所有可能的最佳化配置集合                          │
│  2. 取樣候選方案 (Proposal)                           │
│     └─ 從搜尋空間中選擇配置                            │
│  3. 編譯 & 執行 (Build & Run)                         │
│     └─ 生成程式碼、實際跑 benchmark                      │
│  4. 評估效能 (Measure)                               │
│     └─ 收集 latency/throughput 等指標                 │
│  5. 指導下一輪搜尋 (Guide)                            │
│     └─ 更新 cost model 或搜尋策略                      │
│  6. 迭代至收斂或預算耗盡                                │
└─────────────────────────────────────────────────────┘

三大技術範式

範式 1:基於模板的調優 (Template-based)

代表:AutoTVM (TVM)

┌─────────────────────────────────────┐
│         Template-Based AutoTVM      │
├─────────────────────────────────────┤
│  人工定義 Template(帶引數槽位)      │
│         ↓                           │
│  搜尋演算法填充引數值                   │
│         ↓                           │
│  程式碼生成 + 實測效能                  │
│         ↓                           │
│  Cost Model 預測未跑方案             │
│         ↓                           │
│  重複至收斂                          │
└─────────────────────────────────────┘

優點:搜尋空間受模板約束,質量上限高(人工經驗注入) 缺點:需要為每類運算元寫模板,擴充套件性受限

範式 2:基於排程原語的自動搜尋 (Schedule-Primitives)

代表:Auto-Scheduler (TVM, 原 Ansor)

  • 不需要模板,從運算元的計算描述自動派生搜尋空間
  • 使用隨機抽取 + 階段規則(Sketch)生成合法排程
  • Cost Model 使用基於 XGBoost(梯度提升決策樹)的模型預測效能

優點:無需人工模板,覆蓋更廣的搜尋空間 缺點:搜尋空間爆炸,需要更智慧的引導

範式 3:基於 DSL 的自動調優

代表:Triton (OpenAI)、Halide

# Triton 風格
@triton.jit
def matmul_kernel(A, B, C, M, N, K,
                  BLOCK_M: tl.constexpr,   # 自動調優引數
                  BLOCK_N: tl.constexpr,   # 自動調優引數
                  BLOCK_K: tl.constexpr):  # 自動調優引數
    # ... kernel 邏輯 ...

使用者標註哪些是可調引數,架構自動遍歷或搜尋。

搜尋演算法分類

演算法類別典型方法特點
隨機/網格搜尋Random Search簡單基線,高維空間下隨機搜尋效率不差
貝葉斯最佳化GP-BO, TPE用機率模型建模目標函式,適合 expensive evaluation
進化演算法Genetic Algorithm, CMA-ES種群迭代,適合離散+連續混合空間
基於 ML 的 Cost ModelXGBoost, GNN, Tree-LSTM訓練模型預測效能,減少實際執行次數
基於 RL 的搜尋Policy Gradient, Q-Learning把排程選擇建模為序列決策問題

產業實踐:多數系統採用”Cost Model 預篩 + 少量實測驗證”的混合策略,平衡搜尋效率與準確性。

技術原理(最深)

搜尋空間定義

自動調優的核心是定義合法且有意義的配置空間。以矩陣乘 C[M,N] = A[M,K] × B[K,N] 為例:

搜尋空間維度:
├── Tiling
│   ├── block_m ∈ {64, 128, 256}
│   ├── block_n ∈ {64, 128, 256}
│   └── block_k ∈ {16, 32, 64}
├── Unrolling
│   └── unroll_factor ∈ {1, 2, 4, 8}
├── Vectorization
│   └── vec_width ∈ {4, 8}  (float 時為 16/32 位元組)
├── Memory Scope
│   └── use_shared ∈ {True, False}
│   └── use_register_tiling ∈ {True, False}
└── Parallelism
    └── warp_m × warp_n ∈ {(1,4), (2,2), (4,1)}

總配置數 = |block_m| × |block_n| × |block_k| × ...
         = 3 × 3 × 2 × ... × N
         = 數萬至數十萬種可能

Cost Model 訓練

以 TVM 的基於 XGBoost 的 Cost Model 為例:

輸入特徵:
├── 迴圈結構特徵(巢狀深度、是否有 reduction)
├── 記憶體訪問特徵(步長、是否連續、快取命中率估算)
├── 計算密度特徵(FLOPs / 記憶體位元組 = Arithmetic Intensity)
└── 硬體引數(SM 數量、共享記憶體大小、暫存器檔案大小)

輸出:預測的執行時間 (latency)

訓練資料:(configuration, actual_latency) pairs
          從少量實際執行中收集

關鍵技術:Cost Model 不需要非常準確,只需要能正確排序(哪個配置更好),因此用 ranking loss 訓練更有效。

搜尋策略(以 Auto-Scheduler 為例)

Auto-Scheduler 使用 Sample-then-Evaluate 策略:

Step 1: Sketch Generation(草圖生成)
  └─ 使用一組預定義規則(Rules)從計算圖派生排程骨架
  └─ 例如:是否使用 split、是否 reorder、是否 fuse

Step 2: Parameter Population(引數填充)
  └─ 在草圖的槽位中隨機取樣引數值
  └─ 約束合法性(如 shared memory < 硬體限制)

Step 3: Cost Model 預篩選
  └─ 從大量候選中選出 Top-K 個最有希望的配置

Step 4: 實測驗證
  └─ 對 Top-K 配置編譯並實際執行,記錄真實 latency

Step 5: 更新 Cost Model
  └─ 用新的 (配置, 效能) 對更新模型
  └─ 重複 Step 3-5

與硬體特性的互動

自動調優需要感知硬體限制:

約束示例(NVIDIA GPU):
├── Shared Memory: 每 SM 有限(具體大小因架構而異,詳見硬體手冊)
│   └─ tiling 引數必須滿足: block_m × block_n × dtype_size &lt; shared_mem_limit
├── Registers: 每執行緒暫存器數量有限
│   └─ 過度展開 (unroll) 暫存器溢位 → 效能暴跌
├── Warp Divergence: 分支效率
│   └─ 某些配置會導致 warp 內執行緒走不同分支
└── Occupancy: 每 SM 併發 block/warp 數
    └─ 暫存器/共享記憶體佔用過高會降低佔用率

技術演進史

時期里程碑意義
~2010s 早期ATLAS / FFTW 等科學計算庫的自動調優自動調優思想萌芽,但侷限於特定演算法
2015-2017Halide 語言 + autoscheduler將排程與計算解耦,開創”排程空間搜尋”範式
2018TVM AutoTVM 釋出首個面向深度學習的端到端自動調優系統
2019XLA (TensorFlow) 持續迭代Google 在編譯器中內建搜尋式最佳化
2020Ansor (Auto-Scheduler) 釋出無模板自動搜尋,突破人工模板瓶頸
2021-2022Triton (OpenAI) 開源DSL + 自動調優,降低 GPU kernel 編寫門檻
2022-2023CUTLASS 3.x(含 CuTe 子庫)/ cuDNN 8 內建自動調優廠商在原生庫中整合自動選擇邏輯
2023-2024MLIR + LLVM 社群整合自動調優作為編譯流水線標準組件

趨勢:從”離線搜尋 → 回放”向”即時調優 (Just-in-Time Tuning)“演進,支援動態 shape 和線上適應。


技術路線對比

維度Template-based (AutoTVM)Schedule-based (Auto-Scheduler)DSL-based (Triton)
搜尋空間來源人工模板自動派生使用者宣告引數
擴充套件新運算元成本高(需寫模板)低(只需計算定義)中(需寫 kernel)
效能上限高(專家經驗注入)中高(受規則約束)高(使用者可精細控制)
搜尋效率較高(空間受約束)較低(空間大)中等
可移植性中(模板與硬體相關)高(規則通用)中(kernel 與後端相關)
代表系統AutoTVMTVM Auto-SchedulerTriton, Halide
適用場景運算元庫快速最佳化新運算元快速原型研究 + 生產

補充對比:廠商原生調優

維度開源編譯器調優廠商原生調優 (如 cuDNN / oneDNN)
維護方社群晶片廠商
覆蓋範圍廣(任意運算元)窄(常用運算元)
效能上限中高高(深度硬體繫結)
更新速度取決於廠商節奏
信任度需驗證生產級保障

上下游

上游:自動調優依賴什麼

┌─────────────────────────────────────────────────┐
│                   上游依賴                        │
├─────────────────────────────────────────────────┤
│  硬體描述 / 效能計數器                            │
│    └─ GPU: CUDA Profiling Tools, rocprofiler    │
│    └─ 需要獲取真實 latency                       │
│                                                  │
│  編譯器基礎設施                                   │
│    └─ IR: MLIR, LLVM IR, TVM IR                 │
│    └─ 程式碼生成後端                               │
│                                                  │
│  運算元語義定義                                     │
│    └─ 計算圖描述(ONNX, torch.compile graph)    │
└─────────────────────────────────────────────────┘

下游:自動調優輸出什麼

┌─────────────────────────────────────────────────┐
│                   下游消費                        │
├─────────────────────────────────────────────────┤
│  最佳化後的 Kernel / 排程計劃                       │
│    └─ 直接編譯為可執行程式碼                        │
│    └─ 或序列化為調優記錄(TVM tuning records)    │
│                                                  │
│  AI 推論/訓練架構                                 │
│    └─ TensorRT, ONNX Runtime                    │
│    └─ PyTorch 2.x (torch.compile)               │
│                                                  │
│  硬體適配層                                      │
│    └─ 新晶片的運算元庫快速建置                      │
└─────────────────────────────────────────────────┘

關鍵指標

調優質量指標

指標定義重要性
Speedup vs Baseline相對於預設實現的加速比核心價值體現
Percentage of Peak達到硬體理論峰值的百分比衡量調優深度
搜尋時間 (Search Time)找到最優配置所需時間實用性
搜尋空間覆蓋率探索的配置佔總空間比例搜尋效率
Cost Model 準確率預測排序與真實排序的相關性決定搜尋效率

典型效能資料(定性,具體數字因硬體/運算元而異)

  • GEMM 自動調優:相比樸素實現,通常可獲得顯著提速(數量級取決於基線質量)
  • Attention 自動調優:FlashAttention 類核心需手動設計,自動調優在此類融合運算元上仍有挑戰
  • 搜尋開銷:一次完整調優可能需要數十分鐘至數小時,但結果可快取複用

供需與市場資料

需求端:誰需要自動調優?

場景痛點自動調優價值
AI 晶片廠商新晶片沒有最佳化庫,等庫太慢快速建置運算元庫,縮短上市時間
大型模型訓練模型架構迭代快,每次都要重新最佳化編譯器自動適配
邊緣部署碎片化硬體(手機 SoC、車載晶片)統一編譯+自動調優降低適配成本
推論服務動態 batch、動態 shapeJIT 調優即時適配

供給端:誰在提供自動調優能力?

型別代表模式
開源編譯器TVM, Triton, XLA社群維護,免費使用
晶片廠商工具NVIDIA (TensorRT, cuDNN), AMD (rocBLAS)與硬體繫結,閉源為主
編譯器創業公司OctoML (TVM商業化), Modular (MAX)商業支援+雲端服務
雲端廠商內部AWS (Inferentia), Google (TPU)內部使用,不對外

市場規模(估算)

自動調優作為編譯器工具鏈的一部分,難以單獨統計市場規模。可參考的口徑:

  • AI 編譯器/最佳化工具鏈整體市場 [行業報告,具體數字來源各異]
  • 其價值主要體現在降低工程人力成本提升硬體利用率兩個維度

代表公司與資本對映

公司/專案定位技術路線融資/狀態
OctoMLTVM 商業化Apache TVM + 雲端調優服務已融資,具體金額未確認
Modular下一代 AI 編譯器Mojo 語言 + MAX 引擎已完成多輪融資 [公開報道]
MLIR/TVM 社群開源編譯器基礎設施社群驅動Google/多家公司貢獻
NVIDIA垂直整合cuDNN + TensorRT + Nsight上市 (NVDA)
AMD編譯器追趕ROCm + MIOpen上市 (AMD)
Google內部編譯器XLA + MLIRAlphabet 子公司

投資邏輯

核心邏輯

  1. 硬體碎片化加劇 → 自動調優是降低適配成本的關鍵技術

    • AI 晶片從 NVIDIA 獨佔走向多元化(AMD、Intel、自研 ASIC)
    • 每種新硬體都需要最佳化庫,人工方式不可持續
  2. 編譯器成為 AI 基礎設施競爭的焦點

    • PyTorch 2.x 的 torch.compile 將編譯器推到前臺
    • 誰的編譯器+調優能力更強,誰的硬體生態更有競爭力
  3. 動態場景增多 → JIT 調優價值凸顯

    • 動態 shape(NLP 變長序列)、動態 batch(推論服務)
    • 靜態離線調優不夠,需要線上適應能力

風險

  • 開源替代風險:TVM、Triton 等開源專案進展快,商業公司需提供顯著差異化價值
  • 廠商繫結:NVIDIA 等廠商可能將最優調優能力鎖定在自家生態中
  • LLM 對編譯器的挑戰:大型模型最佳化更多依賴演算法創新(如 FlashAttention),編譯器自動調優難以觸及演算法層面

常見誤讀糾偏

誤讀 1:“自動調優能替代手寫 kernel”

糾偏:自動調優擅長在已知演算法架構內尋找最優引數配置,但無法發明新的演算法。例如:

  • FlashAttention 的 IO-aware 演算法設計是人類智慧,不是搜尋出來的
  • 自動調優可以在此基礎上進一步調優 tiling 引數,但無法替代演算法創新
  • 真正的高效能 = 好的演算法 × 好的調優,兩者缺一不可

誤讀 2:“搜尋空間越大,調優結果越好”

糾偏

  • 搜尋空間過大 → 搜尋效率下降,可能在有限預算內找不到好解
  • 存在”維數災難”:配置數隨引數維度指數增長
  • 實踐中需要人工約束 + 好的搜尋策略來平衡覆蓋率與效率
  • 有時一個精心設計的小搜尋空間,比盲目大的空間效果更好

誤讀 3:“調優一次,永久有效”

糾偏

  • 硬體型號變更(A100 → H100)→ 最優配置可能完全不同
  • 輸入形狀變化(batch size 從 1 變 64)→ 切分引數需要調整
  • 驅動/編譯器版本更新可能影響效能特性
  • 生產環境中需要調優記錄管理條件性複用

學習路徑

入門(1-2 天)

  1. 理解動機:閱讀 TVM 官方教程中的 Auto-Tuning 章節
  2. 動手實踐:用 TVM AutoTVM 對一個簡單運算元(如 conv2d)進行調優
  3. 觀察現象:對比調優前後的效能差異

進階(1-2 周)

  1. 深入 Auto-Scheduler:學習 Ansor/Auto-Scheduler 的無模板搜尋原理
  2. Triton 實踐:用 Triton 寫一個 matrix multiplication kernel,體驗 DSL + 自動調優
  3. 閱讀論文
    • “Ansor: Generating High-Performance Tensor Programs for Deep Learning” (OSDI 2020)
    • “TVM: An Automated End-to-End Optimizing Compiler for Deep Learning” (OSDI 2018)

專家(持續)

  1. MLIR 學習:瞭解現代編譯器基礎設施如何支援自動調優
  2. 硬體 Profiling:學習 Nsight Compute / rocprofiler,理解硬體瓶頸
  3. Cost Model 設計:研究如何訓練更準確的效能預測模型

一句話總結

自動調優是 AI 編譯器的”自動駕駛”——它不發明新演算法,但能在給定演算法架構下,自動找到在特定硬體和輸入上的最優執行配置,是解決硬體碎片化和降低 AI 部署成本的關鍵技術。


延伸閱讀與來源

核心論文

論文年份關鍵貢獻
TVM (OSDI 2018)2018端到端 ML 編譯器 + AutoTVM
Ansor (OSDI 2020)2020無模板自動調度搜索
Triton (ICML 2019)2019面向 GPU 的 DSL + 編譯器
FlexTensor (ASPLOS 2020)2020多平台自動張量最佳化

教程與文件

產業報告

  • AI 編譯器市場分析:[各諮詢機構報告,具體資料來源各異,需獨立核實]

開源專案


資料說明

  • 本文中的技術原理描述基於公開論文和開源專案文件
  • 具體效能資料因硬體、運算元、輸入形狀而異,未給出絕對數字
  • 融資資訊基於公開報道,具體金額請以公司官方揭露為準
  • 標註 [估算] 的資料為行業定性判斷,非精確統計
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型