AI、5G、雲等技術快速迭代,開發者如何解決計算焦慮?

作爲深度學習的三架馬車,數據、算法、算力共同驅動了第三輪人工智能浪潮的興起。一方面,硬件計算能力的發展確實快速推動深度學習技術在各個領域取得巨大進展,但另一方面,深度學習模型升級的頻率顯著高於過去,模型的計算力需求呈爆炸式增長,已經將過去多年來累積的計算力成本下降的紅利迅速蠶食。

近幾年,許多給人留下深刻印象的技術突破都是“大力出奇跡”類型,即算法的新鮮度不強 ,但是通過使用更多的數據、更多的算力,實現更驚豔的效果 。以最近火爆全球的GPT-3模型爲例,其參數量高達1700億,有行業人士估計訓練這一份模型需要1200萬美金,別說普通人玩不起,就是一般的公司也難以承擔。人工智能要真正實現全面落地,還面臨着巨大的鴻溝。

但萬物智聯的時代就在眼前,數據的增長、算法的發展將會給算力帶來越來越大的挑戰,提高整個計算系統的性能與效率迫在眉睫。面對算力瓶頸,軟件層面能做些什麼?如何進一步通過軟件釋放硬件的最大性能?如何更好地滿足對海量數據進行實時處理和分析的需求?實現“計算普惠”還有哪些途徑?

圍繞這些話題,9月25日,在InfoQ大咖說直播間(點擊這裏觀看直播回放視頻),以“跨越計算鴻溝:如何通過軟硬件協同實現算力的指數級提升?”爲主題,InfoQ邀請到英特爾中國研究院院長宋繼強,英特爾架構、圖形和軟件集團副總裁兼中國區總經理謝曉清,南京大學軟件工程教授張賀,清華大學計算機系長聘副教授翟季冬,中科院計算所研究員崔慧敏進行分析和探討。

智能互聯時代,算力面臨哪些挑戰?

在全球疫情大流行的背景下,互聯網、數字經濟、人工智能加速發展,今年年初這幾個月的疫情,對數字化轉型的推動甚至超過了過去10年。但與此同時,也導致數字鴻溝的問題進一步加劇,這背後反映的是什麼問題?當前計算力面臨着哪些方面的挑戰?

英特爾中國研究院院長宋繼強:

疫情讓我們的數字化進程突然提速,提速帶來的效果是我們更快地實現了系統或者說終端設備的聯網化和智能化。很多數據開始從智能設備不斷往網絡、往雲裏去送。不僅數據量很大,按照統計數字來講是以25%的年複合增長率在增長,而現在的計算力只能處理其中很小一部分。數據類型也很多樣,而且很多數據都需要實時處理,這導致我們對計算的要求發生了很大的變化。

另外,很多數據處理需要用AI模型,AI模型本身就有很多的參數,也就是元數據。這些參數也需要快速的存取,需要被計算,這就帶來了非常多的新挑戰。

同時,上下行的帶寬分配也和以前不同了,以前是下載的東西多,現在變成上行的壓力會越來越大,而且大家希望看到很快速的處理。那麼計算到底在哪兒做也是一個問題。在雲端做還是在終端做,還是在最新提出的邊緣計算做?邊緣又在哪裏?

數字鴻溝主要指的是算力、網絡、帶寬分配不均勻。在發達地區,密集的城市地區會有比較好的算力和網絡支持,但到偏遠地區,西部地區開發還比較慢的地區,在這一次疫情來的時候,就很難馬上享受到數字化的便捷。上網課缺乏好的網絡,缺乏快的計算設備,用AI去做加速也很困難。其實真正的數字化,對整個基礎設施的建設,終端的硬件能力建設,包括網絡側、邊緣計算的異構的加速都還有很大的挑戰,還有很多地方需要提升。

清華大學計算機系長聘副教授翟季冬:

談到應用和算力之間的鴻溝,我想分享幾個數據。最近幾年自然語言處理領域發展非常迅速,2018年6月份推出的GPT模型是1.17億個參數,到2019年2月份,GPT-2模型是15億個參數,到今年5月份最新的GPT-3模型參數已經高達1750億個。從GPT-1到GPT-3,短短兩年時間,這個模型的參數量增長了1000倍。

據OpenAI公司的最新統計,OpenAI在2019年計算了自2012年以來所有模型所用的計算量。他們發現最大規模的AI模型所需要的算力已經增長了30萬倍,平均是每3.4個月翻一倍。而根據摩爾定律,芯片增長速度的平均週期是18個月到24個月,而且現在摩爾定律增長還有放緩的節奏。

從這些數據來看,我覺得當前發展最主要的問題就是應用對算力的需求在逐漸增加,算力和應用之間的鴻溝變得越來越大,算力問題成爲當前非常重要的一個矛盾。

南京大學軟件工程教授張賀:

除了剛剛宋院長提到的,由算力或者網絡等資源分佈不均勻引起的數字鴻溝或者說算力鴻溝,實際上鴻溝還體現在其他方面,比如說核心技術上。目前美國掌握着大部分的關鍵技術,國內雖然也有像中星微、深鑑科技、寒武紀這樣的企業,但在數量上和質量上都存在差距,這是一個比較明顯的差異。

另一方面,在科學研究和產品落地這兩者之間還存在着一定的鴻溝。過去我們經歷了互聯網從興起到發展再到普及的過程,實際上互聯網的商業化是一個長期的過程。在這個過程當中,我們前期看到的和我們現在感知到的,我們生活當中接觸到的互聯網可能有很大的不同。在科學研究,在理論上面,雖然說現在有很多的人在投入,但和實際的落地中間還是有一定差距的。短期內的改善並不是很樂觀。現在很多人工智能領域的知名人物也有迴歸學術界的意願。短期內要突破,尤其是在產業落地的突破,可能需要一個過程。

還有一個,在教育方面。在人才教育培養方面,國內計算機教育的模式也有一定的割裂。近幾年,學科越分越多、越分越細,這就導致了人學習的內容侷限於一個比較狹窄的範圍內。比如說在計算機裏,學硬件的人可能不學軟件,學軟件的人對硬件也瞭解很少,這樣很難去培養真正落地型的人才,尤其是在AI領域,我們需要一些複合人才。比如說硬件、軟件、數據科學,這也是我們現在所謂數字鴻溝的一個表現。

圍繞算力方面的挑戰來談的話:一個是對於算力依賴上的不均衡。比如說在數據學習當中,我們更多依賴於英偉達的GPU,它市場佔有率高並不僅是硬件的架構適合於深度學習,另一方面它有一個CUDA庫,這個庫也可以幫助我們編寫基於深度學習的項目。這兩者實際上會形成馬太效應,也就是說強者恆強,別人要搶佔這個市場並不容易。這樣一種一家獨大的現象,也會造成對特定架構或者是特定供應商的依賴,某種程度上這是一種壟斷的現象。

圍繞算力的另一個挑戰是成本。現在神經網絡訓練主要使用CPU或GPU,這些硬件的成本是很高的。即便你使用一些類似於谷歌的服務,成本也是很高的。另外模型訓練成本也很高,尤其是大規模模型。雖然目前沒有一個標準的統計,但是現在有一些單次訓練費用的統計。剛剛翟季冬老師提到了GPT模型訓練,有報道說,大型的BERT模型是在16個Cloud TPU上進行訓練,需要訓練4天時間。覈算一下單價,實際上這一次訓練的成本就已經需要1.2萬多美金,模型從搭建到最後確定可以使用,至少要進行上百次訓練,這個成本是非常高的。

還有使用效率的問題,模型有大量的參數,而且還需要大量的數據,這些數據需要很多存儲空間來保存和進行後續訓練。但是單機設備存儲空間有限,這就需要並行模型訓練。我們要把模型拆分到不同的計算節點上,一拆分就會在不同的設備之間形成一定的數據依賴。數據同步或者是通訊傳輸,也需要開銷。極端情況下,在這種網絡模型的訓練上,如果是單機或者是單卡的利用率,有可能不到50%。這就需要在分佈式情況下有一個很好的訓練策略。訓練策略在時間和空間上可能會起到一定作用,但是你需要在模型精度上做一些犧牲,也是一個影響。

中科院計算所研究員崔慧敏:

我的觀點可以總結爲一個詞:多樣化,未來像人工智能和超算會越來越融合。

多樣性又體現在幾個方面:首先是負載有多樣化的需求。不同類型的負載對算力有不同的需求。這當中有計算量超級密集的超算類負載,也有現在很火的人工智能類的負載,也有通量非常大但數據處理強度不太高的負載。另外在端側,對算力的需求就更加多樣化了,像手機上也是既有圖象處理類的,也有人工智能類的,還有遊戲、網頁等等不同的負載。

負載的多樣化又帶來了硬件的多樣化設計。當摩爾定律走到今天,我們已經不得不選擇一些專用架構持續獲得性能提升。在服務器側有針對超算的GPU等架構,針對AI有TPU、寒武紀等架構。針對網絡的流式負載則有路由芯片的架構。在手機側更是如此,現在我們的手機基本上都既有大的CPU核也有小的CPU核,同時也會有GPU處理器,還會有NPU、DSP等等各種加速單元。整體上呈現出一個非常明顯的異構趨勢。

由此,上層的多樣化和下層的多樣化給系統軟件帶來了非常大的麻煩。系統軟件起的是橋樑的作用,把上面的應用映射到下面的硬件上。既然現在上面和下面都越來越多樣化和異構化了,也就意味着中間的系統軟件的任務越來越艱鉅了。特別是目前的國際大趨勢下,系統軟件還有一個任務就是把越來越稀缺的硬件資源用到極致。所以對做系統軟件的人來說,在上下都極度多樣化差異化的背景下,要努力榨出最後一滴“油水”。

英特爾架構、圖形和軟件集團副總裁兼中國區總經理謝曉清:

現在計算鴻溝其實就是一個需求跟我們能夠提供的計算能力之間的鴻溝。技術的提高是跟需求密切相關的。比如說英特爾在PC時代,製造出PC之後,也製造出來一些人類的不同需求,包括辦公室應用、遊戲,其實很多需求是先有技術再反過來去影響它的。

現在,我覺得是一個需求和技術你追我趕的過程。中間有一段時間停滯了,PC的能力五六年不更新似乎也沒有問題。後來,移動互聯網誕生,又催生了一次指數級的算力增長,把用戶的需求釋放出來。 從前幾年開始,我們進入到雲計算、人工智能的時代。很多的用戶需求又到了算力不一定完全跟得上的階段。尤其因爲年初的疫情,有一些原來可能不是非常着急的用戶場景,變得非常常見。包括我們現在的視頻會議,可能在最近的半年當中,我們開的視頻會議比原來5年時間開的都多。這些其實都是需求和技術之間互相追趕,互相釋放彼此的潛能。

我相信計算鴻溝未來還是會持續下去,矛盾會體現在不太一樣的方面,不過這也是一個動力,能夠推動我們做技術的人一步一步向前走。

如何通過軟硬件協同,實現算力的指數級提升?

現在業界基本上已經形成共識,要實現算力的指數級提升需通過軟硬協同,那麼實現軟硬件協同的最好方式是什麼?需要具備哪些特點才能達到比較理想的效果?業界現在有哪些比較好的嘗試?

清華大學計算機系長聘副教授翟季冬:

現在業界一個非常明顯的趨勢就是摩爾定律逐漸放緩,剛剛崔慧敏老師也提到,現在的負載是非常多樣化的,最近幾年做得比較多的就是領域定製芯片。2019年,圖靈獎獲得者Hennessy、Patterson在《計算機架構的新黃金時代》一文中強調,隨着摩爾定律的放緩,領域定製芯片是未來發揮算力的一個非常重要的方向。

我們看過去十年二十年芯片的發展,通用處理器在某種程度上來說一直佔據非常重要的地位。通用處理器試圖解決所有應用領域的問題,但實際上像剛剛崔慧敏老師也提到,應用有多樣性,不同的負載有不同的負載特徵,有的可能是計算密集,有的可能是訪存密集,還有可能很多負載對存儲需求壓力會特別大。

所以我們想做一個芯片或硬件能適用於所有領域,這個方向肯定會很難。但是如果我們可以針對一個特定領域的特徵,去挖掘這個領域本身的計算、訪存、IO的負載特徵,就可以設計一個非常特定的處理器到上層的存儲,到系統軟件,這樣可以帶來很大的算力提升。

英特爾中國研究院院長宋繼強:

剛剛翟季冬老師講到一個點非常好,現在通過領域定製芯片的方式去解決各種負載的多樣性,能比較有效地最大化硬件加速的效率,不管是從計算、訪存還是從一些中間通信的帶寬、IO的定製上來說。這是目前從架構層面來講非常好且有效的一種方式。但這種方式也存在一些困難,首先,如果領域定製芯片要能夠達到ASIC這種專用加速器的性價比和能效比,就需要這個應用的量很大,才能支持大家去做一款ASIC專門爲它服務。當你的應用量沒有那麼大的情況時,商業規律讓你做不了ASIC。另外,應用多樣性變化的趨勢很快,要通過做ASIC去跟上它的變化太難了。

通過多種不同架構的組合,尋求最符合客戶需要的性價比、能耗比的折中,這是一種最好的通過多架構組合的方式去應對應用多樣性的方法。需要在不同的架構之間,有很好的折中的處理辦法,並且能夠集成一些不同種類的方案。比如說板級集成,CPU、GPU、FPGA這些大芯片之間集成。或者說甚至可以提供像通過封裝級集成,讓你擁有更小的尺寸和功耗,但是仍然可以提供多種加速功能。

更重要的是,集成起來之後,系統裏有了異構單元,如何用專業的軟件去給它提供加速,並且能夠讓上層的軟件開發人員不用跟着裏面很多不同的硬件架構換來換去,去試很多種不同的組合。這就需要上層的軟件屏蔽掉底層硬件之間的差異性,但是能夠很好的去對接上面的應用開發框架,並且利用好不同硬件之間的負載分配和通訊同步,包括如何在當中尋找最好的配比。

這一塊業界也在尋找更好的完整的軟件解決方案,最近英特爾也和業界一起推出了一個開放的跨架構編程模型oneAPI,它可以通過軟件層把很多不同的硬件屏蔽,只在上層暴露出統一的開發接口,並且在底層能夠支持不同的專用加速庫,快速提升使用不同種類硬件的效能。

軟硬件協同是目前最好的一種方法,並且需要在不同種類的硬件之間有一些靈活搭配的方案,而不是說只依賴於DSA這種領域加速硬件一種方式。

中科院計算所研究員崔慧敏:

軟硬件協同設計還是針對特定領域做的,針對特定領域進行深度的資源垂直整合,來發揮硬件的處理能力。

我覺得有兩個方面,因爲軟硬件既分工又合作,首先討論一下它們到底是怎麼分工的?軟硬件之間的界面定義要怎麼做,這是未來一個非常重要的問題,也需要根據不同領域來重新探索。具體來說哪些事情由硬件做,哪些事情由軟件做,它們的邊界如何劃分?這裏面其實是一個平衡,硬件做的事情越多,意味着硬件資源的使用效率越高,對應付出的代價就是整個通用性會受到影響;反之,如果硬件做的事情少了,通用性就會改善,但同時帶來資源使用效率的降低。那麼平衡點在哪裏,哪些東西需要硬化,哪些東西需要軟化,這是我們協同設計時需要考慮的第一個點。

像AI在這個方面就進行了很多有趣的探索,不管是谷歌的TPU,還是寒武紀大電腦系列,還是很多AIoT的智能芯片,其實都是把人工智能的計算範式提取出來,根據這個範式來設計自己應用場景的特徵。像TPU和寒武紀定義了人工智能比較基礎的指令集,所以對軟件有很大的靈活性。而很多AIoT芯片是犧牲了一定的靈活性以追求更高的性能功耗比。這兩種無所謂優劣高下之分,完全是設計之初由應用的市場確定的。但是這確實是一個最初就需要確定好的關鍵決策,因爲這不管對後期的整個生態還是軟件開發都有很大的影響。

分工完了就是合作了,角色劃分之後如何做協同。我覺得在協同方面,有一個非常重要的因素可能比以往都重要得多,那就是工具。 因爲在整個軟硬協同的設計當中,需要一套自上而下完備的工具軟件來支撐。這當中包括仿真器、編譯器以及各種性能、能耗、面積的分析工具。而且就像剛剛宋繼強院長提到的,因爲技術和應用更迭的週期是很快的,你要很快把這個東西做出來,要不然做出來的時候可能就已經過時了。

在這個過程當中就要快速實現一個指令集的定義,應用到指令集的代碼生成,對生成的代碼和硬件的量化評估,這當中每一個步驟都需要快速完成,這對工具鏈軟件的挑戰還是很大的。

簡單總結一下,兩個永恆的主題,軟硬件如何分工,如何協作,都有很大的機會。

英特爾架構、圖形和軟件集團副總裁兼中國區總經理謝曉清:

我想從英特爾公司的角度來談一談這個問題。英特爾傳統上來講是一家硬件公司,從PC時代開始,其實是以通用計算這樣的一個CPU算力來成就現在的英特爾的。

但是,人工智能發展起來之後,其實有很多人工智能或者是數據處理方面的特殊需求,以至於整個硬件行業開始向GPU、FPGA,包括AI的XPU方向發展。英特爾目前也在往這個方向轉型。從硬件的多樣化角度出發,異構計算其實現在已經成爲了我們的主題,這是跟行業同步發展是一樣的道理。

同時,異構計算其實給研發人員,或者說軟件開發者,帶來了很多麻煩。尤其是現在的應用程序,用戶場景越來越多,很多上層的軟件開發者其實是沒有時間也沒有精力去學那麼多不同架構的硬件的。尤其是現在,基於雲計算平臺的開發對硬件的依賴性,或者對硬件的透明度越來越往抽象層發展。

從系統軟件的角度來看,我們會更多去研究怎麼把硬件的每一層抽象做好,以讓開發者在不同層次上都可以用他們原來熟悉的方式方法做他們的開發工作。

另一方面,怎麼提高開發人員的生產效率也是一個非常重要的方面。他們原來可能需要寫很複雜的程序纔可以解決的問題,如果可以在系統層面提供一套非常用戶友好,並且在抽象層方面能夠做到充分優化的解決方案,也可以非常大地提高開發者的工作效率。

前面宋繼強院長也提到了oneAPI,這是英特爾的一個嘗試。從英特爾的角度來看,傳統PC行業有很多的開發者生態已經在那個地方了,進一步往前走的話,怎麼能夠在異構計算這樣一個世界,比較好滴借鑑原來的經驗,同樣把原來的開發者生態挪到異構計算開發者生態上來,使得我們的計算能力能夠指數級的增長。從而做到不僅是在硬件層面上是指數級增長的,在軟件開發效率上也是一個指數級增長的過程。

南京大學軟件工程教授張賀:

我以軟件工程的角度來談談這個問題。這涉及到軟件工程裏的一個概念,也就是軟件定義。現在是軟件定義一切,這個“一切”怎麼理解?我們可以把硬件虛擬化,用API暴露硬件可以操作的部分,或者接受你的調用管理辦法,實現硬件按需管理。

通過這樣一種虛擬化的形式去把包括算力、存儲、網絡這些IT資源,進行一個統一的、最優化的管理。這當中不僅計算本身是算力,同時網絡、存儲也都是算力的表現。

我們可以使用軟件定義硬件功能,比如說通過軟件的形式給硬件進行賦能。實際上我們剛剛提到API,API是一箇中間的核心,在API之上是軟件可以完成的,也就是一切皆可編程的概念,通過API我們可以實現軟硬件相互之間的解耦,一旦解耦之後,兩者就可以各自獨立演化。軟件要做的是向個性化方向發展,它要滿足的是不同用戶羣體對於算力的個性化要求;而硬件應該是向標準化發展,它們相互之間可以通過虛擬化的形式結合起來。通過一體化的硬件,使用標準化、虛擬化的形式進行解耦,這樣硬件就只完成它自己的功能,具體的控制邏輯或業務邏輯交給軟件去完成。

在軟件定義的概念當中,和算力相關的一個是軟件定義算力,或者說分佈式算力。本質上就是把算力集中起來,通過軟件統一進行協調使用。還有軟件定義存儲,也就是說通過軟件把計算的結果進行一定的存儲。過去的計算,可能很多都是算過的,那就沒有必要消耗很多的計算資源去重新計算。而是把算過的加上要重新計算的,或者說增量,然後把它們通過軟件形成來結合。其他還有剛剛提到軟件定義網絡,還有軟件定義面向用戶的應用服務,等等。

如何進一步通過軟件釋放硬件的最大性能?

在軟硬件協同的基礎之上,軟件方面還有什麼創新思路,能夠進一步釋放硬件最大性能?如何通過軟件快速提升算力,滿足對海量數據進行實時處理和分析的需求?

英特爾架構、圖形和軟件集團副總裁兼中國區總經理謝曉清:

其實有一些新的思路我們也在探討當中。從行業來看,AI所釋放出來的用戶場景,使得對我們做軟件也好,做硬件也好,驅動力還是非常大的。

現在軟件從業人員也特別多,軟件開發出來的產品在兩年前、五年前根本沒有辦法想到的。所以我覺得,其實技術從業人員的壓力非常大,我們怎麼樣從技術開發這個層面滿足不同的需求。從我們現在內部看到的情況,通過軟件優化讓硬件潛能得到最大程度的發揮,這些工作我們一直都在做。

舉個例子來講,比如說ResNet-50推理的Throughput在過去兩年之內,硬件一樣的情況之下,我們用軟件優化的方式可以把原來的性能提高到285倍左右。我們原來想像當中,軟件的優化可能就是10%、15%的優化,現在我們發現由於算法、指令集方面的充分利用,這個潛能是非常大的。毫不誇張地講,軟件優化可以使得我們原來做推理的秒級延時,提升到現在的毫秒級;原來無法達到實時體驗的用戶場景現在完全可以做到實時。訓練其實也是一樣的,原來需要幾周的時間,現在只需要幾個小時,甚至是分鐘級別。因爲時間的縮短,使得原來的一些不可能的用戶場景,現在變成可能。

中科院計算所研究員崔慧敏:

就像我之前提的,系統軟件要榨乾硬件當中的每一滴“油水”,那麼怎麼去榨乾呢?首先我們要對資源進行非常極致的精細化管理,這是系統軟件需要解決的最底層的問題。

再往上走一點,對資源使用的動態模型要構建起來。這是我從編譯器的角度來說的,以前我們做編譯器都是給你一個固定硬件,你拿一個程序去給它生成代碼,這個芯片上不管是Cache還是寄存器,編譯器都認爲是這一個程序獨佔的。但是現在不管是數據中心還是手機上,都是同時運行非常多負載的,這意味着我們在編譯一個程序的時候,並不知道它運行的時候能拿到多少資源。傳統的編譯優化方法拿過來就會有很多問題。這個問題其實之前在數據中心剛剛開始實施混部的時候,就有非常多的研究人員探討過,也提出了很多方法來解決這個問題。但是基本上都是通過資源的合理預留方式來應對的。現在就像我們剛剛提的,資源越來越寶貴了,尤其是考慮到當下的形勢,可能我們都只能用比較落後的工藝來做,以前你預留一部分的方法就玩不轉了。我們必須把一個程序的性能和使用的資源之間建立一個比較精確的模型,這也是一個很難的問題,但是我認爲對於DSA來說是必須要解決的問題,也是我們做編譯的研究人員需要跨越的一個比較大的鴻溝。

再往上,我覺得軟件棧需要重新思考。現在我們的軟件棧很多都是從CPU上繼承過來的,它是一個層次化剝離做得非常好的架構。以GPU爲例,底層是操作系統和Driver,往上一層有CUDA或OpenCL的運行時,再往上是各種編程框架的運行時,比如可能是Java的JVM、TVM的運行時、TensorFlow的運行時等等。這種設計在CPU場景下非常好,因爲每層有每層的抽象,各層之間實現一個互相的協作,遷移非常簡單。但是我們也要注意到一個問題,每層抽象都要付出它的代價,我們不能又要馬兒跑,又要馬兒不喫草,這個代價就是性能的犧牲。

當我們切換到DSA這個領域追求極致算力的時候,跑和喫草這件事情就需要重新想一想了。我們是不是還需要這麼多分層?各個分層之間有沒有重複做的事情?有沒有重新整合的機會?這也是我們現在正在開展的一個很有意思的事情。機會還是蠻多的。我覺得從現在的軟硬協同提升算力來講,對系統軟件的研究人員來說也算是一個黃金時代。

南京大學軟件工程教授張賀:

實際上性能本身天然就是和普遍適用性是一對矛盾。除了在硬件架構上,或者說在芯片層面上我們可以做一些工作之外,或許我們也可以在其他非算力的方面,比如存儲或者是網絡上,去擠榨一些性能。

一是從存儲的角度來看,因爲現在很多大的數據中心,都會有很大的應用負載。比如說像搜索引擎、推薦系統,實際上它們都是以數據爲中心的,它的數據是有一定的局部性特徵。

另一方面,現在傳統計算機的結構是以計算爲中心,它會有多層存儲結構,如果需要完成這個任務的時候,它就把數據從硬盤搬到SSD,或者說到內存再到緩存。從存儲介質來說,需要經過層層的數據搬運纔可以完成這個計算。那麼怎麼減少這種數據搬運的開銷,我們可以通過存儲去擠榨一些。

在存儲量這一塊,我們也可以儘可能的利用存儲介質本身有限的內置的計算能力,根據數據存儲的位置以及它提取信息的特徵、方式,儘可能在存儲層面完成一定的處理,這樣也可以減少IO的開銷。這是從存儲的角度,看能不能給性能帶來一定貢獻。

還有在網絡上,就是近雲端的計算形式。現在智能設備非常多,傳統的集中格式的雲計算方式很難滿足IoT、無人駕駛這樣的應用場景。近些年提出的後雲計算時代、霧計算、邊緣計算、移動邊緣計算,都是對雲計算的某一種擴展。比如說把雲計算設備部署在離終端用戶比較近的地方,這個可能是邏輯上比較近,或者物理距離比較近的位置,這樣就可以根據用戶所在位置去充分利用端的硬件資源。

另外比如邊緣人工智能技術,也就是把人工智能和邊緣計算進行一定結合,把算法推理這一部分更多放到終端設備上,就能靠近數據源頭提供智能分析、處理的能力。一方面可以減少中心的計算壓力,提高效率;另一方面,也可以提供更安全的隱私保護。

清華大學計算機系長聘副教授翟季冬:

快速分享個簡短的例子。我在清華帶學生參加超算比賽,我們經常會在一個固定的集羣服務器上去優化一個應用程序,當硬件不變時,有時候優化後程序性能會提高几十到上百倍,這充分說明在軟件優化方面還有很多空間。

剛剛很多老師提了在軟件方面的一些辦法,我本身的研究方向和崔慧敏老師比較類似,在編譯器和編程語言方向做過一些工作。從我的角度來說,針對底層異構芯片,或者是領域定製的AI芯片,或者是其他的一些領域定製的芯片,要想充分發揮這些異構器件的性能,上層需要一個非常好的,不但編程容易,而且可以充分發揮底層硬件性能的,領域定製的編程語言或編程模型,這是軟件層面上一個比較好的突破點。比如說我們現在經常用到的面向深度學習的TensorFlow、PyTorch,其實這些都可以說是面向人工智能這個領域的定製的編程模型。從用戶的角度來說,它簡化了用戶編程的複雜度。像剛剛崔慧敏老師提到的,做系統軟件就是要榨乾底層硬件的所有性能,這些系統軟件需要交給專業人士去儘量發揮底層硬件的性能,這樣就可以更好地隔離普通用戶和底層越來越複雜的硬件之間的鴻溝。

英特爾中國研究院院長宋繼強:

除了分層優化軟件,上層算法層級也可以帶來很大的提升。特別是像AI,如果算法不經優化直接去用,硬件的開銷是很大的。通常來講,對一個訓練好的模型,如果能做很好的壓縮,這個壓縮既有寬度上的壓縮、參數的壓縮,還有計算位寬的壓縮,一般來講都可以達到百倍的提速比,從內存佔用到計算資源佔用上都可以達到很高的提速比。

另外算法設計上也有很大的空間。比如說現在很多深度學習模型都涉及到歸一化這個過程。歸一化如果做算法調優,有可能把計算複雜度降得很低,降得很低以後,實際上需要硬件做一些調整。這種算法的調優反過來又可以對硬件架構的創新有指導作用。二者起到了相互促進、互相扶持的作用。軟件優化可以給硬件提升性能,同時也可以指導硬件進一步增加一些特性,來進一步放大軟件優化的效果。我們更希望看到一些跨層合作的案例和創新出現。

同時在軟件算法層面,最好我們可以跳出現在的一些框架。因爲現在的框架通常都是已經假設我們應用已有的常用架構,比如CPU、GPU、FPGA、ASIC這些架構去解決問題,然後對已有的深度學習模型進行優化。如果我們跳出來去看,可能還有更新的解決問題的辦法。

我們一方面追求把現在的一些問題、算法優化好解決好,另一方面我們也要探索看做同樣一件事有沒有另外一種不同的思路。因爲現在的做法很多時候能效比不高,如果我們去看像類腦計算這種全新的硬件架構或者說全新的算法會帶來什麼樣的效果,通常也會有一些驚人的發現。比如,我們現在初步的一些關於類腦計算芯片的研究發現,做同樣的事,類腦芯片只需要比現在用深度學習方法少1000倍的功耗就可以做到。當然這需要硬件架構相應做很大的改變,同時軟件算法也要做相應的改變。

實現“計算普惠”還有哪些新路徑?

我們現在已經進入萬物智聯的時代,身邊很多設備,包括冰箱、電視,全都會變成一臺臺小型計算機,不停地產生數據,我們需要對這些數據進行計算,這個算力的需求是日益增長的。還有什麼樣的方法或途徑能夠讓算力變得人人可用,不僅是用得起,而且能夠更方便、更容易地去使用?

南京大學軟件工程教授張賀:

首先是對於用戶來說,或者說對於普羅大衆如何提高大家的計算意識。計算意識一方面是用戶,或者說老百姓能夠有意識地去利用算力爲自己提供個性化的服務,也就是說他能夠想到這個事情。另外一個層面是對於廠商或基礎設施來說,他們能夠給這些用戶提供支持他踐行工作或者改善生活品質的這些價值層面的輸出,並不簡單的只是一個技術或者說計算工具的接口,這樣才能讓民衆直接意識到計算對他生產生活的價值。

其次,要構建一個計算的或者說信息的生態環境。現在人工智能並不僅僅是一個獨立存在,而是和物聯網、5G通信、大數據等結合在一起的,最終要實現的是人、機、物智能地融合互動,讓不同的資源,無論是人類社會的資源,虛擬空間的資源,還是自然空間的資源都能夠整合到一起,而人是起到中心節點的作用。整合這些資源爲人服務,這需要我們構建一個生態系統,而不僅僅是提高算力就可以做到。

對於開發者,從技術方面來說,AI領域的門檻還是比較高的,尤其是在算力、數據、開發平臺等等方面,這就會影響更多的從業者進入。這和AI的普及和現在開發者的需求增長是相矛盾的。我們如何對這些開發者提供有效的支持,對他們賦能,提高他們的生產力,這也是一點。

另一方面是數據,數據是我們能夠保證計算質量的一個重要條件,需要有大量的輸入,但是這些輸入是需要經過特徵工程的數據。如果輸入數據的質量不理想,產生的模型輸出效果也不會好,就是我們傳統說的“Garbage in,Garbage out”的概念。雖然現在我們的數據量越來越多了,但是數據質量還是有待提高,從數據的來源、數據的獲取以及數據的高質量這些方面,以及是不是能夠開放一些經過脫敏的數據,讓開發者、民衆去獲取這些數據,從而降低計算的數據成本。

AI計算還需要注意一個可持續性的問題,比如我們是不是能夠在提高算力的同時降低功耗,進而減少資源的消耗,減少污染。如果大家都去使用計算資源,比如每個用戶都是7×24小時去使用,這個負載肯定是超乎想像的負載量,這樣肯定會對其他的方面造成影響,比如會對環境造成影響。如果真正要達到計算普惠,我們肯定不能忽略的可持續計算的問題。

英特爾中國研究院院長宋繼強:

純粹通過大規模的計算,消耗很多的電來實現智能計算的方式顯然是不可持續的。現在我們處於一個萬物智能、萬物智聯的早期階段,如果以後更多的數據都要拿來做AI訓練的話,我們一定要找到更低能耗消耗的辦法去做智能計算。這要求一是在算法層面要儘量提升,爭取達到可以通過類似像人腦這種功耗級別的算力就可以訓練出可用的模型。尤其是對前端的很多物聯網設備,它的持續學習和模型的訓練,可能依靠這種超高能效比的訓練就可以了,不需要依賴雲端大型的集羣。

另外,還有一些更高維度的辦法,就是繼續去開發量子計算,因爲量子計算十分擅長做那些大規模並行計算,它不是什麼都能做,但是對解決某些問題是非常高效的,對於解決AI問題也是很高效的。當量子計算搞定之後,它可以從傳統的高性能計算那裏卸掉很多任務。

高性能計算當然還需要繼續去發展,我們現在的高性能計算中心不是太多而是太少,還需要在全國各地部署,把資源雲化。通過5G網絡能夠把計算能力快速輸送到很多人的跟前,可能也需要一些邊緣計算的加持。這樣能讓每個人都以比較低的價格享受到比較充足且隨手可得的算力。屆時,算力就像開關裏的電、水龍頭裏的水一樣,我要用它就來了,不需要家裏有一臺很強悍的電腦,或者說小區裏一定要有一個很強的邊緣計算中心,未必,只要網絡可以達到那種效果,可以隨時去訪問到它就好了。

這其實是需要分頭去研究各種不同級別的計算資源,也要做更好的部署。

清華大學計算機系長聘副教授翟季冬:

我從三個方面來談一下計算的普惠性。第一個方面是從個人層面,大家知道物聯網現在已經逐漸在我們生活中各個領域發揮非常重要的作用。比如說自動駕駛,其實現在很多車都有自己的計算設備,但自動駕駛並不是一輛車自己的事情,而是大家在路上協調的過程。所以如果能把不同的物聯網設備中的計算單元協同起來做一些調度和管理,對每個人來說都是非常有益的。

第二個方面是從公司層面,現在有很多雲公司,公有云或者是私有云的公司,把計算資源整合以後提供給很多用戶去分散使用。通過雲計算的方式可以讓更多的用戶去共享一些資源,也使很多公司節省了自己運維管理服務器的開銷,這也可以讓計算更加充分的發揮。

第三個方面是從政府層面,剛剛宋院長提到中國的高性能計算中心其實並不是很多。最近“新基建”提的比較多,政府可以出資建更多的高性能計算中心,通過高性能計算中心雲化,讓更多用戶或者普通公司都可以得到便宜的,或者說容易得到的計算資源,這樣可以做更多的應用。

英特爾架構、圖形和軟件集團副總裁兼中國區總經理謝曉清:

英特爾提到的實現普惠計算的途徑其中有一個說法叫超異構計算。前面講了很多的異構計算,超異構計算的話,英特爾是比較偏底層的,包括芯片級、系統級、軟件級(oneAPI層面)。我的想法是第四個層面,就是怎麼樣從雲邊端三邊來協同,這三個層面其實都是不同的異構架構。所以從微觀一直到宏觀,我們都會有不同的計算能力組合出來的強大的計算網絡。

雲邊端這樣的一個協同模式從軟件層面也提出了更高的要求,計算裏的編排方面,如何在正確的時候找到正確的計算資源,然後把數據以最快速、方便、安全的方式實施處理,這方面有很多人在做研究。另一方面,一個很大的挑戰是落地,因爲從中國目前的情況來看,政府驅動的角度下,非常強的執行能力是我們的優勢,有一些可能在其他國家落地不太容易的用戶場景,在中國反而可以很快落地。比如說自動駕駛,很有可能在中國會首先大規模商業化。因爲雲邊端協同,包括車和路這方面的協同,都會使得計算能力能夠最大程度的發揮出來。

另一方面,在英特爾oneAPI部分,希望能夠在業界產生共鳴。現在中國也有很多AI芯片公司在做自己的異構計算芯片。從異構計算這個角度來看,我們可能希望說,在他們起步階段,提供給他們系統軟件層面的支持,使得國家在芯片行業的發展、投資不至於有太多重複。我們最近在業界希望能夠和大家合作,能夠有一些思維風暴,看看哪些部分我們可以利用開源的資源,利用工業標準的資源,這樣的話,計算力本身只需要開發一次就能普惠到更多行業當中的合作伙伴,可以更好的重建生態,這部分的生態不僅僅是針對應用程序開發商的生態,也包括系統軟件方面的生態。

科院計算所研究員崔慧敏:

剛剛謝老師提到的端邊雲三邊協同,我由此想到,也可以利用一個現在雲計算提出的紅利,就是微服務。亞馬遜提供微服務之後,用戶就可以把應用程序構建成一個個獨立的組件,每個應用程序作爲一個服務來運行,這樣就讓用戶雲端服務部署變得非常便捷。如果說我們再考慮到將來通信成本可以變得很低,微服務的紅利就可以不只是在雲這邊享受到,在端和邊都可以享受到,這樣就可以真正擴散到生活的各個角落了。邊側和端側的應用程序開發和部署都可以享受到微服務在雲這邊所帶來的紅利。我覺得這個可能會對未來計算普惠有非常大的影響。當然這裏有很多因素的影響,比如說政府的支持、5G的發展速度等等,都會讓這個東西變得非常有潛力,我覺得這是將來有可能大一統的超異構計算。

Q&A

在AI、5G、雲計算等技術快速迭代的今天,各位老師對學校正在學習軟件開發的學生有哪些建議?

南京大學軟件工程教授張賀:

首先不能盲目去追趕熱門的話題、熱門的技術。因爲我們就是處在大學當中,實際上很多學生並不是非常的熟悉AI領域具體的技術,但是他可能會根據市場熱度做一個判斷,我想首先是在主觀判斷上應該有一個認識的過程,不能盲目跟風。目前這樣一個時代,最大的重點應該是去培養你的學習能力,而不是說你學一堆熱門技術。

大學本科教育實際上最大的目標就是培養自學能力,也就是說不管你學的是什麼專業,一旦你習得了自學能力,你就可以根據外界的變化,根據知識不斷的迭代、更新,能夠更新自己的知識,這個能力應該是最重要的。在這個基礎之上,像我們軟件工程專業,還非常注重實踐的能力。比如在AI領域當中,並不是說我們拿來數據和模型,然後我們去調一些參數,能夠把這個指標刷得多好。至少對學生來說,這並沒有太大的意義,就是對他今後的工程實踐是沒有太大幫助的。反而像我們剛剛提到的話題,比如說軟硬件的協同問題,比如說如何解決性能問題,這些實際上應該是更具有實踐意義和落地價值。

總結一下我的觀點,一是不要跟風,能夠進行自我更新和知識迭代,如果你需要學就去學它,解決你當下的問題;二是能夠去培養、鍛鍊,找一切機會實踐你動手的能力。

清華大學計算機系長聘副教授翟季冬:

我在清華上課的時候,經常會鼓勵學生多去看一些新的科技動態,包括剛剛談到的AI、5G、量子計算、類腦計算等。大家知道清華大學的學生都非常努力,會把課本的東西學得非常好。我會鼓勵大家多去看一些新的科技洞察,鼓勵學生去思考到底這個技術本身會給我們帶來一些什麼樣的變化和挑戰。在5G、AI,或者說新的浪潮下,我會鼓勵學生多去思考這些新應用模式會給底層的系統軟件和硬件帶來哪些新的挑戰?下一步的趨勢和挑戰在哪裏?如何和你學到的知識,或者說你腦子裏已有的知識結合起來,創造更好的辦法,去解決當前或者是未來幾年的一些技術挑戰?這些是我們應該去思考的。

英特爾中國研究院院長宋繼強:

現在的學生們會比較辛苦,相比10年、20年前,現在的技術迭代非常快,而且各個領域之間技術的互相滲透也很多,所以對他們來講,確實是壓力比較大。很可能在本科階段學的東西,到了碩士甚至是博士還沒到的時候,就已經過時了。那麼怎麼辦呢?我覺得張老師和翟老師說的都是有道理的,既需要保證自己能夠知道現在業界發展技術的前沿,包括趨勢是怎麼走的;同時也要能夠靜得下心來,把自己的專長、技術能力做紮實,實踐的能力做好。那麼怎麼去應對現在這個既廣又快的技術發展變化呢?我其實是建議學有餘力的同學們,能夠多去找一些機會,參與到技術涉及面比較廣的大公司的實習活動中去。

比如說英特爾,涉及到技術的方方面面,從硬件到軟件,從通信到人工智能都做,很容易就能接觸到比較多的技術門類和了解這些技術之間有什麼關係,不太容易被很多媒體文章裏的宣傳所誤導,也不容易頭腦發熱地說一定要從我現在的學科跳到人工智能。大家還是要更早地把自己學習的東西跟業界的專家多做交流,這樣可以有更好的發展軌道。

中科院計算所研究員崔慧敏:

我們特別希望學生能做一個上下貫通的開發和研究,我們國科大的包雲崗老師也牽頭了很有名的“一生一芯”計劃,國科大的畢業生可以帶着自己的芯片畢業。他們會學習從計算機組成原理,到結構、操作系統等多門課程,今年我的編譯原理課也會加入其中。學生到大四的時候就可以做出自己的芯片、操作系統、編譯器,也許有一些他們喜歡的人工智能算法也能真的跑在他們自己做的芯片上,這是很有意思的事情,這對學生系統能力的訓練確實是特別有用的。

直播視頻回放地址:https://live.infoq.cn/room/467

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章