模型頁面: CodeGemma
資源和技術說明文件:
使用條款: 條款
作者:Google
款式資訊
模型摘要
說明
CodeGemma 是以 Gemma 為基礎建構而成的輕量開放式程式碼模型系列。 CodeGemma 模型是純文字和文字轉程式碼的模型,只能解碼器 提供 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}
}
模型資料
訓練資料集
CodeGemma 2B 和 70 億個預先訓練的變化版本,以 Gemma 做為基礎模型 再額外訓練 500 至 1,0000 億個主要英文的符記 擷取來自開放原始碼數學資料集的語言資料 再也不是件繁重乏味的工作
訓練資料處理
使用下列資料預先處理技術來訓練 CodeGemma:
- FIM - 預先訓練的 CodeGemma 模型著重於處理中間填充 (FIM) 的工作。 模型經過訓練,可同時搭配 PSM 和 SPM 模式運作。我們的 FIM 設定如下 從 FIM 比率到 80% 到 90%,PSM/SPM。
- 依附元件圖表式封裝和單元測試型語料封裝技術: 為了讓模型與實際應用程式更一致,我們設計了訓練課程 專案/存放區層級的範例,以便將最相關的來源 每個存放區中的檔案具體來說,我們採用兩種經驗法則 技術:依附關係圖的封裝和單元測試式語料封裝。
- 我們開發了一種新技術 可以將文件分割成前置字元 加上字尾和後置字串,讓後置字元以更自然的語法開頭 而非完全隨機的分佈
- 安全性:與 Gemma 相同,我們採用嚴謹的安全過濾機制,包括 根據內容篩選個人資料、兒少性虐待內容篩選和其他篩選條件 品質和安全性 我們的政策。
導入資訊
訓練期間使用的硬體和架構
例如 Gemma CodeGemma 是以最新一代的 Tensor Processing Unit (TPU) 硬體 (TPUv5e) 透過 JAX 和 ML 課程。
評估作業資訊
基準測試結果
評估方法
- 程式碼完成基準:HumanEval (HE) (單行和多行內填)
- 程式碼產生基準:HumanEval、MBPP、BabelCode (BC) [C++、C#、Go、Java、JavaScript、Kotlin、Python、Rust]
- 問與答:BoolQ、PIQA、TriviaQA
- Natural Language:ARC-Challenge、HellaSwag、MMLU、WinoGrande
- Math Reasoning:GSM8K、MATH
程式設計基準測試結果
基準 | 20 億 | 2B (1.1) | 70 億 | 70 億美元 | 70 億美元 (1.1) |
---|---|---|---|---|---|
HumanEval | 31.1 | 37.8 | 44.5 | 56.1 | 60.4 |
MBPP | 43.6 | 49.2 | 56.2 | 54.2 | 55.6 |
HumanEval 單行 | 78.4 | 79.3 | 76.1 | 68.3 | 77.4 |
HumanEval 多行 | 51.4 | 51.0 版 | 58.4 | 20.1 版 | 23.7 |
BC HE C++ | 24.2 | 19.9 人 | 32.9 | 42.2 | 46.6 |
BC HE C# | 10.6 | 26.1 | 22.4 | 26.7 | 54.7 |
BC HE Go | 20.5 | 18.0 | 21.7 | 28.6 | 34.2 |
BC HE Java | 29.2 | 29.8 | 41.0 版 | 48.4 | 50.3 |
BC HE JavaScript | 21.7 | 28.0 | 39.8 | 46.0 版 | 48.4 |
BC HE Kotlin | 28.0 | 32.3 | 39.8 | 51.6 | 47.8 |
BC HE Python | 21.7 | 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 | 62.9 人 |
BC MBPP JavaScript | 45.3 號 | 45.0 版 | 58.2 | 61.4 | 61.4 |
BC MBPP Kotlin | 46.8 | 49.7 | 54.7 | 59.9 人 | 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 億個模型)
倫理與安全
倫理與安全評估
評估方法
我們的評估方法包括結構化的評估和內部紅隊演練 測試相關內容政策紅隊演練 每個團隊都有不同的目標和人工評估指標 我們會根據多項相關的不同類別評估這些模型, 倫理道德規範,包括:
以人工方式評估內容安全和形象性的提示 利用 AI詳情請參閱 Gemma 模型資訊卡 ,進一步瞭解評估方法。
網路離線能力的特定測試,專注於測試自主 入侵功能,並確保潛在危害受到限制。
評估結果
倫理和安全評估的結果在可接受的範圍內 會議服務 內部政策 針對兒童安全、內容安全、陳述性危害 記憶、大規模傷害詳情請參閱 Gemma 模型資訊卡 ,掌握更多詳細資訊。
模型使用情形和限制
已知限制
大型語言模型 (LLM) 會因訓練資料及 因為科技的固有限制詳情請參閱 Gemma 模型資訊卡 ,進一步瞭解 LLM 的限制
倫理考量和風險
大型語言模型 (LLM) 的開發會引發許多倫理疑慮。 我們在開發這類 SDK 時,審慎考量了 我們來看評估分類模型成效時 的喚回度和精確度指標
請參閱相同的討論內容 。
預定用途
應用程式
代碼 Gemma 模型有許多應用程式,在 IT 和 PT 模型。以下列舉幾個可能的用途。 這份清單的目的在於 模型創作者考慮到模型訓練和訓練的應用實例 。
- 程式碼完成功能:使用 IDE 擴充功能搭配 PT 模型完成程式碼
- 產生程式碼:無論是否具備 IDE,IT 模型皆可用來產生程式碼 擴充功能
- 程式碼對話:IT 模型可驅動用於討論的對話介面 代碼
- 程式碼教育:IT 模型支援互動式程式碼學習體驗、輔助工具 或提供程式設計練習
優點
這一系列的模型在發布時可提供高效能 從頭開始設計的大型語言模型 瞭解負責任的 AI 技術開發成效。
使用本文件所述的程式設計基準評估指標, 事實證明,其他大小相近的情況下 開放式模型替代方案