英特爾近日開源了機器編程工具 ControlFlag,這是一種使用機器學習來檢測計算機代碼問題的工具。理想情況下,ControlFlag 的應用可以減少調試應用程序和軟件所需的時間。
在測試中,英特爾的機器編程研究團隊表示,ControlFlag 在專有的“生產質量(production-quality)”軟件中發現了數百個缺陷,證明了它的實用性。
機器編程工具 ControlFlag 可通過 https://github.com/IntelLabs/control-flag 下載。
一、意圖、發明、適應,英特爾機器編程三大支柱
英特爾機器編程研究團隊(MPR)的歷史可以追溯到 2017 年。從那時起,英特爾就已經開始著手,構建新穎的機器編程(MP)系統,如 ControlFlag,這些系統有助于改進代碼調試或自動提取性能。
英特爾實驗室的首席人工智能科學家兼機器編程研究總監和創始人 Justin Gottschlich 表示,研究小組的第一個目標是將開發軟件所需的總時間減少 1,000 倍。例如,今天可能需要三年才能完成的事情,在未來一天內就可以用機器編程系統完成。除了提高軟件開發生產力之外,第二個目標是確保機器編程系統在合成新軟件時保持特定的質量特征,如準確率、性能、安全性和可維護性等特征。
目前,幾乎所有大型軟件在準確性、性能或安全方面都存在漏洞。一些留存時間久,無法被專家程序員檢測到的錯誤可以通過機器編程自動檢測,并實現零人工干預。此外,隨著軟件在不斷增加新功能,軟件更新會使得引入錯誤的可能性增加并出現問題。
值得注意的是,某些錯誤會存在潛在的安全漏洞,造成損失數百萬美元的災難性后果。
“機器編程的三大支柱”是英特爾機器編程研究的關鍵:
第一個支柱是意圖,旨在發現編程的意圖,從軟件中提升意義,確定人類向機器表達想法的新方式。
第二個支柱是發明,創建新的算法和數據結構來實現意圖,涉及創建或改進算法核心硬件和軟件構建塊,使用各種機器編程技術實現一些已知的意圖。
第三個支柱是適應,在不斷變化的硬件、軟件世界中發展軟件,自主地演變軟件特定生態系統,協助計算后端進展。自適應系統主要用于幫助識別和改進軟件質量特性,例如性能、安全性和可維護性。
從三大支柱的角度來看,ControlFlag 集中落在了適應支柱,它試圖找到軟件編碼異常。雖然 ControlFlag 還不能自動減輕它發現的缺陷,但它會為用戶提供潛在更正的建議。
二、從英特爾自用到開源,測試近一年
正式開源前,ControlFlag 已在生產級軟件和廣泛使用的開源軟件系統上進行了測試。
例如去年,ControlFlag 發現了客戶端 URL(Client URL,cURL)中的代碼異常。客戶端 URL 是一個計算機軟件項目,每天使用各種網絡協議傳輸數據超過 10 億次。在向客戶端 URL 團隊報告異常后,他們認可了 ControlFlag 的發現并隨后修補了代碼。
ControlFlag 于 2020 年 12 月首次推出,但在開源之前僅在英特爾內部使用。
Gottschlich 在 LinkedIn 上的一篇博文中提到:“最近,ControlFlag 通過在專有生產級軟件中識別數百個與內存和潛在系統崩潰錯誤相關的缺陷,取得了最先進的進展。此外,ControlFlag 在幾個高質量的開源軟件存儲庫中也發現了數十個新的異常。”
ControlFlag 可與任何包含控制結構的編程語言一起使用,并利用無監督學習來減少調試工作,從未標記的源代碼中學習。隨著新數據的引入,它會不斷發展以使其實現自我發展。ControlFlag 將自學對數據進行分類,從其固有結構中學習處理未標記的數據。
ControlFlag 不斷從未標記的源代碼中學習,隨著新數據的引入,不斷“進化”使自己變得更好。雖然 ControlFlag 還不能自動減輕它發現的編程缺陷,但該工具為開發人員提供了潛在的更正建議,Gottschlich 表示。
三、減少代碼調試時間,培育開源生態
這些驚人的結果顯示了 ControlFlag 能夠顯著提高軟件開發的成本和效率。此外,對高質量代碼的需求增多,吸引了越來越多的有抱負的程序員加入這個行業。
最近的一項研究發現,2020 年 IT 行業在與調試代碼相關的軟件開發成本上花費了約 2 萬億美元,其中約 50% 的 IT 預算用于調試代碼。
“英特爾致力于使軟件更加完善,維護起來更輕松,同時保持卓越的性能,而不會引入安全漏洞。我們希望像 ControlFlag 這樣的項目可以大大減少在全球范圍內開發軟件所需的時間。”Gottschlich 表示,“在調試上花費的大量時間被節省,從而使我們能夠加速技術進步。”
ControlFlag 等 AI 驅動的編碼工具以及代碼補全工具 Tabnine、代碼測試工具 Ponicode、代碼安全審核工具 Snyk 和代碼審查軟件 DeepCode 等平臺會減少開發人員之間代價高昂的交互,例如問答環節和重復的代碼審查反饋。國際商業機器公司(IBM)和人工智能公司 OpenAI 致力于研究機器學習在軟件開發領域的應用,是潛力十足的眾多公司之二。但研究顯示,實現零人工干預有很長的路要走,才可以代替許多需要程序員定期執行的任務。
結論:ControlFlag 開源,工具認可度等待“檢驗”
ControlFlag 測試過程中發現的錯誤被開發人員認可,展示了機器編程工具在軟件開發領域的廣闊前景。
英特爾機器編程研究團隊專注于提高軟件質量和開發人員生產力。開源 ControlFlag 后,將進一步致力于實現零人工干預。針對提高軟件開發領域的成本、效率問題,眾多代碼測試、補全、審核工具上線,多個頭部玩家在機器編程研究領域共同努力,將進一步提高軟件開發領域的準確率、安全性。