CodeGemma 模型資訊卡

模型頁面: CodeGemma

資源和技術說明文件:

使用條款: 條款

作者:Google

款式資訊

模型摘要

說明

CodeGemma 是一系列以 Gemma 為基礎建構的輕量開放程式碼模型系列。CodeGemma 模型是文字轉文字和程式碼解碼器專用模型,可做為 70 億個預先訓練的變化版本,專門處理程式碼完成和程式碼產生工作、經過 70 億個參數指令調整,用於編寫程式碼聊天和指令,之後還有 20 億種預先訓練的參數變化版本,可快速完成程式碼。

輸入和輸出

  • 輸入內容:針對預先訓練模型的變化版本:適用於程式碼完成和產生情境的程式碼前置字串和後置字串,或自然語言文字/提示。針對指令調整模型變化版本:自然語言文字或提示。

  • 輸出內容:針對預先訓練模型變化版本:填入中間程式碼、程式碼和自然語言。針對指令調整模型變化版本:程式碼和自然語言

引文

@article{codegemma_2024,
    title={CodeGemma: Open Code Models Based on Gemma},
    url={https://goo.gle/codegemma},
    author={ {CodeGemma Team} and Hartman, Ale Jakse and Hu, Andrea and Choquette-Choo, Christopher A. and Zhao, Heri and Fine, Jane and Hui,
    Jeffrey and Shen, Jingyue and Kelley, Joe and Howland, Joshua and Bansal, Kshitij and Vilnis, Luke and Wirth, Mateo and Nguyen, Nam, and Michel, Paul and Choy, Peter and Joshi, Pratik and Kumar, Ravin and Hashmi, Sarmad and Agrawal, Shubham and Zuo, Siqi and Warkentin, Tris and Gong, Zhitao et al.},
    year={2024}
}

模型資料

訓練資料集

使用 Gemma 做為基礎模型時,CodeGemma 2B 和 7B 的預先訓練變體會額外進行 500 至 1, 0000 億個符記進行訓練,這些符記主要是來自開放原始碼數學資料集和合成程式碼的英文資料。

訓練資料處理

下列資料預先處理技術已套用至訓練 CodeGemma:

  • FIM - 預先訓練的 CodeGemma 模型主要著重於填充式 (FIM) 工作。模型經過訓練,可與 PSM 和 SPM 模式搭配運作。我們的 FIM 設定在 PSM/SPM 的 FIM 比率為 80% 至 90%。
  • 依附元件圖形型封裝和以單元測試為基礎的 Lexical 封裝技術:為改善模型與實際應用程式的一致性,我們在專案/存放區層級建立訓練範例結構,並並置於每個存放區中最相關的來源檔案。具體來說,我們採用了兩種經驗法則:依依附元件圖式封裝和單元測試的詞法封裝。
  • 我們開發了一種新技術,用於將文件分割成前置字串、中間和後置字串,讓後置字串一開始的邏輯較語法自然,而不是純隨機的分佈。
  • 安全:與 Gemma 類似,我們部署了嚴格的安全性篩選功能,包括篩選個人資料、兒少性虐待內容篩選功能,以及根據我們的政策,根據內容品質和安全性進行其他篩選。

導入作業資訊

訓練期間使用的硬體和架構

CodeGemma 和 Gemma 一樣是使用 JAXML Pathways 使用,以最新一代的 Tensor Processing Unit (TPU) 硬體 (TPUv5e) 訓練而成。

評估作業資訊

基準測試結果

評估方法

程式設計基準測試結果

Benchmark 20 億 2B (1.1) 70 億次 70 億 7B-IT (1.1)
HumanEval 31.1 37.8 44.5 56.1 60.4
MBPP 43.6 49.2 56.2 54.2 55.6
人類效應 (單行) 78.4 79.3 76.1 68.3 77.4
人造多線 51.4 51.0 58.4 20.1 23.7
BC HE C++ 24.2 歐元 3,290 42.2 46.6
BC HE C# 10.6 26.1 2,240 26.7 54.7
BC HE Go 2,050 18.0 2,171 28.6 34.2
BC HE Java 29.2 29.8 41.0 48.4 50.3
BC HE JavaScript 2,171 28.0 39.8 46.0 48.4
BC HE Kotlin 28.0 32.3 39.8 51.6 47.8
BC HE Python 2,171 36.6 42.2 48.4 54.0
BC HE Rust 26.7 24.2 34.1 36.0 37.3
BC MBPP C++ 47.1 38.9 53.8 56.7 63.5
BC MBPP C# 28.7 45.3 32.5 41.2 62.0
BC MBPP Go 45.6 38.9 43.3 46.2 53.2
BC MBPP Java 41.8 49.7 50.3 57.3 歐元
BC MBPP JavaScript 45.3 45.0 58.2 61.4 61.4
BC MBPP Kotlin 46.8 49.7 54.7 歐元 62.6
BC MBPP Python 38.6 52.9 59.1 62.0 60.2
BC MBPP Rust 45.3 47.4 52.9 53.5 52.3

自然語言基準 (70 億個模型)

比較 Gemma、CodeGemma PT 和 CodeGemma IT 各種語言能力指標的長條圖。這三種模型幾乎都相當類似,其中 CodeGemma 仍具備強大的自然語言理解能力。

倫理和安全

倫理和安全評估

評估方法

我們的評估方法包括結構化評估,以及針對相關內容政策的內部紅隊測試。紅隊是由多個不同團隊執行,每個團隊都有不同的目標和人工評估指標。我們根據多個與倫理和安全相關的類別 評估這些模型的成效,包括:

  • 針對內容安全性和代表性危害的提示,進行人為評估。如要進一步瞭解評估方法,請參閱 Gemma 模型資訊卡

  • 對網路關機功能的具體測試,著重於測試自主駭客功能,並確保潛在危害有限。

評估結果

倫理與安全評估的結果超出可接受的範圍,符合內部政策的規範,適用於兒童安全、內容安全、表示性傷害、記憶、大規模傷害等類別。詳情請參閱 Gemma 模型資訊卡

模型的使用方式和限制

已知限制

大型語言模型 (LLM) 有限制,取決於其訓練資料和技術固有的限制。如要進一步瞭解 LLM 的限制,請參閱 Gemma 模型資訊卡

倫理考量與風險

大型語言模型 (LLM) 的開發引發了幾項倫理問題。我們在開發這些模型時,仔細考量了多個面向。

如要進一步瞭解模型詳細資料,請參閱 Gemma 模型資訊卡中的相同討論

預定用途

應用程式

Code Gemma 模型具備廣泛的應用程式,並依 IT 和 PT 模型而異。以下清單並未涵蓋可能用途。此清單的目的是提供背景資訊,說明模型創作者在模型訓練和開發過程中可能考慮的用途。

  • 完成程式碼:PT 模型可用於完成具有 IDE 擴充功能的程式碼
  • 程式碼產生:IT 模型可用來產生無論是否有 IDE 擴充功能的程式碼
  • 程式碼對話:IT 模型可驅動對話介面,也就是討論程式碼
  • 程式碼教育:IT 模型支援互動式程式碼學習體驗 協助修正語法或提供程式設計練習

優點

發布時,這個模型系列提供以程式碼為導向的高效能大型語言模型實作項目,相較於類似規模的模型,負責任的 AI 技術開發作業是從頭設計出來的。

使用本文件所述的程式設計基準評估指標,這些模型已證明,可以為其他大小相近的開放式模型替代方案提供優異效能。