0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是Deep TabNine?機(jī)器學(xué)習(xí)極大提高智能編碼能力

WpOh_rgznai100 ? 來源:lq ? 2019-07-27 07:04 ? 次閱讀

導(dǎo)讀:在過去的一年中,AI 生成書面文字的能力大大提高。通過掃描龐大的文本數(shù)據(jù)集,機(jī)器學(xué)習(xí)軟件可以生成從短篇小說到歌詞的各種令人信服的樣本?,F(xiàn)在,一個(gè)名為 Deep TabNine 的新程序,可以將相同的技術(shù)應(yīng)用于編碼世界。這個(gè)程序一經(jīng)F推出便好評(píng)如潮,大有搶了程序員飯碗的架勢(shì)。這個(gè)程序是否真有這么好用?我們來一探究竟。

什么是Deep TabNine?

據(jù)外媒 The Verge 報(bào)道,Deep TabNine 是由滑鐵盧大學(xué)的計(jì)算機(jī)科學(xué)本科生 Jacob Jackson 創(chuàng)建的編碼自動(dòng)完成器,程序員可以將它作為附件安裝在他們選擇的編輯器中,程序員寫代碼時(shí),這個(gè)程序會(huì)給出下一行代碼建議,每次提供一小段代碼。你可以將它理解為 Gmail 的智能撰寫功能用到了代碼上。

據(jù)悉,Jacob 于 2018 年 2 月開始研究該軟件的原始版本,在 11 月發(fā)布之前它叫做 TabNine。本月早些時(shí)候,他發(fā)布了一個(gè)更新版本,該版本使用由研究實(shí)驗(yàn)室 OpenAI 設(shè)計(jì)的深度學(xué)習(xí)文本生成算法模型 GPT-2 來改善能力。該模型使用 Transformer 架構(gòu),旨在解決自然語言處理中的問題,Deep TabNine 用這個(gè)架構(gòu)來理解代碼中的英語。例如,模型可以使用 if / else 語句來進(jìn)行否定。在訓(xùn)練時(shí),模型的目標(biāo)是根據(jù)前面給定的 token 來預(yù)測(cè)下一個(gè) token。

Deep TabNine 使用 GitHub 的近 200 萬個(gè)文件進(jìn)行了訓(xùn)練,它具有預(yù)先存在的知識(shí),而不是僅僅從用戶當(dāng)前的項(xiàng)目中學(xué)習(xí)。此外,這個(gè)模型還引用以自然語言編寫的文檔來推斷函數(shù)名稱、參數(shù)和返回類型。它還能利用傳統(tǒng)工具難以發(fā)現(xiàn)的小線索。例如,它可以理解 app.get_user() 的返回類型被假定為具有設(shè)置器方法的對(duì)象,且 app.get_users()的返回類型被假定為列表。

機(jī)器學(xué)習(xí)極大提高智能編碼能力

Jacob 表示,這種軟件雖然并不新鮮事物,但機(jī)器學(xué)習(xí)已經(jīng)大大地改善了它的功能?!斑@對(duì)我來說是解決了一個(gè)問題?!?/p>

Deep TabNine 的更新版本讓程序員們留下了深刻印象,他們?cè)?Twitter 上稱這個(gè)軟件“驚人”、“讓人瘋狂”和“絕對(duì)令人興奮”。

用戶 Franck Nijhof 是一位在閑暇時(shí)間從事開源家庭自動(dòng)化軟件工作的 IT 經(jīng)理,他對(duì) Deep TabNine 不僅感到驚訝 ,還覺得既興奮又害怕?!拔沂褂?Deep TabNine 的第一個(gè)小時(shí)內(nèi)沒有作用,因?yàn)槲也煌5乇凰@訝到,腦子里一直不停地問它到底是怎么知道的?怎么做到的?” Nijhof 通過電子郵件告訴 The Verge。

這樣的自動(dòng)完成工具之前就有過,但 Nijhof 表示 Deep TabNine 的建議更準(zhǔn)確?!拔疫^去曾嘗試過一些'通用'的智能編寫程序,但它們很煩人而且沒有幫助,”他說道,“TabNine 無疑是一個(gè)改變游戲規(guī)則的存在。”

特斯拉人工智能總監(jiān) Andrej Karpathy 也對(duì)這個(gè)程序贊不絕口:

深度學(xué)習(xí)自動(dòng)編碼 https://t.co/WenacHVj7z 非??幔『芫靡郧拔以谧?char-rnn(字符級(jí)循環(huán)神經(jīng)網(wǎng)絡(luò))時(shí)嘗試過相關(guān)的想法,但當(dāng)時(shí)它并不是很有用。隨著新工具(GPT-2)的出現(xiàn)和更多的關(guān)注,它將會(huì)發(fā)揮更大的作用。

- Andrej Karpathy(@karpathy),2019年7月18日

機(jī)器學(xué)習(xí)預(yù)測(cè)讓代碼建議更優(yōu),支持22種語言

Jackson 表示,該軟件之所以可以提供更好的建議,是因?yàn)樗梢赃M(jìn)行預(yù)測(cè)。大多數(shù)自動(dòng)填充程序必須解析用戶已編寫的內(nèi)容來提出建議,就像人使用數(shù)學(xué)公式中的步驟一樣理順代碼。相比之下,Deep TabNine 依賴于機(jī)器學(xué)習(xí)的能力來查找數(shù)據(jù)中的統(tǒng)計(jì)模式以進(jìn)行預(yù)測(cè)。

與文本生成算法在大量書籍、文章和電影腳本數(shù)據(jù)集上進(jìn)行訓(xùn)練的方式相同,Deep TabNine 對(duì)來自編碼庫 GitHub 的 200 萬個(gè)文件進(jìn)行了訓(xùn)練。它在這些數(shù)據(jù)中找到模式,并用其在任意給定代碼行中可能出現(xiàn)的內(nèi)容給出建議,無論是變量名還是函數(shù)。

Jackson 說,使用深度學(xué)習(xí)創(chuàng)建自動(dòng)編碼軟件有幾個(gè)優(yōu)點(diǎn)。首先,它可以輕松添加對(duì)新語言的支持。只需要將更多的訓(xùn)練數(shù)據(jù)放入 Deep TabNine 中,它就會(huì)挖出模式。這意味著,Deep TabNine 支持大約 22 種不同的編碼語言,而大多數(shù)同類型產(chǎn)品只支持一種。

Deep TabNine 支持的編碼語言完整列表如下:

Python,JavaScript,Java,C ++,C,PHP,Go,C#,Ruby,Objective-C,Rust,Swift,TypeScript,Haskell,OCaml,Scala,Kotlin,Perl ,SQL,HTML,CSS,Bash

最重要的是,由于深度學(xué)習(xí)的分析能力,Deep TabNine 提出的建議整體上具有很高的質(zhì)量。而且,因?yàn)檐浖粫?huì)查看用戶自己寫的代碼來提出建議,所以它可以從編碼的那一刻開始就起作用,而不用等著從用戶編寫的代碼中尋找蛛絲馬跡。

TABNINE并不完美:不擅長(zhǎng)創(chuàng)造性代碼

當(dāng)然,這個(gè)軟件也并非完美。它在提出建議時(shí)會(huì)出錯(cuò),另外,它也不是對(duì)所有類型的編碼都有用。Hacker News 和 r / program subreddit 的用戶已經(jīng)找到了它的各種優(yōu)點(diǎn)和編程漏洞(但大多數(shù)傾向于正面評(píng)論)。

用戶1:免費(fèi)版本 200 KB 的限制對(duì)于實(shí)際代碼庫來說太低了,有考慮過提高限制嗎?

Jacob Jackson 回復(fù):可以試下付費(fèi)版 30 天返款。所有版本的 TabNine 仍然適用于大于索引限制的項(xiàng)目。索引中將添加和刪除文件,以確保索引文件與用戶正在編輯的文件盡可能相關(guān)。

用戶2:可以用,但不是很好用。對(duì)于你最喜歡的編輯器不支持或沒有插件的語言來說,這是一個(gè)非??岬募夹g(shù),但是如果編輯器已經(jīng)對(duì)語言有很好的支持(比如 VSCode for Typescript),它可能不會(huì)比連接自動(dòng)完成的編輯器更好用。

用戶3:添加 IntelliJ Idea 支持,我會(huì)買它:)

用戶 4:支持 Emacs 后,我會(huì)買!

對(duì)于這個(gè)為程序員構(gòu)建的編碼工具的編輯器和工作流程精確度,大家也有很多看法。

Jackson 也坦承了 Deep TabNine 的一些缺點(diǎn),如它更適合某些類型的編碼。它在自動(dòng)完成相對(duì)死記硬背的代碼時(shí)效果最好,這種編程已經(jīng)被做過數(shù)千次,只有很小的變化。但是,它并不擅長(zhǎng)用戶用于解決新問題的探索性代碼。考慮到軟件的智能來自數(shù)據(jù)中的模式,這并不奇怪。

那么,它對(duì)于普通程序員真的有用嗎?這取決于很多因素,比如他們使用的編程語言,他們想要實(shí)現(xiàn)的目標(biāo)等。但 Jackson 表示,與其說是一個(gè)人類編碼助手,它更像是一種更快的輸入法(一種常見的被稱為結(jié)對(duì)編程的做法)。

“想象一下,現(xiàn)在所有的程序員都在使用相當(dāng)于手機(jī)的鍵盤打字,而使用 Deep TabNine 有點(diǎn)像轉(zhuǎn)而去使用常規(guī)鍵盤,”他說道。這款軟件可以提高用戶輸入信息的速度,并且可以提高工作效率,“因?yàn)槟憧梢曰ǜ鄷r(shí)間考慮內(nèi)容而不是細(xì)節(jié)?!钡粫?huì)按照你的方式編寫代碼,而你也確實(shí)需要要密切關(guān)注它的動(dòng)向。

如何使用 Deep TabNine?

雖然集成深度學(xué)習(xí)模型具有多種優(yōu)勢(shì),但使用它需要大量的算力。Jackson 明確提到,在筆記本電腦上運(yùn)行無法實(shí)現(xiàn) TabNine 用戶習(xí)慣的低延遲。對(duì)此,他們提供了一種解決方案——TabNine Cloud(Beta)服務(wù),該服務(wù)將使用戶能夠使用 TabNine 的服務(wù)器進(jìn)行 GPU 加速自動(dòng)完成。訪問 TabNine Cloud,可以在此處免費(fèi)注冊(cè):https://tabnine.com/beta_signup

但是,有許多人更愿意將代碼保存在他們的機(jī)器上。為了確保代碼的隱私性和安全性,TabNine 團(tuán)隊(duì)正在研究以下用例:

他們承諾在未來推出尺寸減小的模型,個(gè)人開發(fā)者可以在筆記本電腦上運(yùn)行,提供合理的延遲。

企業(yè)可以選擇模型許可,在自己的硬件上運(yùn)行。他們還提供訓(xùn)練自定義模型,以了解企業(yè)代碼庫特有的獨(dú)特模式和樣式。

商業(yè)化前途未定

目前,Jackson 正在考慮下一步該用這款軟件做些什么,以及是否值得商業(yè)化。他說,他本人目前在一家大型科技公司有一份全職工作,他還不想放棄,但來自各領(lǐng)域的人都對(duì)這款軟件表示“非常感興趣”。“我還沒有真正決定我想用它做什么。”

目前,TabNine 的個(gè)人許可用費(fèi)用為 49 美元,商業(yè)用途費(fèi)用為 99 美元,個(gè)人必須注冊(cè) Deep TabNine 測(cè)試版才能訪問新的深度學(xué)習(xí)功能。購(gòu)買許可之后, TabNine 能夠索引更多文件,給出更多相關(guān)建議。

網(wǎng)站上寫道:“TabNine 每分鐘至少可以為你節(jié)省 1 秒鐘。如果你認(rèn)為你的時(shí)間價(jià)值超過 1.40 美元/小時(shí),它將幫你在不到一年的時(shí)間內(nèi)收回成本?!?/p>

他說,如果他能夠使用開源軟件創(chuàng)建這樣的程序,那么 AI 輔助編碼的未來就是一片光明。

“這是在這個(gè)領(lǐng)域工作的每個(gè)人的目標(biāo),告訴計(jì)算機(jī)你想要寫什么樣的代碼,它就能幫你寫,”他說道。“我們目前距離實(shí)現(xiàn)這個(gè)目前還很遠(yuǎn),但我認(rèn)為這種工具可以幫助你更方便地表達(dá)自己的想法?!?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    915

    瀏覽量

    54651
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    797

    瀏覽量

    30929
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131841

原文標(biāo)題:搶程序員飯碗?自動(dòng)寫代碼的Deep TabNine真如此神奇?

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    內(nèi)存救星-極大提高系統(tǒng)速度的工具

    內(nèi)存救星-極大提高系統(tǒng)速度的工具1600%提高系統(tǒng)速度的工具 軟件簡(jiǎn)介:   Windows為每個(gè)應(yīng)用程序平等的分配內(nèi)存,但這樣并不合理。例如:你在玩游戲時(shí),一些
    發(fā)表于 07-31 16:46

    人類與人工智能機(jī)器人合作的前景

    的工資會(huì)比原來高出很多?! ∑浯危祟惖纳钇焚|(zhì)會(huì)極大提高。人工智能的進(jìn)步將帶來許多社會(huì)利益。例如,無人駕駛汽車會(huì)減少90%的交通事故。人工智能可以將人們從日常工作中解放出來,尋找新的定位和職業(yè),把
    發(fā)表于 04-16 17:42

    人工智能機(jī)器學(xué)習(xí)的前世今生

    如何傳授給計(jì)算機(jī)的過程。任何機(jī)器使用算法以智能方式執(zhí)行任務(wù),這就是展現(xiàn)的人工智能機(jī)器學(xué)習(xí)是人工智能
    發(fā)表于 08-27 10:16

    新型諧波分析方法提高智能電表精度的技巧精選

    MS-2223:新型諧波分析方法提高智能電表的精度并降低計(jì)算開銷
    發(fā)表于 09-16 12:39

    機(jī)器學(xué)習(xí)的創(chuàng)新/開發(fā)和應(yīng)用能力

    機(jī)器學(xué)習(xí)的未來在工業(yè)領(lǐng)域采用機(jī)器學(xué)習(xí)機(jī)器學(xué)習(xí)和大數(shù)據(jù)工業(yè)人工智能生態(tài)系統(tǒng)
    發(fā)表于 12-16 07:47

    人工智能機(jī)器學(xué)習(xí)提高網(wǎng)絡(luò)安全性的方法

    人工智能機(jī)器學(xué)習(xí)可以幫助組織提高網(wǎng)絡(luò)安全性的一些方法
    發(fā)表于 01-25 06:25

    什么是人工智能、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和自然語言處理?

    ,機(jī)器人現(xiàn)在可以與具有多任務(wù)處理能力的人類工作者一起工作。計(jì)算機(jī)視覺、傳感器網(wǎng)絡(luò)和人工智能廣泛應(yīng)用于數(shù)控機(jī)床和裝配線,以減少誤差,實(shí)現(xiàn)自動(dòng)修正和提高生產(chǎn)率。交通: 基于應(yīng)用程序的出租車
    發(fā)表于 03-22 11:19

    歐洲2020年將用智能電表代替80%的電表從而進(jìn)一步提高智能電網(wǎng)的能力

    預(yù)計(jì)發(fā)展中和發(fā)達(dá)經(jīng)濟(jì)體將進(jìn)一步加強(qiáng)其智能電網(wǎng),并通過部署更多的智能電表,建立管理電力消耗的雙向通信。據(jù)歐盟委員會(huì)稱,歐洲地區(qū)計(jì)劃到2020年用智能電表代替80%的電表,這就意味著將部署2億智能
    發(fā)表于 01-09 16:07 ?3315次閱讀

    人工智能機(jī)器學(xué)習(xí)助力下 工廠的生產(chǎn)率也得到了極大提高

    機(jī)器人和其他自動(dòng)化技術(shù)極大提高了當(dāng)今工廠的生產(chǎn)率。但是,它們?nèi)匀挥幸粋€(gè)主要限制:它們要求人們告訴他們?cè)撛趺醋觥?/div>
    發(fā)表于 11-13 10:14 ?602次閱讀

    區(qū)塊鏈如何提高智能電網(wǎng)的使用效率

    美國(guó)伊利諾州(Illinois)公用事業(yè)大廠ComEd宣布,擴(kuò)大部署新興技術(shù),研發(fā)區(qū)塊鏈和智能化領(lǐng)域,確保電網(wǎng)的安全性和復(fù)原力,同時(shí)提高智能電網(wǎng)的使用效率,并滿足消費(fèi)者不斷變化的需求。
    發(fā)表于 01-04 10:43 ?1074次閱讀

    人工智能技術(shù)的熱點(diǎn)透視

    機(jī)器學(xué)習(xí)迎來爆發(fā)期是神經(jīng)網(wǎng)絡(luò)研究領(lǐng)域領(lǐng)軍者Hinton在2006年提出了神經(jīng)網(wǎng)絡(luò)Deep Learning算法,使神經(jīng)網(wǎng)絡(luò)的能力大提高。
    發(fā)表于 01-06 11:51 ?858次閱讀

    人工智能/機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的關(guān)系

    機(jī)器學(xué)習(xí)”“人工智能”“深度學(xué)習(xí)”這三個(gè)詞常常被人混淆,但其實(shí)它們出現(xiàn)的時(shí)間相隔甚遠(yuǎn),“人工智能”(Artificial Intellig
    的頭像 發(fā)表于 01-03 15:29 ?7668次閱讀
    人工<b class='flag-5'>智能</b>/<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>/深度<b class='flag-5'>學(xué)習(xí)</b>的關(guān)系

    雷達(dá)傳感器如何顯著提高智能家居的能源效率

    雷達(dá)傳感器如何顯著提高智能家居的能源效率
    的頭像 發(fā)表于 12-06 15:25 ?340次閱讀
    雷達(dá)傳感器如何顯著<b class='flag-5'>提高智能</b>家居的能源效率

    環(huán)路供電智能變送器的功耗限制如何提高智能水平

    電子發(fā)燒友網(wǎng)站提供《環(huán)路供電智能變送器的功耗限制如何提高智能水平.pdf》資料免費(fèi)下載
    發(fā)表于 11-28 11:25 ?0次下載
    環(huán)路供電<b class='flag-5'>智能</b>變送器的功耗限制如何<b class='flag-5'>提高智能</b>水平

    人工智能機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是什么

    在科技日新月異的今天,人工智能(Artificial Intelligence, AI)、機(jī)器學(xué)習(xí)(Machine Learning, ML)和深度學(xué)習(xí)
    的頭像 發(fā)表于 07-03 18:22 ?673次閱讀