“如果 Facebook 沒有 AI,那它將失去根基。”去年@Scale軟件工程大會上,F(xiàn)acebook AML 實驗室負責(zé)人 Joaquin Candela 在演講中坦露。
Scale,顧名思義,即規(guī)模化設(shè)計 AI。由 Joaquin Candela 領(lǐng)導(dǎo)的 AML 實驗室主要負責(zé)的,就是將 AI 應(yīng)用在 Facebook 的各種產(chǎn)品上。值得一提的是,F(xiàn)acebook 另一支由 Yann LeCun 領(lǐng)導(dǎo)的 FAIR 實驗室,更專注于 AI 的基礎(chǔ)研究。兩支隊伍相輔相成,共同推動著 AI 在 Facebook的發(fā)展和應(yīng)用。如今,F(xiàn)acebook 利用 AI 再推新款代碼調(diào)試工具SapFix。
近日,在加州舊金山灣區(qū)的圣何塞舉辦的 Facebook @Scale 2018 大會上,F(xiàn)acebook 宣布了它的新款工具 SapFix,可針對特定的 bug 自動生成修復(fù)程序,然后將其提交給工程師,經(jīng)確認之后,然后再部署到生產(chǎn)環(huán)境中。相比其一年前已投入大規(guī)模使用的智能自動化軟件測試工具 Sapienz,SapFix 能夠在沒有 Sapienz 的情況下運行,主要用于修復(fù) Sapienz 在生產(chǎn)前發(fā)現(xiàn)的程序 bug。不過,目前SapFix 仍在開發(fā)階段。
▌SapFix 是如何 debug 的呢?
從發(fā)現(xiàn) bug 到修復(fù) bug,F(xiàn)acebook 有一套完整的流程:首先 Sapienz 以及 Facebook 的靜態(tài)分析工具 Infer,會幫助定位代碼中需要修補的點;一旦 Sapienz 和 Infer 精確定位與崩潰相關(guān)的特定代碼部分之后,就會將該信息傳遞給 SapFix;最后,SapFix 會參考幾種不同的策略,自動生成補丁。
SapFix如何為軟件bug生成補丁
為了解決高觸發(fā)錯誤,SapFix 會創(chuàng)建修補程序,該修補程序可以完全或部分恢復(fù)原來提交的代碼。對于更復(fù)雜的崩潰錯誤,SapFix 系統(tǒng)會通過根據(jù)模板修復(fù)集合中來生成補丁。這些模板是從人類工程師基于過去的修復(fù)庫創(chuàng)建的模板中自動獲取的。
當人類設(shè)計的模板不適合時,SapFix 將嘗試基于突變的修復(fù),從而對導(dǎo)致崩潰的語句的抽象語法樹(AST)執(zhí)行小的代碼修改,對補丁進行調(diào)整,直到找到潛在的解決方案。
▌自主驗證和人工審核
找到特定的補丁,并不意味著 SapFix 的工作已經(jīng)結(jié)束。SapFix 會針對每個 bug 生成多個可能的修復(fù)程序,然后通過下面三個問題來評估他們的質(zhì)量:
是否存在編譯錯誤?
崩潰是否依然存在?
修復(fù)程序是否引入新的崩潰?
為了解決以上后兩個問題,SapFix 會在修補后的版本上運行現(xiàn)有的開發(fā)人員編寫的以及 Sapienz 創(chuàng)建的測試程序。和前面的補丁生成步驟一樣,這個驗證過程是自主進行的,而且會與更大的代碼庫隔離開來。這個過程相當于人們目前所做的調(diào)試工作,但是它并不是為了自己將修復(fù)程序部署到生產(chǎn)代碼中。
當修補程序經(jīng)過全面測試之后,SapFix 會將它們發(fā)送給人類審查者進行審核。這非常類似于人工生成的報告由其他開發(fā)人員檢查和批準的方式,除了系統(tǒng)自動跟蹤審閱者的反饋外,它還會接受經(jīng)批準的補丁,然后清理其他補丁。在某些情況下,SapFix 可以從幾個選項中選擇最佳解決方案,并向工程師提出建議。
SapFix如何基于生成的補丁尋求工程師的反饋
雖然 SapFix 還不能自己部署自己提出的修復(fù)方案,但它幫助工程師節(jié)省了大量的時間和精力,且具備很大的技術(shù)潛力。
根據(jù) Facebook 的數(shù)據(jù),Sapienz 報告的大約四分之三的錯誤都需要開發(fā)者來修復(fù)。自 Facebook 今年 8 月開始測試 SapFix 之后,該工具已經(jīng)成功生成了被人類審核者接受并部署于生產(chǎn)的補丁。
▌寫在最后
據(jù) Facebook 的開發(fā)人員稱,“這標志著機器生成的修復(fù)程序(具有自動端到端測試和修復(fù))首次被部署到 Facebook 規(guī)模的代碼庫中。這是 AI 與人類工程師結(jié)合的一個重要里程碑。SapFix 的成功也表明基于搜索的軟件工程可以減少軟件開發(fā)中的阻礙。”
作為可以處理不同類型的錯誤和軟件的工具, SapFix 有可能改變代碼生成的速度和質(zhì)量。該款工具不僅適用于大規(guī)模運營的公司,也適用于需要編程的個人或小公司。無論是一起使用還是單獨使用, SapFix 和 Sapienz 都可以讓開發(fā)人員花更少的時間進行調(diào)試。
接下來,F(xiàn)acebook團隊將與工程社區(qū)分享 SapFix,因為這是自動化調(diào)試發(fā)展的下一步,有為廣泛的公司和研究組織提高新代碼的生產(chǎn)和穩(wěn)定性的巨大潛力。
此次@Scale 2018 大會上,除了公布 SapFix 外,F(xiàn)acebook 還宣布了與頂級芯片制造商的合作,包括Cadence、Esperanto、Intel、 Marvell、高通,它們承諾將在未來芯片產(chǎn)品的制造上提供支持 Facebook 機器學(xué)習(xí)編輯器 Glow 的解決方案。這反映出 Facebook 正訴諸于利用社區(qū)推進其圍繞自身機器學(xué)習(xí)軟件重新定位計算硬件生態(tài)系統(tǒng)的戰(zhàn)略,而這也有助于合作伙伴快速設(shè)計和優(yōu)化新款芯片產(chǎn)品在人工智能和機器學(xué)習(xí)上的能力。
-
Facebook
+關(guān)注
關(guān)注
3文章
1429瀏覽量
54788 -
人工智能
+關(guān)注
關(guān)注
1791文章
47350瀏覽量
238750 -
DEBUG
+關(guān)注
關(guān)注
3文章
94瀏覽量
19933
原文標題:@程序員,終于可以放心寫bug了!Facebook的debug神器你值得擁有
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論