🚀 Granite-3B-Code-Instruct-128K
Granite-3B-Code-Instruct-128K 是一个具有 30 亿参数的长上下文指令模型。它基于 Granite-3B-Code-Base-128K 进行微调,训练数据不仅包含了用于训练原始 Granite 代码指令模型的 许可数据,还加入了专门为解决长上下文问题而合成生成的代码指令数据集。通过让模型接触短上下文和长上下文数据,旨在提升其长上下文处理能力,同时不牺牲短输入上下文下的代码生成性能。
🚀 快速开始
预期用途
该模型旨在对长达 128K 的长上下文输入中的编码相关指令做出响应,可用于构建编码助手。
生成示例
以下是一个如何使用 Granite-3B-Code-Instruct 模型的简单示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
model_path = "ibm-granite/granite-3b-code-instruct-128k"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
chat = [
{ "role": "user", "content": "Write a code to find the maximum value in a list of numbers." },
]
chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
input_tokens = tokenizer(chat, return_tensors="pt")
for i in input_tokens:
input_tokens[i] = input_tokens[i].to(device)
output = model.generate(**input_tokens, max_new_tokens=100)
output = tokenizer.batch_decode(output)
for i in output:
print(i)
✨ 主要特性
- 长上下文处理能力:能够处理长达 128K 的输入,有效应对长上下文编码指令。
- 代码生成性能:在短输入上下文下也能保持良好的代码生成性能。
📦 模型信息
属性 |
详情 |
模型类型 |
text-generation |
训练数据集 |
bigcode/commitpackft、TIGER-Lab/MathInstruct、meta-math/MetaMathQA、glaiveai/glaive-code-assistant-v3、glaive-function-calling-v2、bugdaryan/sql-create-context-instruction、garage-bAInd/Open-Platypus、nvidia/HelpSteer、bigcode/self-oss-instruct-sc2-exec-filter-50k |
评估指标 |
code_eval |
库名称 |
transformers |
标签 |
code、granite |
开发者 |
IBM Research |
GitHub 仓库 |
ibm-granite/granite-code-models |
论文 |
Scaling Granite Code Models to 128K Context |
发布日期 |
2024 年 7 月 18 日 |
许可证 |
Apache 2.0 |
📚 详细文档
训练数据
Granite 代码指令模型在短上下文和长上下文数据的混合数据上进行训练,具体如下:
基础设施
IBM 使用两个超级计算集群(Vela 和 Blue Vela)来训练 Granite 代码模型,这两个集群分别配备了 NVIDIA A100 和 H100 GPU。这些集群为在数千个 GPU 上训练模型提供了可扩展且高效的基础设施。
评估结果
任务类型 |
数据集 |
指标 |
值 |
验证状态 |
文本生成 |
bigcode/humanevalpack(HumanEvalSynthesis (Python)) |
pass@1 |
53.7 |
未验证 |
文本生成 |
bigcode/humanevalpack(HumanEvalSynthesis (Average)) |
pass@1 |
41.4 |
未验证 |
文本生成 |
bigcode/humanevalpack(HumanEvalExplain (Average)) |
pass@1 |
25.1 |
未验证 |
文本生成 |
bigcode/humanevalpack(HumanEvalFix (Average)) |
pass@1 |
26.2 |
未验证 |
文本生成 |
repoqa(RepoQA (Python@16K)) |
pass@1 (thresh=0.5) |
48.0 |
未验证 |
文本生成 |
repoqa(RepoQA (C++@16K)) |
pass@1 (thresh=0.5) |
36.0 |
未验证 |
文本生成 |
repoqa(RepoQA (Java@16K)) |
pass@1 (thresh=0.5) |
38.0 |
未验证 |
文本生成 |
repoqa(RepoQA (TypeScript@16K)) |
pass@1 (thresh=0.5) |
39.0 |
未验证 |
文本生成 |
repoqa(RepoQA (Rust@16K)) |
pass@1 (thresh=0.5) |
29.0 |
未验证 |
🔧 技术细节
Granite 代码指令模型主要使用特定编程语言的指令 - 响应对进行微调。因此,在处理领域外的编程语言时,其性能可能会受到限制。在这种情况下,提供少量示例有助于引导模型输出。此外,开发者在将这些模型部署到关键应用程序之前,应进行安全测试和针对特定目标的调整。该模型还继承了其基础模型的伦理考量和局限性。更多信息,请参考 Granite-3B-Code-Base-128K 模型卡片。
📄 许可证
本模型采用 Apache 2.0 许可证。