HuggingFace镜像/granite-20b-code-instruct-8k
模型介绍文件和版本分析
下载使用量0

image/png

Granite-20B-Code-Instruct-8K

模型概述

Granite-20B-Code-Instruct-8K 是一个拥有200亿参数的模型,基于 Granite-20B-Code-Base-8K 进行微调。它在多种宽松许可的指令数据上训练,旨在增强指令遵循能力,包括逻辑推理和问题解决技能。

  • 开发者:IBM Research
  • 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-20B-Code-Instruct-8K 模型的简单示例。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # or "cpu"
model_path = "ibm-granite/granite-20b-code-instruct-8k"
tokenizer = AutoTokenizer.from_pretrained(model_path)
# drop device_map if running on CPU
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
# change input text as desired
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)
# tokenize the text
input_tokens = tokenizer(chat, return_tensors="pt")
# transfer tokenized inputs to the device
for i in input_tokens:
    input_tokens[i] = input_tokens[i].to(device)
# generate output tokens
output = model.generate(**input_tokens, max_new_tokens=100)
# decode output tokens into text
output = tokenizer.batch_decode(output)
# loop over the batch to print, in this example the batch size is 1
for i in output:
    print(i)

训练数据

Granite Code Instruct 模型的训练基于以下类型的数据:

  • 代码提交数据集:我们从 CommitPackFT 数据集获取代码提交数据,该数据集是完整 CommitPack 数据集的筛选版本。在 CommitPackFT 数据集中,我们仅考虑 92 种编程语言的数据。我们的纳入标准是选择 CommitPackFT 与我们用于预训练代码基础模型(Granite-20B-Code-Base)所考虑的 116 种语言中共同的编程语言。
  • 数学数据集:我们考虑了两个高质量的数学数据集,MathInstruct 和 MetaMathQA。由于许可问题,我们从 MathInstruct 数据集中过滤掉了 GSM8K-RFT 和 Camel-Math。
  • 代码指令数据集:我们使用 Glaive-Code-Assistant-v3、Glaive-Function-Calling-v2、NL2SQL11 以及一小部分合成的 API 调用数据集。
  • 语言指令数据集:我们纳入了高质量的数据集,例如 HelpSteer 和经过开放许可筛选的 Platypus 版本。我们还纳入了一系列硬编码提示,以确保模型在被问及名称或开发者等问题时能生成正确的输出。

基础设施

我们使用 IBM 的两个超级计算集群(即 Vela 和 Blue Vela)来训练 Granite Code 模型,这两个集群分别配备了 NVIDIA A100 和 H100 GPU。这些集群为我们在数千块 GPU 上训练模型提供了可扩展且高效的基础设施。

伦理考量与局限性

Granite 代码指令模型主要通过特定编程语言集合的指令-响应对进行微调。因此,它们在处理域外编程语言时的性能可能会受到限制。在这种情况下,提供少量示例以引导模型输出会有所帮助。此外,开发人员在将这些模型部署到关键应用之前,应进行安全测试和特定目标的调优。该模型还继承了其基础模型的伦理考量和局限性。有关更多信息,请参阅 Granite-20B-Code-Base-8K 模型卡片。