项目概要
h2o-danube3-500m-base 是由 H2O.ai 训练的基础模型,拥有5亿个参数。H2O.ai 发布了该模型的两个版本:
- h2oai/h2o-danube3-500m-base 作为基础模型
- h2oai/h2o-danube3-500m-chat 作为聊天版本
用户可以在手机上本地和完全离线的尝试该模型,详情请参见 H2O AI Personal GPT。
模型架构
该模型基于 Llama 2 架构,拥有大约500亿个参数。使用了Mistral分词器,词汇量为32,000,并将上下文长度训练到8,192。详细架构参数如下:
- 层数: 16
- 自注意力头数: 16
- 查询组数: 8
- 嵌入维度: 1536
- 词汇量大小: 32000
- 序列长度: 8192
模型使用
要在GPU设备上使用该模型,首先需要安装transformers
库。
pip install transformers>=4.42.3
以下是一个简单的 Python 示例代码,展示如何加载和运行该模型:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("h2oai/h2o-danube3-500m-base")
model = AutoModelForCausalLM.from_pretrained(
"h2oai/h2o-danube3-500m-base",
torch_dtype=torch.bfloat16,
)
model.cuda()
inputs = tokenizer("The Danube is the second longest river in Europe", return_tensors="pt").to(model.device)
res = model.generate(
**inputs,
max_new_tokens=32,
do_sample=False,
)
print(tokenizer.decode(res[0], skip_special_tokens=True))
量化与分片
可以通过设置 load_in_8bit=True
或 load_in_4bit=True
来实现模型的量化加载。如果需要在多GPU上运行模型,可以设置 device_map=auto
来实现模型分片。
基准测试
在 🤗 Open LLM Leaderboard v1 上,h2o-danube3-500m-base 在多个基准测试中表现如下:
- 平均准确率: 40.38%
- ARC挑战: 40.61%
- Hellaswag: 60.52%
- MMLU: 25.72%
- TruthfulQA: 37.67%
- Winogrande: 62.19%
- GSM8K: 15.54%
使用声明
请在使用本库提供的大型语言模型前仔细阅读使用声明。使用该模型表示您同意以下条款和条件。
- 偏见与冒犯:大型语言模型训练自互联网文本,这些数据可能包含偏见、种族歧视、冒犯性或其他不适当内容。使用该模型即意味着您承认并接受生成的内容有时可能表现出偏见或产生冒犯或不当的内容。该库的开发者不支持或提倡任何这样的内容或观点。
- 限制:大型语言模型是基于AI的工具,并非人类。它可能会产生不准确、无意义或不相关的响应。用户需对生成内容进行批判性评估,并自行负责使用。
- 自担风险:使用该大型语言模型的用户必须对使用该工具可能产生的任何后果承担全部责任。该库的开发者和贡献者对因使用或误用提供的模型而导致的任何损害、损失或伤害不承担责任。
- 道德考量:鼓励用户负责任地使用大型语言模型。使用该模型即表示您同意不将其用于促进仇恨言论、歧视、骚扰或任何形式的非法或有害活动。
- 问题报告:如果您发现模型生成的内容含有偏见、冒犯或其他不当内容,请通过提供的渠道向库维护者报告。您的反馈将有助于改善模型及缓解潜在问题。
- 声明更改:该库的开发者保留随时修改或更新本声明的权利,无需事先通知。用户有责任定期查看声明,以了解任何更改。
通过使用本库提供的大型语言模型,即表示您同意接受并遵守本声明中列出的条款和条件。如不赞同声明的任何部分,请勿使用模型及其生成的任何内容。