日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
從零編寫深度學(xué)習(xí)推理框架-第一課-前言-創(chuàng)新互聯(lián)
什么是推理框架

視頻鏈接: https://space.bilibili.com/1822828582

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、登封網(wǎng)站維護(hù)、網(wǎng)站推廣。

Github 鏈接: https://github.com/zjhellofss/KuiperInfer 歡迎star和PR

請(qǐng)配合視頻課程一起看此教程

深度學(xué)習(xí)推理框架用于對(duì)已訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè).

也就是說,深度學(xué)習(xí)推理框架能夠?qū)⑸疃扔?xùn)練框架例如Pytorch,Tensorflow中定義的算法移植到中心側(cè)和端側(cè), 并高效執(zhí)行. 與訓(xùn)練框架不同的是,深度學(xué)習(xí)推理框架沒有梯度反向傳播功能, 因?yàn)樗惴P臀募械臋?quán)重系數(shù)已經(jīng)被固化, 推理框架只需要讀取, 加載并完成對(duì)輸入數(shù)據(jù)的預(yù)測(cè)即可.

項(xiàng)目最終的效果圖

在這里插入圖片描述在這里插入圖片描述

模型加載階段

訓(xùn)練完成的模型被放置在兩個(gè)文件中, 一個(gè)是模型定義文件, 一個(gè)是權(quán)重文件.

模型定義文件和計(jì)算圖 模型定義文件

模型由多個(gè)節(jié)點(diǎn)的定義和節(jié)點(diǎn)之間的數(shù)據(jù)流圖組成,節(jié)點(diǎn)定義模型中各節(jié)點(diǎn)的參數(shù), 例如在卷積算子中的參數(shù), 包括卷積核的大小, 步長以及輸入輸出特征圖的尺寸大小等.

數(shù)據(jù)流圖闡述了節(jié)點(diǎn)之間數(shù)據(jù)流動(dòng)的前后順序和依賴關(guān)系. 所有節(jié)點(diǎn)在根據(jù)模型文件中的定義初始化完畢之后, 根據(jù)數(shù)據(jù)流圖對(duì)他們進(jìn)行一一串聯(lián), 形成一個(gè)有向無環(huán)圖(DAG), 或稱為計(jì)算圖.

但是這個(gè)計(jì)算圖是缺少權(quán)重的,只是一個(gè)外殼, 它只有網(wǎng)絡(luò)的節(jié)點(diǎn)和節(jié)點(diǎn)之間的聯(lián)通關(guān)系. 模型的權(quán)重則保存在權(quán)重文件中, 需要在完成計(jì)算圖的初始化之后加載到模型中.
在這里插入圖片描述

權(quán)重文件

在DAG構(gòu)建完成之后, 讀取權(quán)重文件中各節(jié)點(diǎn)的weightbias數(shù)據(jù)并依次填充到對(duì)應(yīng)的算子當(dāng)中. 去填充計(jì)算圖(外殼)中的權(quán)重信息.

輸入輸出

輸入指的是由圖片或者視頻幀構(gòu)建而成的RGB數(shù)據(jù),KuiperInfer中數(shù)據(jù)的輸入符合NCHW格式,分別表示批次, 通道和高寬.
輸出指的是模型對(duì)于特定的輸入作出的判斷,在下圖中對(duì)于云層圖像的輸出,模型給出的預(yù)測(cè)為cloud類別,至此推理框架完成了一次預(yù)測(cè)過程.

整體流程

在這里插入圖片描述
在這里插入圖片描述

課程大綱
課程節(jié)數(shù)主要內(nèi)容進(jìn)度課程鏈接
第一次課整體框架解讀和開發(fā)環(huán)境配置完成https://www.bilibili.com/video/BV1HV4y1A7H8/
第二次課張量Tensor類的解析和輸入數(shù)據(jù)的內(nèi)存排布完成https://www.bilibili.com/video/BV1Ed4y1v7Gb/
第三次課CSV文件中初始化張量Tensor一個(gè)實(shí)例完成https://www.bilibili.com/video/BV1Pg411J7V5/
第四次課手寫第一個(gè)算子Relu并完成算子注冊(cè)工廠類完成https://www.bilibili.com/video/BV1bG4y1J7sQ/
第五次課Im2col的原理和卷積算子的實(shí)現(xiàn)未完成
第六次課照貓畫虎, 完成MaxPooling算子完成https://www.bilibili.com/video/BV1m3411S7yy
第七次課圖結(jié)構(gòu)(PNNX)講解和計(jì)算圖初步完成https://www.bilibili.com/video/BV1VW4y1V7vp
第八次課讀取PNNX并構(gòu)建自己的計(jì)算圖未完成
第二季課程待敘
近期和遠(yuǎn)期的打算
  1. 完成第一季的課程, 共八節(jié)
  2. 根據(jù)第一季的反饋迭代更新第二季的課程, 第二季結(jié)束能完成ResNet 18的推理
  3. 后期可能會(huì)出一個(gè)關(guān)于模型量化的課程, 在我們自制推理框架的基礎(chǔ)上完成對(duì)模型的PTQ量化
本項(xiàng)目的教學(xué)方式
  1. 不會(huì)講C++基礎(chǔ), 默認(rèn)大家都多少懂C++或者C語言
  2. 不會(huì)長篇大論地講, 不會(huì)手把手地帶著敲( 畢竟不是編程培訓(xùn)班)
  3. 傾向于分模塊講解并以自己動(dòng)手練習(xí)的方式來學(xué)習(xí)
第一次課程的內(nèi)容

開發(fā)環(huán)境

  • 開發(fā)語言:C++ 17
  • 數(shù)學(xué)庫:Armadillo OpenBlas
  • 加速庫:OpenMP, 實(shí)現(xiàn)算子時(shí)候用
  • 單元測(cè)試:Google Test
  • 性能測(cè)試:Google Benchmark
主項(xiàng)目代碼走讀

主項(xiàng)目地址:https://github.com/zjhellofss/KuiperInfer
Tips: 不要求大家全部掌握, 我會(huì)在以后的課程中分模塊的解讀, 歡迎大家點(diǎn)贊 star.

安裝OpenBlas并編譯armadillo

Ubuntu 22.04上armadillo安裝.armadillo本質(zhì)上提供了一個(gè)方便的接口, 背后調(diào)用Openblas,
https://arma.sourceforge.net/docs.html. 安裝之前, 使用Linux對(duì)應(yīng)發(fā)行版的包管理器安裝必要的組件

apt update
apt install cmake libopenblas-dev liblapack-dev libarpack2-dev libsuperlu-dev
mkdir build
# 在https://arma.sourceforge.net/docs.html下載armadillo數(shù)學(xué)庫的代碼
# cd armadillo文件夾
mkdir build
cd build
cmake ..
make -j8
make install
# 默認(rèn)情況下armadillo頭文件安裝在:/usr/include/
# 默認(rèn)情況下armadillo庫文件安裝在:/usr/lib/x86_64-linux-gnu
編譯安裝其他依賴庫

https://github.com/google/glog

glog安裝過程
mkdir build
cd build
cmake ..
make -j8
make install 
# 默認(rèn)情況下安裝完成后庫文件在:/usr/local/lib/
# 默認(rèn)情況下安裝完成后頭文件:/usr/local/include/
# 如果發(fā)生庫找不到的問題, 請(qǐng)可以自行試試增加庫尋找路徑, 如果還解決不了請(qǐng)?zhí)砑咏涣魅? 
vim ~/.bashrc 
# 末尾加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
source ~/.bashrc
Google Test編譯安裝過程

https://github.com/google/googletest

gtest安裝過程與glog類似

Tips: 以上兩個(gè)庫在安裝完成后, 頭文件位于/usr/local/include/, 庫文件位于/usr/local/lib/.

第一次課程的代碼

https://github.com/zjhellofss/KuiperCourse.git

git clone https://github.com/zjhellofss/KuiperCourse.git 拉取本次課程的代碼
git checkout first 切換分支,第一節(jié)課程在first 這個(gè)branch當(dāng)中
mkdir build
cd build 
cmake ..
make -j8
國內(nèi)git鏡像地址:https://gitee.com/fssssss/KuiperCourse.git
完成第一節(jié)課的作業(yè)

需要注意的問題:armadillo是列主序的.Y=AxX+bias是一個(gè)矩陣相乘問題.

armadillo關(guān)于矩陣乘和加的文檔如下: 請(qǐng)按照文檔, 自行編寫test/test_first.cppTEST(test_first, linear)的代碼來完成上述操作,

如果編寫正確則通過單元測(cè)試,并輸出Result Passed!.

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享標(biāo)題:從零編寫深度學(xué)習(xí)推理框架-第一課-前言-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.dlmjj.cn/article/csehph.html