Blog

Meta推出Code Llama:開源AI代碼生成器,跨越語言界限,激發創新與安全挑戰

Blog Image
Meta推出Code Llama:開源AI代碼生成器,跨越語言界限,激發創新與安全挑戰

August 25, 2023

重點摘要:

  • Meta公司推出了名為Code Llama的開源AI代碼生成器,這個機器學習系統能生成並用自然語言解釋代碼,支援多種程式語言。Code Llama的推出反映了Meta對開放式方法的信念,認為這有助於促進新技術的開發。然而,這個工具也帶來了一些風險,包括可能的安全漏洞和知識版權問題,需要開發人員進行特定應用的安全測試和優化。

  • 1. Code Llama的推出:
  • Meta公司推出了Code Llama,這是一個能夠生成並用自然語言解釋代碼的開源AI代碼生成器,支援多種程式語言,包括Python、C++、Java等。
  • 2. 開放式方法的重要性:
  • Meta強調開放式方法在創新和安全方面的重要性,認為公開可用的代碼模型可以促進新技術的開發,改善人們的生活。
  • 3. 可能的風險和挑戰:
  • Code Llama雖具有潛力,但也帶來了一些風險,包括可能的安全漏洞和知識版權問題,需要開發人員進行特定應用的安全測試和優化。




新聞內文:
Meta公司在競爭激烈的生成式AI領域中大顯身手,正處於一個開源熱潮中。

在發表用於生成文本、翻譯語言和創建音樂的AI模型之後,該公司今天發布了Code Llama,這是一個能夠生成並用自然語言解釋代碼的機器學習系統,特別是英文。

相似於GitHub Copilot和Amazon CodeWhisperer,以及像StarCoder、StableCode和PolyCoder等開源AI驅動的代碼生成器,Code Llama可以完成多種程式語言的代碼補全和調試,包括Python、C++、Java、PHP、Typescript、C#和Bash等。

Meta在與TechCrunch分享的部落格中寫到:「在Meta,我們相信AI模型,特别是用於程式語言模型,從創新和安全角度来看,最受益於開放式方法。公開可用的、特定於代碼的模型可以促進新技術的開發,從而改善人們的生活。透過發布像Code Llama這樣的代碼模型,整個領域都可以評估其功能、識別問題並修復。」

Code Llama提供了多種版本,包括針對Python進行優化的版本以及針對理解指令(例如「編寫一個輸出斐波那契數的函數」的指令)進行改善的版本。它基於Meta本月早些時候開源的Llama 2文本生成模型。雖然Llama 2可以生成代碼,但其生成出來的的並不一定是好代碼,肯定沒有比Copilot等專門架構的模型來得好。

在訓練Code Llama時,Meta使用了與訓練Llama 2相同的數據庫,即来自網路上的公開來源。但它讓模型在某種程度上「強調了包含代碼的訓練的數據集。基本上,Code Llama比其「母」模型Llama 2有更多的時間來學習代碼與自然語言之間的關係。

Code Llama的每個模型都具有從70億参数到340億参数不等的大小,都是透過訓練500億個代碼令牌以及與代碼相關的數據得到的。針對Python的特定版本進一步通過對1000億個Python代碼令牌的微調進行了改善。而相同地,理解指令的Code Llama使用外語翻譯員的反饋進行了改善,以生成對問題的「有帮助」和「安全」的答案。

需要特別解釋的是,参数是從歷史訓練數據中學習的模型,基本上定義了模型在解決問題時(在這種情況下是生成文本或代碼)的能力,而令牌代表原始文本(例如單字“「fantastic」中的「fan」)、「tas」和「tic」)。

Code Llama的幾個模型中有些可以將代碼插入現有代碼中,而所有模型都可以接受約100,000個代碼令牌作為輸入,至少一個(70億参数的模型)可以在單個GPU上運作。(其他模型需要更強大的硬體。)Meta聲稱,340億參數的模型是目前為止開源的任何代碼生成器中表現最好的,也是參數計算最多的。

毫無疑問的,一個代碼生成工具可能會對程式員甚至非程式員非常有吸引力。

GitHub聲稱,今天有超過400家企業正在使用Copilot,而這些企業內的開發人員編寫代碼的速度比之前提高了55%。另外,在一項最近的調查中,編成問答網站Stack Overflow發現,今年有70%的人正在使用或計畫使用AI編碼工具,稱其好處包括提高生產率和加快學習。

但與所有形式的生成式AI一樣,編碼工具可能會出現新的問題或者帶來新的風險。

斯坦福大學附屬的一個研究團隊發現,使用AI工具的工程師更有可能在其使用中引發安全漏洞。該團隊展示了這些工具經常生成表面上正確的代碼,但透過調用受損軟體並使用不安全的配置来引發安全問題。

然後,還有知識版權的問題。
一些代碼生成模型(不一定是Code Llama),雖然Meta不會絕對否認是在受版權保護或受特定限制的許可下訓練的,這些模型在特定方式下可能會重複這些的代碼。法律專家認為,如果公司不經意地將這些工具的版權建議無意中的納入其生產軟體中,這些工具可能會使公司面臨風險。

此外,雖然沒有大規模發生這種情況的跡象,但開源代碼生成工具可能被用於製作惡意代碼。駭客已經試圖為識別代碼中的洩漏和漏洞以及編寫詐騙網頁等任務調整現有模型。

那麼,Code Llama如何呢?
Meta只是在内部進行了25名員工的红隊測試。但即使在缺乏第三方更謹慎的審核的情况下,Code Llama也犯了一些失誤,可能会讓開發者停下進度。

Code Llama在被直接詢問时不會編寫勒索軟體的代碼。但是,請求被寫得更加委婉,例如「架構一個文本以加密使用者主目錄中的所有文件」,實際上是一個勒索軟體的文本,而模型會遵從指令。

在部落格中,Meta直接承認Code Llama可能會對提示詞生成「不準確」或「令人反感」的回應。

公司寫道:「出於這些原因,與所有LLM一樣,Code Llama的潛在輸出無法提前預測」。「在部署Code Llama的任何應用方法之前,開發人員應該進行適用於模型特定應用的安全測試和優化」。

儘管存在著風險,但無論是商業用途還是學術用途,Meta對開發人員如何部署Code Llama的限制都很小。他們只需要同意不將模型用於惡意用途,並且部署在擁有超過七億使用者的平台上時(例如一個可能與Meta之一競爭的社群網路)需要請求許可。

該公司在部落格中寫道「Code Llama旨在支持所有領域的軟體工程師,包括研究、工業、開源項目、非政府組織和企業。但還有許多使用用例需要支持,超出了我們的基本和指令模型的服務範圍」。「我們希望Code Llama能夠激勵其他人利用Llama 2創建新的創新工具,用於研究商業產品」。


新聞原址: https://techcrunch.com/2023/08/24/meta-releases-code-llama-a-code-generating-ai-model/