| # 开源盘古-7B-Diffusion-Base |
|
|
| 中文 | [English](README_EN.md) |
|
|
| ## 1. 简介 |
|
|
| openPangu-R-7B-Diffusion 是一种基于扩散机制的新型语言模型,采用了前文因果块扩散(context-causal block diffusion)技术,采用稠密结构,参数量为 7B(不含词表Embedding)。openPangu-R-7B-Diffusion在openPangu-Embedded-7B预训练模型基础上进行续训,依次进行了700B 8k序列长度的预训练,100B 32k序列长度的退火,和10 epoch的10B慢思考SFT。模型训练推理全流程基于昇腾NPU。 |
|
|
| - openPangu-7B-Diffusion-Base:预训练模型,上下文长度为8k。 |
| - openPangu-R-7B-Diffusion:慢思考SFT模型,上下文长度为32k。 |
|
|
| ### 主要特点: |
|
|
| #### 推理 |
|  |
|
|
| openPangu-R-7B-Diffusion采用**前文因果块扩散解码**,逐块进行扩散解码。解码过程中块内为全注意力,前文为因果注意力。当块内的token全部完成解码时,将整块token存入前文KV缓存,缓存采用因果注意力掩码,同时解码下一个block的首token。 |
|
|
| - 支持变长推理和KV缓存。 |
| - 灵活的上下文长度,不受块长度的限制。 |
| - 支持自回归和块扩散两种解码方式。 |
| - 使用confidence threshold采样,相比标准自回归解码,吞吐量最高可提升2.5倍。 |
| - 类似于Fast dLLMv2在block内设置small block,可实现吞吐和效果的权衡,通常在small block长为4或8时表现最优。 |
|
|
| #### 训练 |
|
|
|  |
|
|
| openPangu-R-7B-Diffusion训练时将带掩码语料块与不带掩码的context拼接。对掩码语料块预测掩码部分token,对不带掩码的context部分进行自回归训练。 |
|
|
| - 保留与自回归模型相同的前文因果注意力掩码(causal attention mask)形状,快速从自回归模型适配到BlockDiffusion模型。 |
| - BlockDiffusion的块扩散训练,只利用了带掩码的语料块进行训练,无掩码的context部分信息被浪费。得益于前文因果(context-causal)的设计,openPangu-R-7B-Diffusion能够同时对context进行自回归训练,提升训练效率。 |
| - 与全注意力扩散模型相比,每个batch参与训练的token数更稳定,确保长序列训练能够平稳进行。 |
|
|
|  |
|
|
| ## 2. 模型架构 |
|
|
| | | openPangu-7B-Diffusion-Base | |
| | :----------------------------: | :-------------------------: | |
| | **Architecture** | Dense | |
| | **Parameters (Non-Embedding)** | 7B | |
| | **Number of Layers** | 34 | |
| | **Hidden Dimension** | 12800 | |
| | **Attention Mechanism** | GQA | |
| | **Number of Attention Heads** | 32 for Q,8 for KV | |
| | **Vocabulary Size** | 153k | |
| | **Context Length (Natively)** | 8k | |
| | **Continued training Tokens** | 700B | |
|
|
| ## 3. 测评结果 |
|
|
|
|
| | Benchmark | 测评指标 | LLaDA-8B-Base | LLaDA-MoE-7B-A1B-Base | Dream-v0-Base-7B | openPangu-7B-Diffusion-Base | |
| | :-------: | :---------: | :-----------: | :-------------------: | :--------------: | :-------------------------: | |
| | **通用能力** | | | | | | |
| | MMLU | Acc | 65.90 | 64.59 | <u>69.50</u> | **70.09** | |
| | MMLU-Pro | Exact Match | 41.80 | 39.16 | <u>48.15</u> | **59.05** | |
| | CEVAL | Acc | <u>70.50</u> | 65.56 | 59.18 | **73.03** | |
| | CMMLU | Acc | <u>69.90</u> | 65.65 | 60.87 | **77.27** | |
| | BBH | Exact Match | 49.80 | 52.71 | <u>57.90</u> | **77.30** | |
| | **数学能力** | | | | | | |
| | GSM8K | Exact Match | 70.70 | 66.41 | <u>77.79</u> | **78.77** | |
| | MATH | Exact Match | 27.30 | 36.10 | <u>39.60</u> | **46.02** | |
| | **代码能力** | | | | | | |
| | MBPP | Pass@1 | 38.20 | 52.40 | **56.20** | <u>55.80</u> | |
| | HumanEval | Pass@1 | 33.50 | 45.73 | **57.90** | <u>50.00</u> | |
| | **Avg** | | 51.96 | 54.26 | 60.05 | **65.26** | |
|
|
| **注:** 评估结果超参设定 `alg="entropy", num_small_blocks=8` 。尽管 openPangu-7B-Diffusion-Base 的最大长度为 8192 个 token,但通常 512 个 token 就足以用于基准测试。 |
|
|
| ## 4. 部署和使用 |
|
|
| ### 4.1 环境准备 |
|
|
| ##### 硬件规格 |
|
|
| Atlas 800T A2 (64GB),驱动与固件安装包获取请参照 [[Atlas 800T A2](https://www.hiascend.com/hardware/firmware-drivers/community?product=4&model=26&cann=8.2.RC1.alpha003&driver=Ascend+HDK+25.0.RC1)]。 |
|
|
| ##### 软件环境 |
|
|
| - 操作系统:Linux(推荐 openEuler>=24.03) |
| - CANN==8.1.RC1,安装准备及流程请参照 [[CANN Install]](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/82RC1alpha002/softwareinst/instg/instg_0001.html?Mode=PmIns&OS=Ubuntu&Software=cannToolKit) |
| - python==3.10 |
| - torch==2.6.0 |
| - torch-npu==2.6.0 |
| - transformers==4.53.2 |
| |
| 以上软件配套经过验证,理论可以支持更高版本,如有疑问,可以提交 issue。 |
| |
| |
| |
| ### 4.2 推理样例 |
| |
| 下述内容提供 openPangu-7B-Diffusion-Base 在 `transformers` 框架上进行推理的一个简单示例: |
| |
| > 运行前请修改 generate.py,添加模型路径。 |
| |
| ```bash |
| cd inference |
| python generate.py |
| ``` |
| |
| 与基准测试不同,为了实现最佳吞吐量,采样参数应设置为 `alg="confidence_threshold", threshold=0.9, num_small_blocks=1`,并根据设备选择合适的batch size。 |
|
|
| ## 5. 模型许可证 |
|
|
| 除文件中对开源许可证另有约定外,openPangu-7B-Diffusion-Base 模型根据 OPENPANGU MODEL LICENSE AGREEMENT VERSION 1.0 授权,旨在允许使用并促进人工智能技术的进一步发展。有关详细信息,请参阅模型存储库根目录中的 [LICENSE](LICENSE) 文件。 |
|
|
| ## 6. 免责声明 |
|
|
| 由于 openPangu-7B-Diffusion-Base(“模型”)所依赖的技术固有的技术限制,以及人工智能生成的内容是由盘古自动生成的,华为无法对以下事项做出任何保证: |
|
|
| - 尽管该模型的输出由 AI 算法生成,但不能排除某些信息可能存在缺陷、不合理或引起不适的可能性,生成的内容不代表华为的态度或立场; |
| - 无法保证该模型 100% 准确、可靠、功能齐全、及时、安全、无错误、不间断、持续稳定或无任何故障; |
| - 该模型的输出内容不构成任何建议或决策,也不保证生成的内容的真实性、完整性、准确性、及时性、合法性、功能性或实用性。生成的内容不能替代医疗、法律等领域的专业人士回答您的问题。生成的内容仅供参考,不代表华为的任何态度、立场或观点。您需要根据实际情况做出独立判断,华为不承担任何责任。 |
|
|
| ## 7. 反馈 |
|
|
| 如果有任何意见和建议,请提交issue或联系 openPangu@huawei.com。 |