人工智慧已經是 Linux 的基礎結構的一部分——無論開發者是否喜歡
人工智慧正在默默地處理 Linux 最骯髒的一些工作,但並非每個人都對此感到自在。
Linux-Terminal.com 的主要收穫
- Linux 核心開發者正在使用人工智慧來支援專案維護。
- 使用人工智慧編寫內核程式碼仍然是一個未解之題。
- 版權和開源授權的問題仍然存在。
Linux 開發者社群已迅速從討論如何使用 AI 轉向悄悄將 AI 深植於 Linux 核心工程工作流程中。事實上,Linus Torvalds 現在自稱是「非常相信」AI 作為維護工具的人。
同時,在東京參加開源高峰會(OSS)日本、Linux 核心維護者高峰會和 Linux Plumbers 的核心開發者,正在正式制定大語言模型(LLM)如何融入長期流程,例如穩定回移、公共漏洞和曝光(CVE)分流,以及工具政策。
正如托瓦爾茲在他於日本舉行的開源軟體主題演講中所說,人工智慧最終已經達到了一個真正對 Linux 維護者有幫助的階段,而不僅僅是圍繞程式碼生成的炒作。他強調,他感興趣的是那些能夠預先篩選補丁和合併的人工智慧系統,在問題到達他的收件箱之前就顯示出來,而不是試圖直接編寫複雜核心碼的工具。人工智慧尚未準備好做到這一點。
在會議之前,NVIDIA 的傑出工程師兼穩定核心維護者 Sasha Levin 已經闡明了 Linux 核心維護者和開發者在 AI 使用上的共識:人類責任不可協商;在使用 AI 時需要某種形式的披露;維護者將自行決定如何使用 AI 工具。
維護者仍然未就某些問題達成共識。例如,人工智慧是否會犯本質上不同於人類的錯誤?人工智慧的工作是否應該比人類編寫的程式代碼受到不同的標準?以及將人工智慧程式碼引入核心系統會帶來哪些法律影響?
最後這個是個敏感議題。版權與人工智慧的結合尚未定案。主要的訴訟仍在法院審理中。使情況更複雜的是,眾所周知,人工智慧編程工具大部分是以各種不同開源授權下的開源程式碼進行訓練的。
在吃力不討好的工作中使用大型語言模型
今年早些時候,Levin 揭露說,他已經將大型語言模型(LLM)應用於項目中兩個最吃力不討好的工作:識別回溯補丁和安全修復。對於 AUTOSEL——一個用於識別需要回溯到穩定版本的核心補丁的系統——Levin 重新構建了選擇引擎,圍繞嵌入向量運作,將每個提交視為語義空間中的一個點,並請 LLM 尋找與過去回溯補丁相似的補丁。該系統將查詢分配給多個模型,讓它們“投票”,然後將入選候選補丁交給人工維護者,實際上充當了一個永不忘記歷史決策的額外穩定性維護者。
相同的基礎設施現在支撐著 Linux 的內部 CVE 工作流程,該流程在 2024 年初開始負責分配自己的 CVE 編號。CVE 團隊用 Rust 工具取代了脆弱的 Shell 腳本,而這些 Rust 工具大部分是在大型語言模型(LLM)的幫助下起草的。Levin 使用 AI 來生成程式碼,並協助判斷哪些提交可能與安全相關。Levin 主張,這些工具並不能取代人類判斷,但能讓原本無法擴展、每週七天的三方審查流程在核心補丁量持續增加的情況下變得可行。Linux 維護者的倦怠是一個已知的嚴重問題。這是一份不被感謝的工作。
Levin 還表示,有一個針對 Linux 6.15 的補丁被合併,雖然署名是他,但完全由 AI 生成,並且包含變更日誌和測試。這個補丁是一個小但非平凡的哈希表變更,他認為這展示了 AI 擅長的領域:範圍狹窄、機械化的轉換,模型能夠推理位域。他補充說,AI 比疲倦的人類更耐心地進行測試。另一個 AI 生成的 git-resolve 腳本,為了 6.16 版本新增,用於解決模糊的提交 ID,並附帶異常詳盡的自測和文件,現在每天都被內核開發者使用。
但 AI 撰寫的 hash 修補程式也包含了一個微妙的錯誤:它刪除了 __read_mostly 屬性,這是一個應該保留的性能提示,一旦在 LWN 的評論串中被剖析出來,就引發了一波批評。評論者還認為,未透露的 AI 作者身份違反了開發者來源證書以及社群對誠實和審查的期望。
托瓦爾茲本人後來表示,如果他知道這是 100% 工具生成的變更,他會更加仔細地審查。這就是為什麼在程式設計師提交 AI 衍生的程式碼補丁時,將需要明確的標籤或披露的原因。
在 OSS Japan,大名說他認為應該將大型語言模型視為編譯器演進的下一步,而不是人類的替代品。他將它們的採用比作從組合語言轉向高階語言的變化:起初具有爭議,但最終被接受為讓開發者擺脫重複瑣碎工作的方式,例如撰寫範例代碼或仔細編寫第二語言的提交訊息。實際上,開發者已經將大型語言模型作為強大的程式碼和電子郵件檢查器及摘要工具使用。
一些維護者也告訴我,AI 驅動的預篩選可以將一天的補丁分類工作縮短到幾分鐘。對於那些不熟悉的人,Linux 核心開發流程是在郵件列表上運行的,特別是 Linux 核心郵件列表(LKML)。這是一個巨大的時間和精力節省。Linux 基金會研究員 Shuah Khan 也表示,AI 在幫助我們審查和提升生產力方面確實非常有用。
除了開發者工具之外,更廣泛的 Linux 生態系統也正在轉向 AI 工作負載和 AI 輔助操作。硬體供應商正在競相將加速器和 NPU 引入 Linux。同時,儲存和檔案系統正在進行調校,以大規模供應 GPU 流水線。與此同時,內核之外的專案,從像 Code-Survey 這樣的學術實驗到商業產品,都在探索大型語言模型如何映射大型程式碼庫、追蹤功能生命周期,以及通過挖掘提交記錄和郵件列表來發現錯誤密集的子系統。
並非每個人都信服
儘管有許多正面報導,並非每個人都對人工智慧感到信服。一位資深維護者表示,雖然大多數人的「人工智慧體驗感覺是虛假的正面」,我們聽到了相關擔憂,並且正在努力以負責任的方式將人工智慧融入我們的流程。這確實可以幫助減輕維護者和開發者的負擔。另一方面,我們需要非常小心,將這種目前仍屬專有的新事物引入我們的工作流程。
Jonathan Corbet,資深核心開發者及 LWN 主編,補充說他擔心維護者「依賴專有工具。如果我們在審查過程中變得依賴它,我們真的有可能重蹈 20 年前 BitKeeper 的覆轍。」BitKeeper 是第一個用於追蹤 Linux 代碼的原始碼控制管理(SCM)系統。其創建者更改了許可證,使其不再能用於 Linux。結果,雖然從長遠來看非常好——它促使 Torvalds 創建了 Git——但當時非常令人沮喪。
另一個由Shuah和Intel資深首席工程師及核心維護人員Dan Williams共同提出的擔憂是,如何確保新開發人員真正理解他們正在做的事情。Williams說:「我會在高中做職業演講,我告訴他們在學校能學到且會用到的最重要的一件事,就是『展示你的過程』。我覺得AI就是最極端的例子,『我不需要展示我的過程,因為AI告訴我這是正確的。』」那樣做沒有幫助。
這對於學習編程的人以及想要從初級程式員晉升為成熟程式員的人來說,都是一個真正的問題。正如Sakana AI的研究科學家、前Google DeepMind的AI研究科學家Stefania Druga在OSS Japan的演講中所說,AI工具正在自動化許多曾經作為新手踏腳石的初級任務。
「我們需要經驗才能找到工作,而需要工作才能獲得那份經驗,」她說。「如果人工智慧要自動化這些入門級的工作,那真實的人要怎麼學習這些技能呢?」這是一個好問題,學生、雇主以及 Linux 核心開發者都必須面對這個問題。
那是未來的問題。
仍有疑問
就今天而言,趨勢正匯聚到同一個結論:人工智慧正在成為 Linux 的基礎設施的一部分,而不是附加的小玩意兒。目前,重點完全放在在沉重的補丁負載下增強維護者的能力,自動化穩定性和安全工作中最繁瑣的部分,以及捕捉模式匹配機器的好處。
人工智慧最終會撰寫 Linux 的重要部分程式碼嗎?敬請期待。這個問題仍未有答案,其解決方式可能更依賴著作權法,而非技術專業知識。
