智能駕駛中主芯片使用CPU還是GPU架構(gòu),具體有什么區(qū)別
人生沒(méi)有最優(yōu)解,我們可以有多種活法,拒絕自我設(shè)限。加入本知識(shí)星球可以拓展您的圈層,打破您的認(rèn)知邊界,鏈接到4W+的汽車賽道“局內(nèi)人”,交換職場(chǎng)信息,打破職場(chǎng)信息差,遇見(jiàn)同行伙伴,共同探索技術(shù)交流和職業(yè)發(fā)展。
作者 / 阿寶
編輯 / 阿寶
出品 / 阿寶1990
上圖是自動(dòng)駕駛的功能模塊圖,今天重點(diǎn)要講的是決策端的內(nèi)容,可以看到ADAS實(shí)現(xiàn)功能的重點(diǎn)也是在決策層,也就是算法層,算法層需要快,比如自動(dòng)識(shí)別,聲音識(shí)別等等,都涉及到神經(jīng)網(wǎng)絡(luò)的算法計(jì)算,比如360環(huán)視,那要滿足這些ADAS的算法,CPU是不行,機(jī)哥為什么這么說(shuō)呢,所有你看到有CPU的地方都會(huì)有GPU,不對(duì)啊,GPU不是在機(jī)頂盒中做圖像渲染的么,比如2D和3D渲染的算法?
人工智能的發(fā)展也帶動(dòng)了汽車智能化發(fā)展,過(guò)去的以CPU為核心的處理器越來(lái)越難以滿足處理視頻、圖片等非結(jié)構(gòu)化數(shù)據(jù)的需求,同時(shí)處理器也需要整合雷達(dá)、視頻等多路數(shù)據(jù),這些都對(duì)車載處理器的并行計(jì)算效率提出更高要求,而GPU同時(shí)處理大量簡(jiǎn)單計(jì)算任務(wù)的特性在自動(dòng)駕駛領(lǐng)域取代CPU成為了主流方案。為什么AI算法大部分都使用GPU,自動(dòng)駕駛計(jì)算目前來(lái)看也是GPU是一個(gè)潮流?
對(duì)于ADAS產(chǎn)品而言,時(shí)間就是生命
我們這次就講一個(gè)故事的形式來(lái)講解會(huì)更清楚一些,當(dāng)你駕駛一輛具有自動(dòng)駕駛L3級(jí)別的車輛,你下高速后,在沒(méi)有路標(biāo)的地方發(fā)現(xiàn)100米前有一條河,此時(shí)由于車輛圖像庫(kù)里面沒(méi)有河這個(gè)資源,需要快速的圖像識(shí)別并決策。
AI算法,在圖像識(shí)別等領(lǐng)域,常用的是CNN卷積網(wǎng)絡(luò),語(yǔ)音識(shí)別、自然語(yǔ)言處理等領(lǐng)域,主要是RNN,這是兩類有區(qū)別的算法。但是,他們本質(zhì)上,都是矩陣或vector的乘法、加法,然后配合一些除法、指數(shù)等算法
假設(shè)此時(shí)你車上的AI圖像算法是YOLO-V3,它是一種使用深度卷積神經(jīng)網(wǎng)絡(luò)學(xué)得的特征來(lái)檢測(cè)對(duì)象的目標(biāo)檢測(cè)器,直白點(diǎn)就是照片識(shí)別器,在機(jī)場(chǎng)地鐵都有批量使用,就是大量的卷積、殘差網(wǎng)絡(luò)、全連接等類型的計(jì)算,本質(zhì)是乘法和加法。對(duì)于YOLO-V3來(lái)說(shuō),如果確定了具體的輸入圖形尺寸,那么總的乘法加法計(jì)算次數(shù)是確定的。比如一萬(wàn)億次。(真實(shí)的情況比這個(gè)大得多的多),用算力表示就是TOPS為單位。
那么要快速執(zhí)行一次YOLO-V3,就必須執(zhí)行完一萬(wàn)億次的加法乘法次數(shù)。
這個(gè)時(shí)候就來(lái)看了,比如IBM的POWER8,最先進(jìn)的服務(wù)器用超標(biāo)量CPU之一,4GHz,SIMD,128bit,假設(shè)是處理16bit的數(shù)據(jù),那就是8個(gè)數(shù),那么一個(gè)周期,最多執(zhí)行8個(gè)乘加計(jì)算。一次最多執(zhí)行16個(gè)操作。這還是理論上,其實(shí)是不大可能的。
那么CPU一秒鐘的巔峰計(jì)算次數(shù)=16* 4Gops =64Gops,當(dāng)然,以上的數(shù)據(jù)都是完全最理想的理論值。因?yàn)椋酒系拇鎯?chǔ)不夠大,所以數(shù)據(jù)會(huì)存儲(chǔ)在DRAM中,從DRAM取數(shù)據(jù)很慢的,所以,乘法邏輯往往要等待。另外,AI算法有許多層網(wǎng)絡(luò)組成,必須一層一層的算,所以,在切換層的時(shí)候,乘法邏輯又是休息的,所以,諸多因素造成了實(shí)際的芯片并不能達(dá)到利潤(rùn)的計(jì)算峰值,而且差距還極大,實(shí)際情況,能夠達(dá)到5%吧,也就3.2Gops,按照這個(gè)圖像算法,如果需要執(zhí)行YOLO-V3的計(jì)算,1W除以3.2=3125秒,也就是那么需要等待52分鐘才能計(jì)算出來(lái)。
如果是當(dāng)前的CPU去運(yùn)算,那么估計(jì)車翻到河里了還沒(méi)發(fā)現(xiàn)前方是河,這就是速度慢,對(duì)于ADAS產(chǎn)品而言,時(shí)間就是生命。
我們?cè)賮?lái)看一看流媒體后視鏡,現(xiàn)在市面上的車越來(lái)越多的高配車開(kāi)始裝有流媒體后視鏡了,而且京東淘寶一大把流媒體后視鏡的產(chǎn)品在售賣,前裝車廠的標(biāo)配價(jià)格至少上千元,而淘寶上200左右就可以買到,而且功能比車廠出廠的功能更齊全,這又是為什么呢?
不是所有牛奶都叫特侖蘇,不是所有電子后視鏡都能稱為流媒體后視鏡
傳統(tǒng)后視鏡:司機(jī)只能看到后車窗寬度范圍的車后路況,其他角度均為C/D柱所擋。如果后排坐了人、或置放了物品,更是影響可見(jiàn)視野,增加了視野盲區(qū)。
流媒體后視鏡,以屏代鏡,通過(guò)攝像頭把汽車后方影像投射到顯示屏上;流媒體后視鏡的畫面視角應(yīng)至少包括常規(guī)后窗觀察視角加上C/D柱盲區(qū)致?lián)p的角度,一般為70-90°。
這樣才能確保后方無(wú)盲點(diǎn),并且也不會(huì)被后方乘客遮擋視線,還可以避免在駕駛時(shí)由于觀看后視鏡而與后排乘客出現(xiàn)的眼神直視,避免尷尬。同時(shí)因?qū)崿F(xiàn)了無(wú)盲點(diǎn)覆蓋,客戶無(wú)需手動(dòng)調(diào)節(jié),就可以獲得最佳視野。
低延時(shí)是流媒體后視鏡與其他電子后視鏡的關(guān)鍵核心區(qū)別點(diǎn)
正常情況下我們通過(guò)普通物理后視鏡去看距離的時(shí)候,光線傳輸是非??斓?,沒(méi)有延遲,就是你看到的圖像距離就是實(shí)際的圖像距離,但是流媒體后視鏡就是通過(guò)攝像頭去采集,圖像傳輸過(guò)來(lái),此時(shí)有延遲,這個(gè)延遲非常關(guān)鍵,延遲長(zhǎng)短對(duì)于駕駛安全有至關(guān)重要的影響。
車速為100KM/H的時(shí)候,1S中的距離是多遠(yuǎn),=100*1000/60*60=27.7M,一般100KM/H的中型車的剎車距離為40-50米,所以如果傳輸過(guò)來(lái)的圖像有1S延遲的話,你此時(shí)看到的圖像距離是上1S中的距離,而在100KM/H的行車速度時(shí),如果有一個(gè)急剎車,比如你看到的圖像距離感覺(jué)后車跟車距離是50m,實(shí)際急剎車時(shí)只有23m了,因?yàn)閳D像延遲了1S,那么此時(shí)就會(huì)導(dǎo)致駕駛上的判斷的失誤。
所以流媒體后視鏡前裝標(biāo)準(zhǔn)是40ms,在80KM/H的時(shí)候延遲40ms的距離是2M,這個(gè)速度對(duì)于行車安全來(lái)說(shuō)是可以接受的范圍,要做到這個(gè)延遲非常不容易,為什么這么說(shuō)呢,請(qǐng)看下框圖。
流媒體后視鏡系統(tǒng)中對(duì)于攝像頭的要求非常高,攝像頭要安裝在車尾部,需要廣角的角度,需要車規(guī)級(jí)的使用溫度,有IP67的防水等級(jí),在夜晚低照度的時(shí)候能夠看清楚畫面,在路燈高亮度的照射情況下需要看清楚周圍的物料,需要有寬動(dòng)態(tài)HDR效果,鏡頭需要防小石頭耐擦掛的鏡頭。
攝像頭目前一般都是60幀的幀率輸出,此時(shí)幀與幀之間的延遲就有17ms,一般廣角出來(lái)的攝像頭圖像不能直接顯示,需要有ISP的白平衡、畸變校正,動(dòng)態(tài)響應(yīng)等調(diào)節(jié),此時(shí)又有延遲,ISP處理完再通過(guò)信號(hào)傳輸芯片驅(qū)動(dòng)屏顯示屏,此時(shí)也有延遲。
總共的延遲要求控制在40ms,就需要整個(gè)系統(tǒng)非常簡(jiǎn)單,只有圖像處理相關(guān)的內(nèi)容,不需要存卡,不需要處理GPS信號(hào),不需要處理語(yǔ)音,不需要處理碰撞信號(hào),此時(shí)才能做到延遲最短,所以這就理解到了車廠的流媒體后視鏡一般功能比較單一,不會(huì)增加那么多功能。
域控制高通820A芯片能做ADAS算法不呢?
此時(shí)我們?cè)诨剡^(guò)頭來(lái)看看高通820A芯片的算力,CPU的算力才42K,剛剛那個(gè)是基于最先進(jìn)的服務(wù)器IBM的POWER8 CPU計(jì)算力是是3.2GPOS,車載算的上最先進(jìn)的域控制器才42K的CPU計(jì)算力,所以不能用于AI的計(jì)算。此時(shí)需要使用GPU來(lái)計(jì)算,看看GPU的算力是320Gops,此時(shí)算這個(gè)YOLO-V3圖像識(shí)別的算法需要32秒,這個(gè)成績(jī)還是非常不錯(cuò)的。
此時(shí)可以看到高通820A芯片的CPU算力是不能夠用于AI的計(jì)算,GPU的算力是可以滿足一些不需要那么實(shí)時(shí)性比較高的一些AI處理。
如果是一些簡(jiǎn)單的ADAS功能是沒(méi)有問(wèn)題,比如車內(nèi)的人臉識(shí)別,這部分的算法就不要那么多資源,該產(chǎn)品運(yùn)行了820A神經(jīng)網(wǎng)絡(luò)處理引擎(SNPE),這里的引擎也就是AI加速的一些算法,有興趣單獨(dú)來(lái)講怎么實(shí)現(xiàn)加速。這里高通820A能實(shí)現(xiàn)對(duì)車輛、行人、自行車等多類物體識(shí)別,以及對(duì)像素級(jí)別可行駛區(qū)域的實(shí)時(shí)語(yǔ)義分割,當(dāng)然離商用應(yīng)該還有一定距離??偟膩?lái)說(shuō),高通驍龍產(chǎn)品策略應(yīng)該還是以車載娛樂(lè)信息系統(tǒng)為主,逐步向更專業(yè)的ADAS拓展。
這樣你就不會(huì)問(wèn)為什么GPU這么厲害,AI識(shí)別為什么不全部使用GPU得了,那就需要繼續(xù)看CPU和GPU的區(qū)別了。
GPU和CPU的區(qū)別
CPU的核心運(yùn)算ALU數(shù)量只有幾個(gè)(不超過(guò)兩位數(shù)),每個(gè)核都有足夠大的緩存和足夠多的數(shù)字和邏輯運(yùn)算單元,并輔助很多復(fù)雜的計(jì)算分支。而 GPU的運(yùn)算核心數(shù)量則可以多達(dá)上百個(gè)(流處理器),每個(gè)核擁有的緩存大小相對(duì)小,數(shù)字邏輯運(yùn)算單元也少而簡(jiǎn)單。
CPU和GPU最大的區(qū)別是設(shè)計(jì)結(jié)構(gòu)及不同結(jié)構(gòu)形成的不同功能。CPU的邏輯控制功能強(qiáng),可以進(jìn)行復(fù)雜的邏輯運(yùn)算,并且延時(shí)低,可以高效處理復(fù)雜的運(yùn)算任務(wù)。而 GPU邏輯控制和緩存較少,使得每單個(gè)運(yùn)算單元執(zhí)行的邏輯運(yùn)算復(fù)雜程度有限,但并列大量的計(jì)算單元,可以同時(shí)進(jìn)行大量較簡(jiǎn)單的運(yùn)算任務(wù)。
CPU是根據(jù)馮諾依曼的架構(gòu)進(jìn)行設(shè)計(jì),所以存儲(chǔ)、計(jì)算、交互都有,GPU本來(lái)是從CPU中分離出來(lái)專門處理圖像計(jì)算的,也就是說(shuō),GPU是專門處理圖像計(jì)算的。包括各種特效的顯示。這也是GPU的天生的缺陷,GPU更加針對(duì)圖像的渲染等計(jì)算算法,所以這里的天生兩個(gè)缺陷是不能進(jìn)行復(fù)雜的邏輯控制,而且GPU沒(méi)有cache單元,也沒(méi)有復(fù)雜的邏輯控制電路和優(yōu)化電路,所以不能單獨(dú)像CPU那樣進(jìn)行單獨(dú)的控制,你看機(jī)頂盒芯片都是CPU里面內(nèi)含GPU的架構(gòu),GPU主要用來(lái)做圖像的渲染方面,工具就是Open CL圖像編輯器來(lái)編譯。
CPU和GPU的不同的通俗解釋:
GPU的工作大部分就是這樣,計(jì)算量大,但沒(méi)什么技術(shù)含量,而且要重復(fù)很多很多次。就像你有個(gè)工作需要算幾億次一百以內(nèi)加減乘除一樣,最好的辦法就是雇上幾十個(gè)小學(xué)生一起算,一人算一部分,反正這些計(jì)算也沒(méi)什么技術(shù)含量,純粹體力活而已。而CPU就像老教授,積分微分都會(huì)算,就是工資高,一個(gè)老教授能頂二十個(gè)小學(xué)生,你要是富士康你雇哪個(gè)?
GPU就是這樣,用很多簡(jiǎn)單的計(jì)算單元去完成大量的計(jì)算任務(wù),純粹的人海戰(zhàn)術(shù)。這種策略基于一個(gè)前提,就是小學(xué)生A和小學(xué)生B的工作沒(méi)有什么依賴性,是互相獨(dú)立的。很多涉及到大量計(jì)算的問(wèn)題基本都有這種特性,比如你說(shuō)的破解密碼,挖礦和很多圖形學(xué)的計(jì)算。這些計(jì)算可以分解為多個(gè)相同的簡(jiǎn)單小任務(wù),每個(gè)任務(wù)就可以分給一個(gè)小學(xué)生去做。但還有一些任務(wù)涉及到“流”的問(wèn)題。比如你去相親,雙方看著順眼才能繼續(xù)發(fā)展??偛荒苣氵@邊還沒(méi)見(jiàn)面呢,那邊找人把證都給領(lǐng)了。這種比較復(fù)雜的問(wèn)題都是CPU來(lái)做的。
總而言之,CPU和GPU因?yàn)樽畛跤脕?lái)處理的任務(wù)就不同,所以設(shè)計(jì)上有不小的區(qū)別。而某些任務(wù)和GPU最初用來(lái)解決的問(wèn)題比較相似,所以用GPU來(lái)算了。GPU的運(yùn)算速度取決于雇了多少小學(xué)生,CPU的運(yùn)算速度取決于請(qǐng)了多么厲害的教授。教授處理復(fù)雜任務(wù)的能力是碾壓小學(xué)生的,但是對(duì)于沒(méi)那么復(fù)雜的任務(wù),還是頂不住人多。當(dāng)然現(xiàn)在的GPU也能做一些稍微復(fù)雜的工作了,相當(dāng)于升級(jí)成初中生高中生的水平。但還需要CPU來(lái)把數(shù)據(jù)喂到嘴邊才能開(kāi)始干活,究竟還是靠CPU來(lái)管的。
什么類型的程序適合在GPU上運(yùn)行?
(1)計(jì)算密集型的程序。所謂計(jì)算密集型(Compute-intensive)的程序,就是其大部分運(yùn)行時(shí)間花在了寄存器運(yùn)算上,寄存器的速度和處理器的速度相當(dāng),從寄存器讀寫數(shù)據(jù)幾乎沒(méi)有延時(shí)。可以做一下對(duì)比,讀內(nèi)存的延遲大概是幾百個(gè)時(shí)鐘周期;讀硬盤的速度就不說(shuō)了,即便是SSD, 也實(shí)在是太慢了。
?。?)易于并行的程序。GPU其實(shí)是一種SIMD(Single Instruction Multiple Data)架構(gòu), 他有成百上千個(gè)核,每一個(gè)核在同一時(shí)間最好能做同樣的事情。
滿足以上兩點(diǎn),就可以用GPU做運(yùn)算了。不過(guò)你還得先用CUDA或者Open CL 把能在GPU上運(yùn)行的程序?qū)懗鰜?lái), 這也是很麻煩的,寫一下就知道了。而且GPU的架構(gòu)比較特殊,要想寫出高效率的程序,要花很多很多時(shí)間。所以說(shuō)寫GPU程序是一件很蛋疼的事情。
自動(dòng)駕駛芯片使用GPU+FPGA的解決方案。未來(lái)算法穩(wěn)定后,ASIC將成為主流
自動(dòng)駕駛GPU+FPGA介紹:
相比于消費(fèi)電子產(chǎn)品的芯片,車載的GPU方案智能駕駛芯片對(duì)性能和壽命要求都比較高,主要體現(xiàn)在以下幾方面:
1. 耗電每瓦提供的性能;
2. 生態(tài)系統(tǒng)的構(gòu)建,如用戶群、易用性等;
3. 滿足車規(guī)級(jí)壽命要求,至少 1萬(wàn)小時(shí)穩(wěn)定使用。
FPGA適用于多指令,單數(shù)據(jù)流的分析,與GPU相反,因此常用于預(yù)測(cè)階段,如云端。FPGA是用硬件實(shí)現(xiàn)軟件算法,因此在實(shí)現(xiàn)復(fù)雜算法方面有一定的難度,缺點(diǎn)是價(jià)格比較高。
目前無(wú)論是尚未商業(yè)化生產(chǎn)的自動(dòng)駕駛AI芯片還是已經(jīng)可以量產(chǎn)使用的輔助駕駛芯片,由于自動(dòng)駕駛算法還在快速更新迭代,對(duì)云端“訓(xùn)練”部分提出很高要求,既需要大規(guī)模的并行計(jì)算,又需要大數(shù)據(jù)的多線程計(jì)算,因此以 GPU+FPGA解決方案為核心;在終端的“推理”部分,核心需求是大量并行計(jì)算,從而以 GPU為核心。
GPU本來(lái)是從CPU中分離出來(lái)專門處理圖像計(jì)算的,也就是說(shuō),GPU是專門處理圖像計(jì)算的。包括各種特效的顯示。這也是GPU的天生的缺陷,GPU更加針對(duì)圖像的渲染等計(jì)算算法。但是,這些算法,與深度學(xué)習(xí)的算法還是有比較大的區(qū)別。這里。
至于說(shuō)很多公司的方案是可編程的,也就是大多數(shù)與FPGA配合。機(jī)哥你說(shuō)的是商湯、深鑒么?的確,他們發(fā)表的論文,就是基于FPGA的。
這些創(chuàng)業(yè)公司,他們更多研究的是算法,至于芯片,還不是重點(diǎn),另外,他們暫時(shí)還沒(méi)有那個(gè)精力與實(shí)力。FPGA非常靈活,成本不高,可以很快實(shí)現(xiàn)架構(gòu)設(shè)計(jì)原型,所以他們自然會(huì)選擇基于FPGA的方案。
ASIC是為實(shí)現(xiàn)特定要求而定制的專用AI芯片。除了不能擴(kuò)展以外,在功耗、可靠性、體積方面都有優(yōu)勢(shì),尤其在高性能、低功耗的移動(dòng)端。
計(jì)算能耗比,ASIC> FPGA >GPU > CPU,究其原因,ASIC和 FPGA更接近底層 IO,同時(shí)FPGA有冗余晶體管和連線用于編程,而 ASIC是固定算法最優(yōu)化設(shè)計(jì),因此 ASIC能耗比最高。相比前兩者,GPU和CPU屏蔽底層 IO,降低了數(shù)據(jù)的遷移和運(yùn)算效率,能耗比較高。同時(shí)GPU的邏輯和緩存功能簡(jiǎn)單,以并行計(jì)算為主,因此 GPU能耗比又高于CPU。
FPGA和ASIC的區(qū)別主要在是否可以編程。FPGA客戶可根據(jù)需求編程,改變用途,但量產(chǎn)成本較高,適用于應(yīng)用場(chǎng)景較多的企業(yè)、軍事等用戶;而ASIC已經(jīng)制作完成并且只搭載一種算法和形成一種用途,首次“開(kāi)?!背杀靖?,但量產(chǎn)成本低,適用于場(chǎng)景單一的消費(fèi)電子、“挖礦”等客戶。目前自動(dòng)駕駛算法仍在快速更迭和進(jìn)化,因此大多自動(dòng)駕駛芯片使用GPU+FPGA的解決方案。未來(lái)算法穩(wěn)定后,ASIC將成為主流。
結(jié)合 ASIC的優(yōu)勢(shì),我們認(rèn)為長(zhǎng)遠(yuǎn)看自動(dòng)駕駛的 AI芯片會(huì)以 ASIC為解決方案,主要有以下幾個(gè)原因:
1. 由于處理的傳感器信息需要大量冗余,自動(dòng)駕駛對(duì)終端算力要求極高,并且車速越快,對(duì)計(jì)算能力要求越高;
2. 自動(dòng)駕駛對(duì)終端計(jì)算的實(shí)時(shí)性要求極高。任何超出一定范圍的延遲,都有可能造成事故,因此終端會(huì)負(fù)責(zé)自動(dòng)駕駛的核心計(jì)算和決策功能;
3. 對(duì)能效要求高,否則降低車輛續(xù)航,影響駕駛體驗(yàn)。高能耗同時(shí)帶來(lái)的熱量也會(huì)降低系統(tǒng)穩(wěn)定性。例如下一代支持 L4的 NVIDIADrive Pegasus功耗為500瓦,只能應(yīng)用于小規(guī)模的測(cè)試車;
4. 高可靠性。真正滿足車規(guī)的自動(dòng)駕駛芯片需要在嚴(yán)寒酷暑、刮風(fēng)下雨或長(zhǎng)時(shí)間運(yùn)行等惡劣條件下,都有穩(wěn)定的計(jì)算表現(xiàn)。
綜上 ASIC專用芯片幾乎是自動(dòng)駕駛量產(chǎn)芯片唯一的解決方案。由于這種芯片僅支持單一算法,對(duì)芯片設(shè)計(jì)者在算法、IC設(shè)計(jì)上都提出很高要求。
從芯片設(shè)計(jì)來(lái)說(shuō),現(xiàn)在ADAS處理器芯片的主要挑戰(zhàn)在如下幾個(gè)方面:
1)車規(guī)級(jí)的標(biāo)準(zhǔn),最好過(guò)ISO26262,達(dá)到ASIL-B甚至ASIL-D級(jí)別
2)高計(jì)算量以及高帶寬,特別是多傳感器融合的芯片,需要更高的芯片頻率,以及異構(gòu)設(shè)計(jì),以達(dá)到快速的數(shù)據(jù)處理速度,同時(shí)傳輸?shù)耐掏侣噬弦灿休^高要求。
3) 隨著人工智能在ADAS上的應(yīng)用,針對(duì)芯片的設(shè)計(jì)會(huì)考慮增加硬件的深度學(xué)習(xí)設(shè)計(jì),如何在軟硬件上做取舍,以及人工智能計(jì)算模型與原有軟硬件架構(gòu)以及整個(gè)系統(tǒng)設(shè)計(jì)上做匹配,目前來(lái)看還在早期探索階段。
王小波曾說(shuō):我對(duì)自己的要求很低:我活在世上,無(wú)非想要明白些道理,遇見(jiàn)些有趣的事。倘能如我愿,我的一生就算成功。本公眾號(hào)就是推廣一些有意思的事情,推廣一些常識(shí),讓生活變得有趣。
碼字不易,需要各位幫忙推廣,幫忙關(guān)注此微信公眾號(hào):阿寶1990,每周給你不同的觀點(diǎn)和內(nèi)容。