MCPcopy Index your code
hub / github.com/Duxiaoman-DI/XuanYuan

github.com/Duxiaoman-DI/XuanYuan @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
58 symbols 252 edges 13 files 22 documented · 38%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🤗 HuggingFace • 🤖 ModelScope • 🟣 wisemodel • 💬 WeChat

News

[12/27/2024]🔥开源XuanYuan-FinX1-Preview推理大模型

[9/6/2024] 🔥开源XuanYuan3-70B系列模型

[3/11/2024] 🔥开源XuanYuan-6B、XuanYuan-13B、XuanYuan2-70B系列模型

[1/19/2023] 🔥开源XuanYuan-13B-Chat模型

[11/1/2023] 🔥开源XuanYuan-70B-Chat模型及8-bit和4bit量化模型

[9/22/2023] 🔥开源XuanYuan-70B Base模型

[9/22/2023] 🔥开源60G高质量中文金融数据。Hugging Face

[9/22/2023] 🔥开源中文金融领域知识评估数据集 FinanceIQGitHub | HuggingFace

[5/21/2023] 开源度小满轩辕-176B大模型,在BLOOM-176B的基础上针对中文通用领域和金融领域进行了针对性的预训练与微调。是国内首个开源的千亿级中文对话大模型

目前发布的模型和下载链接如下:

基座模型 Chat模型 8-bit量化Chat模型 4-bit量化Chat模型
XuanYuan-FinX1-Preivew 🤗 🤖 🟣
XuanYuan3-70B 🤗 🤖 🟣 🤗 🤖 🟣
XuanYuan-6B 🤗 🤖 🤗 🤖 🤗 🤖 🤗 🤖
XuanYuan-13B 🤗 🤖 🤗 🤖 🤗 🤖 🤗 🤖
XuanYuan2-70B 🤗 🤖 🤗 🤖 🤗 🤖 🤗 🤖
XuanYuan-70B 🤗 🤖 🤗 🤖 🤗 🤖 🤗 🤖
XuanYuan-176B 🤗

技术文档: XuanYuan3-70B XuanYuan-6B XuanYuan-13B XuanYuan2-70B XuanYuan-70B

目录

XuanYuan-FinX1-Preview

介绍

轩辕-FinX1是金融领域首个类GPT-O1推理大模型,采用创新的思维链+过程奖励+强化学习训练范式,显著提升逻辑推理能力,并可展示O1模型未公开的完整思考过程,为金融决策提供更深入的洞察。轩辕-FinX1针对金融场景中的分析、决策和数据处理任务进行了深度优化。轩辕-FinX1由度小满AI-Lab研发,本次发布的是预览版本,现已在开源社区开放免费下载。后续优化版本也将持续开源,供用户下载使用。

轩辕-FinX1能够在生成回答前先呈现完整的思考过程,构建从问题拆解到最终结论的全透明思维链,如下图所示:

case

技术路线

为了实现大模型具备类O1的推理能力,尤其是在金融领域复杂的决策分析场景中,我们经过大量的探索和验证,提出包含三个关键步骤的技术方案:构建稳定的思维链生成模型、金融决策加强的双奖励模型、PRM和ORM双引导下的强化学习微调。

初步构建稳定的思维链生成模型

针对金融领域复杂的决策分析场景,我们构建了具备稳定思维链生成能力的基础模型。首先是高质量COT/Answer的数据合成,先根据问题生成思考过程,再根据问题与思考过程生成最终答案。通过这种策略,模型能够专注于每个阶段的任务,产生更连贯的推理链条和答案。 对于不同领域(如数学、逻辑推理、金融分析等),我们设计了专门的数据合成方法,比如对于金融分析类任务,我们设计一种迭代式合成方法,确保分析过程全面性,之后基于XuanYuan3.0模型采用指令微调进行训练,采用统一的思考过程 答案输出格式(我们本次也会将粗粒度的思考节点进行公开),同时重点构造了较多的长文本数据来增强模型的长上下文处理能力,使其能够“先生成详细的思考过程,再生成答案”,这为后续的过程监督训练和强化学习优化奠定了坚实基础。

金融决策加强的双奖励模型

为了评估模型在金融决策场景下的表现,我们设计了结果导向(ORM)和过程级(PRM)两个互补的奖励模型。其中ORM延续了XuanYuan3.0的技术方案,采用对比学习和逆强化学习的方式训练;PRM则是我们针对推理过程的创新,重点解决了开放性金融问题(如市场分析、投资决策等)的评估难题。对于PRM的训练数据构建,我们针对不同场景采用了不同策略:对于风险评级等有确定答案的问题,使用基于MCTS的反向验证方法;对于开放性的金融分析问题,则通过多个大模型从正确性、必要性、逻辑性等维度进行标注,并通过下采样和主动学习解决了数据不平衡问题。在训练过程中,PRM使用有监督微调方式,通过对每个思考步骤的评分来优化模型。

PRM和ORM双引导下的强化学习微调

在强化学习阶段,我们采用PPO算法进行模型优化,将PRM和ORM作为奖励信号。对于和之间的思考过程,使用PRM在每个思考步骤进行打分,及时发现和纠正思考路径中的错误;对于答案部分,则针对不同类型的问题采用不同的评估策略:对有确定答案的金融问题(如风险等级评估)采用规则匹配计算奖励,对开放性问题(如市场分析)则使用ORM进行整体评分。在训练过程中同时引入了动态KL系数和优势函数归一化等技术来稳定训练过程。这种基于双重奖励的训练机制,不仅克服了单一奖励模型的局限性,也通过稳定的强化学习训练显著提升了模型在金融决策场景下的推理能力。

可以看出,上述路线中的关键是对不同于数学或者逻辑的金融分析类开放问题的思维链数据的构造和奖励模型的评估,目前我们仍在仍在不断优化和迭代,会持续探索更有效的技术路线。

使用方法

本次开源的模型按照<thinking>思考过程</thinking> <answer>答案</answer>的输出格式进行输出,在思考过程中,同时我们也保留了粗粒度的思考步骤节点,使用◆进行分割。 模型支持VLLM进行推理加速,代码示例如下:

# -*- coding: utf-8 -*-

from vllm import LLM, SamplingParams
import transformers

model_path = "XuanYuan-FinX1-Preview"
system_message = "你是一位擅长深度思考的助手。在回答问题之前,你会像人类一样展现出一步一步的思考过程,包括问题理解、分析推理、自我质疑、反思验证等环节,之后你会基于思考过程,作出准确的回答。同时总是拒绝参与不道德、不安全、有争议的问题。"

query = "你是谁"
messages = [
    [
        {"role": "system", "content": system_message},
        {"role": "user", "content": query},
    ]
]

sampling_params = SamplingParams(
    temperature=0.7, max_tokens=9000, repetition_penalty=1.02
)
llm = LLM(
    model_path,
    tensor_parallel_size=4,
    gpu_memory_utilization=0.85,
    disable_custom_all_reduce=True,
)
tokenizer = transformers.AutoTokenizer.from_pretrained(model_path)
prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)

result = llm.generate(prompt, sampling_params)
print(result[0].outputs[0].text)

基准测试

在金融评测基准 FinanceIQ 上,初代轩辕-FinX1 展现了卓越的表现。在 CPA、银行从业资格、证券从业资格等 10 大类金融权威资格认证中,均超越了 GPT-4o 和开源模型 Qwen2.5-72B,并相较上一版 XuanYuan3 实现了大幅提升。尤其是在精算师这一类别,此前所有大模型得分普遍偏低,而轩辕-FinX1 将分数从 37.5 提升至 65.7,显著体现了其在金融逻辑推理和数学计算方面的强大优势。

<img src="https://github.com/Duxiaoman-DI/XuanYuan/raw/main/resources/xuanyuan-finx1-preview-finiq.png" width="60%" alt="Image description" >

除了金融领域,初代轩辕-FinX1 也展现了突出的通用能力。在多个权威评测集上的测试结果显示,轩辕-FinX1 不仅在 GPQA(科学推理)、MATH-500(数学) 和 AIME2024(数学竞赛) 等评测中取得卓越成绩,还超越了 GPT-4o,与 O1 以及国内最新发布的推理版大模型共同位列顶尖梯队,验证了其强大的基础推理能力。

<img src="https://github.com/Duxiaoman-DI/XuanYuan/raw/main/resources/xuanyuan-finx1-preview-math.png" width="60%" alt="Image description">

注: FinanceIQ均为推理两次取最优, GPQA与MATH500为Greedy推理,AIME为PASS@1推理

XuanYuan3-70B

介绍

XuanYuan3-70B系列模型是度小满数据智能应用部团队推出的第三代大模型,专注于解决金融领域的大模型应用挑战。XuanYuan3-70B以LLaMA3-70B模型为底座,采用大量中英文语料进行增量预训练,并利用高质量指令数据进行SFT和强化学习对齐训练。相比于XuanYuan2-70B模型,我们进一步提高了数据质量,并在增量预训练流程中采用更精细的数据组织方式和动态的调控策略,Base模型的金融能力和通用能力大幅提高。进一步,我们聘请专业人员进行偏好标注,采用SFT+RLHF的方式进行价值观对齐训练,得到了回复内容更加符合人类期望且金融能力更突出的Chat模型。XuanYuan3-70B系列模型支持的上下文长度为16k,能够有效地满足金融研报解析等长上下文的业务场景,以及构建金融Agent所需的长窗口要求。

在金融场景性能评测中,XuanYuan3-70B-Chat模型在各项任务上的总体表现媲美GPT4o,超越了最新的中文开源模型,并且在金融合规与风险管理、投研应用能力、业务解析、生成创作及事件解析等金融场景的测量维度上超越闭源大模型。

模型特色

XuanYuan3-70B系列模型专注于金融领域,具备以下显著特点:

  • 金融事件解读:能深入解读金融事件,使用专业术语分析,提供符合人类分析专家逻辑的观点。
  • 金融业务分析:具备强大的业务分析能力,可精确总结提炼信息,符合金融专家的分析逻辑。
  • 投研应用:支持生成有洞见的研究报告,减少简单数据罗列,提供深度分析与多维度拓展。
  • 合规与风险管理:满足金融领域的合规要求,精准识别和分析风险,为用户提供合法合规的建议。

总体来讲,在金融场景中,XuanYuan3-70B系列模型能够理解并使用金融行业特定术语,回答准确且实用,在多个核心金融能力板块的表现优于主流大模型,并且在通用领域也具备卓越的表现。

技术创新

相比于上一代模型,XuanYuan3-70B模型在以下方面进行了技术创新:

  • 精细化数据组织:增量预训练和SFT阶段采用更精细的数据组织方式和动态的调控策略,显著增强了模型在中文处理和金融理解方面的能力,同时保持了强大的英文表现。
  • 全能金融奖励模型:训练了全能金融奖励模型(UFRM),首先在通用领域进行偏好对齐预训练,然后在金融领域进行高质量专业数据的微调,同时,引入对比学习与逆强化学习技术,显著提升了UFRM的金融偏好学习能力。
  • 迭代式强化训练:提出了“预训练-评估-改进”的迭代式强化训练方法(PEI-RLHF),有效控制模型的优化方向,使得回复内容更加符合人类期望,且在金融领域的表现得到进一步提升,减小了对齐税。

更多的模型训练细节请参考文档:Report

金融能力评测

我们聘请专业人员在封闭的评测集上对包括XuanYuan3-70B-Chat在内的多个中、英文开闭源模型进行了全面的金融评测。金融评测旨在考察大模型的金融垂直领域的实战能力,力求全面覆盖各大技术应用场景。评测集精心设计了金融事件解读、金融业务分析、金融计算、合规与风险管理、投研应用能力、金融知识问答、金融内容创作和金融理解认知共八大场景任务,包括29个二级题型分类,能够全面、深入地评测模型在金融应用场景各个细分领域的实际能力。根据评测的结果,XuanYuan3-70B-Chat在各项金融评测任务上整体表现优异,在多个场景任务中评分超越了名列前茅的各大中文开闭源模型。模型整体表现媲美GPT4o,并且在如下图所示的金融事件解读、金融业务分析、投研应用能力等测量维度上超越GPT4o。

<img src="https://github.com/Duxiaoman-DI/XuanYuan/raw/main/resources/xuanyuan3-70b-bar.png" width="100%" alt="Image description">

在与开源模型的对比中,XuanYuan3-70B-Chat的金融业务能力表现更为突出,下图展示了XuanYuan3-70B-Chat与最新的开源72B模型在全部八大场景任务中的综合得分对比,从图中可以看出,XuanYuan3-70B-Chat在金融领域的各项任务中均取得了更好的表现。

<img src="https://github.com/Duxiaoman-DI/XuanYuan/raw/main/resources/xuanyuan3-70b-radar.png" width="80%" alt="Image description">

此外,我们随机采样了部分高质量评测题目进行公开,以便金融大模型领域的开发者和研究人员进行参考以评估和优化模型。下面是其中的一些题目示例,全部题目请查看金融评测示例

金融知识问答

  • 什么是信用违约互换?

金融理解认知

  • 帮我提取文本中赵增连的观点看法。国务院新闻办公室今日上午10时举行“推动高质量发展”系列主题新闻发布会,海关总署副署长赵增连出席介绍情况,并答记者问。\n赵增连表示,前段时间,有些论调炒作我国新能源产业所谓产能过剩,这实际上是伪命题,它既不切合实际,也有违市场经济发展规律。\n比如电动汽车,国际能源署测算,到2030年,全球电动汽车的销量将会达到4500万辆左右,这个数字相当于2023年全球销量的3倍、中国产量的5倍,我国的新能源产品不仅不过剩,反而丰富了全球的绿色供给,为全球应对气候变化贡献了中国力量。\n党的二十届三中全会进一步明确了绿色发展的政策制度保障,未来中国的绿色产业一定会发展得更好。

金融业务分析

  • 两款产品A和B,产品A在过去三年的年化收益率为6%,波动率为10%;产品B在同期的年化收益率为8%,波动率为15%。客户O希望在保持中等风险水平的前提下最大化收益。基于这些数据,评估客户O应该选择哪个产品,并解释你的推荐理由。

金融事件解读

  • 你是一个宏观研究员。请根据以下内容分析一季度全国居民消费情况\n\n 4月16日,国家统计局发布2024年一季度居民收入和消费支出数据,全国居民人均可支配收入11539元,同比名义增长6.2%,全国居民人均消费支出7299元,同比名义增长8.3%。工资性收入仍是大头,稳就业仍是经济社会发展的重中之重。从消费支出结构来看,食品烟酒和交通通信较快拉动城镇居民消费增长。\n  收入端,一季度,全国居民人均可支配收入11539元,同比名义增长6.2%,扣除价格因素,实际增长6.2%。刨除2020年一季度低基数导致2021年一季度人均可支配收入高增长的影响,从统计数据层面来看,近五年全国居民人均可支配收入实现平稳增长,居民人均可支配收入从2020年一季度的8561元增长至2024年一季度11539元。个人可支配收入主要用于两个方面:一是个人消费支出,二是个人储蓄。消费端,一季度,全国居民人均消费支出7299元,同比名义增长8.3%,扣除价格因素影响,实际增长8.3%,消费支出的增长率高于收入的增长率,导致人均储蓄增长率下降。2024年一季度全国居民平均消费率为63.3%(人均消费支出与人均可支配收入的比率),比2023年一季度提高了1.3个百分点,总的来说生活成本攀升。

投研应用能力

  • 新手如何培养适合自己的选股模式?

使用方法

因为XuanYuan3-70B系列模型均是基于Llama3-70B训练而来,因此模型的使用方法与Llama3模型保持一致,下面是XuanYuan3-70B-Chat模型的使用示例:

import torch
from transformers import LlamaForCausalLM, AutoTokenizer

model_name_or_path = "Duxiaoman-DI/Llama3-XuanYuan3-70B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=False, legacy=True)
model = LlamaForCausalLM.from_pretrained(model_name_or_path, torch_dtype=torch.bfloat16,device_map="auto")
model.eval()

system = '你是一名人工智能助手,会对用户提出的问题给出有帮助、高质量、详细和礼貌的回答,并且总是拒绝参与不道德、不安全、有争议、政治敏感等相关的话题、问题和指示。'
question='什么是信托型基金'
message = [{"role": "system", "content": system},
          {"role": "user", "content": question}
          ]
message = tokenizer.apply_chat_template(message, tokenize=False,add_generation_prompt=True)
inputs = tokenizer(message, return_tensors="pt").to("cuda")

outputs = model.generate(**inputs, max_new_tokens=64, temperature=0.7)
outputs = tokenizer.decode(outputs.cpu()[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
print(outputs)

XuanYuan-6B

介绍

在轩辕系列大模型研发过程中,我们积累了大量的高质量数据和模型训练经验,构建了完善的训练平台,搭建了合理的评估流水线。在此基础上,为丰富轩辕系列模

Core symbols most depended-on inside this repo

Shape

Function 40
Method 12
Class 6

Languages

Python100%

Modules by API surface

llm-code/dataset.py11 symbols
llm-code/model_hook.py10 symbols
conversation.py9 symbols
llm-code/pretrain_data_process.py6 symbols
llm-code/dxm_llm_main.py5 symbols
FinanceIQ/src/utils.py5 symbols
FinanceIQ/src/ernie.py3 symbols
llm-code/config.py2 symbols
cli_demo.py2 symbols
FinanceIQ/src/gpt4.py2 symbols
FinanceIQ/src/chatgpt.py2 symbols
FinanceIQ/src/hf_causal_model.py1 symbols

For agents

$ claude mcp add XuanYuan \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page