欧美日韩国产一区二区|qovd片|小明个人发布看看|小浪货你夹真紧水又多|老头把我添高潮了A片故|99热久久精品国产一区二区|久久久春色AV

軟件|地平線AI芯片技術(shù)專(zhuān)場(chǎng)第2講主講回顧( 二 )


當(dāng)?shù)搅塑浖?.0時(shí)代 , 面臨的是一個(gè)完全不同的開(kāi)發(fā)模式 。 首先需要定義問(wèn)題 , 同時(shí)需要大量的數(shù)據(jù) , 數(shù)據(jù)用來(lái)表示幾種不同的情況;然后再設(shè)計(jì)一個(gè)適當(dāng)?shù)哪P?, 模型能夠?qū)?wèn)題做分類(lèi)或檢測(cè);之后在大量標(biāo)注數(shù)據(jù)上做模型訓(xùn)練 , 訓(xùn)練完成后再部署集成 ,在場(chǎng)景中看大概有多少結(jié)果是正確的 , 多少結(jié)果是錯(cuò)誤的;再持續(xù)的采集數(shù)據(jù) , 做標(biāo)注、訓(xùn)練 , 或者更改模型的設(shè)計(jì) , 來(lái)解決這些錯(cuò)誤的badcase 。
在過(guò)程中 , 沒(méi)有一個(gè)程序員能把問(wèn)題解法想得十分清楚 。 比如識(shí)別一只貓 , 貓的毛發(fā)是彎的還是直的、貓的顏色是花的還是純色 , 貓的兩只耳朵是豎著的還是彎著的 , 程序員并不是通過(guò)這種方式解決問(wèn)題 。 從每一個(gè)像素點(diǎn)定義的角度來(lái)看 , 這些問(wèn)題是一個(gè)數(shù)據(jù)驅(qū)動(dòng)的問(wèn)題 , 即通過(guò)100萬(wàn)張或1000萬(wàn)張不同的圖片給模型做訓(xùn)練 。 在這種模式下 , 程序員不需要對(duì)問(wèn)題應(yīng)該怎么解有非常深刻的認(rèn)識(shí) , 也不需要知道計(jì)算機(jī)每一步該怎么操作 , 只需關(guān)注卷積神經(jīng)網(wǎng)絡(luò)的容量和里面的信息 , 反向傳播時(shí)梯度是怎樣傳播的 , 激活函數(shù)應(yīng)該怎么設(shè)置等問(wèn)題 。

軟件2.0時(shí)代的方法可以讓機(jī)器像人一樣看懂和聽(tīng)懂周?chē)氖澜?, 所以它有廣泛的應(yīng)用場(chǎng)景 , 而且隨著摩爾定律的持續(xù)進(jìn)步 , 有非常大的成長(zhǎng)空間 。 關(guān)于自動(dòng)駕駛芯片的好用 , 也應(yīng)該圍繞著軟件2.0的開(kāi)發(fā)范式展開(kāi) , 因?yàn)?.0時(shí)代已經(jīng)有四五十年的積累 , 各種工具已經(jīng)非常完善 , 在此基礎(chǔ)上更多的是一些微創(chuàng)新 , 而2.0時(shí)代則是一種底層方法論層面的顛覆式創(chuàng)新 。
在這套開(kāi)發(fā)范式下 , 對(duì)于機(jī)器來(lái)說(shuō) , 軟件2.0的技術(shù)可以讓它感知周?chē)氖澜?, 知道自己在世界里處于什么位置 , 當(dāng)世界里有很多自主移動(dòng)的目標(biāo)時(shí) , 可以預(yù)測(cè)周?chē)哪繕?biāo)的運(yùn)動(dòng)軌跡 , 可以規(guī)劃自身的動(dòng)作是繞開(kāi)目標(biāo) , 還是直著前進(jìn)或停下來(lái) , 進(jìn)而控制自己完成動(dòng)作 。
1.關(guān)注軟硬結(jié)合前提下的軟硬解耦
首先回顧下歷史 , 在看歷史時(shí)會(huì)發(fā)現(xiàn)一個(gè)很重要的點(diǎn)是“應(yīng)用對(duì)性能的追求沒(méi)有止境” 。 在這種情況下 , 很多芯片一代一代的往前走 。 從1970年開(kāi)始 , 各種各樣的芯片、計(jì)算設(shè)備層出不窮 , 也造就了很多PC時(shí)代 。

上圖左邊的藍(lán)色統(tǒng)計(jì)表來(lái)自于2021年ACM通訊的一個(gè)統(tǒng)計(jì)結(jié)果 , 該圖表明在過(guò)去的20多年里 , 微處理器性能的提升在逐漸放緩 。 同時(shí)站在供應(yīng)商的角度 , 從黃色統(tǒng)計(jì)表中可以看出 , 單位研發(fā)投入下微處理器的性能提升也在逐漸變小 , 所以未來(lái)在通用處理器上的研發(fā)投入產(chǎn)出比會(huì)越來(lái)越低 。 越來(lái)越多的公司會(huì)把更多精力投在多核和異構(gòu)加速器上 , 右圖就是一個(gè)很好的證明 。
由于人們對(duì)性能的追求沒(méi)有止境 , 單個(gè)芯片上的晶體管數(shù)量會(huì)呈指數(shù)級(jí)增長(zhǎng) 。 而單個(gè)線程的性能 , 在2010年左右逐漸放緩 。 因?yàn)槲锢項(xiàng)l件的限制 , 頻率也不再增長(zhǎng) , 并隨著工藝制成的變化 , 整個(gè)芯片的功耗也處于一個(gè)停滯的狀況 。 與此同時(shí) , 單個(gè)芯片里的邏輯處理器核心變得很多 , 這會(huì)導(dǎo)致我們?cè)谧非蠓浅8哐舆t增強(qiáng)時(shí) , 由于單線程的性能沒(méi)有大的變化 , 使得我們無(wú)法通過(guò)單線程的通用處理器達(dá)到很好的效果 , 只能把代碼做并行 , 或引入異構(gòu)加速器來(lái)實(shí)現(xiàn)性能優(yōu)化 。

雖然單個(gè)線程的性能處于增長(zhǎng)緩慢甚至停滯的狀態(tài) , 但在軟件和算法層面 , 還有非常多的空間可以做優(yōu)化 。 上圖上半部分是對(duì)矩陣乘例子的優(yōu)化 。 當(dāng)我們用Python實(shí)現(xiàn)矩陣乘時(shí) , 假設(shè)它的速度為1 , 把 Python代碼改成Java或C時(shí) , 可以看到有11倍甚至47倍的提升 。 這是語(yǔ)言之間的變化 , 只是用不同的編程語(yǔ)言改寫(xiě) , 與芯片架構(gòu)無(wú)關(guān) 。 之后的循環(huán)并行利用到芯片上的多核;并行分置則是把矩陣分塊 , 然后放在緩存里;再用自動(dòng)向量化 , 自動(dòng)化的利用芯片里已經(jīng)提供的數(shù)據(jù)流并行CMD指令;當(dāng)使用較寬的AVX向量時(shí) , 在代碼里面直接寫(xiě)AVX函數(shù)調(diào)用 , 最多可以得到6萬(wàn)多的加速比 。 所以 , 當(dāng)我們圍繞軟件和算法的特點(diǎn)挖掘更多硬件特性時(shí) , 就能通過(guò)這種軟硬結(jié)合的方式獲得非常大的性能提升和極具性?xún)r(jià)比的計(jì)算平臺(tái) 。

相關(guān)經(jīng)驗(yàn)推薦