7.5億美元做代碼轉換?一個Facebook TransCoder AI就夠了!

2021-01-10 TechWeb

 

代碼的遷移和語言轉換是一件很困難且昂貴的事情,澳大利亞聯邦銀行就曾花費5年時間,耗費7.5億美元將其平臺從COBOL轉換為Java。而Facebook最近宣稱,他們開發的一種神經轉換編譯器(neural transcompiler),可以將一種高級程式語言(如C ++,Java和Python)轉換為另一種,效率飛起!

從 COBOL 到 Java,TransCoder能幫你省下7.5億美元

不同的程式語言之間也可以自動轉換了!

要知道,將現有的代碼庫遷移到現代或者更有效的語言,如 Java 或 c + + ,需要精通源語言和目標語言,而且無論是金錢還是時間耗費都十分高昂。

澳洲聯邦銀行在過去五年中花費了大約7.5億美元將其平臺從 COBOL 轉換為 Java。

 

但是,Facebook最近開發的神經轉換編譯器TransCoder讓代碼轉換出現了新的轉機。該系統可以將代碼從一個高級語言轉換成另一個,比如 c + + 、 Java 和 Python。

這個系統是弱監督的,可以在沒有標籤的數據集中尋找以前未檢測到的模式,只需要少量的人工監督。研究人員稱,這比基於規則數據集的模型要高效得多。

理論上,代碼轉換編譯器能夠提供很多的幫助,讓開發者無需從頭重新寫代碼。但實踐中,代碼轉換是一件很困難的事情,因為不同語言依賴於不同的語法準則,不同的平臺api、標準庫函數和可變類型。

因此,TransCoder的面世,無疑是企業的福音。因為他們不必像澳洲聯邦銀行那樣,再去耗費大量的時間和金錢去做代碼轉換的複雜工作,只需要選擇Facebook,選擇TransCoder,平臺遷移即可迎刃而解。

從Java到C++,TransCoder轉換準確率超九成!

TransCoder是基於跨語言模型預訓練去做的模型初始化,這樣的訓練不著眼於程式語言的類型,而僅僅將表示相同指令的代碼段映射為相同的表示形式。

之所以TransCoder能進行跨語言模型的訓練,是因為系統的標記原理著眼於跨語言之間的共同關鍵字,如「if」,「for」等,以及數字、數學運算符和出現在原始碼中的英語字符串。這樣反向翻譯之後通過源-目標模型和並行訓練的目標-源模型耦合,從而提高了訓練的質量。

研究人員為了評估TransCoder的性能,從GeeksforGeeks中提取了852個C ++,Java和Python並行函數,利用這些不同語言的轉換來測試函數語義是否精準,測試的結果如下:

GeeksforGeeks是一個在線平臺,用於收集編寫代碼時的問題,並提供多種程式語言的解決方案。

研究人員稱,TransCoder在實驗過程中展示了對每種語言特有語法的理解能力,並且能夠適應小範圍的修改。儘管這個模型並不完美,但是性能優於已有的利用專家知識手動構建的框架。

從自然語言翻譯到代碼翻譯,seq2seq再立新功

TransCoder使用了經典的序列到序列(seq2seq)模型,該模型由基於Transformer的編碼器和解碼器組成,seq2seq模型的好處在於,你只需要有對應的輸入輸出即可,而不需要關心是哪兩種程式語言。

TransCoder仿照Lample等人中確定的無監督機器翻譯流程進行訓練,包括初始化,語言建模和反向翻譯。

實驗表明以跨語言方式對整個模型(不僅是單詞表示形式)進行預訓練顯著改善了無監督機器翻譯的效果,TransCoder遵循Lample和Conneau 的預訓練策略,其中跨語言模型(XLM)在單語言的原始碼數據集上,使用遮罩語言建模進行了預訓練。

TransCoder的轉換原理

其中,跨語言本質來源於多種語言中的大量通用標記(錨點)。在英語-法語翻譯的上下文中,錨點主要由數字、城市、人名等組成,而在程式語言中,這些定位點來自常見的關鍵字(for,while,if,try等),以及原始碼中出現的數字,運算符和英語字符串等。

seq2seq模型的編碼器和解碼器由預訓練的XLM模型參數進行初始化。對於編碼器而言,初始化非常簡單,因為它與XLM模型具有相同的體系結構。但是解碼器具有與attention機制有關的額外參數,所以這部分採用了隨機初始化。

XLM預訓練允許seq2seq模型生成輸入序列的高質量表示。然而,解碼器缺乏翻譯能力,因為從未訓練過解碼器基於源表示對序列進行解碼。為了解決這個問題,TransCoder利用降噪自編碼(DAE)對序列進行編碼和解碼,再對模型進行訓練。

在測試時,模型可以對Python序列進行編碼,並使用C ++起始符號對其進行解碼以生成C ++轉換。C ++轉換的質量取決於模型的「跨語言」性能:如果Python和C ++轉換被編碼器映射到相同的表示,則解碼器將成功生成對應的C ++代碼。

實際上,僅XLM預訓練和降噪自編碼就足以生成翻譯。但是,這些翻譯的質量往往很低,因為該模型從未對程式語言實現的功能進行訓練。TransCoder為了解決這個問題,使用了反向翻譯,這是在弱監督的情況下利用單語言數據的最有效方法。

在無監督的情況下,源到目標模型與後向的目標到源模型是並行訓練的。目標到源模型用於將目標序列翻譯成源語言,從而產生與真實目標序列相對應的嘈雜源序列。然後以弱監督的方式訓練源到目標模型,從前面生成的嘈雜源序列中重建目標序列,反之亦然,並行訓練兩個模型直到收斂。

作者簡介

該論文一作Marie-Anne Lachaux,目前是Facebook人工智慧研究院NLP方向研究員,巴黎高等電信學院計算機圖像學學士,倫敦國王學院計算機圖像學碩士,曾在達索系統(Dassault Systèmes)擔任研究員。主要研究方向為計算機視覺和圖像識別,計算機神經網絡。

在達索擔任研究員期間,Marie-Anne Lachaux主要方向為拓撲優化研究。拓撲優化是設計機械零件的一種新方法,其目的是在保持機械性能的同時大量減少零件的質量。拓撲優化的實現方法是基於Visual Studio,c++和許多經典庫,這為Marie-Anne Lachaux在Facebook開展NLP研究奠定了基礎。

此前,已經有很多基於深度學習的代碼自動補全,效果也十分驚豔,而基於規則的代碼轉換也有不少項目,但大多數泛化能力不強,畢竟能寫的規則有限。

TransCoder基於深度學習進行代碼轉換,無視了這些規則,直接端到端,對相關工作還是有很大的啟發,如果TransCoder準確率持續提升,那算法模型工程化的工作量將大幅縮減,程式設計師的編碼效率也將有質的飛躍。

 

相關焦點

  • Facebook "TransCoder AI"可在 Java、Python 和 C++ 之間轉換代碼
    譬如,澳大利亞聯邦銀行在 5 年的時間裡花費了大約 7.5 億澳元,將其平臺從 COBOL 轉換為 Java。而從理論上講,轉編譯器可以則幫助消除從頭重寫代碼所需的費用。但是,由於源語言和目標語言都具有不同的語法、變量類型、標準庫函數和平臺API,因此這個在實踐中其實很難構建。據介紹,Facebook 的 TransCoder AI 則採用了一種無監督的學習方法來應對這些挑戰。
  • Facebook AI 用深度學習實現程式語言轉換,代碼庫遷移不再困難!
    【新智元導讀】從舊式程式語言(例如COBOL)到現代替代語言(例如Java或C ++)的代碼庫遷移是一項艱巨的任務,Facebook AI開發了Transcoder,這是一個完全自監督的神經轉編譯器系統,可以使代碼遷移變得更加輕鬆和高效。
  • Facebook簡史:十億美元並不酷。什麼會很酷?十億的用戶!
    早在2005年3月,維亞康姆公司就提出以7 500萬美元的價格收購該網站,他們認為鑑於其年輕的用戶結構,Thefacebook(而不是Myspace)可能成為面向網絡一代的音樂電視。作為被維亞康姆收購或與其合作的替代方案,肖恩·帕克幫助Thefacebook獲得了風險投資機構Accel資本1 270萬美元的投資,公司估值約為1億美元。
  • Facebook挑戰賽:利用AI檢測惡意圖文,還有很長的路要走
    作者發表博文《Hateful Memes Challenge and Data Set》(https://ai.facebook.com/hatefulmemes)概述了這項研究。另外幾個Facebook研究人員發表的另一篇博文《AI advances to better detect hate speech》(https://ai.facebook.com/blog/ai-advances-to-better-detect-hate-speech)廣泛地探討了AI檢測仇恨言論的話題。
  • Facebook開源多款AI工具,支持遊戲、翻譯
    Tensor ComprehensionsTensor Comprehensions 通過自動生成高級的數學運算代碼來加速開發過程GitHub地址:https://facebook.ai/developers/tools/densepose
  • 2020最佳AI論文,都在這裡了
    簡單來說,僅對簡單的遊戲錄像和玩家輸入進行學習,GameGAN 就能夠模擬出接近真實遊戲的環境,還不需要遊戲引擎和底層代碼。它的底層是在 AI 領域很有名的生成對抗網絡 (GAN)。正是因為它的學習方式很簡單,任何遊戲它都能模擬出來,除了吃豆人這樣的2D遊戲,連 DOOM 這種3D遊戲都可以。英偉達指出,這項技術有助於遊戲開發者為已有的遊戲開發全新的關卡。
  • Facebook全球崩潰11小時,暴露了科技巨頭們用AI為你打的標籤
    不過人們在這場混亂中發現了一個有趣的現象:伺服器訪問的崩潰暴露了 Facebook 對用戶上傳所有圖片的隱藏標籤。今天,科技公司用 AI 對你上傳的圖片做各種標註是常規操作。facebook 把這位用戶的頭像描述為「一個有鬍子的人」。與此同時,Instagram 上也出現了同樣的圖片標籤。這些標籤不僅詳細列舉了一般場景和目標描述,還根據 Facebook 的人臉識別顯示出了照片中的人是誰。
  • 重啟路測+7.5 億美元追加投資,復工後的 Waymo 雙喜臨門
    除此之外,逐步復工的 Waymo 還迎來了雙喜臨門,又有外部投資者對它們追加7.5億美元投資了,累計融資30億。7.5 億美元新資金落袋與許多因為新冠疫情陷入危機的自動駕駛初創公司不同,Waymo 依然是投資者眼中的優良資產。
  • C3.ai上市即暴漲,矽谷傳奇Tom Siebel續寫創業神話
    話雖這麼說,它的交易代碼卻是相當霸氣:$AIC3.ai 總部位於南灣紅木城,定義是一家提供企業 AI 服務的 SaaS 性質公司,主營業務是提供低代碼甚至零代碼的工具、應用和 AI 能力,幫助各垂直領域的客戶公司將 AI 整合到其運營當中,更好地實現數字轉型。
  • 出海日報 | 支付寶全球用戶數超12億;騰訊投資PolicyBazaar1.5億美元
    印度 傳騰訊投資1.5億美元,約獲 PolicyBazaar 10%股權。據36氪援引智通財經網報導,知情人士透露,騰訊已對印度金融科技初創公司 PolicyBazaar 的母公司 Etechaces Marketing and Consulting 投資了1.3-1.5億美元的資金。
  • 學界| Facebook新論文介紹相似性搜索新突破:在GPU上實現十億規模
    該團隊已經將相關實現的代碼進行了開源。機器之心在此對該研究論文及其代碼項目進行了簡單介紹。我們的實現可以在 35 分鐘內從 Yfcc100M 數據集的 9500 萬張圖像上構建一個高準確度的 k-NN 圖(graph),也可以在 12 個小時內在 4 個 Maxwell Titan X GPU 上構建一個連接了 10 億個向量的圖。我們已經開源了我們的方法,以便人們進行比較和重複利用。
  • 又有Uber 股東倒戈,參與 Lyft 5 億美元新融資
    如今,最新情況是,據外媒報導,Lyft 最近一輪融資的募資額從 10 億美元增加至 15 億美元,Uber 股東富達投資集團以及安大略教師退休基金參與到最新一輪融資中,另外還包括現有投資者 AllianceBernstein、Baillie Gifford、KKR、Janus Henderson 和日本樂天集團(Rakuten)。Lyft 最新估值隨之來到 115 億美元。
  • 代碼託管平臺GitLab估值超過60億美元
    代碼託管平臺GitLab估值超過60億美元 站長之家(ChinaZ.com) 12月1日 消息:據知情人士透露,幫助開發人員分享和管理代碼的網站GitLab正在允許一些員工出售部分股權,該公司的估值超過60億美元。
  • 為增強AI晶片實力,英特爾又收購了一個7個人的初創公司Vertex.ai
    雷鋒網消息,為了進一步增強在人工智慧領域的競爭力,英特爾又收購了一家AI初創公司Vertex.ai,不過交易的金額並未透露,但英特爾確認了此項交易,整個團隊包括創始人都將加入英特爾的人工智慧產品事業部。
  • Facebook像素是什麼?facebook像素的安裝方法及功能
    最近隨著shopify+facebook跨境電商模式的熱度,Facebook像素(Facebook Pixel)功能也漸漸走進人們的視線,對於眾多做Facebook廣告投放的跨境電商朋友來說,Facebook 像素更是獲得各環節精準數據的重要法寶。
  • Facebook190億美元收購WhatsApp內幕
    今年2月,Facebook以過百萬美元大手筆收購WhatsApp。根據協議,WhatsApp將獲得40億美元現金,價值120億美元的Facebook股票(約佔Facebook股份總值的8.5%),另有30億美元為Facebook限制性股票。這項協議鞏固了扎克伯格科技界新生代「億萬富翁締造者」的地位。而庫姆將加入Facebook董事會,協議還讓他稅後收穫了68億美元。
  • AI每日精選:北京地鐵研究刷臉安檢;LG電子波士頓開設機器人實驗室
    截至目前為止,KeyMe 融資總額約 2 億美元。KeyMe 是一家提供配鎖服務的公司,成立於 2012 年,總部位於美國紐約。2.Joby Aviation 籌集 5.9 億美元,推出電動空中計程車服務電動空中計程車公司 Joby Aviation 已籌集了 5.9 億美元的 C 輪融資,其中包括來自主要投資者 Toyota Motor Corporation 的 3.94 億美元。
  • Facebook投給Jio的57億美元,將如何改變印度?
    印度媒體把用科技改造kirana趨勢概括為「商業4.0」——讓小商店的銷售數據聯網,去分析消費者偏好,基於數據去做更多精細化的營銷管理。想要撬動kirana,信實無疑是眾多玩家中手裡資源最好的一個。一方面,擁有3億用戶的Jio是一個巨大的流量池。
  • Spotify申請上市:估值190億美元,騰訊持股逾7%
    美國東部時間2月28日,瑞典音樂流媒體服務平臺Spotify向紐約證券交易所正式申請直接上市,並遞交招股書,首次披露公司的財務數據和運營情況,申請股票代碼為「SPOT」。而且,直接上市不聘請銀行或券商進行保薦,可節省數億美元的承銷費用。由於Spotify公司不發行任何新股,因此沒有提供具體的IPO價格。Spotify招股書中提及,2月,Spotify在私募市場的普通股股價在95美元至127.5美元之間浮動,截至2月底已發行約1.78億股。照此計算,公司估值介於168億美元和225億美元之間。
  • 如何寫最高端的代碼?Facebook教你怎樣用機器學習做代碼搜索工具
    但是當問題涉及專有代碼或 API(或者用不常用程式語言寫的代碼)時,工程師需要不同的解決方案,因為在常用論壇上可能找不到這方面的答案。為了解決這個需求,Facebook 開發了一個代碼搜索工具——神經代碼搜索(Neural Code Search,NCS),該工具使用自然語言處理(NLP)和信息檢索(IR)技術直接處理原始碼文本。