🚀 OctoCoder
OctoCoder是一個經過指令調優的模型,通過在CommitPackFT和OASST上微調StarCoder創建而成。它能處理多種編程語言的任務,在代碼生成、修復和解釋等方面表現出色,為開發者提供了強大的代碼輔助能力。
🚀 快速開始
使用示例
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "bigcode/octocoder"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("Question: Please write a function in Python that performs bubble sort.\n\nAnswer:", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
✨ 主要特性
- 多語言支持:支持80多種編程語言。
- 指令調優:基於CommitPackFT和OASST進行微調,能更好地遵循指令。
- 廣泛應用:可用於代碼生成、修復和解釋等多種場景。
📦 安裝
使用以下命令安裝所需庫:
pip install -q transformers
📚 詳細文檔
模型概述
OctoCoder是一個具有155億參數的指令調優模型,通過在CommitPackFT和OASST上微調StarCoder創建而成,如OctoPack論文所述。
OctoPack相關信息
使用說明
預期用途
模型會遵循輸入中提供的指令。輸入時應始終以 "Question: " 開頭,並以 "Answer:" 結尾,例如:"Question: Please write a function in Python that performs bubble sort.\n\nAnswer:"
歡迎在社區標籤中分享你的生成結果!
訓練信息
模型
- 架構:具有多查詢注意力和中間填充目標的GPT - 2模型
- 步驟:250k預訓練和30次指令調優
- 預訓練令牌:1萬億預訓練和200萬指令調優
- 精度:bfloat16
硬件
- 預訓練:
- GPU:512個Tesla A100
- 訓練時間:24天
- 指令調優:
- GPU:8個Tesla A100
- 訓練時間:4小時
軟件
評估指標
任務類型 |
數據集名稱 |
pass@1值 |
文本生成(合成Python) |
HumanEvalSynthesize Python |
46.2 |
文本生成(合成JavaScript) |
HumanEvalSynthesize JavaScript |
39.2 |
文本生成(合成Java) |
HumanEvalSynthesize Java |
38.2 |
文本生成(合成Go) |
HumanEvalSynthesize Go |
30.4 |
文本生成(合成C++) |
HumanEvalSynthesize C++ |
35.6 |
文本生成(合成Rust) |
HumanEvalSynthesize Rust |
23.4 |
文本生成(合成平均) |
HumanEvalSynthesize Average |
35.5 |
文本生成(修復Python) |
HumanEvalFix Python |
30.4 |
文本生成(修復JavaScript) |
HumanEvalFix JavaScript |
28.4 |
文本生成(修復Java) |
HumanEvalFix Java |
30.6 |
文本生成(修復Go) |
HumanEvalFix Go |
30.2 |
文本生成(修復C++) |
HumanEvalFix C++ |
26.1 |
文本生成(修復Rust) |
HumanEvalFix Rust |
16.5 |
文本生成(修復平均) |
HumanEvalFix Average |
27.0 |
文本生成(解釋Python) |
HumanEvalExplain Python |
35.1 |
文本生成(解釋JavaScript) |
HumanEvalExplain JavaScript |
24.5 |
文本生成(解釋Java) |
HumanEvalExplain Java |
27.3 |
文本生成(解釋Go) |
HumanEvalExplain Go |
21.1 |
文本生成(解釋C++) |
HumanEvalExplain C++ |
24.1 |
文本生成(解釋Rust) |
HumanEvalExplain Rust |
14.8 |
文本生成(解釋平均) |
HumanEvalExplain Average |
24.5 |
🔧 技術細節
- 模型架構:採用具有多查詢注意力和中間填充目標的GPT - 2模型架構,這種架構有助於提高模型在處理代碼相關任務時的效率和準確性。
- 訓練數據:使用了CommitPackFT和OASST等數據進行微調,這些數據包含了大量高質量的代碼和指令信息,使得模型能夠更好地理解和遵循指令。
- 評估指標:使用pass@1作為評估指標,能夠直觀地反映模型在代碼生成、修復和解釋等任務上的性能。
📄 許可證
本模型使用bigcode - openrail - m許可證。
📖 引用
@article{muennighoff2023octopack,
title={OctoPack: Instruction Tuning Code Large Language Models},
author={Niklas Muennighoff and Qian Liu and Armel Zebaze and Qinkai Zheng and Binyuan Hui and Terry Yue Zhuo and Swayam Singh and Xiangru Tang and Leandro von Werra and Shayne Longpre},
journal={arXiv preprint arXiv:2308.07124},
year={2023}
}