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