教AI開發軟件:IBM開源數據集Project CodeNet,含有1400萬個代碼示例
藍色巨人希望為基于AI的編程工具創建含有豐富訓練資源的ImageNet。
IBM已組建了一個龐大的源代碼庫,用于教機器學習程序學習編程。
這個數據集名為Project CodeNet,含有1400萬個代碼示例,共5億行代碼,涉及的編程語言超過55種:從Java、C和Go到COBOL、Pascal和FORTRAN,不一而足。老實講,其中四分之三以上的代碼是用C ++和Python編寫的。
這些源代碼不是從生產級應用程序或開發中的應用程序獲取的,而是從參賽者向在日本組辦的兩大編程競賽:Aizu和AtCoder提交的軟件作品收集而來的。在這些競賽中,參賽者需要編寫必要的代碼,以便將一組特定的輸入轉換成一組所需的輸出。大約一半的代碼示例按預期的那樣運行,其余被標記為是錯誤的解決方案、非構建(non-building)或有缺陷。
比如說,理想情況下,您將訓練一個AI工具,可以識別出好的程序、拒絕壞的程序。700萬個代碼示例包括了輸入和所需的輸出。
IBM希望CodeNet仿效ImageNet(用于訓練計算機視覺應用程序的圖片和標簽數據庫),并成為教軟件明白軟件開發藍圖的領先數據集——即代碼實際上外觀如何、與其他代碼相比如何。IBM希望CodeNet可以用于訓練諸如此類的開發工具:可以搜索應用程序和庫來源以查找所需的例程,可以將一種語言轉換成另一種語言,或者識別錯誤或正確的實現機制。
IBM在本周召開Think線上大會時宣布了該項目,稱:“IBM相信CodeNet項目將充當頗有價值的基準數據集,用于源碼到源碼的轉換,并將遺留代碼庫轉換成現代代碼語言,從而幫助公司企業加快AI的應用。”
IBM和MIT-IBM Watson AI實驗室團隊聯合開發了該數據集,撰寫了一篇論文介紹相關工作,并將所有整理后的材料放在了該項目在GitHub的頁面(https://github.com/IBM/Project_CodeNet)上。
“該數據集不僅在規模上很獨特,在它有助于基準測試的編程任務的多樣性上也很獨特:從代碼相似性和分類以獲得代碼推薦算法方面的進步,到一大批編程語言之間的代碼轉換,再到代碼性能改進技術方面的進步,”研究人員在報告中這樣總結道。