BitCPM4-CANN-1B
BitCPM4-CANN-1B
OpenBMB 发布了 BitCPM4-CANN,首个原生构建于华为昇腾 NPU 上的端到端 1.58 位(三值)大语言模型训练系统。该系统将量化感知训练(QAT)集成到 Megatron-LM 框架中,并借助 MindSpeed 加速。团队训练了 0.5B、1B、3B 和 8B 四个模型,在 11 个 benchmark 上与全精度 MiniCPM4 对比,1B/3B/8B 模型保留了 95.7%–97.2% 的性能,推理时实现约 6 倍内存缩减。QAT 仅引入 5% 的训练吞吐量开销(每 NPU 148 vs. 155 TFLOP/s)。模型采用伪量化格式,可直接用 Transformers 加载推理。
简介
BitCPM4-CANN 是首个原生构建于华为昇腾 NPU 上的端到端 1.58 位(三值)大语言模型训练系统。该系统将量化感知训练(QAT)集成到 Megatron-LM 框架中,并借助 MindSpeed 加速,覆盖从自定义三值算子到昇腾 910B 分布式并行训练的完整训练栈。
我们训练了四个模型——BitCPM4-CANN-0.5B/1B/3B/8B——并在 11 个 benchmark 上将其与对应的全精度 MiniCPM4 模型进行对比评估。1B/3B/8B 模型保留了全精度性能的 95.7%–97.2%,同时在推理时实现了约 6 倍的内存缩减。QAT 仅引入 5% 的训练吞吐量开销(每 NPU 148 vs. 155 TFLOP/s)。
关键特性
- 🔬 1.58 位三值量化:将模型权重压缩为三值 {-1, 0, 1},相比 BF16 实现约 90% 的位宽缩减。
- 🖥️ 原生昇腾 NPU 训练:首个公开报道的在国产 NPU 平台上以 8B 规模进行的 1.58 位训练工作,为昇腾生态建立了可复用的低位训练基础设施。
- ⚡ 极小的训练开销:在昇腾 910B 上相比全精度训练仅降低 5% 的吞吐量。
- 📦 约 6 倍推理内存缩减:支持更长的上下文、更多服务副本以及消费级设备上的边缘部署。
重要说明
本仓库中的模型采用伪量化(fake quantization)格式。这意味着权重以标准浮点格式存储,但训练时已应用三值。您可以像使用全精度模型一样加载并运行这些模型的推理——无需特殊的量化库或自定义 kernel。
BitCPM4-CANN 模型系列
| 模型 | HuggingFace | GGUF |
|---|---|---|
| BitCPM4-CANN-0.5B | openbmb/BitCPM4-CANN-0.5B | openbmb/BitCPM4-CANN-0.5B-gguf |
| BitCPM4-CANN-1B | openbmb/BitCPM4-CANN-1B | openbmb/BitCPM4-CANN-1B-gguf |
| BitCPM4-CANN-3B | openbmb/BitCPM4-CANN-3B | openbmb/BitCPM4-CANN-3B-gguf |
| BitCPM4-CANN-8B | openbmb/BitCPM4-CANN-8B | openbmb/BitCPM4-CANN-8B-gguf |
使用方法
使用 Transformers 进行推理
由于 BitCPM4-CANN 模型采用伪量化格式,您可以像使用标准全精度模型一样使用它们:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(0)
path = 'openbmb/BitCPM4-CANN-1B'
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(path, torch_dtype=torch.bfloat16, device_map=device, trust_remote_code=True)
# 用户可以直接使用 chat 接口
responds, history = model.chat(tokenizer, "Write an article about Artificial Intelligence.", temperature=0.7, top_p=0.7)
print(responds)
# 用户也可以使用 generate 接口
# 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 模型在 11 个 benchmark(涵盖常识推理、领域知识以及数学与推理)上与其全精度 MiniCPM4 对应模型进行了对比评估。
| 任务 | 8B FP | 8B Ternary | 3B FP | 3B Ternary | 1B FP | 1B Ternary | 0.5B FP | 0.5B Ternary |
|---|---|---|---|---|---|---|---|---|
| ARC-c | 87.46 | 86.10 | 80.34 | 78.98 | 64.41 | 67.12 | 51.86 | 50.51 |
| ARC-e | 95.06 | 93.47 | 92.77 | 88.36 | 79.89 | 79.01 | 71.78 | 65.08 |
| BoolQ | 84.89 | 83.39 | 79.85 | 77.89 | 68.38 | 65.50 | 62.29 | 43.55 |
| PIQA | 80.52 | 78.78 | 70.57 | 72.69 | 66.16 | 65.45 | 60.99 | 58.49 |
| WinoGrande | 63.30 | 61.17 | 58.41 | 52.96 | 51.62 | 53.28 | 51.07 | 51.54 |
| CMMLU | 80.62 | 78.92 | 78.11 | 76.53 | 74.57 | 67.42 | 65.22 | 60.49 |
| C-Eval | 81.36 | 77.50 | 75.85 | 75.89 | 73.25 | 65.96 | 66.11 | 60.74 |
| MMLU | 75.83 | 70.65 | 66.95 | 64.41 | 57.71 | 57.71 | 55.55 | 50.73 |
| MMLU-Redux | 77.14 | 69.85 | 65.82 | 60.07 | 54.80 | 54.16 | 48.00 | 43.79 |
| BBH | 76.72 | 70.70 | 68.29 | 68.30 | 64.40 | 60.40 | 49.87 | 47.44 |
| GSM8K | 91.51 | 85.75 | 81.64 | 79.45 | 63.15 | 61.56 | 52.08 | 39.42 |
| 平均(11 项任务) | 81.31 | 77.84 | 74.42 | 72.32 | 65.30 | 63.42 | 57.71 | 51.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 | — |
| 三值 QAT | 148 | 4.5% |
在 2 节点 16 卡昇腾 910B 上的系统级吞吐量:
- 3B 模型:每卡约 2700 tokens/s
- 8B 模型:每卡约 1340 tokens/s
技术方法
BitCPM-CANN 使用一个三值量化器,将每个权重组映射到由组缩放因子缩放的 {-1, 0, 1},并通过 Straight-Through Estimator(STE)进行梯度流动训练。训练采用两阶段策略:先完成 QAT,再进行训练后蒸馏,这避免了训练早期放大不稳定性。
该系统在昇腾 NPU 上构建为四层垂直栈:
- QAT 训练逻辑:带 STE 的三值量化器,Megatron-LM 中的可插拔量化层。
- Megatron-LM 量化模型层:集成权重/激活量化器的张量并行线性层。
- 框架入口层:注入
torch_npu和mindspeed.megatron_adaptor以支持 NPU 执行。 - 昇腾软硬件栈:MindSpeed、CANN、HCCL 通信、昇腾 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}
}