人工智能和機(jī)器學(xué)習(xí)正在滲透所有的行業(yè)。隨著人工智能算法的成熟,支持這些算法的硬件平臺(tái)也日趨成熟。目前,這些硬件平臺(tái)包括 ASIC,CPU,GPU以及 FPGA 。在 Plunify,盡管我們的強(qiáng)項(xiàng)是FPGA的設(shè)計(jì)優(yōu)化,但是我們中的很多人本質(zhì)上還是軟件工程師。當(dāng)然,這里所說(shuō)的“軟件工程師”并不包括嵌入式工程師,固件工程師或者研發(fā)驅(qū)動(dòng)的工程師;我們所說(shuō)的是使用 .NET, Java, Python, R, SQL, C++ 或者 JavaScript 來(lái)寫代碼的開(kāi)發(fā)者們。
我們最近正在研究的項(xiàng)目是在芯片設(shè)計(jì)上使用機(jī)器學(xué)習(xí)驅(qū)動(dòng)的布局。我們用成千上萬(wàn)不同的布局來(lái)訓(xùn)練,并使用機(jī)器學(xué)習(xí)技術(shù),在布線之前預(yù)測(cè)設(shè)計(jì)的最終時(shí)序性能。
使用哪一個(gè)框架來(lái)開(kāi)啟機(jī)器學(xué)習(xí)項(xiàng)目?
市面上有很多選擇,但是我們最終的答案是Tensorflow。這似乎有些難以置信,畢竟我們已經(jīng)開(kāi)發(fā)了賽靈思 Vivado 的插件 Plunify Cloud 以及設(shè)計(jì)優(yōu)化軟件 InTime,難道不應(yīng)該選擇一個(gè)可以輕易把FPGA作為硬件的框架嗎?我們已經(jīng)對(duì)FPGA有所了解,而Tensorflow和FPGA的關(guān)系并不是很密切。
請(qǐng)不要誤解。我們雖然對(duì)FPGA的加速性能充滿信心,但是,在每一個(gè)機(jī)器學(xué)習(xí)項(xiàng)目開(kāi)始的時(shí)候,挑選一個(gè)合適開(kāi)發(fā)環(huán)境首先要考慮的應(yīng)該是自己的已有技能和可供學(xué)習(xí)的資源。對(duì)于已有技能,我們了解上述所有語(yǔ)言和其他的一些語(yǔ)言;至于可供學(xué)習(xí)的資源,Tensor Flow+Keras 教程和文檔可以輕易的擊敗所有的對(duì)手。有這么多選擇,您一定想馬上開(kāi)啟項(xiàng)目來(lái)測(cè)試您的方法是否可行。
應(yīng)該選擇哪個(gè)加速平臺(tái)?
在生成了成千上萬(wàn)個(gè)擁有不同布局和資源要求的設(shè)計(jì)時(shí),我們應(yīng)該如何加速機(jī)器學(xué)習(xí)的訓(xùn)練和推理?關(guān)于加速的問(wèn)題終于來(lái)了-究竟是用GPA,TPU還是FPGA呢?很明顯,F(xiàn)PGA由于對(duì)用戶不友好勝算不大。合理的選擇仍然是谷歌的云平臺(tái)或者GPU。
對(duì)我們來(lái)說(shuō),我們已經(jīng)解決了如何將正在進(jìn)行的項(xiàng)目轉(zhuǎn)換成基于FPGA的加速環(huán)境。這里所說(shuō)的“轉(zhuǎn)換”并不是完全的重寫。也許我們已經(jīng)開(kāi)啟了Caffe,但是軟件工程師在開(kāi)始階段不會(huì)考慮加速平臺(tái)。
“不了解發(fā)動(dòng)機(jī),也可以選一臺(tái)好車?”
這里有一種替代方法 – 高層綜合(High LevelSynthesis)。用C/C++寫代碼然后轉(zhuǎn)換成Verilog或者VHDL(這個(gè)方法已經(jīng)存在很久并且也有很多批評(píng))。在Hastlayer有一群工程師提供一個(gè).NET的軟件開(kāi)發(fā)工具包可以把.NET程序轉(zhuǎn)換成VHDL.。這個(gè)開(kāi)發(fā)包當(dāng)然有一些局限性,但是從軟件工程師的角度上來(lái)說(shuō),這已經(jīng)是一個(gè)從試圖理解時(shí)鐘,頻率,器件類型的極大飛躍。我們這些軟件工程師比較自我,大多只關(guān)心機(jī)器學(xué)習(xí)的訓(xùn)練可以有多快。如果眼下的程序在CPU上需要運(yùn)行一天,而在FPGA上只需要兩個(gè)小時(shí),我是不是可以用一個(gè)更優(yōu)化的版本(比如同樣的.NET程序但是被InTime優(yōu)化過(guò))30分鐘就完成運(yùn)行呢?
采用自然習(xí)慣還是稍后再轉(zhuǎn)換?
讓軟件工程師采用他們?cè)缙诘淖匀涣?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)編寫好的庫(kù)。在沒(méi)有一個(gè)大公司或團(tuán)隊(duì)的支持下,很難創(chuàng)造一個(gè)屬于自己的機(jī)器學(xué)習(xí)框架。這條路行不通的話,擁有一個(gè)簡(jiǎn)單自動(dòng)的轉(zhuǎn)換路徑似乎就是一個(gè)最好的選擇了。
所以別再說(shuō)“你需要一開(kāi)始就學(xué)習(xí)FPGA”這樣的話了,我們應(yīng)該說(shuō)“將Tensorflow / Pytorch轉(zhuǎn)換成適用于FPGA的代碼”?;蛘咧苯幼屛覀儊?lái)幫您在FPGA上運(yùn)行吧。
這兩種選擇,都需要逾越一條鴻溝。如果您是一個(gè)已經(jīng)遇見(jiàn)這些問(wèn)題的軟件工程師,我們十分希望能聽(tīng)見(jiàn)您的心聲。
InTime是一款使用機(jī)器學(xué)習(xí)來(lái)優(yōu)化 FPGA 設(shè)計(jì)的軟件。如果您有興趣,點(diǎn)擊這里來(lái)了解更多 InTime 的信息,或者直接申請(qǐng)免費(fèi)試用。
-
芯片
+關(guān)注
關(guān)注
456文章
51182瀏覽量
427274 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8438瀏覽量
133087
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
一文詳解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的區(qū)別
![<b class='flag-5'>一</b><b class='flag-5'>文</b>詳解<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>和深度<b class='flag-5'>學(xué)習(xí)</b>的區(qū)別](https://file1.elecfans.com/web2/M00/A1/CD/wKgZomT4BTqAdy0dAAAPxCG091Y978.jpg)
一文帶你深入了解linux驅(qū)動(dòng)
一文帶你了解步進(jìn)電機(jī)的相關(guān)知識(shí)
一文了解BLDC與PMSM的區(qū)別
一文了解LVGL的學(xué)習(xí)路線
什么是機(jī)器學(xué)習(xí)? 機(jī)器學(xué)習(xí)基礎(chǔ)入門
一文解析機(jī)器學(xué)習(xí)常用35大算法
![<b class='flag-5'>一</b><b class='flag-5'>文</b>解析<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>常用35大算法](https://file1.elecfans.com//web2/M00/A6/C3/wKgZomUMQDuAJpN3AABFC1_0E2o511.png)
一文讀懂深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的差異
![<b class='flag-5'>一</b><b class='flag-5'>文</b>讀懂深度<b class='flag-5'>學(xué)習(xí)</b>與<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>的差異](https://file1.elecfans.com//web2/M00/A6/E6/wKgZomUMQSSAWqMfAACJ_DrsDSQ433.png)
一文了解高速差分ADC驅(qū)動(dòng)器設(shè)計(jì)考慮
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>高速差分ADC<b class='flag-5'>驅(qū)動(dòng)</b>器設(shè)計(jì)考慮](https://file.elecfans.com/web2/M00/49/8E/poYBAGKhwMiAXIljAAA2xq5BgVg640.png)
一文解讀機(jī)器學(xué)習(xí)的作用及優(yōu)勢(shì)
一文看懂谷歌的AI芯片布局
機(jī)器學(xué)習(xí)算法使用機(jī)器來(lái)了解給定的數(shù)據(jù)集
了解一下機(jī)器學(xué)習(xí)中的基礎(chǔ)知識(shí)
一文帶你了解電機(jī)驅(qū)動(dòng)芯片和電機(jī)驅(qū)動(dòng)模塊
機(jī)器學(xué)習(xí)步驟詳解,一文了解全過(guò)程
![<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>步驟詳解,<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>全過(guò)程](https://file.elecfans.com/web2/M00/A5/91/poYBAGRi4kWACGwdAAD4Lj1H204920.png)
評(píng)論