b站直播能禁止id觀看嗎國外網(wǎng)站推廣公司
機(jī)器學(xué)習(xí)編譯系列---張量程序抽象
- 1. 張量函數(shù)概念的引入與抽象的必要性
1. 張量函數(shù)概念的引入與抽象的必要性
??在文章機(jī)器學(xué)習(xí)編譯系列—概述中提到,機(jī)器學(xué)習(xí)編譯的一個(gè)很重要操作是做等價(jià)變換來減少內(nèi)存或者提高運(yùn)行效率。變換是以“元張量函數(shù)”(private tensor function)為單元進(jìn)行。直觀地,圖中的linear、add、relu、linear、softmax均為元張量函數(shù)。
??機(jī)器學(xué)習(xí)編譯的目的并不僅僅是轉(zhuǎn)換而是盡可能自動(dòng)的轉(zhuǎn)換,為此需要抽象。例如,典型的元張量函數(shù)可以抽象為:存儲(chǔ)數(shù)據(jù)的多維數(shù)組,驅(qū)動(dòng)張量計(jì)算的循環(huán)嵌套以及計(jì)算部分本身。
??有了抽象,就離自動(dòng)轉(zhuǎn)換近了一步,例如對(duì)于循環(huán)嵌套操作,一個(gè)較成熟的轉(zhuǎn)換做法是“循環(huán)拆分”—》“并行”—》“向量化”,整個(gè)過程是可以自動(dòng)進(jìn)行的。
??在抽象的基礎(chǔ)上再進(jìn)一步,可以增加Extra information來發(fā)揮“編譯”的最大效率。仍舊是以循環(huán)嵌套操作為例,我們可以通過“Extra information”來告訴深度學(xué)習(xí)編譯器,循環(huán)迭代之間的獨(dú)立性,讓“編譯器”可以放心的高效自動(dòng)化轉(zhuǎn)換。
??回想c++, 在這一個(gè)語言中有各種看似“繁瑣”的說明符,例如const, const &等,想必也是為了讓編譯器發(fā)揮最大的功效,起的作用和這里的“Extra information”相同的作用。從這個(gè)角度看,機(jī)器學(xué)習(xí)編譯和傳統(tǒng)的軟件編譯的確是相通的。