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