- 機器學習系統:設計和實現
- 麥絡 董豪編著
- 1027字
- 2024-12-27 20:30:15
1.3 機器學習框架的基本組成原理
一個完整的機器學習框架一般具有如圖1.1所示的基本架構。

圖1.1 機器學習框架的基本架構
(1)編程接口:考慮到機器學習開發人員背景的多樣性,機器學習框架首先需要提供以高層次編程語言(如Python)為主的編程接口。同時,機器學習框架為了優化運行性能,需要支持以低層次編程語言(如C和C++)為主的系統實現,從而實現操作系統(如線程管理和網絡通信等)和各類型硬件加速器的高效使用。
(2)計算圖:利用不同編程接口實現的機器學習程序需要共享一個運行后端。實現這一后端的關鍵技術是計算圖技術。計算圖定義了用戶的機器學習程序,其包含大量表達計算操作的算子節點(Operator Node),以及表達算子之間計算依賴的邊(Edge)。
(3)編譯器前端:機器學習框架往往用AI編譯器構建計算圖,并將計算圖轉換為硬件可以執行的程序。這個編譯器首先會利用一系列編譯器前端技術實現對程序的分析和優化。編譯器前端的關鍵功能包括實現中間表示、自動微分、類型推導和靜態分析等。
(4)編譯器后端和運行時:完成計算圖的分析和優化后,機器學習框架進一步利用編譯器后端和運行時實現針對不同底層硬件的優化。常見的優化技術包括分析硬件的L2/L3緩存大小和指令流水線長度,優化算子的選擇或者調度順序。
(5)異構處理器:機器學習應用的執行由中央處理器(Central Processing Unit,CPU)和硬件加速器,如英偉達GPU(Graphics Processing Unit,圖形處理器)、華為Ascend和谷歌TPU(Tensor Processing Unit,張量處理器)共同完成。其中,非矩陣操作(如復雜的數據預處理和計算圖的調度執行)由中央處理器完成。矩陣操作和部分頻繁使用的機器學習算子(如Transformer算子和Convolution算子)由硬件加速器完成。
(6)數據處理:機器學習應用需要對原始數據進行復雜預處理,同時也需要管理大量的訓練數據集、驗證數據集和測試數據集。這一系列以數據為核心的操作由數據處理模塊(例如TensorFlow的tf.data和PyTorch的DataLoader)完成。
(7)模型部署:在完成模型訓練后,機器學習框架下一個需要支持的關鍵功能是模型部署。為了確保模型可以在內存有限的硬件上執行,會使用模型轉換、量化、蒸餾等模型壓縮技術。同時,也需要實現針對推理硬件平臺(例如英偉達Orin)的模型算子優化。最后,為了保證模型的安全(如拒絕未經授權的用戶讀取),還會對模型進行混淆設計。
(8)分布式訓練:機器學習模型的訓練往往需要分布式的計算節點并行完成。其中,常見的并行訓練方法包括數據并行、模型并行、混合并行和流水線并行。這些并行訓練方法通常由遠端程序調用(Remote Procedure Call,RPC)、集合通信(Collective Communication)或者參數服務器(Parameter Server)實現。
- JavaScript百煉成仙
- AngularJS Testing Cookbook
- The Android Game Developer's Handbook
- CentOS 7 Server Deployment Cookbook
- 青少年軟件編程基礎與實戰(圖形化編程三級)
- 鋒利的SQL(第2版)
- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- 深入淺出RxJS
- Bootstrap 4:Responsive Web Design
- Learning Python Design Patterns
- 數據結構習題解析與實驗指導
- 詳解MATLAB圖形繪制技術
- Mastering ASP.NET Core 2.0
- Spring Boot從入門到實戰
- 流暢的Python