Skip to content

Commit 04e5fb6

Browse files
committed
add material
1 parent 4a8baa7 commit 04e5fb6

File tree

447 files changed

+121558
-1133
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

447 files changed

+121558
-1133
lines changed

BuildOnLinux.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ cmake .. -G Ninja && ninja
100100
成功編譯後應該在 build 目錄下會看到 `libtvm.so``libtvm_runtime.so`
101101

102102

103-
可以將編譯好的共享庫班一道系統路徑
103+
可以將編譯好的共享庫搬移到系統路徑
104104
```sh
105105
sudo cp build/*.so /usr/local/lib/
106106
```

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ pip install apache-tvm
2525
- [How to convert a network to GCC compilable C/C++ code? 提到BYOC](https://discuss.tvm.apache.org/t/how-to-convert-a-network-to-gcc-compilable-c-c-code/7846/6)
2626
- [microTVM:裸机上的 TVM](https://tvm.hyper.ai/docs/topic/microtvm/)
2727
- [microTVM 設計文檔](https://tvm.hyper.ai/docs/arch/arch/microtvm_design)
28+
- [TVM从零开始学深度学习编译器](http://giantpandacv.com/project/部署优化/深度学习编译器/【从零开始学深度学习编译器】一,深度学习编译器及TVM介绍/)
29+
- [TVM等神經編譯器概覽:它是連接深度學習框架和硬體的橋樑](https://posts.careerengine.us/p/6050781ceee8dc2d4b00faca)
2830

29-
- [TVM等神經編譯器概覽:它是連接深度學習框架和硬體的橋樑](https://posts.careerengine.us/p/6050781ceee8dc2d4b00faca)

TVM-intro.md

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# 深度學習模型高效能部署框架:TVM的架構與核心元素解析
2+
3+
隨著人工智慧(AI)和深度學習技術的快速發展,模型的複雜度與計算量不斷增加,同時目標硬體平台的多樣性也使模型部署變得更具挑戰性。TVM(Tensor Virtual Machine)作為一個開源的深度學習編譯框架,專注於解決模型在異構硬體上高效執行的問題。本文將深入介紹TVM的架構設計、工作流程與其組成的核心元素,幫助您全面瞭解TVM的技術價值。
4+
5+
---
6+
7+
## **TVM的架構設計**
8+
9+
TVM的架構可以分為三個主要層次:**前端(Frontend)****中端(Intermediate Layer)**以及**後端(Backend)**,這些層次共同協作,實現從模型匯入到硬體代碼生成的全流程支持。
10+
11+
### **1. 前端(Frontend)**
12+
TVM的前端負責匯入不同框架生成的深度學習模型,例如:
13+
- **TensorFlow** 的 SavedModel 格式。
14+
- **PyTorch** 的 TorchScript。
15+
- **ONNX**(Open Neural Network Exchange)格式。
16+
17+
在匯入模型後,TVM將其轉換為一種內部中介表示(Intermediate Representation, IR),即**Relay IR**,這是TVM專為支持模型最佳化與硬體映射而設計的表示語言。
18+
19+
### **2. 中端(Intermediate Layer)**
20+
中端是TVM進行模型最佳化與硬體映射的核心部分,包含兩個重要的中介表示層次:
21+
1. **Relay IR**
22+
- Relay是一種高階的中介表示語言,用於描述模型的計算圖(Computation Graph)。
23+
- 支援靜態圖與動態圖,適合多種深度學習場景。
24+
- 在Relay階段,模型會進行一系列的最佳化,包括:
25+
- **算子融合(Operator Fusion)**:合併多個算子為一個,減少中間數據傳輸。
26+
- **常數折疊(Constant Folding)**:提前計算靜態常數值以提升執行效率。
27+
- **移除死代碼(Dead Code Elimination)**:刪除未使用的運算節點。
28+
29+
2. **Tensor Expression(Te IR)**
30+
- Te是一種低階表示,用於描述具體的張量操作和計算。
31+
- 該階段的重點在於進行硬體優化,並通過「排程」(Schedule)決定如何將運算映射到目標硬體,典型的排程策略包括:
32+
- **平行化(Parallelization)**:分割運算以在多核硬體上同時執行。
33+
- **向量化(Vectorization)**:利用硬體的向量指令集加速運算。
34+
- **記憶體優化(Memory Optimization)**:減少對高延遲記憶體的訪問次數。
35+
36+
### **3. 後端(Backend)**
37+
在後端階段,TVM將經過最佳化的IR轉譯為特定硬體的執行代碼。後端支持多種編譯路徑,包括:
38+
- **LLVM後端**:適用於CPU以及一些GPU。
39+
- **CUDA/OpenCL後端**:針對NVIDIA GPU和其他支持OpenCL的硬體。
40+
- **自定義代碼生成器**:支持專用硬體(如ASIC或FPGA)的編譯需求。
41+
42+
最終,這些代碼會以動態庫或可執行檔的形式輸出,供用戶直接部署。
43+
44+
---
45+
46+
## **TVM的核心組成元素**
47+
48+
為了實現上述流程,TVM結合了多個模組化的核心組件,各司其職,共同實現模型的最佳化與高效執行。
49+
50+
### **1. Relay**
51+
Relay是TVM的高階中介表示語言,主要功能包括模型的結構解析、語義分析以及最佳化。Relay的設計靈活,能夠支持多框架的匯入,並在多層次的中介表示之間進行高效轉換。
52+
53+
### **2. Tensor Expression(Te)**
54+
Te提供了一種簡單而高效的語法,用於定義張量操作的數學表達式。這是一種專注於性能調校的低階表示,用於直接控制計算排程。
55+
56+
### **3. AutoTVM與MetaScheduler**
57+
為了實現最佳的性能,TVM引入了自動化調校工具:
58+
- **AutoTVM**:透過機器學習方法自動調整算子的排程參數,減少人工干預。
59+
- **MetaScheduler**:TVM的進階調度工具,針對更複雜的硬體與模型進行全面優化。
60+
61+
### **4. Codegen**
62+
代碼生成器負責將最佳化後的IR轉譯為目標硬體的低層代碼。該模組支持多種硬體平台,確保模型的跨平台適配性。
63+
64+
### **5. TVM Runtime**
65+
TVM Runtime是部署階段的核心,提供一套輕量級的運行時環境,用於加載編譯後的模型並進行高效執行。
66+
67+
---
68+
69+
## **TVM的完整工作流程**
70+
71+
1. **模型匯入**
72+
使用者從主流深度學習框架匯入模型,轉換為Relay IR。
73+
74+
2. **模型最佳化**
75+
Relay IR經過多種高階最佳化,減少冗餘運算並提升執行效率。
76+
77+
3. **排程與搜尋**
78+
通過AutoTVM或MetaScheduler進行排程調整,找到最佳的硬體映射參數。
79+
80+
4. **代碼生成**
81+
利用代碼生成器,為目標硬體生成優化代碼。
82+
83+
5. **部署與執行**
84+
將生成的代碼載入TVM Runtime,實現模型的高效推論或訓練。
85+
86+
---
87+
88+
## **TVM的應用價值**
89+
90+
TVM不僅在學術研究中扮演重要角色,還廣泛應用於工業領域,特別是在多硬體環境的部署場景中。TVM的自動化優化與跨平台支持,大幅降低了開發者的調校成本,同時確保了高效能的模型執行。
91+
92+
無論是用於移動裝置、雲端GPU,還是專用加速硬體,TVM都提供了一套靈活且強大的解決方案,讓深度學習模型的性能釋放達到新的高度。
93+
94+
95+
96+
https://hkt999.medium.com/%E4%BD%BF%E7%94%A8-tvm-%E9%83%A8%E7%BD%B2-aiot-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E6%A8%A1%E5%9E%8B-%E5%AF%A6%E6%88%B0%E7%AF%87-f9336a7faa78
97+
98+
## Reference
99+
- [TVM – A NOVEL OPEN-SOURCE COMPILER](https://syncedreview.com/2019/02/06/on-compilers-first-tvm-and-deep-learning-conference/)
100+
- [TVM classical ML model support](https://discuss.tvm.apache.org/t/tvm-classical-ml-model-support/9158)
101+
- [電子書【从零开始学深度学习编译器】](http://giantpandacv.com/project/部署优化/深度学习编译器/【从零开始学深度学习编译器】一,深度学习编译器及TVM介绍/)
102+
103+
陈天奇领衔的 TVM 横空出世

0 commit comments

Comments
 (0)