OpenBMB · HF

BitCPM4-CANN-1B-gguf

BitCPM4-CANN-1B-gguf

二〇二六年六月六日 · 英文原文

OpenBMB 发布 BitCPM4-CANN 系列模型(0.5B/1B/3B/8B),这是首个在华为昇腾 910B NPU 上原生构建的端到端 1.58-bit(三值)大语言模型训练系统。该系统将量化感知训练(QAT)集成到 Megatron-LM 框架中,采用 MindSpeed 加速。在 11 个 benchmark 上,1B/3B/8B 模型保留了全精度 MiniCPM4 性能的 95.7%–97.2%,推理时实现约 6 倍内存缩减。QAT 仅引入 5% 的训练吞吐量开销(每 NPU 148 vs. 155 TFLOP/s)。模型权重以伪量化格式存储,可直接使用标准 Transformers 库加载推理。

本仓库托管 BitCPM4-CANN-1B 的 GGUF (llama.cpp) 量化版本。 关于伪量化权重和完整模型卡片,请参阅 BitCPM4-CANN-1B

简介

BitCPM4-CANN 是首个原生构建于华为昇腾 NPU 上的端到端 1.58-bit(三值)大语言模型训练系统。该系统将量化感知训练(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)。

主要特性

重要说明

本仓库中的模型采用 伪量化(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-0.5B'
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%

关键观察

训练效率

配置 每个 NPU 的 TFLOP/s 开销
全精度 155
三值 QAT 148 4.5%

在 2 节点 16 卡昇腾 910B 上的系统级吞吐量:

技术方法

BitCPM-CANN 使用一个三值量化器,将每个权重组映射到由组缩放因子缩放的 {-1, 0, 1},并通过 Straight-Through Estimator (STE) 进行梯度流动训练。训练采用两阶段策略:先完成 QAT,再进行训练后蒸馏,这避免了早期训练中放大训练不稳定性。

该系统在昇腾 NPU 上构建为四层垂直栈:

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

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

声明

许可证

引用

@article{bitcpm4cann,
  title={{BitCPM-CANN}: Native 1.58-Bit Large Language Model Training on Ascend NPU},
  author={BitCPM Team},
  year={2026}
}
译自 OpenBMB · HF · 录于 二〇二六年六月六日