OpenBMB 开源社区/BitCPM4-CANN-8B
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

GitHub 代码库 | 技术报告

👋 加入我们的 Discord 和 微信 社群

简介

BitCPM4-CANN 是首个基于华为昇腾 NPU 原生构建的端到端 1.58 位(三值化)大语言模型训练系统。该系统将量化感知训练(QAT)集成到 Megatron-LM 框架中,并结合 MindSpeed 加速技术,覆盖了从自定义三值算子到基于昇腾 910B 的分布式并行训练的完整训练栈。

我们训练了 BitCPM4-CANN-0.5B/1B/3B/8B 共四个模型,并在 11 个基准测试上与它们的全精度 MiniCPM4 对应模型进行了评估。1B/3B/8B 模型保留了全精度性能的 95.7%–97.2%,同时在推理时实现了约 6 倍的内存 reduction。QAT 仅引入 5% 的训练吞吐量 overhead(每 NPU 148 TFLOP/s 对比全精度 155 TFLOP/s)。

核心特性

  • 🔬 1.58 位三值化量化:将模型权重压缩为三值 {-1, 0, 1},与 BF16 相比实现约 90% 的位宽 reduction。
  • 🖥️ 昇腾 NPU 原生训练:首个公开报道的在国产 NPU 平台上进行 8B 规模 1.58 位训练的工作,为昇腾生态建立了可复用的低比特训练基础设施。
  • ⚡ 极小训练 overhead:与昇腾 910B 上的全精度训练相比,吞吐量仅下降 5%。
  • 📦 约 6 倍推理内存 reduction:支持更长的上下文、更多的服务副本以及在消费级设备上的边缘部署。

重要说明

本代码库中的模型采用 伪量化(fake quantization)格式。这意味着权重以标准浮点格式存储,但在训练过程中已应用三值化处理。您可以完全按照全精度模型的方式加载和运行这些模型进行推理,无需特殊的量化库或自定义内核。

BitCPM4-CANN 模型系列

模型HuggingFaceGGUF
BitCPM4-CANN-0.5Bopenbmb/BitCPM4-CANN-0.5Bopenbmb/BitCPM4-CANN-0.5B-gguf
BitCPM4-CANN-1Bopenbmb/BitCPM4-CANN-1Bopenbmb/BitCPM4-CANN-1B-gguf
BitCPM4-CANN-3Bopenbmb/BitCPM4-CANN-3Bopenbmb/BitCPM4-CANN-3B-gguf
BitCPM4-CANN-8Bopenbmb/BitCPM4-CANN-8Bopenbmb/BitCPM4-CANN-8B-gguf

使用方法

基于 Transformers 进行推理

由于 BitCPM4-CANN 模型采用伪量化格式,您可以像使用标准全精度模型一样直接使用它们:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)

path = 'openbmb/BitCPM4-CANN-8B'
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map=device, trust_remote_code=True)

# User can directly use the chat interface
responds, history = model.chat(tokenizer, "Write an article about Artificial Intelligence.", temperature=0.7, top_p=0.7)
print(responds)

# User can also use the generate interface
# messages = [
#     {"role": "user", "content": "Write an article about Artificial Intelligence."},
# ]
# prompt_text = tokenizer.apply_chat_template(
#     messages,
#     tokenize=False,
#     add_generation_prompt=True,
# )
# model_inputs = tokenizer([prompt_text], return_tensors="pt").to(device)

# model_outputs = model.generate(
#     **model_inputs,
#     max_new_tokens=1024,
#     top_p=0.7,
#     temperature=0.7
# )
# output_token_ids = [
#     model_outputs[i][len(model_inputs[i]):] for i in range(len(model_inputs['input_ids']))
# ]

# responses = tokenizer.batch_decode(output_token_ids, skip_special_tokens=True)[0]
# print(responses)

评估结果

主要结果

BitCPM4-CANN 模型与全精度 MiniCPM4 模型在 11 项基准测试中进行了对比评估,涵盖常识推理、领域知识以及数学与推理。

任务8B FP8B 三值3B FP3B 三值1B FP1B 三值0.5B FP0.5B 三值
ARC-c87.4686.1080.3478.9864.4167.1251.8650.51
ARC-e95.0693.4792.7788.3679.8979.0171.7865.08
BoolQ84.8983.3979.8577.8968.3865.5062.2943.55
PIQA80.5278.7870.5772.6966.1665.4560.9958.49
WinoGrande63.3061.1758.4152.9651.6253.2851.0751.54
CMMLU80.6278.9278.1176.5374.5767.4265.2260.49
C-Eval81.3677.5075.8575.8973.2565.9666.1160.74
MMLU75.8370.6566.9564.4157.7157.7155.5550.73
MMLU-Redux77.1469.8565.8260.0754.8054.1648.0043.79
BBH76.7270.7068.2968.3064.4060.4049.8747.44
GSM8K91.5185.7581.6479.4563.1561.5652.0839.42
平均(11 项任务)81.3177.8474.4272.3265.3063.4257.7151.98
性能保留率95.7%97.2%97.1%90.1%

主要观察结果

  • 1B 及以上模型性能保留率≥95.7%:3B 模型实现了最高 97.2% 的性能保留率,表明该规模下的三值量化感知训练(QAT)带来的性能损失极小。
  • 0.5B 模型展现出规模依赖性敏感性:最小模型的性能保留率为 90.1%,表明当模型容量有限时,量化扰动造成的影响更大。
  • 与 MiniCPM4 实现 1:1 对齐:通过匹配评估,可直接做出替换决策——部署时可将特定全精度模型替换为其三值对应模型,并明确量化权衡关系。

训练效率

配置每NPU的TFLOP/s性能损耗
全精度155—
三元量化QAT1484.5%

2节点16卡Ascend 910C上的系统级吞吐量:

  • 3B模型:每张卡约2700 tokens/s
  • 8B模型:每张卡约1340 tokens/s

技术方案

BitCPM-CANN采用三元量化器,通过组级缩放因子将每个权重组映射到{-1, 0, 1},并使用直通估计器(STE)进行梯度传播训练。训练遵循两阶段策略:先进行完整的QAT,再进行训练后蒸馏,以避免在训练初期放大训练不稳定性。

该系统在Ascend NPU上构建为四层垂直堆栈:

  1. QAT训练逻辑:带STE的三元量化器,Megatron-LM中的可插拔量化层。
  2. Megatron-LM量化模型层:集成权重/激活量化器的张量并行线性层。
  3. 框架入口层:torch_npu和mindspeed.megatron_adaptor注入以实现NPU执行。
  4. Ascend软硬件堆栈:MindSpeed、CANN、HCCL通信、Ascend 910B NPU硬件。

有关完整技术细节,请参考我们的技术报告。

声明

  • 作为语言模型,BitCPM4-CANN通过学习海量文本生成内容。
  • 但它不具备理解或表达个人观点、价值判断的能力。
  • BitCPM4-CANN生成的任何内容均不代表模型开发者的观点或立场。
  • 因此,在使用BitCPM4-CANN生成的内容时,用户应自行对其进行评估和验证,并承担全部责任。

许可证

  • 本仓库和BitCPM4-CANN模型基于Apache-2.0许可证发布。

引用

  • 如果您认为我们的工作有价值,请引用我们的技术报告。
@article{bitcpm4cann,
  title={{BitCPM-CANN}: Native 1.58-Bit Large Language Model Training on Ascend NPU},
  author={BitCPM Team},
  year={2026}
}