自制深度學(xué)習(xí)推理框架
定 價(jià):¥79.8
中 教 價(jià):¥42.29 (5.30折)
庫(kù) 存 數(shù): 13
本書帶領(lǐng)讀者手把手實(shí)現(xiàn)深度學(xué)習(xí)推理框架,并支持大語(yǔ)言模型的推理。全書共 9 章,以實(shí)現(xiàn)開(kāi)源深度學(xué)習(xí)推理框架 KuiperInfer 為例,從基礎(chǔ)的張量設(shè)計(jì)入手,逐步深入講 解計(jì)算圖、核心算子等關(guān)鍵模塊的設(shè)計(jì)與實(shí)現(xiàn)。最后,書中還涵蓋了如何支持深度學(xué)習(xí)模型如 ResNet、 YOLOv5,以及大語(yǔ)言模型 Llama 2 的推理。通過(guò)本書,讀者不僅能夠獲得構(gòu)建和優(yōu)化深度學(xué)習(xí)推理框架 的實(shí)踐經(jīng)驗(yàn),還能深入理解框架的內(nèi)部機(jī)制。本書面向深度學(xué)習(xí)初學(xué)者、希望進(jìn)一步了解深度學(xué)習(xí)推理框架的開(kāi)發(fā)者,以及其他對(duì)相關(guān)內(nèi)容感興趣 的 AI 從業(yè)者。
【簡(jiǎn)單學(xué)】8000 多行代碼即可從零實(shí)現(xiàn)深度學(xué)習(xí)推理框架【透徹學(xué)】透明解析推理框架內(nèi)部機(jī)制,不再是黑盒工具【輕松學(xué)】附贈(zèng) B 站免費(fèi)配套視頻,附贈(zèng)本書配套源代碼【一起學(xué)】基于 GitHub 2.7k 星標(biāo)開(kāi)源項(xiàng)目 KuiperInfer【多模型】支持 ResNet、YOLOv5,支持 Llama 等大模型推理
傅莘莘 深度學(xué)習(xí)算法工程師,擅長(zhǎng)軟件系統(tǒng)設(shè)計(jì)、C 和人工智能混合項(xiàng)目的開(kāi)發(fā)。 代表作:KuiperInfer,https://github.com/zjhellofss/KuiperInfer,也就是本書的藍(lán)本項(xiàng)目,多次上榜Github中文項(xiàng)目趨勢(shì)榜。本課程的配套視頻在Bilibili平臺(tái)已經(jīng)累計(jì)斤10萬(wàn)次播放:https://space.bilibili.com/1822828582。
第 1 章 深度學(xué)習(xí)推理框架基礎(chǔ)1.1 推理框架概覽1.1.1 什么是深度學(xué)習(xí)推理框架1.1.2 代表性深度學(xué)習(xí)推理框架1.2 KuiperferIn 簡(jiǎn)介1.2.1 KuiperInfer 的組成部分1.2.2 KuiperInfer 的設(shè)計(jì)原則1.3 環(huán)境配置與依賴安裝1.3.1 數(shù)學(xué)庫(kù)的安裝13.2 對(duì)數(shù)學(xué)庫(kù)的測(cè)試1.3.3 單元測(cè)試庫(kù) Google Test 的安裝與配置1.3.4 日志庫(kù)的安裝1.4 集成開(kāi)發(fā)環(huán)境:CLion1.4.1 在 CLion 中查看文件1.4.2 使用 CLion 進(jìn)行單元測(cè)試1.5 集成開(kāi)發(fā)環(huán)境:VSCode1.6 小結(jié)1.7 練習(xí)第 2 章 張量的設(shè)計(jì)2.1 張量是什么2.1.1 張量的維度2.1.2 張量中的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)2.1.3 張量中的數(shù)據(jù)存儲(chǔ)順序2.1.4 Cube 中的數(shù)據(jù)排布2.2 如何實(shí)現(xiàn)張量2.2.1 實(shí)現(xiàn)張量的定義2.2.2 創(chuàng)建新張量2.2.3 張量的填充2.2.4 改變張量的形狀2.2.5 張量的工具類方法2.3 單元測(cè)試2.3.1 創(chuàng)建數(shù)據(jù)容器2.3.2 創(chuàng)建一維張量2.3.3 創(chuàng)建三維張量2.3.4 獲取張量的形狀2.3.5 判斷張量是否為空2.3.6 獲取張量中某個(gè)位置的元素2.4 小結(jié)2.5 練習(xí)第 3 章 計(jì)算圖的設(shè)計(jì)3.1 計(jì)算圖是什么3.2 PNNX 計(jì)算圖的轉(zhuǎn)換3.2.1 將 PyTorch 模型轉(zhuǎn)換為 TorchScript 模型3.2.2 將 TorchScript 模型轉(zhuǎn)換為 PNNX 格式的計(jì)算圖3 .3 PNNX 計(jì)算圖結(jié)構(gòu)3.3.1 結(jié)構(gòu)詳解3.3.2 加載模型結(jié)構(gòu)定義文件3.3.3 計(jì)算節(jié)點(diǎn)3.3.4 操作數(shù)3.3.5 參數(shù)和權(quán)重3.4 KuiperInfer 計(jì)算圖結(jié)構(gòu)3.4.1 對(duì)操作數(shù)的封裝3.4.2 對(duì)權(quán)重類的封裝3.4.3 對(duì)計(jì)算節(jié)點(diǎn)的提取和封裝3.4.4 對(duì)參數(shù)的提取和封裝3.4.5 KuiperInfer 計(jì)算圖的整體結(jié)構(gòu)3.5 單元測(cè)試3.5.1 測(cè)試模型的加載3.5.2 測(cè)試 PNNX 中的計(jì)算節(jié)點(diǎn)3.5.3 測(cè)試 PNNX 中的操作數(shù)3.5.4 測(cè)試 PNNX 計(jì)算節(jié)點(diǎn)的權(quán)重3.6 小結(jié)3.7 練習(xí)第 4 章 計(jì)算圖的構(gòu)建4.1 計(jì)算節(jié)點(diǎn)的執(zhí)行順序4.2 拓?fù)渑判?br />4.2.1 基于深度優(yōu)先的拓?fù)渑判?br />4.2.2 拓?fù)渑判虻膶?shí)現(xiàn)思路4.2.3 構(gòu)建之間的節(jié)點(diǎn)圖關(guān)系4.2.4 拓?fù)渑判虻木幊虒?shí)現(xiàn)4.2.5 延伸:基于廣度優(yōu)先的拓?fù)渑判?br />4.3 構(gòu)建計(jì)算圖的流程4.3.1 狀態(tài)檢查4.3.2 計(jì)算節(jié)點(diǎn)數(shù)據(jù)空間的初始化4.3.3 整體構(gòu)建流程4.4 單元測(cè)試4.4.1 拓?fù)渑判驕y(cè)試4.4.2 計(jì)算圖狀態(tài)變化測(cè)試4.4.3 輸出空間初始化測(cè)試4.5 小結(jié)4.6 練習(xí)第 5 ?e 算子和算子注冊(cè)器的設(shè)計(jì)與實(shí)現(xiàn)5.1 什么是算子5.2 算子類及其實(shí)現(xiàn)5.2.1 算子類中的成員變量5.2.2 算子類中的成員方法5.2.3 算子類與計(jì)算節(jié)點(diǎn)5.3 算子的全局注冊(cè)器5.3.1 全局注冊(cè)器的設(shè)計(jì)方法與實(shí)現(xiàn)5.3.2 向注冊(cè)器中注冊(cè)算子的實(shí)例化方法5.3.3 從注冊(cè)器中獲取算子類的實(shí)例化方法5.3.4 注冊(cè)算子的工具類5.4 算子的實(shí)例化方法5.4.1 算子實(shí)例化的時(shí)機(jī)5.4.2 編寫第一個(gè)算子 ReLU5.4.3 注冊(cè) ReLU 算子5.5 單元測(cè)試5.5.1 驗(yàn)證全局注冊(cè)器的唯一性5.5.2 將實(shí)例化方法插入全局注冊(cè)器5.5.3 獲取算子5.5.4 驗(yàn)證 ReLU 算子的功能5 .6 小結(jié)5.7 練習(xí)第 6 章 池化算子和卷積算子的實(shí)現(xiàn)6.1 池化算子6.1.1 簡(jiǎn)介6.1.2 池化操作中的邊界填充6.1.3 多通道輸入特征圖的池化6.1.4 池化算子的實(shí)現(xiàn)6.1.5 池化算子的注冊(cè)6.2 卷積算子6.2.1 簡(jiǎn)介6.2.2 卷積的直觀解釋6.2.3 用 Im2Col 優(yōu)化卷積計(jì)算6.2.4 Im2Col 方法的實(shí)現(xiàn)6.2.5 卷積算子的計(jì)算過(guò)程6.2.6 卷積算子中的 GEMM 實(shí)現(xiàn)6.2.7 卷積算子的注冊(cè)和實(shí)例化方法6.3 單元測(cè)試6.3.1 池化算子的相關(guān)測(cè)試6.3.2 卷積算子的相關(guān)測(cè)試6.4 小結(jié)6.5 練習(xí)第 7 章 表達(dá)式算子的實(shí)現(xiàn)7.1 表達(dá)式和表達(dá)式算子的定義7.2 詞法分析7.2.1 詞法分析的定義7.2.2 詞法分析的過(guò)程7.3 語(yǔ)法分析7.3.1 語(yǔ)法二叉樹(shù)結(jié)構(gòu)7.3.2 遞歸的條件7.3.3 遞歸向下構(gòu)建語(yǔ)法二叉樹(shù)7.3.4 對(duì)語(yǔ)法二叉樹(shù)進(jìn)行轉(zhuǎn)換7.3.5 逆波蘭表達(dá)式7.4 表達(dá)式算子的實(shí)現(xiàn)過(guò)程7.4.1 實(shí)例化7.4.2 類定義7.4.3 注冊(cè)7.4.4 對(duì) Forward 方法的重寫7.4.5 計(jì)算相關(guān)代碼的實(shí)現(xiàn)7.5 單元測(cè)試7.5.1 詞法分析測(cè)試7.5.2 逆波蘭表達(dá)式的生成測(cè)試7.5.3 表達(dá)式計(jì)算過(guò)程測(cè)試7.6 小結(jié)7.7 練習(xí)第 8 章 支持 ResNet 和 YOLOv5 推理8.1 模型的執(zhí)行方法8.1.1 執(zhí)行輸入類計(jì)算節(jié)點(diǎn)8.1.2 執(zhí)行常規(guī)類計(jì)算節(jié)點(diǎn)8.1.3 獲取模型的輸出8.2 在 KuiperInfer 中支持 ResNet8.2.1 全連接算子的實(shí)例化8.2.2 全連接算子的實(shí)現(xiàn)8.2.3 ResNet 推理流程概覽8.2.4 實(shí)現(xiàn) KuiperInfer 對(duì) ResNet支持 的8.3 在 KuiperInfer 中支持 YOLOv58.3.1 數(shù)據(jù)預(yù)處理8.3.2 補(bǔ)充缺失的算子8.3.3 YOLOv5 模型的導(dǎo)出和運(yùn)行8.3.4 YOLOv5 模型輸出的后處理8.4 小結(jié)8.5 練習(xí)第 9 章 支持大語(yǔ)言模型的推理9.1 大模型簡(jiǎn)介 9.1.1 Transformer 模型9.1.2 GPT 模型9.2 大模型的架構(gòu)9.2.1 輸入嵌入9.2.2 位置編碼9.2.3 自注意力機(jī)制9.2.4 前饋神經(jīng)網(wǎng)絡(luò)層9.2.5 鍵?C值對(duì)緩存9.2.6 殘差連接與層歸一化9.2.7 解碼9.3 Llama 2 的關(guān)鍵實(shí)現(xiàn)9.3.1 均方根歸一化9.3.2 自注意力機(jī)制9.3.3 前饋神經(jīng)網(wǎng)絡(luò)層9.3.4 Transformer 層9.3.5 完整的 Transformer 解碼器9.4 KuiperInfer 支持 Llama 2 推理9.4.1 加載模型文件9.4.2 模型的推理9.4.3 結(jié)果解碼9.4.4 大模型推理基礎(chǔ)算子的實(shí)現(xiàn)9.4.5 推理演示9.5 小結(jié)