程序員危!傳OpenAI全球招外包大軍,手把手訓(xùn)練ChatGPT取代碼農(nóng)
碼農(nóng)真的危了!
最近有消息稱,OpenAI已經(jīng)在悄悄地訓(xùn)練ChatGPT,讓它學(xué)習(xí)人類的思考過程,從而真正掌握軟件工程,徹底代替「初級(jí)碼農(nóng)」。
OpenAI招外包大軍,教AI學(xué)人類思考
會(huì)編程的AI,幾家硅谷大廠都在做。
DeepMind的AlphaCode,據(jù)說「吊打72%人類程序員」,但尚未開放;傳聞中谷歌的「神秘項(xiàng)目」Pitchfork,也還在醞釀中;而微軟的GitHub Copilot主要是一個(gè)代碼補(bǔ)全工具。
要說完全代替人類碼農(nóng),它們還不夠格。
但如果真的讓ChatGPT學(xué)會(huì)了用人類思維去編程,這些友商/自家的產(chǎn)品恐怕要被吊打。
而從種種跡象看來,OpenAI似乎正在下一盤大棋。
根據(jù)Semafor的報(bào)道,在過去的六個(gè)月里,OpenAI已經(jīng)從拉美和東歐等地區(qū)招募了大約1000名外包人員,來訓(xùn)練他們的AI碼代碼。
這個(gè)新聞中,有兩個(gè)「華點(diǎn)」。
首先,為什么地點(diǎn)選在拉美和東歐?這個(gè)咱們都明白,現(xiàn)在硅谷的泡沫戳破了,各家互聯(lián)網(wǎng)大廠都在絞盡腦汁「降本增效」,有的靠裁員,有的就去其他國家找廉價(jià)勞動(dòng)力。
第二個(gè)「華點(diǎn)」是,這些外包人員中,很多人并不是計(jì)算機(jī)專業(yè)的畢業(yè)生,也不具備高級(jí)的編程技能。他們的作用是,編寫OpenAI期待實(shí)現(xiàn)的「自動(dòng)化」基本代碼。
具體來說,其中的60%從事「數(shù)據(jù)標(biāo)注」工作——?jiǎng)?chuàng)建大量的圖像、音頻片段等信息,用來訓(xùn)練人工智能工具或自動(dòng)駕駛汽車。
另外的40%則是實(shí)打?qū)嵉某绦騿T,他們正在為OpenAI的模型「手搓」數(shù)據(jù),從而讓AI學(xué)習(xí)軟件工程任務(wù)。
此前,OpenAI一直是用從GitHub上抓取的代碼訓(xùn)練其模型。
而這次,OpenAI想建立的數(shù)據(jù)集中,不僅有代碼,還包括背后用自然語言編寫的人類解釋。
論文地址:https://arxiv.org/abs/2107.03374
對(duì)此,Semafor特地采訪了一位南美的開發(fā)者,而他曾無償為OpenAI完成了5小時(shí)的編碼測(cè)試。
在這個(gè)測(cè)試中,他被要求處理兩個(gè)任務(wù)。
首先,他會(huì)得到一個(gè)編程問題,OpenAI要求他用書面的英語解釋自己將如何處理這個(gè)問題。
然后,他需要提供一個(gè)解決方案。
如果他發(fā)現(xiàn)了一個(gè)bug,OpenAI就會(huì)要求他詳細(xì)說明問題是什么,應(yīng)該如何糾正,而不是簡單地修復(fù)。
「他們很可能是想用一種非常特殊的訓(xùn)練數(shù)據(jù)來投喂這個(gè)模型,在這種情況下,就需要展示人類是如何一步步思考的。」這位開發(fā)者說。
此前的ChatGPT,寫的代碼就被揪出過不少問題。
原因在于,ChatGPT沒有任何標(biāo)記了對(duì)錯(cuò)的內(nèi)部記錄,它其實(shí)是一個(gè)統(tǒng)計(jì)模型。ChatGPT的答案,本質(zhì)上就是從構(gòu)成GPT-3的互聯(lián)網(wǎng)數(shù)據(jù)語料庫中收集的概率結(jié)果。
當(dāng)時(shí)OpenAI也說,ChatGPT最合適的定位,應(yīng)該是編碼輔助工具。
但想象一下,如果OpenAI真的教會(huì)了ChatGPT「像人類一樣一步一步思考」,那它完全可以代替一些需要死記硬背的寫代碼工作,后果就是,一些「初級(jí)」碼農(nóng)被徹底淘汰。
現(xiàn)在,硅谷的高管們正在設(shè)想這樣的產(chǎn)品,讓幾乎沒有編程經(jīng)驗(yàn)的人士向AI描述自己的創(chuàng)意和愿景,然后就能構(gòu)建出任何自己想要的東西,無論是一個(gè)網(wǎng)站,還是一個(gè)游戲。
幾天前,特斯拉的前人工智能主管Andrej Karpathy剛剛在推特上說:「最熱門的新編程語言是英語」。
用ChatGPT來debug,效果拔群
這可能并不是一個(gè)玩笑,比如當(dāng)紅炸子雞ChatGPT,就很有潛力。
最近,一項(xiàng)來自美因茨大學(xué)和倫敦大學(xué)學(xué)院的研究發(fā)現(xiàn),ChatGPT不僅可以出色地修復(fù)bug,而且開發(fā)者還能通過對(duì)話來顯著提高成功率。
研究人員表示,ChatGPT的debug性能與常見的深度學(xué)習(xí)方法CoCoNut和Codex相差無幾,并且明顯優(yōu)于標(biāo)準(zhǔn)的自動(dòng)程序修復(fù)方法(APR)。
論文地址:https://arxiv.org/abs/2301.08653
用ChatGPT來解決代碼問題并不新鮮,但與人類對(duì)話的獨(dú)特能力,使它比其他方法和模型更具優(yōu)勢(shì)。
為了評(píng)估ChatGPT的debug性能,研究人員使用QuixBugs基準(zhǔn)的40個(gè)純Python問題對(duì)其進(jìn)行了測(cè)試,然后手動(dòng)檢查建議的解決方案是否正確。
由于ChatGPT給出的答案存在一定的隨機(jī)性,因此研究人員針對(duì)每個(gè)問題都會(huì)單獨(dú)測(cè)試4次。
與其他自動(dòng)程序修復(fù)的基準(zhǔn)不同,QuixBugs包含了相對(duì)較小的問題(代碼行數(shù)少),而這非常適合在對(duì)話系統(tǒng)中使用。
在測(cè)試過程中,研究人員刪除了所有的注釋,并詢問ChatGPT這段代碼是否有bug以及如何修復(fù)它。
比如,圖1中就是一個(gè)關(guān)于BITCOUNT問題的例子。其中,第1-2行是向ChatGPT提出的需求;從第4行開始是錯(cuò)誤的代碼片段。
對(duì)于這個(gè)例子,我們希望ChatGPT的回答能解決第7行的錯(cuò)誤,即n?= n - 1應(yīng)該被替換為n &= n - 1。做為回應(yīng),ChatGPT要么給出一段修復(fù)完的代碼,要么給出一個(gè)描述告訴我們應(yīng)該如何修改。
結(jié)果顯示,ChatGPT解決了40個(gè)bug中的19個(gè),與CoCoNut(19)和Codex(21)相當(dāng),但標(biāo)準(zhǔn)的APR方法只解決了其中的7個(gè)問題。
當(dāng)然,因?yàn)镃hatGPT和Codex都是來自于同一個(gè)語言模型系列,所以解決問題的數(shù)量差不多也就不足為奇了。
此外,如果我們仔細(xì)觀察結(jié)果還可以發(fā)現(xiàn),ChatGPT并不是每次都能解決基準(zhǔn)測(cè)試中的bug。僅在BUCKETSORT和FLATTEN這兩個(gè)問題上,四次都發(fā)現(xiàn)了bug,而其他的通常只能成功1-2次。
也就是說,用戶在實(shí)際使用時(shí),可能需要嘗試數(shù)次才能獲得正確的結(jié)果。
不過,ChatGPT有一個(gè)強(qiáng)大的優(yōu)勢(shì):我們可以在對(duì)話中與系統(tǒng)互動(dòng),更詳細(xì)地對(duì)問題進(jìn)行說明,從而獲得正確的答案。
實(shí)際測(cè)試結(jié)果,也確實(shí)如此。
經(jīng)過與模型更進(jìn)一步的對(duì)話,研究人員成功地將ChatGPT的正確率刷新到了77.5%,也就是修復(fù)了40個(gè)錯(cuò)誤中的31個(gè),遠(yuǎn)超SOTA。
至少,目前看來,這件事是完全有可能的:開發(fā)人員將不再需要編寫樣板代碼。
相反,他們可以專注于復(fù)雜的應(yīng)用程序架構(gòu)或網(wǎng)絡(luò)安全等領(lǐng)域。
也就是說,雖然ChatGPT可能會(huì)完成某些編程工作,例如編寫通用函數(shù)或樣板代碼,但它不會(huì)完全取代程序員。因?yàn)槌绦騿T的工作需要的不僅僅是寫代碼。
成為一名程序員需要技巧——能夠構(gòu)建程序、遵循邏輯并生成比各部分總和更宏大的東西。
碼農(nóng):我自己「殺」自己
顯然,ChatGPT不是碼農(nóng)們做出的第一個(gè)「自我迭代」的產(chǎn)品。
咱們來排一排,那些會(huì)寫代碼的AI。
谷歌的Pitchfork
去年11月,坊間傳聞,谷歌正在醞釀一個(gè)秘密項(xiàng)目,這個(gè)產(chǎn)品會(huì)通過機(jī)器學(xué)習(xí)訓(xùn)練代碼,自己編自己,自己修復(fù)bug,還能自己更新。
據(jù)知情人士透露,這個(gè)項(xiàng)目起初是由Alphabet的登月部門——X部門開發(fā)的,代號(hào)為Pitchfork,去年夏天被轉(zhuǎn)移到了谷歌實(shí)驗(yàn)室。
根據(jù)內(nèi)部資料,Pitchfork的作用是「教代碼自行編寫、自行重寫」。
它能夠?qū)W習(xí)不同的編程風(fēng)格,并且根據(jù)這些風(fēng)格寫出代碼。
一名谷歌員工表示,開發(fā)Pitchfork的初衷是希望建立一個(gè)工具,將谷歌的Python代碼庫更新到新版本。
AlphaCode:吊打72%程序員
2022年2月,DeepMind推出了「AlphaCode」系統(tǒng),可以使用人工智能生成代碼。
根據(jù)DeepMind的說法,AlphaCode可以與人類匹敵。
DeepMind使用編程競(jìng)賽平臺(tái)Codeforces上托管的10個(gè)現(xiàn)有競(jìng)賽來測(cè)試AlphaCode,它的總體排名位于前 54.3%,也就是說,它擊敗了46%的參賽者 。
DeepMind聲稱,在使用編程競(jìng)賽平臺(tái)Codeforces進(jìn)行檢測(cè)時(shí),AlphaCode解決了100萬個(gè)樣本中34.2%的問題。
另外在過去6個(gè)月參加過比賽的用戶中,AlphaCode的數(shù)據(jù)排到了前28%,可以說「吊打72%人類程序員」!
當(dāng)時(shí),DeepMind就指出,雖然AlphaCode目前只適用于具有競(jìng)爭(zhēng)性編程領(lǐng)域,但顯然,它未來的能力絕不會(huì)止步于此。
它為創(chuàng)造某些工具打開了大門,而這些工具將使編程變得更容易被人們接受,并且有朝一日可以完全實(shí)現(xiàn)自動(dòng)化。
Copilot:代碼補(bǔ)全神器
再往前,在2021年,GitHub與OpenAI共同推出了一款A(yù)I編程神器——GitHub Copilot。
輸入代碼時(shí),Copilot會(huì)自動(dòng)提示程序中接下來可能出現(xiàn)的代碼片段,就像一個(gè)經(jīng)過訓(xùn)練用Python或JavaScript說話的自動(dòng)補(bǔ)全機(jī)器人。
Copilot能夠填充必要的代碼塊,只要它們不是特別復(fù)雜或者特別有創(chuàng)造性,這對(duì)于相當(dāng)于手工勞動(dòng)的編程,可太有用了。
2022年6月22日,Copilot正式面向C端上線,定價(jià)10美元/月或100美元/年,并向?qū)W生用戶和流行開源項(xiàng)目的維護(hù)者免費(fèi)提供。
現(xiàn)在,成千上萬的開發(fā)者都在用Copilot。在十幾種最流行的語言編寫代碼中——有高達(dá)40%是依靠它來生成的。
GitHub預(yù)測(cè),開發(fā)人員將在五年內(nèi)使用Copilot編寫多達(dá)80%的代碼。
微軟首席技術(shù)官Kevin Scott還表示:「我們確信:GitHub Copilot可以應(yīng)用到數(shù)千種不同類型的工作中。」
不過,因?yàn)樯嫦忧謾?quán),在發(fā)布不到5個(gè)月后,Copilot已經(jīng)被憤怒的程序員一舉告上法庭,索賠90億美元。
而學(xué)會(huì)「軟件工程思維」的ChatGPT,能吊打它們嗎?按OpenAI的速度,恐怕我們不用等太久。
參考資料:
https://www.semafor.com/article/01/27/2023/openai-has-hired-an-army-of-contractors-to-make-basic-coding-obsolete
https://www.zdnet.com/article/chatgpt-can-write-code-now-researchers-say-its-good-at-fixing-bugs-too/