Granite-8B-Code-Instruct-4K 项目介绍
概述
Granite-8B-Code-Instruct-4K 是IBM研究院开发的一款拥有80亿参数的模型。该模型是在Granite-8B-Code-Base-4K的基础上进行了微调,通过结合具有开放许可的数据集,增强了模型对指令的理解和逻辑推理能力,特别是在解决问题方面。
- 开发者:IBM研究院
- GitHub 仓库:ibm-granite/granite-code-models
- 相关论文:Granite Code Models: A Family of Open Foundation Models for Code Intelligence
- 发布时间:2024年5月6日
- 许可协议:Apache 2.0
使用说明
预期用途
该模型专为响应与编程相关的指令而设计,可用于构建编程助手。通过与用户进行交互,它帮助编写代码、解决编程问题等操作。
生成示例
以下是如何使用Granite-8B-Code-Instruct-4K模型生成代码的简单示例:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # 或 "cpu"
model_path = "ibm-granite/granite-8b-code-instruct-4k"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
chat = [
{ "role": "user", "content": "编写一个代码来找出数字列表中的最大值。" },
]
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)
训练数据
Granite Code Instruct模型的训练数据主要包括以下几类:
- 代码提交数据集:我们使用了来自CommitPackFT的数据集,仅选择了92种编程语言中有代表性的代码提交数据。
- 数学数据集:使用了两个高质量的数学数据集,MathInstruct和MetaMathQA,以加强数学问题解决能力。
- 代码指令数据集:使用了Glaive-Code-Assistant-v3、Glaive-Function-Calling-v2等数据集。
- 语言指令数据集:使用了HelpSteer等数据集,以确保模型能够正确响应涉及其名称或开发者的询问。
基础设施
IBM使用其两个超级计算集群Vela和Blue Vela训练Granite Code模型,这些集群配备了NVIDIA A100和H100 GPU,提供了可扩展和高效的训练环境。
伦理考量与限制
Granite代码指令模型主要基于特定编程语言的指令-响应对进行微调,因此在不常见的编程语言上可能存在性能限制。在这种情况下,提供少量示例可以引导模型输出。此外,开发者在关键应用中部署这些模型之前,应进行安全测试和目标特定调优。模型还继承了其基础模型的伦理考量和限制。详细信息请参考*Granite-8B-Code-Base-4K*模型卡。