项目介绍:h2o-danube3-4b-chat
项目概述
h2o-danube3-4b-chat是由H2O.ai开发的一款拥有40亿参数的对话模型。这款模型进行了特别的微调以适应聊天应用场景。目前有两个版本发布:
该模型基于H2O LLM Studio进行训练,并且可以在手机上本地且完全离线运行。
模型架构
h2o-danube3-4b-chat模型基于Llama 2架构进行调整,拥有约40亿参数。相关参数细节如下:
超参数 | 值 |
---|---|
层数 | 24 |
头数 | 32 |
查询组数 | 8 |
嵌入维度 | 3840 |
词汇量 | 32000 |
序列长度 | 8192 |
这款模型使用了Mistral tokenizer,词汇表大小为32,000,训练到的上下文长度为8,192。
使用方法
要在带有GPU的机器上使用transformers
库调用此模型,首先确保安装了该库。
pip install transformers>=4.42.3
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="h2oai/h2o-danube3-4b-chat",
torch_dtype=torch.bfloat16,
device_map="auto",
)
messages = [
{"role": "user", "content": "为什么喝水对健康有益?"},
]
prompt = pipe.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
res = pipe(
prompt,
return_full_text=False,
max_new_tokens=256,
)
print(res[0]["generated_text"])
或者,可以使用以下代码运行:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "h2oai/h2o-danube3-4b-chat"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
messages = [
{"role": "user", "content": "为什么喝水对健康有益?"},
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(
prompt, return_tensors="pt", add_special_tokens=False
).to("cuda")
tokens = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
min_new_tokens=2,
max_new_tokens=256,
)[0]
tokens = tokens[inputs["input_ids"].shape[1]:]
answer = tokenizer.decode(tokens, skip_special_tokens=True)
print(answer)
量化和分片
可以通过设置load_in_8bit=True
或load_in_4bit=True
来进行模型加载的量化处理。此外,还可以通过设置device_map=auto
来实现在多个GPU上的分片处理。
性能基准
🤗 Open LLM Leaderboard v1
基准测试 | 准确率 |
---|---|
平均 | 61.42 |
ARC挑战 | 58.96 |
Hellaswag | 80.36 |
MMLU | 54.74 |
TruthfulQA | 47.79 |
Winogrande | 76.48 |
GSM8K | 50.18 |
MT-Bench
第一轮:7.28
第二轮:5.69
平均:6.49
免责声明
在使用此大型语言模型前,请仔细阅读以下免责声明:使用此模型即表示同意以下条款和条件。
- 偏见和冒犯:模型训练数据可能包含不当或偏见内容,生成的结果可能反映出这些偏见。使用者须自行判断并承担风险。
- 限制性:模型为AI工具,可能产生不准确或无关内容,使用者需对生成内容进行评估。
- 风险自负:使用者须对使用结果承担全部责任,开发者不对因此而导致的任何后果负责。
- 道德使用:请以负责任和符合道德的方式使用模型,不得用于仇恨言论或非法活动。
- 问题反馈:如发现不当内容,可向模型维护人员报告,以帮助改进。
- 免责声明变更:开发者保留对免责声明进行修改的权利,使用者需定期查看以了解变更。
使用此模型即表示同意并遵循免责声明中的条款。如不同意,请停止使用。