基于數十億行開源代碼訓練
根據官方介紹,GitHub Copilot 工具由 OpenAI 開發的全新 AI 系統 OpenAI Codex 提供支援。Codex 基于 GPT-3 自然語言處理 (NLP) 模型演化而來,基于開源代碼和自然語言進行了訓練,可以了解程式設計語言和人類語言,并獨立生成各種形式的文本。

該公司聲稱 Copilot “在代碼生成方面比 GPT-3 能力強得多”。Copilot 利用了上傳到 GitHub 及其他網站的數十億行公開代碼。基于龐大的代碼庫,Copilot 被引入內建開發環境(IDE)後,可以對完整代碼進行周遊,并向程式員給出基于人工智能的分析建議,程式員可以接受或拒絕。GitHub 不保證生成的代碼可以工作,因為 Copilot 不會去測試代碼。
Copilot 釋出後,有使用了該工具的網友表示:“Copilot 猜測到了大約十分之一我想寫的代碼,其他時候會給一些相當好或完全不合适的建議。但當 Copilot 猜對的時候,感覺它在讀我的心。雖然隻有我一個人編碼,但真的很像結對程式設計。我編寫了更好的代碼、文檔和測試。Copilot 使我成為了更好的程式員。”
GitHub 首席執行官 Nat Friedman 也表示,目前 GitHub 的數百名開發人員在編碼時一整天都在使用 Copilot,大多數人都在接受建議而不是關閉該功能。
除了期待,也有一些開發者留言表示擔心這一功能将使程式員失業,有人開始思考這将對程式設計造成什麼影響。不過目前,Copilot 的主要定位還隻是提供類似 IntelliSense/IntelliCode 的代碼補全與建議功能。
微軟是否違反開源許可?
雖然 Copilot 受到了很多開發者的喜歡,但也有開發者提出了質疑。
首先是效率問題。之前已經在 Java 和 Kotlin 中嘗試過兩個 AI 驅動的自動完成引擎的
“thu2111 ”發帖表示,由于以下兩個問題删掉了該插件:一是 AI 建議通常不如類型驅動的 IDE 自動完成(使用 IntelliJ)有用;二是 AI 插件非常積極地将它們的建議清單推到頂部,即使它們的幫助比預設值要小。
其次便是争議最大的問題:微軟是否違反了開源許可協定規定。Copilot 代碼生成優于 GPT-3 的部分原因在于,其在包含大量公開源代碼的資料集上進行了訓練,僅 GitHub 中就有 TB 級公開可用的代碼及英語語言示例。
GitHub Copilot 現已作為 Visual Studio Code 擴充提供,處于測試階段的 Copilot 将免費供開發者使用,但正式版上線後,微軟将進行收費。微軟表示,目前僅提供存儲在公共存儲庫中的代碼的服務。那麼,微軟是否有權利将這些開源代碼應用到自己的商業産品中呢?
根據 GitHub 從業人員 Albert Ziegler 的介紹,GitHub Copilot 要記住一段代碼,必須經常檢視該代碼段。由于每個檔案僅向 GitHub Copilot 顯示一次,是以該代碼段需要存在于公共代碼中的許多不同檔案中。
Ziegler 表示,測試的 41 個主要代碼段,至少出現在 10 個不同的檔案中,其中 35 個出現超過 100 次。測試期間,GitHub Copilot 在曾通路超過 70 萬次 GNU 公共許可證後建議啟動一個空檔案。
Copilot 測試資料,來源:Albert Ziegler
由于 Copilot 生成的代碼不是 GPL 代碼的副本,是以開發者無法辨認出這段代碼是來自哪個項目。
GPL 協定的一個特點就是如果引用了 GPL 的代碼庫,就必須開源引用部分的代碼。即如果一家公司有一行代碼引入了基于 GPL 協定開源的庫函數,就必須把整個代碼開源。如果“藏匿”了 GPL 代碼的片段,再将這些代碼複制粘貼到商業項目中,這對很多開發者來說就是違反了協定。
遊戲開發者 eevee 表示,版權不僅包括複制和粘貼,也包括衍生作品。微軟也承認,GitHub Copilot 基于大量 GPL 代碼進行了訓練,它了解的所有内容都是從這些代碼中提取的。“是以我不清楚為什麼這不是一種将開放源代碼轉化為商業産品的形式。”
不過,布朗大學計算機博士 Thomas Dickerson 對 eevee 的觀點提出了質疑:這是否意味着任何閱讀過即使是一行 GPL 代碼的人都不能再從事閉源項目,因為那些都是衍生作品?
網友 Zac Skalko 表示,Copilot 肯定會征得使用者的同意,這樣 Copilot 就不是真正的"作者",使用者才是真正的送出者,是以它是可以免除責任的。
開發者 dragonwriter 則認為微軟玩了一個文字遊戲:微軟并沒有聲稱使用“開源語料庫”,而是采用了“公共代碼”,因為這種使用是“合理使用”,不受版權限制。
結束語
此前,對于人工智能使用有版權的作品進行訓練是否侵權也引發過争議,至今業内尚未達成共識,涉及到開源衍生作品商業化問題更是難以判定。
2015 年,小米就曾被智能終端社群 XDA 公開指責違反 GPL v2 許可。小米的 MIUI 雖然源自 Android,采用的是 Apache 2.0 許可證,但 Android 使用了遵守 GPL v2 許可的 Linux 核心。根據 GPL v2 許可,修改的源代碼也必須公開,恰恰小米已經修改了 Linux 的核心源代碼,但小米一直未公開其源代碼。雖然并未引發官司,但對社群和小米形象都帶來了很大影響。
根據紅帽釋出的《2021年企業開源狀況報告》,90%的 IT 上司者在企業中使用開源軟體,79%的人表示,未來幾年開源軟體在新興技術領域,如邊緣計算、物聯網、人工智能和機器學習中的應用将會增加。
随着開源應用的增加,開源項目的開發者與使用者之間也糾紛不斷。
在過去幾年,一些雲廠商将開源軟體用到了商業産品中,但沒有返給社群任何東西、幫助維持這些項目,包括 Redis Labs、MongoDB、Cockroach Labs 和 Confluent 等在内的許多公司陸續修改或變更自己的開源許可證,以防止代碼被無償使用。
“他們隻是試圖限制使用者将軟體作為一種單獨服務。這些新許可的目的是繼續利用軟體的普及和源代碼獲得客戶,排斥基于相同代碼的 SaaS 服務。”GitHub 開發政策和法律顧問 Justin Colannino 表示。時至今日,開源陣營和雲計算平台之間長達數年的摩擦仍然存在。
任何開發商、初創公司和個人開發者,都需要足夠的動力去做有意義的開源項目,否則開源生态将難以為繼
參考連結:
https://copilot.github.com/ https://docs.github.com/en/github/copilot/research-recitation#footnote8 https://sdtimes.com/open-source/the-battle-of-open-source-licenses/