今天,Meta發布了Code Llama,一款可以使用文本提示生成代碼的大型語言模型(LLM)。Code Llama在代碼任務上是公開可用的LLM中最先進的,它有可能讓當前開發者的工作流程更快更高效,也降低了學習編程的門檻。Code Llama有可能被用作一種生產力和教育工具,幫助程序員編寫更健壯、更有文檔的軟件。
Code Llama是一個新的大型語言模型,專門用于生成代碼,它基于Meta的Llama 2基礎模型構建。它可以從自然語言提示生成代碼。
Code Llama是免費的,可用于研究和商業用途。
Code Llama是基于Llama 2構建的,有三種模型:
Code Llama,基礎的代碼模型;
Code Llama - Python,專門針對Python;
以及Code Llama - Instruct,它是為了理解自然語言指令而微調的。
Code Llama在代碼生成基準測試(如HumanEval和MBPP)上優于其他公開可用的模型。它與ChatGPT可媲美。
發布了三種大小的Code Llama模型 - 7B、13B和34B參數。34B模型具有最佳性能,但較小的模型更快。
Code Llama支持許多流行的編程語言,并可以處理長達10萬個標記的輸入上下文。
潛在的應用包括幫助開發人員更有效地編寫、調試和記錄代碼。它還可以幫助降低學習編程的門檻。
Code Llama 工作原理
Code Llama是Llama 2的一個代碼專用版本,它是通過在Llama 2的代碼特定數據集上進一步訓練,從同一數據集中采樣更多的數據進行更長時間的訓練而創建的。本質上,Code Llama具有增強的編碼能力,建立在Llama 2之上。它可以從代碼和自然語言提示(例如,“寫一個輸出斐波那契數列的函數。”)生成代碼,以及關于代碼的自然語言。它也可以用于代碼補全和調試。它支持許多當今最流行的語言,包括Python, C++, Java, PHP, Typescript (Javascript), C#, 和Bash(請參閱下面參考的研究論文以獲得完整的列表)。
我們將發布三種尺寸的 Code Llama,分別具有 7B、13B 和 34B 參數。每個模型都使用 500B 代碼令牌和代碼相關數據進行訓練。7B 和 13B 基礎模型和指令模型也經過了中間填充 (FIM) 功能的訓練,允許它們將代碼插入到現有代碼中,這意味著它們可以支持開箱即用的代碼完成等任務。
這三種模型滿足不同的服務和延遲要求。例如,7B 模型可以在單個 GPU 上運行。34B 模型返回最佳結果并提供更好的編碼輔助,但較小的 7B 和 13B 模型速度更快,更適合需要低延遲的任務,例如實時代碼完成。
Code Llama 模型提供了具有多達 100,000 個上下文標記的穩定生成。所有模型都在 16,000 個標記的序列上進行訓練,并在最多 100,000 個標記的輸入上顯示出改進。
除了是生成更長程序的先決條件之外,擁有更長的輸入序列還可以為代碼LLM解鎖令人興奮的新用例。例如,用戶可以為模型提供來自其代碼庫的更多上下文,以使各代更相關。它還有助于在較大的代碼庫中調試場景,在這種情況下,掌握與具體問題相關的所有代碼對于開發人員來說可能是一項挑戰。當開發人員面臨調試大量代碼時,他們可以將整個代碼長度傳遞到模型中。
此外,我們還進一步微調了 Code Llama 的兩個附加變體:Code Llama - Python 和 Code Llama - Instruct。
Code Llama - Python 是 Code Llama 的語言專用變體,在 Python 代碼的 100B 標記上進一步微調。因為 Python 是代碼生成方面最具基準測試的語言,并且因為 Python 和PyTorch在 AI 社區中發揮著重要作用,所以我們相信專門的模型可以提供額外的實用性。
Code Llama - Instruct 是 Code Llama 的指令微調和對齊變體。指令調整繼續訓練過程,但目標不同。該模型接受“自然語言指令”輸入和預期輸出。這使得它能夠更好地理解人們對提示的期望。我們建議在使用 Code Llama 進行代碼生成時使用 Code Llama - Instruct 變體,因為 Code Llama - Instruct 已經過微調,可以用自然語言生成有用且安全的答案。
我們不建議使用 Code Llama 或 Code Llama - Python 執行一般自然語言任務,因為這兩個模型都不是為遵循自然語言指令而設計的。Code Llama 專門用于特定于代碼的任務,不適合作為其他任務的基礎模型。
使用 Code Llama 模型時,用戶必須遵守我們的許可和可接受的使用政策。
評估 Code Llama 的性能
為了針對現有解決方案測試 Code Llama 的性能,我們使用了兩個流行的編碼基準:HumanEval和 Mostly Basic Python Programming ( MBPP )。HumanEval 測試模型根據文檔字符串完成代碼的能力,MBPP 測試模型根據描述編寫代碼的能力。
我們的基準測試表明,Code Llama 的表現優于開源、特定于代碼的 Llama,并且優于 Llama 2。例如,Code Llama 34B 在 HumanEval 上得分為 53.7%,在 MBPP 上得分為 56.2%,與其他狀態相比最高。最先進的開放解決方案,與 ChatGPT 相當。
與所有尖端技術一樣,Code Llama 也存在風險。負責任地構建人工智能模型至關重要,我們在發布 Code Llama 之前采取了許多安全措施。作為我們紅隊工作的一部分,我們對 Code Llama 生成惡意代碼的風險進行了定量評估。我們創建了試圖以明確意圖征求惡意代碼的提示,并根據 ChatGPT (GPT3.5 Turbo) 對 Code Llama 對這些提示的響應進行了評分。我們的結果發現,Code Llama 的回答更安全。
有關負責任人工智能、進攻性安全工程、惡意軟件開發和軟件工程領域專家的紅隊工作的詳細信息,請參閱研究論文。
發布Code Llama
程序員已經在使用LLM來協助完成各種任務,從編寫新的軟件到調試現有的代碼。我們的目標是讓開發者的工作流程更高效,讓他們能夠專注于他們工作中最具人性化的方面,而不是重復性的任務。
在Meta,我們相信AI模型,特別是編碼用的LLM,從開放的方式中受益最多,無論是在創新還是安全方面。公開可用的、代碼特定的模型可以促進開發新技術,改善人們的生活。通過發布像Code Llama這樣的代碼模型,整個社區可以評估它們的能力,發現問題,并修復漏洞。
Code Llama 的訓練方法可在我們的Github 存儲庫中找到,還提供模型參數。
生成式人工智能編碼的未來
Code Llama 旨在為所有領域的軟件工程師提供支持,包括研究、工業、開源項目、非政府組織和企業。但是,還有更多的用例需要支持,超出了我們的基礎模型和指導模型所能提供的服務范圍。 我們希望 Code Llama 能夠激勵其他人利用 Llama 2 為研究和商業產品創建新的創新工具。
審核編輯:劉清
-
PHP
+關注
關注
0文章
452瀏覽量
26687 -
python
+關注
關注
56文章
4797瀏覽量
84688 -
GPU芯片
+關注
關注
1文章
303瀏覽量
5812 -
ChatGPT
+關注
關注
29文章
1561瀏覽量
7670 -
LLM
+關注
關注
0文章
288瀏覽量
335
原文標題:Meta發布最先進的代碼生成模型Code Llama
文章出處:【微信號:軟件質量報道,微信公眾號:軟件質量報道】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論