本仓库托管 BitCPM4-CANN-3B 的 GGUF(llama.cpp)量化版本。 如需伪量化权重及完整模型卡片,请参考 BitCPM4-CANN-3B。
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 倍内存减少。量化感知训练仅引入 5% 的训练吞吐量开销(每 NPU 148 TFLOP/s 对比全精度 155 TFLOP/s)。
本仓库中的模型采用伪量化(假量化)格式。这意味着权重以标准浮点格式存储,三元值已在训练过程中应用。您可以完全按照全精度模型的方式加载并运行这些模型进行推理——无需特殊的量化库或自定义内核。
| 模型 | 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 |
由于 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)
# 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 FP | 8B 三值 | 3B FP | 3B 三值 | 1B FP | 1B 三值 | 0.5B FP | 0.5B 三值 |
|---|---|---|---|---|---|---|---|---|
| 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卡Ascend 910B上的系统级吞吐量:
BitCPM-CANN采用三元量化器,通过逐组因子将每个权重组映射到{-1, 0, 1},并使用直通估计器(STE)进行梯度流训练。训练遵循两阶段策略:完整的QAT后接训练后蒸馏,这避免了在早期训练阶段放大训练不稳定性。
该系统在Ascend NPU上构建为四层垂直堆栈:
torch_npu和mindspeed.megatron_adaptor注入。有关完整技术细节,请参考我们的技术报告。
@article{bitcpm4cann,
title={{BitCPM-CANN}: Native 1.58-Bit Large Language Model Training on Ascend NPU},
author={BitCPM Team},
year={2026}
}