機器編程與機器學習有很大的不同,機器編程是教系統自己編程。雖然還處于早期階段,但這種新穎的自我監控系統有望成為一種強大的生產力工具,并幫助軟件開發人員完成耗時費力的DEBUG工作
軟件進步靠研發,研發進展靠程序員,程序員寫代碼靠996。
軟件產品是核心競爭力,如果不能領跑同行,就會被時代的浪潮拍死在沙灘上。頭部公司每年都要在研發上砸下巨資,對于大公司需要靠研發投入保持競爭力;對于小公司來說,軟件產品就是事關生存的“最后一根稻草”。隨著異構時代的到來,海量數據由多樣化的專用處理器組合管理,系統功能日趨繁復,管理這些系統所需的軟件就越來越復雜,bug出現的可能性也越來越高。開發人員要花費越來越多的時間來修復bug,而不是編寫代碼。
寫代碼、改bug成了程序員996的工作核心;而軟件開發周期未知而漫長,怕是996都無法解決。一覺睡起來,原本1%的代碼就自動寫到了99%,bug自動修復,你敢想嗎?——Hi,這不再是夢了。
構建系統,然后由系統自行構建自己的軟件系統,這種被稱為“機器編程”的領域應運而生。英特爾首席科學家、英特爾研究院機器編程研究主任及創始人Justin Gottschlich表示,機器編程與機器學習有很大的不同,機器編程是教系統自己編程。雖然還處于早期階段,但這種新穎的自我監控系統有望成為一種強大的生產力工具,并幫助軟件開發人員完成耗時費力的Debug工作。
檢測bug,軟件自己搞定
“機器編程”一詞在英特爾研究院和麻省理工學院聯合發布的《機器編程的三大支柱》論文中首次提出,通過機器學習和其他方法,機器編程可以設計實現自動編寫軟件的軟件。這將使程序員們有更大自由度和更多的精力去創造新的軟件。對于英特爾研究院機器編程研究,自動生成軟件領域是機器編程的核心重點。這個研究領域,英特爾研究院機器編程研究稱之為“機器編程”。
它的核心原則是,人類向機器表達他(她)的意圖,機器會自動創建完成該意圖所需的所有軟件。英特爾研究院機器編程研究對于某些工作負載進行專業化處理,計算資源變得越來越異構化,所以這需要專家級的程序員,他們非常了解硬件以及如何最大限度地利用硬件。但與此同時,軟件開發人員越來越青睞于使用更抽象的語言,以提高工作效率。這反過來會導致硬件難以發揮出它本身的性能。
不久前,英特爾科學家與麻省理工學院(MIT),以及佐治亞理工學院(Georgia Tech)的研究人員共同推出了一種新的機器編程(MP)系統——機器推斷代碼相似性(MISIM)全新機器編程系統。是一款檢測軟件意圖的自動化引擎,通過識別代碼結構、分析與其它功能相似代碼的句法差異實現。正如Justin所闡述的,“這是實現機器編程偉大愿景的重要一步。”同時Justin表示:“如果機器能做到自動檢查和修復bug,我想大多數開發人員一定非常愿意讓它來承擔這項工作,至少我會。”
抱著實現機器編程的美好愿景,英特爾研究院機器編程研究在12月進一步推出了機器編程研究系統ControlFlag,除了自動編程,它還可以自動檢測代碼中的錯誤。在初步測試中,ControlFlag使用超過10億個未標記的產品級代碼來訓練和學習新的缺陷。英特爾研究院機器編程研究認為ControlFlag是一個強大的新工具,可以大大減少評估和調試代碼所需的時間和成本。
首先,ControlFlag是完全自我監督的機器編程系統,不需要人類對其進行訓練及指導。ControlFlag的無監督模式識別方法使它可以在本質上學習適應開發者的風格。在要評估的控制工具的有限輸入信息中,ControlFlag可以識別編程語言中的各種樣式,不受代碼使用的編程語言限制。
第二,ControlFlag檢測bug的功能集成了機器學習、形式化方法、編程語言、編譯器和計算機系統。據悉,ControlFlag通過一個稱為異常檢測的功能來進行bug檢測,通過學習經驗證的例子來檢測正常的編程模式,并找出代碼中可能導致bug的異常。該工具將學會識別和標記這些風格選擇,并根據其見解進行自動的錯誤識別和建議解決方案,以便ControlFlag能夠盡可能地避免將兩個開發團隊之間的風格差異視為代碼錯誤。
自動檢測bug的系統好不好用?英特爾已經開始評估內部使用ControlFlag來發現自己的軟件和固件產品化中的錯誤。這是英特爾開發人員快速分析項目的一個關鍵組成部分,該項目旨在通過提供專家支持來幫助程序員加快速度。
機器編程更偏向隨機
英特爾機器編程研究系統ControlFlag從超過十億行的代碼中學習,英特爾研究院機器編程研究表示,這在機器編程系統中尚屬首次。另外,對于跨架構硬件來說,能夠正確、高效、安全地編寫代碼的程序員稀少,從而導致代碼中存在難以發現的新錯誤。而ControlFlag檢測現有軟件中的違規或異常情況,使可能已經在生產質量系統中存在了20多年的隱疾得以發現。過去可能有數百名開發人員查看過這些代碼,但都沒有意識到任何問題,現在ControlFlag可以實現人力不能達到的效果。
英特爾研究院機器編程研究融合了兩種方法,來推動大量的機器編程研究,一種是形式化方法,一種是隨機方法(stochastic approaches)。英特爾研究院機器編程研究分析目前業界在機器編程領域方面的工作發現,機器編程更偏向隨機方法,并得到了很大的重視,例如深度神經網絡和貝葉斯網絡(Bayesian networks)等等。事實上,英特爾研究院機器編程研究表示,他們的某些合作伙伴或競爭對手正在做神經網絡編程,使用神經網絡來替換大量代碼。這樣做有好處,但是當遇到諸如可解釋性或debug問題時,這樣做也有風險。
在正確的應用場景,機器編程對開發效率的提升驚人。Justin表示,在某個案例中,用傳統的軟件技術,開發完成大約需要三年時間,有了先進的機器編程技術,只需要花一天的時間,就能開發完成同樣質量的軟件。“很多例子表明,不管是與我們的合作伙伴項目,還是我們自己內部的開發項目,機器編程都將生產率提高了一千倍以上。”
降低行業準入門檻,從業者創造性會更強
機器編程發展是否會讓英特爾的程序員失業呢?Justin表示:不會。相反,機器編程實際上會創造數千萬到數億個就業機會。他進一步解釋到:首先,當今存在的大多數機器編程系統都需要大量的數據,這些數據通常是以代碼的形式存在,而代碼是由專業程序員編寫。
因此,隨著自動化的發展,英特爾研究院機器編程研究對高技能程序員的需求增加,以推進系統的進步升級。最重要的是,如果英特爾研究院機器編程研究的意圖系統成功,即允許用戶向機器表達他或她的意圖的系統,這將降低行業準入門檻。
機器編程會為全新類型的程序員創造大平臺,從業者創造性會更強,而機器和系統會把這些想法綜合起來做出軟件。如今,通過ControlFlag和類似的系統,程序員可以顯著減少調試時間,并將更多的時間花在人類程序員最擅長的工作——向機器呈現創造性的新思想。完全實現的ControlFlag可以通過自動化繁瑣的軟件開發工作(如測試、監控和調試)來幫助緩解上述挑戰,同時可以解決當前軟件開發中耗時費力代價昂貴的bug修復問題。
圖:在全球78億人中,只有2700萬人會編寫代碼,占比不到 1%。英特爾希望借助機器編程技術,使所有人獲得編程能力。
英特爾推進機器編程的最終目標是讓每個人都能創建軟件。當這一目標完全實現時,每個人都可以通過自己最擅長的方式,如代碼、自然語言或其他方式向機器表達自己的設計意圖,從而創建軟件。這是一個大膽的目標,需要英特爾及合作伙伴付出許多努力。
做理性自由的破題者
算法與算力的進步,以及可用代碼庫的極大豐富,讓機器編程擁有適宜的孕育環境;隨著近年計算技術的迅猛發展,機器編程迎來重要拐點。英特爾一直以來的作風便是積極打破傳統,開拓新的研究或工程領域,這些領域在英特爾研究院機器編程研究突破界限之前還無人涉及。此次異構系統領域亦是一片“處女地”,英特爾的創新驅動力來自于對這一未來技術趨勢的預測。
如前所述,異構系統非常復雜,能夠切實掌握異構系統編程技術的工程師少之又少,英特爾研究院機器編程研究正在開發某種機制,讓程序員或非程序員不僅能夠輕松訪問異構硬件,還能充分使用其他系統可用資源,以大幅降低異構編程難度。這也是英特爾機器編程的基本驅動力之一。
為推動機器編程的開源合作,英特爾、發布了開源技術和出版物,推動機器編程的進一步發展以及與合伙伙伴的合作。英特爾還創立了叫做“機器編程研討會”,也稱MAPS,參會人數已經從四年前的20人增加到了2019年底的近400人。Justin透露,2021年還將建立一個新的機器編程中心,英特爾將會與業界建立更廣泛的合作。
最后,引用Justin的一段話:對于顛覆性的技術,需要“理性的自由”。一切構想需要花時間埋頭深入挖掘,把事情做好。否則,如果做事急躁,可能會在設計和方法上做出妥協。雖然可能獲得短期收益,但系統的長期生命力可能會下降。
責任編輯:xj
-
編程
+關注
關注
88文章
3686瀏覽量
94947 -
機器學習
+關注
關注
66文章
8496瀏覽量
134204 -
BUG
+關注
關注
0文章
156瀏覽量
15975
發布評論請先 登錄
羅克韋爾自動化MES系統助力企業提高生產力(下)
東風嵐圖汽車入選央視2024新質生產力年度案例
易控智駕持續助力礦山新質生產力發展
頭部企業共話機器人產業新質生產力
AI編程在工業自動化設備上應用趨勢
英特爾新質生產力技術生態大會上精彩回顧
58大新質生產力產業鏈圖譜

解碼“新質生產力”,一站式AI工具成工業智能化升級關鍵

評論