模型名称:Granite-7b-base
许可证:Apache-2.0
支持语言:主要为英语
架构:该模型架构是 Meta 的 Llama2-7B 基础变体的复制品,采用 MHA(多头注意力机制),在 2T tokens 上以 1M 的批处理大小进行训练。
上下文长度:4k tokens
分词器:Llama2
模型开发者:IBM Research
为彰显 IBM 对开源创新的承诺,IBM 已发布 granite-7b-base。这是 IBM Granite 模型系列中的一个基础预训练大型语言模型(LLM),采用 apache-2.0 许可证,可供社区和商业使用。Granite-7b-base 是在 IBM 精心整理的数据上从头开始预训练的,作为 Meta Llama-2-7B 的开放参考实现。为致力于数据透明度并促进开放创新,下方提供了数据源、采样比例和访问 URL。
有关训练此模型的更多信息,请查看博客:https://pytorch.org/blog/maximizing-training/
修改
预训练数据
该模型在 2T tokens 上进行训练,其采样比例旨在尽可能接近 Llama1 论文中公布的采样分布。
| 数据集 | 描述 | 采样比例 | URL |
|---|---|---|---|
| Common Crawl | 网络爬取数据的开放存储库,包含 2021 年至 2023 年的快照。 | 77% | https://data.commoncrawl.org/ |
| Github_Clean | 来自 CodeParrot 的代码数据,涵盖多种编程语言。 | 5.50% | |
| Wikipedia and Wikimedia | 八个维基媒体项目(enwiki、enwikibooks、enwikinews、enwikiquote、enwikisource、enwikiversity、enwikivoyage、enwiktionary),包含从页面和文章中提取的纯文本。 | 2% | https://dumps.wikimedia.org |
| USPTO | 1975 年至 2023 年 5 月授予的美国专利,不包括外观设计专利。 | 5% | https://bulkdata.uspto.gov/ |
| PubMed Central | 生物医学和生命科学论文。 | 1.75% | https://ftp.ncbi.nlm.nih.gov/pub/pmc/oa_package/ |
| arXiv | 超过 180 万篇发布在 arXiv 上的科学论文预印本。 | 2.50% | |
| StackExchange | Stack Exchange 网络上所有用户贡献内容的匿名集合,这是一系列以用户贡献的问答为中心的热门网站。 | 1% | https://archive.org/details/stackexchange_20221206 |
| PG19 | 免费电子书库,重点关注美国版权已过期的旧作品。 | 0.25% | https://github.com/google-deepmind/pg19 |
| Webhose | IBM 购买的、转换为机器可读数据馈送的非结构化网络内容。 | 5% | N/A |
评估结果
LM-eval Harness 分数
| 评估指标 | Llama2-7B(基线) | Granite-7b-base |
|---|---|---|
| MMLU(零样本) | 0.41 | 0.43 |
| MMLU(5 样本加权平均) | 0.47 | 0.50 |
| Arc challenge | 0.46 | 0.44 |
| Arc easy | 0.74 | 0.71 |
| Boolq | 0.78 | 0.76 |
| Copa | 0.87 | 0.83 |
| Hellaswag | 0.76 | 0.74 |
| Openbookqa | 0.44 | 0.42 |
| Piqa | 0.79 | 0.79 |
| Sciq | 0.91 | 0.91 |
| Winogrande | 0.69 | 0.67 |
| Truthfulqa | 0.39 | 0.39 |
| GSM8k(8 样本) | 0.13 | 0.11 |
偏见、风险与局限性
Granite-7b-base 是一个基础模型,未经过任何安全对齐,因此可能会产生有问题的输出。在缺乏足够的安全措施和 RLHF(基于人类反馈的强化学习)的情况下,存在恶意利用这些模型生成虚假信息或有害内容的风险。强烈建议不要完全依赖特定语言模型来做关键决策或获取重要信息,因为防止这些模型编造内容并非易事。此外,由于较小模型的尺寸和记忆能力有限,它们在无根据的生成场景中是否更容易产生幻觉,这一点尚不确定。这方面目前是研究的活跃领域,我们期待在该领域进行更深入的探索、理解和缓解。
代码使用
import argparse
import torch
from openmind import pipeline, is_torch_npu_available
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe = pipeline("text-generation", model="SY_AICC/granite-7b-base" , device=device)
output = pipe(messages)
print(f">>>output={output}")