模型简介
模型特点
模型能力
使用案例
🚀 神经聊天模型v3-3(Neural-Chat-v3-3)
神经聊天模型v3-3是一款基于英特尔Gaudi 2处理器微调的70亿参数大语言模型,它在数学问答等语言相关任务上表现出色,为用户提供高效准确的语言处理能力。
🚀 快速开始
模型复现
以下是复现模型的示例代码链接:GitHub示例代码。以下是复现构建模型的文档步骤:
git clone https://github.com/intel/intel-extension-for-transformers.git
cd intel-extension-for-transformers
docker build --no-cache ./ --target hpu --build-arg REPO=https://github.com/intel/intel-extension-for-transformers.git --build-arg ITREX_VER=main -f ./intel_extension_for_transformers/neural_chat/docker/Dockerfile -t chatbot_finetuning:latest
docker run -it --runtime=habana -e HABANA_VISIBLE_DEVICES=all -e OMPI_MCA_btl_vader_single_copy_mechanism=none --cap-add=sys_nice --net=host --ipc=host chatbot_finetuning:latest
# 进入docker容器后
cd examples/finetuning/finetune_neuralchat_v3
我们选择最新的预训练模型mistralai/Mistral-7B-v0.1
和开源数据集Open-Orca/SlimOrca
进行实验。
以下脚本使用deepspeed zero2
在8张Gaudi2卡上启动训练。在finetune_neuralchat_v3.py
中,默认设置为use_habana=True, use_lazy_mode=True, device="hpu"
以适配Gaudi2。如果你想在NVIDIA GPU上运行,可以将它们设置为use_habana=False, use_lazy_mode=False, device="auto"
。
deepspeed --include localhost:0,1,2,3,4,5,6,7 \
--master_port 29501 \
finetune_neuralchat_v3.py
合并LoRA权重:
python apply_lora.py \
--base-model-path mistralai/Mistral-7B-v0.1 \
--lora-model-path finetuned_model/ \
--output-path finetuned_model_lora
模型使用
FP32推理(使用Transformers)
import transformers
model_name = 'Intel/neural-chat-7b-v3-3'
model = transformers.AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
def generate_response(system_input, user_input):
# 使用提供的模板格式化输入
prompt = f"### System:\n{system_input}\n### User:\n{user_input}\n### Assistant:\n"
# 对提示进行分词和编码
inputs = tokenizer.encode(prompt, return_tensors="pt", add_special_tokens=False)
# 生成响应
outputs = model.generate(inputs, max_length=1000, num_return_sequences=1)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# 仅提取助手的响应
return response.split("### Assistant:\n")[-1]
# 示例用法
system_input = "You are a math expert assistant. Your mission is to help users understand and solve various math problems. You should provide step-by-step solutions, explain reasonings and give the correct answer."
user_input = "calculate 100 + 520 + 60"
response = generate_response(system_input, user_input)
print(response)
# 预期响应
"""
To calculate the sum of 100, 520, and 60, we will follow these steps:
1. Add the first two numbers: 100 + 520
2. Add the result from step 1 to the third number: (100 + 520) + 60
Step 1: Add 100 and 520
100 + 520 = 620
Step 2: Add the result from step 1 to the third number (60)
(620) + 60 = 680
So, the sum of 100, 520, and 60 is 680.
"""
BF16推理(使用英特尔Transformers扩展和英特尔PyTorch扩展)
from transformers import AutoTokenizer, TextStreamer
import torch
from intel_extension_for_transformers.transformers import AutoModelForCausalLM
import intel_extension_for_pytorch as ipex
model_name = "Intel/neural-chat-7b-v3-3"
prompt = "Once upon a time, there existed a little girl,"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
streamer = TextStreamer(tokenizer)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
model = ipex.optimize(model.eval(), dtype=torch.bfloat16, inplace=True, level="O1", auto_kernel_selection=True)
outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
INT4推理(使用Transformers和英特尔Transformers扩展)
from transformers import AutoTokenizer, TextStreamer
from intel_extension_for_transformers.transformers import AutoModelForCausalLM, WeightOnlyQuantConfig
model_name = "Intel/neural-chat-7b-v3-3"
# 对于int8,应设置weight_dtype="int8"
config = WeightOnlyQuantConfig(compute_dtype="bf16", weight_dtype="int4")
prompt = "Once upon a time, there existed a little girl,"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
inputs = tokenizer(prompt, return_tensors="pt").input_ids
streamer = TextStreamer(tokenizer)
model = AutoModelForCausalLM.from_pretrained(model_name, quantization_config=config)
outputs = model.generate(inputs, streamer=streamer, max_new_tokens=300)
✨ 主要特性
- 微调优化:该模型是在英特尔Gaudi 2处理器上,基于
Intel/neural-chat-7b-v3-1
在meta-math/MetaMathQA
数据集上进行微调得到的。 - 对齐方法:使用直接性能优化(DPO)方法,结合
Intel/orca_dpo_pairs
数据集进行对齐。 - 广泛应用:可用于多种语言相关任务,如文本生成、问答等。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
模型作者 - 公司 | Intel。NeuralChat团队,成员来自DCAI/AISE/AIPT。核心团队成员:Kaokao Lv、Liang Lv、Chang Wang、Wenxin Zhang、Xuhui Ren和Haihao Shen。 |
日期 | 2023年12月 |
版本 | v3 - 3 |
类型 | 70亿参数大语言模型 |
论文或其他资源 | Medium博客 |
许可证 | Apache 2.0 |
问题或评论 | 社区板块和英特尔开发者Discord |
预期用途
预期用途 | 描述 |
---|---|
主要预期用途 | 你可以将微调后的模型用于多个与语言相关的任务。查看大语言模型排行榜,了解该模型的表现。 |
主要预期用户 | 任何进行与语言相关任务推理的人。 |
超出范围的用途 | 在大多数情况下,该模型需要针对你的特定任务进行微调。该模型不应被用于故意为人们创造敌对或排斥的环境。 |
影响因素
因素 | 描述 |
---|---|
数据集 | 关于数据集和注释的更多详细信息可在meta-math/MetaMathQA、项目页面https://meta-math.github.io/ 以及相关论文https://arxiv.org/abs/2309.12284 中找到。 |
输入影响 | 模型的性能可能会因输入的不同而有所变化。在这种情况下,提供的提示可能会极大地改变语言模型的预测。 |
训练环境 | 该模型在英特尔Gaudi 2处理器(8张卡)上进行训练。 |
硬件软件影响 | 在其他硬件和软件上部署模型会改变模型性能。模型评估因素来自Hugging Face大语言模型排行榜:ARC、HellaSwag、MMLU、TruthfulQA、Winogrande和GSM8K(见下面的定量分析)。 |
评估指标
指标 | 描述 |
---|---|
模型性能衡量 | 根据大语言模型排行榜上的指标,将该模型的性能与其他大语言模型进行评估。这些指标已成为大语言模型性能的标准。 |
决策阈值 | 未使用决策阈值。 |
不确定性和可变性处理方法 | - |
训练和评估数据
数据类型 | 描述 |
---|---|
数据集 | 训练数据来自meta-math/MetaMathQA,该数据集是从GSM8k和MATH训练集增强而来。训练过程中未使用GSM8k测试集,因此不存在数据污染问题。 |
动机 | - |
预处理 | - |
🔧 技术细节
该模型基于mistralai/Mistral-7B-v0.1
进行微调,使用英特尔Gaudi 2处理器进行训练。在微调过程中,采用了直接性能优化(DPO)方法,并结合Intel/orca_dpo_pairs
数据集进行对齐。更多信息请参考博客The Practice of Supervised Fine-tuning and Direct Preference Optimization on Intel Gaudi2。
Photo by Google DeepMind on Unsplash
📊 定量分析
开放大语言模型排行榜的结果可在此处查看。各项指标结果如下:
指标 | 数值 |
---|---|
平均值 | 69.83 |
ARC(25次少样本学习) | 66.89 |
HellaSwag(10次少样本学习) | 85.26 |
MMLU(5次少样本学习) | 63.07 |
TruthfulQA(0次少样本学习) | 63.01 |
Winogrande(5次少样本学习) | 79.64 |
GSM8K(5次少样本学习) | 61.11 |
⚠️ 伦理考量与局限性
neural-chat-7b-v3-3
可能会产生事实错误的输出,因此不应依赖它来提供事实准确的信息。由于预训练模型和微调数据集的局限性,该模型有可能生成低俗、有偏见或其他冒犯性的输出。
因此,在部署neural-chat-7b-v3-3
的任何应用之前,开发者应进行安全测试。
💡 注意事项与建议
用户(直接用户和下游用户)应了解该模型的风险、偏见和局限性。
以下是一些了解英特尔AI软件的有用链接:
📄 免责声明
该模型的许可证不构成法律建议。我们不对使用该模型的第三方的行为负责。在将该模型用于商业目的之前,请咨询律师。
开放大语言模型排行榜评估结果
详细结果可在此处查看。
指标 | 数值 |
---|---|
平均值 | 69.83 |
AI2推理挑战(25次少样本学习) | 66.89 |
HellaSwag(10次少样本学习) | 85.26 |
MMLU(5次少样本学习) | 63.07 |
TruthfulQA(0次少样本学习) | 63.01 |
Winogrande(5次少样本学习) | 79.64 |
GSM8k(5次少样本学习) | 61.11 |



