--- license: llama2 --- ## 介绍 在轩辕系列大模型研发过程中,我们积累了大量的高质量数据和模型训练经验,构建了完善的训练平台,搭建了合理的评估流水线。在此基础上,为丰富轩辕系列模型矩阵,降低轩辕大模型使用门槛,我们进一步推出了XuanYuan-6B系列大模型。不同于XuanYuan-13B和XuanYuan-70B系列模型在LLaMA2上继续预训练的范式,XuanYuan-6B是我们从零开始进行预训练的大模型。当然,XuanYuan-6B仍采用类LLaMA的模型架构。在预训练基础上,我们构建了丰富、高质量的问答数据和人类偏好数据,并通过指令微调和强化学习进一步对齐了模型表现和人类偏好,显著提升了模型在对话场景中的表现。XuanYuan6B系列模型在多个评测榜单和人工评估中均获得了亮眼的结果。模型训练细节请参考我们的技术报告:[Report](xuanyuan_6b_report.md) 本次开源的XuanYuan-6B系列模型包含基座模型XuanYuan-6B,经指令微调和强化对齐的chat模型XuanYuan-6B-Chat,以及chat模型的量化版本XuanYuan-6B-Chat-4bit和XuanYuan-6B-Chat-8bit。 主要特点: * 收集多个领域大量的训练预料,进行了多维度数据清洗和去重,保证数据的量级和质量 * 从零开始预训练,预训练中动态调整数据配比,模型基座能力较强 * 结合Self-QA方法构建高质量问答数据,采用混合训练方式进行监督微调 * 构建高质量人类偏好数据训练奖励模型并进行强化训练,对齐模型表现和人类偏好 * 模型尺寸小并包含量化版本,硬件要求低,适用性更强 * 在多个榜单和人工评估中均展现出良好的性能,具备领先的金融能力 ## 性能评测 ### 基础评测 金融一直是轩辕大模型重点关注的领域和主要应用目标,因此我们首先在金融场景评测了XuanYuan-6B模型。我们使用自己构建并开源的FinanceIQ数据集,该数据集是一份专业的大模型金融能力评估数据集,涵盖了10个金融大类,36个金融小类,总计7173题。评估结果如下表所示。从表中可以看出,XuanYuan-6B模型在该评估数据中的性能甚至超越了GPT4,显示出了其强大的金融能力。 | 模型 | 平均分 | 注册会计师 | 银行从业资格 | 证券从业资格 | 基金从业资格 | 保险从业资格 | 经济师 | 税务师 | 期货从业资格 | 理财规划师 | 精算师 | | ------------- | ----- | -------- | ---------- | ---------- | ----------- | --------- | ----- | ----- | ---------- | -------- | ----- | | XuanYuan-13B | 74.02 | 75.29 | 83.52 | 77.38 | 80.5 | 75.86 | 87.31 | 62.09 | 76.44 | 75.25 | 46.59 | | XuanYuan-6B | 68.87 | 71.62 | 77.65 | 74.83 | 77.52 | 73.56 | 86.54 | 59.02 | 70.67 | 71.19 | 26.14 | | GPT4 | 60.05 | 52.33 | 68.72 | 64.8 | 68.81 | 68.68 | 75.58 | 46.93 | 63.51 | 63.84 | 27.27 | 除金融外,我们也注重轩辕大模型的通用能力,因此我们也在多个主流评测集上进行了模型评测,观察轩辕大模型在知识、逻辑、代码等通用能力上的表现。评测结果如下表所示。 | 模型 | C-Eval | CMMLU | MMLU | GSM8K | HumanEval | | ----------- | ----- | ----- | ---- | ----- | --------- | | LLaMA2-70B | 50.1 | 53.6 | 69.8 | 54.4 | 23.7 | | LLaMA2-13B | 41.4 | 38.4 | 55 | 29.6 | 18.9 | | LLaMA2-7B | 32.5 | 31.8 | 46.8 | 16.7 | 12.8 | |XuanYuan-13B | 82 | 78 | 70.3 | 49.3 | 29.3 | | XuanYuan-6B | 81.2 | 75.8 | 64.5 | 32.9 | 22.6 | 从表中结果可以看出,在五个评测集上,XuanYuan-6B的表现均超越了类似尺寸的LLaMA2-7B和LLaMA2-13B模型,展现出了强大的通用能力。在中文相关场景下,XuanYuan-6B甚至可超越更大尺寸的LLaMA2-70B模型。 值得注意的是,在上述所有评测中,XuanYuan-6B均进行了考试场景增强,具体细节可见我们的技术报告。另外榜单结果也不代表模型在真实场景中的实际能力。为进一步验证模型的实际能力,我们对模型进行了人工评测。 ### 人工评测 除在各榜单进行评测外,我们进一步对XuanYuan-6B-Chat模型进行了人工评估,来公正客观地评估chat模型在对话场景中的真实能力。评估集包含一定量级的问题且对研发人员完全封闭,每个问题均由三个不同的人员进行评估来减轻偏见。评估对比对象为业界开源的类似尺寸的主流大模型,我们并采用GSB(Good,Same,Bad)指标来展示评估结果,具体结果如下图所示。从图中可以看出,在通用性(安全性在评估时被纳入了通用性)和金融能力上,XuanYuan-6B-Chat模型均超过了对比对象,显示出更强的模型能力。 ## 推理部署 XuanYuan-6B系列模型均已上传到HuggingFace和modelscope网站,请点击上述链接进行下载。XuanYuan-6B基座模型、chat模型及其量化模型的使用方法和[XuanYuan-70B](#xuanyuan-70b),[XuanYuan2-70B](#xuanyuan2-70b)类似,但是tokenizer加载方式和在对话场景中使用的prompt格式不同(不包含system message)。下面以XuanYuan-6B-Chat模型为例,来展示XuanYuan-6B系列模型的使用方法。 ```python import torch from transformers import LlamaForCausalLM, AutoTokenizer model_name_or_path = "Duxiaoman-DI/XuanYuan-70B-Chat" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = LlamaForCausalLM.from_pretrained(model_name_or_path, device_map="auto") model.eval() seps = [" ", ""] roles = ["Human", "Assistant"] content = "介绍下你自己" prompt = seps[0] + roles[0] + ": " + content + seps[0] + roles[1] + ":" print(f"输入: {content}") inputs = tokenizer(prompt, return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=256, do_sample=True, temperature=0.7, top_p=0.95) outputs = tokenizer.decode(outputs.cpu()[0][len(inputs.input_ids[0]):], skip_special_tokens=True) print(f"输出: {outputs}") ```