論文閱讀_代碼生成模型_CodeLlama

英文名稱: Code Llama: Open Foundation Models for Code
中文名稱: Code Llama:開放基礎代碼模型
鏈接: https://arxiv.org/abs/2308.12950
代碼: https://github.com/facebookresearch/codellama
作者: Baptiste Rozière, Jonas Gehring, Fabian Gloeckle, Sten Sootla, Itai Gat, Xiaoqing Ellen Tan, Yossi Adi, Jingyu Liu, Romain Sauvestre, Tal Remez, Jérémy Rapin, Artyom Kozhevnikov, Ivan Evtimov, Joanna Bitton, Manish Bhatt, Cristian Canton Ferrer, Aaron Grattafiori, Wenhan Xiong, Alexandre Défossez, Jade Copet, Faisal Azhar, Hugo Touvron, Louis Martin, Nicolas Usunier, Thomas Scialom, Gabriel Synnaeve
機構: Meta AI
日期: 2023-08-24
引用次數: 319

1 讀后感

Code Llama 是一個基于 llama2 模型進行訓練得到的代碼生成大模型。又針對代碼填充、長上下文等特殊條件以及人類通常用法進行了優化,因此它集成了 llama2 對自然語言的理解,并針對代碼生成場景進行了優化。

除了調用推理,我們一般主要利用微調模型來進行改進模型效果,因此選擇一個好的基礎模型作為工作基礎非常重要,Code Llama 是當前代碼生成模型中比較推薦的基礎模型。

論文結構針對幾項主要貢獻進行了層層深入的討論。在整理時,我把實現部分歸納了一下,把同一主題的內容放在一起了。

2 摘要

目標:發布 Code Llama 代碼模型系列,基于 Llama 2 開發,提供了在開放模型中最先進的性能、填充能力、支持大型輸入上下文,并具有 zero-shot 指令跟隨能力,用于編程任務。

方法:提供多個版本以覆蓋各種應用場景:基礎模型(Code Llama)、Python 專業化模型(Code Llama-Python)和指令引導模型(Code Llama-Instruct),分別具有 7B、13B 和 34B 參數。

結論:這些模型在性能、填充能力、支持大型輸入上下文以及 zero-shot 指令跟隨能力方面表現出色。

3 引言

主要貢獻

  • 基于 llama2 訓練:所有 Code Llama 模型都使用 Llama2 模型權重進行初始化,實驗證明它優于僅在代碼上訓練的相同架構。
  • 代碼填充:生成代碼時,需要考慮整個周圍上下文的同時填充代碼的缺失部分,因此通過多任務目標訓練模型,包括自回歸和因果填充預測。
  • 長上下文:將最大上下文長度從 4,096 token 擴展到 100,000 個 token。
  • 指令微調:在專有 Instruct 數據的混合上進行了進一步微調,以提高安全性和實用性。

4 Code Llama 實現

4.1 發布了三個版本

  • Code Llama:基礎模型。
  • Code Llama - Python:用于 Python 版本。
  • Code Llama - Instruct:引導微調版本。

4.2 訓練數據

從 Llama 2 的 7B、13B 和 34B 版本開始,在初始階段使用 500B token 訓練 Code Llama。

4.3 代碼填充

代碼填充的目標是在給定周圍上下文情況下預測程序缺失部分。

使用因果掩蔽的概念來訓練填充模型。將字符級別的訓練文檔拆分為前綴、中間部分和后綴,拆分位置獨立于文檔長度上的均勻分布進行采樣。

4.4 長上下文微調

提出了一個專用的長上下文微調(LCFT)階段,模型支持 16,384 個 token 的序列,高于 Llama 2 和初始代碼訓練階段使用的 4,096 個 token。對旋轉位置嵌入進行優化,將基周期從 10,000 增加到 1,000,000 以進行微調。使模型支持處理更大的序列,并減少短距離注意力的傾向。

4.5 指令微調

使用三種不同類型的數據訓練:

4.5.1 專有數據集

使用 Llama 2 論文中的指令調整數據集 “RLHF V5” 微調模型,通過人類反饋和人類反饋注釋的強化學習的幾個階段收集,它結合了數以千計的監督微調示例,每個示例都包含用戶和工具之間的多輪對話。

4.5.2 自我指導

專有數據集包含幾個與代碼相關的任務示例。

使用執行反饋來選擇數據來訓練我們的指令模型,而不是人工反饋。我們按照以下方法構建自學數據集,得到約 14,000 個問題 - 測試 - 解決方案三元組。

  1. 通過提示生成 62,000 個訪談式編程問題 Llama 2 70B。詳見附錄中圖 -9。
  2. 通過刪除完全重復的問題來消除重復問題集,從而產生約 52,000 個問題。
  3. 對于每個問題:
    • 通過提示 Code Llama 7B 生成單元測試(圖 10 中包含提示)。
    • 通過提示 Code Llama 7B 生成 10 個 Python 解決方案(圖 11)。
    • 對十個解決方案運行單元測試。將通過測試的第一個解決方案(及其相應的問題和測試)添加到自指導數據集。

我們使用 Code Llama 7B 來生成測試和 Python 解決方案,因為作者發現,在相同的計算預算下,它比使用 34B 模型為每個問題生成更少的解決方案更有效。

4.5.3 排演

為了防止模型在一般編碼和語言理解能力上倒退,Code Llama - Instruct 還使用來自代碼數據集(6%)和自然語言數據集(2%)的一小部分數據進行訓練。

4.6 訓練方法

具體參數請見論文原文:Training details 部分。

4.7 結果

主實驗結果如下,后面還有一些消融實驗,用于展示文中幾種優化的具體效果。

5 相關工作

相關工作中列出了其它主流的代碼生成工具,也可以看一下。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712583.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【前端素材】推薦優質在線花卉商城電商網頁Flowery平臺模板(附源碼)

一、需求分析 1、系統定義 在線花卉商城是一個通過互聯網提供花卉銷售服務的電子商務平臺,用戶可以在該平臺上瀏覽、選擇和購買各種花卉產品。 2、功能需求 在線花卉商城是一個通過互聯網提供花卉銷售服務的電子商務平臺,用戶可以在該平臺上瀏覽、選…

vscode在windows環境不能使用終端安裝依賴

會報這樣的錯誤提示 解決思路: 1、vscode用管理員打開 (非必須) 2、設置策略 打開 windows powerShell . 輸入命令 set-ExecutionPolicy RemoteSigned 然后 Y . 查看是否設置成功 get-executionpolicy 3、下載總是超時,設置鏡像源 查看鏡像源 npm …

【知識分享】vue制作一個頁面計算器

1.制作思路 制作一個簡單的頁面計算器可以分為以下幾個步驟: (1)創建 Vue 組件,包括顯示屏和按鈕組件。 (2)設置數據屬性,用于存儲計算器的當前狀態(如顯示屏上的數字&#xff09…

藍橋杯-天數

//此題屬于簡單 #include <iostream> using namespace std; int main() { int n; cin>>n; if(n2) { cout<<28; return 0; } if(n1||n3||n5||n7||n8||n10||n12)//一定要記得寫成n什么&#xff0c;每個都要寫&#xff0c;不要漏掉 { cou…

常見漏洞的流量特征

1、SQL注入漏洞 查看url / Referer字段/User-Agent字段/cookie字段 出現一些特殊字符&#xff08;eg&#xff1a;單引號【‘】、雙引號【“”】、括號【&#xff08;&#xff09;】、單引號括號【‘&#xff08;】、雙引號括號【“&#xff08;】等一些常見的特殊的字符&#…

數通HCIE和云計算HCIE哪個好一點?

數通是網絡的基礎知識&#xff0c;也是入門人員必學的方向&#xff0c;相對也會簡單些&#xff0c;學習數通&#xff0c;可以很好的學習其他的方向。數通的就業范圍也比較廣&#xff0c;運營商、企業、政府還是互聯網公司&#xff0c;都需要大量的數通工程師來搭建和維護網絡&a…

探索rsync遠程同步和SSH免密登錄的奧秘

目錄 集群分發腳本xsyncscp&#xff08;secure copy&#xff09;安全拷貝rsync 遠程同步工具集群分發腳本 SSH免密登錄免密登錄原理SSH免密登錄配置生成公鑰和私鑰授權測試 在現代科技飛速發展的時代&#xff0c;數據的備份和遷移成為了一個重要的課題。其中&#xff0c;rsync遠…

大數據畢業設計之前端04:管理系統為什么要自己實現圖標組件

關鍵字&#xff1a;BuildAdmin、Icon、圖標、Vue、ElementUI 前言 說到圖標&#xff0c;在BuildAdmin中用到的地方很多。比如上一篇中的折疊圖標&#xff0c;還有菜單欄圖標、導航菜單欄圖標等。常見的圖標有&#xff1a;ElementUI圖標、font-awesome、iconfont阿里圖標以及本…

94. 遞歸實現排列型枚舉 刷題筆記

思路 依次枚舉 每個位置用哪個數字 要求按照字典序最小來輸出 而每次搜索下一層時i都是從1開始 也就是說 如果有小的數可以填上 那么該方案會填上這個數字 例如 當n等于3 第一次搜索 1 2 3輸出后返回 返回后此時i3 第二個位置填3 1 3 2 輸出后返回 此時返回到第一層…

云計算 2月21號 (linux文件及用戶管理)

一、文件管理 1.1快捷鍵 編輯命令&#xff1a; Ctrl a &#xff1a;移到命令行首 Ctrl e &#xff1a;移到命令行尾 Ctrl u &#xff1a;從光標處刪除至命令行首 Ctrl k &#xff1a;從光標處刪除至命令行尾 Ctrl w &#xff1a;從光標處刪除至字首 Ctrl d &#x…

20240301-2-ZooKeeper面試題(二)

11. Chroot 特性 3.2.0 版本后&#xff0c;添加了 Chroot 特性&#xff0c;該特性允許每個客戶端為自己設置一個命名空間。如果一個客戶端設置了 Chroot&#xff0c;那么該客戶端對服務器的任何操作&#xff0c;都將會被限制在其自己的命名空間下。 通過設置 Chroot&#xff…

Win11遠程桌面登陸教程

必備軟件 Remote Desktop 這個軟件用于便捷操作 Tailscale 這個用于創建虛擬局域網讓兩臺設備處于同一個網段便于遠程連接 詳細步驟 0、打開電腦設置允許遠程連接模式 把這里的開關打開就行。 1、設置允許登陸的用戶以及密碼 在管理員模式下的宿主電腦上面輸入以下命令…

支付寶小程序中喚起支付(前后端)

Java后臺獲取支付寶支付唯一訂單號 /*** 支付寶小程序支付*/PostMapping(value "/xcxPayZFBTHREE")ResponseBodypublic Map<String,Object> xcxPayZFBTHREE(RequestBody byte[] req) {HashMap<String, Object> objectObjectMap new HashMap<>();…

jax可微分編程的筆記(7)

jax可微分編程的筆記(7) 第七章 優化算法 從優化理論的整體框架來看&#xff0c;任何優化問題都可以被分解為 模型的建立&#xff0c;損失函數的構造以及優化算法的選取這三個部分。 其中優化算法的具體形式&#xff0c;又依賴于步長下降方向和終止條件 的選取。 對于多維函…

JavaScript 瀏覽器元素滾動 scrollIntoView()

scrollIntoView() ? DOM 規范中沒有涉及的一個問題是如何滾動頁面中的某個區域。為填充這方面的缺失&#xff0c;不同瀏覽器實現了不同的控制滾動的方式。在所有這些專有方法中&#xff0c;HTML5 選擇了標準化 scrollIntoView()。 ? scrollIntoView() 方法存在于所有 HTML …

深度學習中常見的backbone、neck、head的理解

在深度學習中&#xff0c;常見的backbone、neck和head是指網絡結構的不同部分&#xff0c;它們各自承擔著不同的功能&#xff1a; Backbone&#xff08;骨干網絡&#xff09;&#xff1a;骨干網絡通常是指整個深度神經網絡的主要部分&#xff0c;負責提取輸入數據的特征。骨干網…

寒假作業Day 02

這是第二天的作業&#xff0c;fighting&#xff01; Day 02 一、選擇題 首先char* s[6]是指針數組&#xff0c;也就是其存儲的都是這些字符串的地址&#xff0c;其實際上的類型為char**&#xff0c;而fun函數傳入了s數組的首地址。而后續fun函數中打印字符&#xff0c;p[i]即…

ad18學習筆記十六:如何放置精準焊盤到特定位置,捕抓功能的講解

網上倒是一堆相關的指導 AD軟件熟練度提升&#xff0c;如何設置板框捕捉&#xff1f;_嗶哩嗶哩_bilibili 關于Altium Designer 20 的捕抓功能的講解_ad捕捉設置-CSDN博客 AD軟件捕捉進階實例&#xff0c;如何精確的放置布局元器件&#xff1f;_嗶哩嗶哩_bilibili AD繪制PCB…

項目-SERVER模塊-Socket模塊

Socket模塊 一、Socket模塊是什么&#xff1f;二、代碼實現1.成員變量2.構造、析構函數3.獲取套接字文件描述符4.創建套接字5.綁定地址信息6.開始監聽連接請求7.向服務器發起連接8.獲取新連接9.接收數據10.非阻塞接收數據11.發送數據12.非阻塞發送數據13.關閉套接字14.創建一個…

何時使用子查詢?一個使用子查詢的SQL示例及其工作原理

何時使用子查詢&#xff1f;給出一個使用子查詢的SQL示例&#xff0c;并解釋其工作原理。 子查詢&#xff0c;也稱為內部查詢或嵌套查詢&#xff0c;是嵌入在另一個SQL查詢中的查詢。外部查詢&#xff0c;有時稱為外部查詢或主查詢&#xff0c;是包含子查詢的查詢。子查詢可以…