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