GitHub的AI程序員“抄襲”算法大神代碼,連原版注釋都抄上了
卻忘了帶上開源許可證
曉查 發(fā)自 凹非寺?
量子位 報道 | 公眾號 QbitAI
本周GitHub官方和OpenAI聯(lián)合發(fā)布了一款代碼神器AI——GitHub Copilot,只需輸入注釋,即可自動生成代碼,堪稱一位“AI程序員”。真人程序們表示非常激動。
它究竟有多厲害呢?有位程序員嘗試了一下平方根倒數(shù)速算法(Fast Inverse Square Root),結果出人意料。
只是打出來這四個關鍵詞,GitHub Copilot就逐行“完美復刻”了當年那段神奇的算法。
這是當年在游戲《雷神之錘3》(Quake 3)中使用的一段代碼,用于計算歸一化向量,因其算法之簡潔快速而聞名,也被叫做Quake代碼。
我們再對比一下這兩串代碼,不能說是十分相似,只能說是一模一樣。
float?Q_rsqrt(?float?number?)
{
????long?i;
????float?x2,?y;
????const?float?threehalfs?=?1.5F;
????x2?=?number?*?0.5F;
????y??=?number;
????i??=?*?(?long?*?)?&y;???????????????????????//?evil?floating?point?bit?level?hacking
????i??=?0x5f3759df?-?(?i?>>?1?);???????????????//?what?the?fuck??
????y??=?*?(?float?*?)?&i;
????y??=?y?*?(?threehalfs?-?(?x2?*?y?*?y?)?);???//?1st?iteration
//????y??=?y?*?(?threehalfs?-?(?x2?*?y?*?y?)?);???//?2nd?iteration,?this?can?be?removed
????return?y;
}
△?原版平方根倒數(shù)速算法
甚至GitHub Copilot連當年那句“what the fuck”的注釋也用上了。
這不禁讓人細思極恐:難道這不侵犯版權嗎?
還真是!這位程序員發(fā)現(xiàn),GitHub Copilot好像忘了開源許可證,這就尷尬了。
而Quake代碼十年前就在GitHub上開源了,在Readme文檔中,原作者明確表示使用的是GPL開源許可證。
GPL許可證要求:如果分發(fā)包含GPL代碼的新版程序,則需要向每個人都提供免費獲得的完整源代碼。
所以這位程序員只好在代碼前手動加入了幾行注釋,算是給他人的警示吧。
使用Copilot有抄襲風險
關于GitHub Copilot直接“抄襲”Quake代碼的事情,在Hacker News論壇上引起熱議。
對此,程序員表示,如果貿然使用GitHub Copilot,而忽略了代碼背后開源許可證,那么你有可能會被起訴。
一家科技公司的產品安全負責人明確表示:禁止員工使用GitHub Copilot。
如果不開源的商用軟件使用GitHub Copilot開發(fā)的代碼,而沒有按照開源許可證的要求執(zhí)行,就會給公司招來法律風險。
不過,也有程序員表示,我用AI寫的程序關我什么事,有責任那也是GitHub母公司微軟的。
但是在GitHub Copilot下載頁面中并沒有相關法律風險的提示,而且GitHub還表示這個AI不是一個“背題家”,它生成的絕大多數(shù)代碼都是唯一的。
在0.1%的情況下,GitHub Copilot建議可能包含一些來自訓練集的逐字片段。
結果GitHub Copilot卻把人家整段的代碼都抄來了,而且連注釋都附帶上。
還有程序員表示,不用太擔心。其實GitHub Copilot的這種行為,和某些程序員直接抄Stack Overflow的代碼沒有啥區(qū)別,因為很多Stack Overflow上的代碼也沒有給出許可證信息。很多直接搬運Stack Overflow代碼的行為也沒有被起訴。
但是謹慎起見,用GitHub Copilot還是長點心吧。
One More Thing
最后關于Quake代碼這件事,還值得再說兩句。
由于當年顯卡等圖形渲染硬件的配置較低,為了能實現(xiàn)更好的光照效果,必須對算法進行極致優(yōu)化,而求平方根倒數(shù)是繞不開的一項運算,每秒要進行上百萬次。
因此就有一位算法大神,通過浮點數(shù)與整型的轉換,以及移位操作,成功將求平方根倒數(shù)壓縮到短短幾次操作。(詳細原理可參照維基百科介紹)
關于這個算法究竟是誰發(fā)明的,一直眾說紛紜,沒有定論。但那句注釋讓Quake代碼更加出名。
當年開發(fā)《雷神之錘3》的程序員使用了大神的算法,卻沒有看懂其中的精髓:“i = 0x5f3759df – ( i >> 1 ); ”這一句 ,所以只好在注釋里寫下了“what the fuck”。
沒想到近20年后,AI還是和人一樣成了復讀機,只能膜拜算法大神了。(手動狗頭)
參考鏈接:
[1]https://twitter.com/mitsuhiko/status/1410886329924194309
[2]https://news.ycombinator.com/item?id=27710287
[3]https://github.com/id-Software/Quake
[4]https://en.wikipedia.org/wiki/Fast_inverse_square_root#History
- 腦機接口走向現(xiàn)實,11張PPT看懂中國腦機接口產業(yè)現(xiàn)狀|量子位智庫2021-08-10
- 張朝陽開課手推E=mc2,李永樂現(xiàn)場狂做筆記2022-03-11
- 阿里數(shù)學競賽可以報名了!獎金增加到400萬元,題目面向大眾公開征集2022-03-14
- 英偉達遭黑客最后通牒:今天必須開源GPU驅動,否則公布1TB機密數(shù)據(jù)2022-03-05