🚀 Diff-Codegen-6B v2 模型卡片
Diff-Codegen-6B v2 是一個用於代碼生成的差異模型,由 CarperAI 發佈。它能根據文本片段和期望更改的描述,以差異格式智能地修改文本,標記出新增、修改和刪除的行。該模型在代碼生成系統的原型設計和實驗方面具有重要價值。
✨ 主要特性
- 專業代碼修改:與普通代碼生成模型的少樣本提示相比,差異模型專門用於對現有代碼提出智能更改建議,尤其適用於較長的代碼段,並且能夠根據自然語言文本描述(以提交消息的形式提供)進行更改。
- 多階段訓練:該模型是對 Salesforce 的 codegen-6B-mono 進行微調得到的。該語言模型首先在 The Pile 上進行預訓練,然後在多種語言的代碼數據語料庫上進行微調,最後在 Python 代碼數據集上進行微調。
📦 安裝指南
文檔未提及安裝步驟,暫不展示。
💻 使用示例
文檔未提及代碼示例,暫不展示。
📚 詳細文檔
模型描述
Diff-Codegen-6B v2 是一個用於代碼生成的差異模型,由 CarperAI 發佈。差異模型是一種自迴歸語言模型,它在以 統一差異格式 格式化的文本編輯上進行訓練。這些差異模型可以根據一段文本和所需更改的描述,對文本進行智能更改,以符合描述,並以差異格式標記出添加、更改和刪除的行。
與普通代碼生成模型的少樣本提示相比,差異模型專門用於對現有代碼提出智能更改建議,尤其適用於較長的代碼段,並且需要根據自然語言文本描述(以提交消息的形式提供)進行更改。
該模型是對 Salesforce 的 codegen-6B-mono 進行微調得到的,在從 GitHub 抓取的大量提交數據集上進行訓練。
Diff-Codegen-6B v2 是一個實驗性研究成果,應以此對待。我們發佈這些結果和這個模型,希望它對更廣泛的研究社區有用,特別是對代碼語言模型感興趣的人。
一個包含簡單模型提示示例的 Colab 筆記本 在此。
訓練數據
該模型是對 Salesforce 的 codegen-6B-mono 進行微調得到的。這個語言模型首先在 The Pile 上進行預訓練,The Pile 是一個由各種網絡語料組成的 800Gb 數據集。The Pile 的數據表和論文分別可以在 這裡 和 這裡 找到。然後,該模型在多種語言的大型代碼數據語料庫上進行微調,最後在 Python 代碼數據集上進行微調。包含這些數據集完整詳細信息的 Codegen 論文可以在 這裡 找到。
我們用於這次微調的數據集包括來自 GitHub 的提交,這些提交是使用 Google BigQuery 公共數據集 獲取的,這是一個大量開源 GitHub 存儲庫的最新公共快照。我們獲取了這個數據集,並使用 BigQuery 根據存儲庫的星標數量進行過濾,排除星標少於 100 的存儲庫,並進一步將查詢限制為僅包含具有開源非版權保護許可證(如 MIT、Apache 等)的存儲庫以及提交消息中字符數超過 10 的提交。我們還將範圍限制在 22 種流行的編程語言、腳本語言和標記語言列表中,包括 Python、HTML、Bash 腳本、SQL、C++ 等。過濾後,得到了一個包含 1900 萬條提交的數據集。
我們的差異模型在來自 BigQuery 的提交數據集上進行訓練,這是一個來自 GitHub 存儲庫的多種編程語言的大規模數據集。我們根據存儲庫的星標數量(>100 星標)、許可證(僅包括開源非版權保護許可的代碼)和文件長度(排除長度超過 2048 個標記的文件)對數據集進行過濾。
該模型使用 Huggingface Codegen 分詞器進行訓練。
訓練細節
該模型在由 Stability AI 提供的 64 個 A100 GPU 上,對 10.8 億個標記進行了 1 個 epoch 的訓練。
每個文件在輸入到語言模型時的格式如下:
<NME> {FILE_NAME}
<BEF> {INPUT_FILE}
<MSG> {COMMIT_MESSAGE}
<DFF> {FILE_DIFF}
預期用途和限制
由於該模型規模較小且僅限於代碼領域,不應期望該模型能夠推廣到代碼以外的領域,也不應期望它能對大量代碼進行(成功的)推理。該模型旨在用於代碼生成系統的原型設計,僅用於實驗目的。該模型按“原樣”提供,不提供任何保證,即使許可證允許,也不應在商業環境中使用。
限制和偏差
由於上下文長度限制較短,並且排除了所有星標少於 100 的存儲庫,我們預計我們的差異模型在代表性不足的語言(如 Lean 或 Coq)上的表現會不佳。
不應將該模型的輸出視為正確和安全的代碼。該模型不應在任何對安全至關重要的關鍵任務環境中使用。在運行該模型的輸出時,應儘可能在沙箱(如 gVisor)中進行,因為該模型很可能會生成可能刪除文件、發送 HTTP 請求或以其他方式包含嚴重安全漏洞的代碼。
與其他語言模型一樣,Diff-Codegen 容易產生幻覺以及輸出有偏差、刻板印象或有毒的內容。在從該模型生成內容時,不能保證輸出的真實性。
評估結果
完整的評估結果請參閱 我們的博客文章。
🔧 技術細節
該模型在由 Stability AI 提供的 64 個 A100 GPU 上,對 10.8 億個標記進行了 1 個 epoch 的訓練。訓練數據經過多輪篩選和處理,使用 Huggingface Codegen 分詞器進行訓練。輸入文件按照特定格式進行處理,以適應語言模型的輸入要求。
📄 許可證
該模型採用 MIT 許可證。
致謝
我們要感謝 Honglu Fan、Harry Saini、Herbie Bradley、Reshinth Adithyan 和 Joel Lehman 所做的努力!感謝 Nitarshan Rajkumar 對這個模型卡片的反饋。