granite-3.0-8b-instruct项目介绍
项目简介
granite-3.0-8b-instruct 是一款具有80亿参数的语言模型。该模型由Granite-3.0-8B-Base模型微调而来,结合了许可证宽松的开源指令数据集和内部收集的合成数据集。开发阶段采用了多种技术,包括监督微调、利用强化学习进行模型矫正以及模型合并。
- 开发者:IBM的Granite团队
- GitHub主页:ibm-granite/granite-3.0-language-models
- 官方网站:Granite Docs
- 发行日期:2024年10月21日
- 许可证:Apache 2.0
支持语言
Granite-3.0-8B-Instruct支持12种语言,包括英语、德语、西班牙语、法语、日语、葡萄牙语、阿拉伯语、捷克语、意大利语、韩语、荷兰语和中文。用户还可以对这些模型进行微调,以支持其他语言。
预定用途
该模型旨在响应一般指令,可用于构建多领域的AI助手,包括商业应用中。
功能特点
- 总结
- 文本分类
- 文本提取
- 问答
- 增强型检索生成(RAG)
- 代码相关任务
- 函数调用任务
- 多语言对话用例
使用示例
用户可以非常简单地安装相关库,并按照示例代码使用该模型进行文本生成:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "auto"
model_path = "ibm-granite/granite-3.0-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
chat = [
{ "role": "user", "content": "Please list one IBM Research laboratory located in the United States. You should only output its name and location." },
]
chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
input_tokens = tokenizer(chat, return_tensors="pt").to(device)
output = model.generate(**input_tokens, max_new_tokens=100)
output = tokenizer.batch_decode(output)
print(output)
模型架构
Granite-3.0-8B-Instruct采用了仅解码密集transformer架构。其核心组件包括GQA和RoPE、带有SwiGLU激活函数的MLP、RMSNorm及共享输入/输出嵌入。
训练数据
模型的训练数据主要来自于三种关键来源:(1)允许开源的公共数据集,(2)针对特定功能的内部合成数据,(3)极少量的人为策划数据。这些数据集的详细信息可以在Granite技术报告中查看。
基础设施
IBM使用旗下超算集群Blue Vela进行Granite 3.0语言模型的训练,该集群配备了NVIDIA H100 GPU,能够在大规模GPU上进行高效训练,并通过100%可再生能源最大限度地减少环境影响。
伦理考量与限制
Granite 3.0指令模型主要通过英文本指令-响应对进行微调,但也涵盖了其他十一种语言的多语言数据。虽然模型可以处理多语言对话用例,但在非英语任务上的性能可能存在差异。在这种情况下,可以通过少数示例让模型生成更准确的输出。虽然在模型对齐过程中考虑了安全性,但模型有时可能会生成不准确、有偏见或不安全的响应,建议在使用时进行适当的安全测试和调整。