🚀 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}
}