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