人工智能和機(jī)器學(xué)習(xí)正在滲透所有的行業(yè)。隨著人工智能算法的成熟,支持這些算法的硬件平臺也日趨成熟。目前,這些硬件平臺包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,盡管我們的強(qiáng)項(xiàng)是FPGA的設(shè)計(jì)優(yōu)化,但是我們中的很多人本質(zhì)上還是軟件工程師。當(dāng)然,這里所說的“軟件工程師”并不包括嵌入式工程師,固件工程師或者研發(fā)驅(qū)動(dòng)的工程師;我們所說的是使用 .NET, Java, Python, R, SQL, C++ 或者 JavaScript 來寫代碼的開發(fā)者們。
我們最近正在研究的項(xiàng)目是在芯片設(shè)計(jì)上使用機(jī)器學(xué)習(xí)驅(qū)動(dòng)的布局。我們用成千上萬不同的布局來訓(xùn)練,并使用機(jī)器學(xué)習(xí)技術(shù),在布線之前預(yù)測設(shè)計(jì)的最終時(shí)序性能。
使用哪一個(gè)框架來開啟機(jī)器學(xué)習(xí)項(xiàng)目?
市面上有很多選擇,但是我們最終的答案是Tensorflow。這似乎有些難以置信,畢竟我們已經(jīng)開發(fā)了賽靈思 Vivado 的插件 Plunify Cloud 以及設(shè)計(jì)優(yōu)化軟件 InTime,難道不應(yīng)該選擇一個(gè)可以輕易把FPGA作為硬件的框架嗎?我們已經(jīng)對FPGA有所了解,而Tensorflow和FPGA的關(guān)系并不是很密切。
請不要誤解。我們雖然對FPGA的加速性能充滿信心,但是,在每一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目開始的時(shí)候,挑選一個(gè)合適開發(fā)環(huán)境首先要考慮的應(yīng)該是自己的已有技能和可供學(xué)習(xí)的資源。對于已有技能,我們了解上述所有語言和其他的一些語言;至于可供學(xué)習(xí)的資源,Tensor Flow+Keras 教程和文檔可以輕易的擊敗所有的對手。有這么多選擇,您一定想馬上開啟項(xiàng)目來測試您的方法是否可行。
應(yīng)該選擇哪個(gè)加速平臺?
在生成了成千上萬個(gè)擁有不同布局和資源要求的設(shè)計(jì)時(shí),我們應(yīng)該如何加速機(jī)器學(xué)習(xí)的訓(xùn)練和推理?關(guān)于加速的問題終于來了-究竟是用GPA,TPU還是FPGA呢?很明顯,F(xiàn)PGA由于對用戶不友好勝算不大。合理的選擇仍然是谷歌的云平臺或者GPU。
對我們來說,我們已經(jīng)解決了如何將正在進(jìn)行的項(xiàng)目轉(zhuǎn)換成基于FPGA的加速環(huán)境。這里所說的“轉(zhuǎn)換”并不是完全的重寫。也許我們已經(jīng)開啟了Caffe,但是軟件工程師在開始階段不會(huì)考慮加速平臺。
“不了解發(fā)動(dòng)機(jī),也可以選一臺好車?”
這里有一種替代方法 – 高層綜合(High LevelSynthesis)。用C/C++寫代碼然后轉(zhuǎn)換成Verilog或者VHDL(這個(gè)方法已經(jīng)存在很久并且也有很多批評)。在Hastlayer有一群工程師提供一個(gè).NET的軟件開發(fā)工具包可以把.NET程序轉(zhuǎn)換成VHDL.。這個(gè)開發(fā)包當(dāng)然有一些局限性,但是從軟件工程師的角度上來說,這已經(jīng)是一個(gè)從試圖理解時(shí)鐘,頻率,器件類型的極大飛躍。我們這些軟件工程師比較自我,大多只關(guān)心機(jī)器學(xué)習(xí)的訓(xùn)練可以有多快。如果眼下的程序在CPU上需要運(yùn)行一天,而在FPGA上只需要兩個(gè)小時(shí),我是不是可以用一個(gè)更優(yōu)化的版本(比如同樣的.NET程序但是被InTime優(yōu)化過)30分鐘就完成運(yùn)行呢?
采用自然習(xí)慣還是稍后再轉(zhuǎn)換?
讓軟件工程師采用他們早期的自然習(xí)慣肯定是有幫助的??纯催@個(gè)領(lǐng)域擴(kuò)展地有多快吧,編寫機(jī)器學(xué)習(xí)算法的程序員絕大多數(shù)都不會(huì)成為擁有數(shù)學(xué)博士的數(shù)據(jù)科學(xué)家或者FPGA/ASIC設(shè)計(jì)工程師。他們大多是像你我這樣擁有一個(gè)計(jì)算機(jī)學(xué)位的普通人,使用已經(jīng)編寫好的庫。在沒有一個(gè)大公司或團(tuán)隊(duì)的支持下,很難創(chuàng)造一個(gè)屬于自己的機(jī)器學(xué)習(xí)框架。這條路行不通的話,擁有一個(gè)簡單自動(dòng)的轉(zhuǎn)換路徑似乎就是一個(gè)最好的選擇了。
所以別再說“你需要一開始就學(xué)習(xí)FPGA”這樣的話了,我們應(yīng)該說“將Tensorflow / Pytorch轉(zhuǎn)換成適用于FPGA的代碼”?;蛘咧苯幼屛覀儊韼湍贔PGA上運(yùn)行吧。
這兩種選擇,都需要逾越一條鴻溝。如果您是一個(gè)已經(jīng)遇見這些問題的軟件工程師,我們十分希望能聽見您的心聲。
InTime是一款使用機(jī)器學(xué)習(xí)來優(yōu)化 FPGA 設(shè)計(jì)的軟件。如果您有興趣,點(diǎn)擊這里來了解更多 InTime 的信息,或者直接申請免費(fèi)試用。
-
芯片
+關(guān)注
關(guān)注
452文章
50223瀏覽量
420978 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315
發(fā)布評論請先 登錄
相關(guān)推薦
評論