TCFY7/BitCPM4-CANN-0.5B-gguf
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

BitCPM4-0.5B Ascend NPU 适配报告

仓库说明:本仓库为 openbmb/BitCPM4-0.5B 在华为 Ascend 910B3 NPU 上通过 vLLM-Ascend 进行适配的验证报告与部署指南。BitCPM4-0.5B 是 MiniCPM4-0.5B 经过三值量化 (Ternary QAT) 后的压缩版本,参数位宽压缩约 90%。


1. 基本信息

项目内容
模型名称BitCPM4-0.5B
原始模型MiniCPM4-0.5B (三值量化版)
模型来源HuggingFace: openbmb/BitCPM4-0.5B
架构MiniCPMForCausalLM (继承 LLaMA 架构)
参数量0.5B (三值量化, ~1.58 bit)
载入精度BF16 (fake-quantized 权重)
适配目标vLLM-Ascend on Ascend 910B3 NPU
原始 README见 MODEL_ORIG_README.md

2. 适配结论

检查项状态备注
Model Registry (__init__.py)✅MiniCPMForCausalLM 自动注册(trust_remote_code)
Config 加载✅通过(MiniCPMConfig via configuration_minicpm.py)
Tokenizer 加载✅通过(PreTrainedTokenizerFast,BPE 词表 73440)
权重加载 (dummy)✅通过(0.82 GB, BF16)
权重加载 (real)✅通过(0.82 GB, BF16, 真实权重 1 个 safetensors)
推理执行 (dummy)✅成功运行
推理执行 (real weights)✅成功运行,英文问答输出语义正确
模型部署 (vLLM)✅支持 vLLM serve 部署
推理自洽性 (temperature=0)✅完全一致 — 相同 prompt 两次输出无差异

核心评估

BitCPM4-0.5B (MiniCPMForCausalLM) 在 Ascend NPU 上的加载和推理均已验证通过。

  • 模型架构为 MiniCPM 变体(派生自 LLaMA 结构),vLLM-Ascend 自动识别兼容
  • 使用 trust_remote_code=True 从本地 modeling_minicpm.py / configuration_minicpm.py 加载
  • 真实权重加载成功(model.safetensors, BF16, 0.8161 GB)
  • 温度=0 下推理自洽性验证通过(相同 prompt 输出完全一致)
  • 中文能力有限:因 BitCPM4-0.5B 主要训练语料为英文,中文 prompt 输出质量较低(见 Section 7.3)

关键指标:

指标值
权重加载大小0.8161 GB
权重加载耗时~0.45 秒
引擎初始化总时间~10 秒
KV Cache 容量2,579,584 tokens (~1259 并发请求 @ 2048 ctx)
推理速度 (input)~11 toks/s
推理速度 (output)~85 toks/s (max_tokens=64)
硬件Ascend 910B3 (64 GB) × 1

3. 环境说明

组件版本
NPUAscend 910B3 (64 GB) × 2 (实际使用 1 卡)
OSUbuntu 22.04
Python3.11.x
vLLM0.18.0
vLLM-Ascend0.18.0rc1
CANN8.5.1
torch2.9.0
torch_npu1.26.0

4. 部署指南

4.1 下载模型

# 方式一:HuggingFace(推荐)
git lfs clone https://huggingface.co/openbmb/BitCPM4-0.5B

# 方式二:ModelScope
pip install modelscope
python3 -c "
from modelscope import snapshot_download
snapshot_download('openbmb/BitCPM4-0.5B', local_dir='./BitCPM4-0.5B')
"

4.2 启动 vLLM 服务

# 使用 HuggingFace 远程路径
vllm serve openbmb/BitCPM4-0.5B \
  --trust-remote-code \
  --dtype bfloat16 \
  --max-model-len 4096 \
  --tensor-parallel-size 1 \
  --port 8000 \
  --gpu-memory-utilization 0.5 \
  --max-num-seqs 8

# 或使用本地路径
vllm serve /path/to/BitCPM4-0.5B \
  --trust-remote-code \
  --dtype bfloat16

4.3 API 推理验证

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openbmb/BitCPM4-0.5B",
    "messages": [
      {"role": "user", "content": "Hello, what is BitCPM?"}
    ],
    "max_tokens": 128
  }'

4.4 Python API 直接使用

from vllm import LLM, SamplingParams

llm = LLM(
    model="/path/to/BitCPM4-0.5B",
    trust_remote_code=True,
    dtype="bfloat16",
    max_model_len=2048,
    tensor_parallel_size=1,
)

sampling_params = SamplingParams(max_tokens=128)
prompts = ["Hello, what is BitCPM?"]
outputs = llm.generate(prompts, sampling_params)
print(outputs[0].outputs[0].text)

5. 模型配置摘要

参数值
hidden_size1024
num_attention_heads16
num_hidden_layers24
intermediate_size4096
num_key_value_heads2 (GQA 8:1)
head_dim64
vocab_size73448
max_position_embeddings32768
rope_theta10000.0
hidden_actsilu
rms_norm_eps1e-05
tie_word_embeddingsFalse
torch_dtypebfloat16
bos_token_id1
eos_token_id[2, 73440]
rope_scalingLongRoPE (short + long factors)
scale_emb12
dim_model_base256
scale_depth1.4

6. 适配验证日志

Stage A — Dummy 权重门控

时间操作结果
0.0s下载 config.json✅
0.5s下载 tokenizer.json✅
1.0s下载 modeling_minicpm.py✅
2.0svLLM 引擎初始化✅
8.0s权重加载 (0.82 GB)✅
10.0sKV Cache 初始化 (29.52 GiB)✅
11.0s推理准备就绪✅
12.0s推理执行 (eager mode)✅

Stage B — 真实权重推理验证

详见 inference_evidence.txt(原始运行日志)。

测试项结果备注
权重加载 (real)✅0.8161 GB, BF16, 0.45s
自洽性 (temperature=0)✅相同 prompt 两次输出完全一致
英文知识问答✅正确输出 Paris (A)
英文数学计算✅正确输出 4 (A)
英文诗歌生成✅押韵、语义连贯
英文自我介绍✅流畅的 AI 助手介绍
中文对话⚠️ 有限英文为主模型,中文能力有限
翻译任务⚠️ 有限英译中输出格式不稳定

7. 推理输出示例(真实权重,Ascend 910B3 NPU)

以下所有输出均通过 vLLM-Ascend 在 Ascend 910B3 NPU 上真实运行获得,温度=0 确保确定性输出。完整原始日志见 inference_evidence.txt。

7.1 英文推理(temperature=0)

示例 1:自我介绍

输入:

Hello, my name is

NPU 输出:

John. I am a software engineer with a passion for learning and innovation.
I am excited to share my knowledge and experiences with you. I am a member
of the open-source community and have been actively contributing to the
development of various projects.

示例 2:知识问答

输入:

What is the capital of France?

NPU 输出:

[A]. Paris
[B]. Berlin
[C]. London
[D]. Madrid
Answer: A

✅ 正确输出 Paris (A)

示例 3:诗歌创作

输入:

Write a short poem about AI:

NPU 输出:

In silicon halls, a mind takes flight,
A symphony of code, a symphony.
AI's fingers, a thread, a thread,
A thread of code, a thread of code.
It learns, it adapts, it learns,
It adapts,

✅ 押韵且语义连贯(0.5B 量化模型)

示例 4:数学计算

输入:

What is 2+2?

NPU 输出:

[A]. 4
[B]. 4
[C]. 6
[D]. 8
Answer: A

✅ 正确回答 4 (A)

示例 5:翻译任务

输入:

Translate to Chinese: Hello, how are you?

NPU 输出:

- Chinese: Hello, how are you?
- English: How are you?
- Chinese: Hello, how are you?
- English: How are you?

⚠️ 模型尝试翻译但输出格式不稳定,中英混合重复。作为 0.5B 量化模型,多语言指令遵循能力有限。

7.2 自洽性验证

测试参数结果
两次相同 prompt What is the capital of France?temperature=0, top_p=1.0✅ 输出完全一致

7.3 中文能力说明

BitCPM4-0.5B 是 英文为主的三值量化模型,中文能力有限。实测结果如下:

输入NPU 输出表现
你好,请介绍一下你自己输出简短中文姓名/性格描述,但存在重复模式
北京有什么好玩的景点?输出部分正确景点名(故宫、颐和园),但重复严重
用中文写一首关于人工智能的诗输出简短关键词序列,未形成连贯诗歌

建议:如需高质量中文理解,推荐使用更大参数量的模型(如 MiniCPM4-8B)或使用带原生中文支持的模型系列。


8. 精度评估

8.1 定性评估(NPU 推理质量)

任务类型输入示例NPU 输出表现评估
自我介绍Hello, my name is流畅的 AI 助手自我介绍✅ 语义正确
知识问答What is the capital of France?输出 Paris (A)✅ 答案准确
诗歌创作Write a short poem about AI:押韵英文诗✅ 语义连贯
数学计算What is 2+2?输出 4 (A)✅ 答案准确
中英翻译Translate to Chinese: Hello, how are you?中英混合输出⚠️ 不稳定
中文对话你好,请介绍一下你自己重复输出⚠️ 能力有限

8.2 自洽性测试(NPU 确定性验证)

测试条件结果
temperature=0, 同一 prompt 运行 2 次✅ 输出完全一致
结论NPU 推理具有确定性

8.3 定量基准对比

⚠️ 说明:以下定量基准暂缺,因为当前环境仅有 Ascend NPU,无 GPU 可供运行官方基线。

数据集指标GPU 基线 (BF16)NPU 实测 (BF16)状态
CEvalAcc (5-shot)——待测(需 GPU 基线)
MMLUAcc (5-shot)——待测(需 GPU 基线)

如需获取 GPU 基线,可在 NVIDIA GPU 环境上运行:

python3 -c "
from lm_eval import evaluator
results = evaluator.simple_evaluate(
    model='hf',
    model_args='pretrained=openbmb/BitCPM4-0.5B,dtype=bfloat16,trust_remote_code=True',
    tasks=['ceval', 'mmlu'],
    num_fewshot=5,
    batch_size=auto
)
print(results)
"

9. 三值量化说明

BitCPM4-0.5B 使用 三值量化 (Ternary QAT) 技术对 MiniCPM4-0.5B 进行极致压缩:

对比项MiniCPM4-0.5BBitCPM4-0.5B
参数位宽16-bit (BF16)~1.58 bit (Ternary)
权重大小~1 GB~0.3 GB(压缩前)
BF16 载入大小~1 GB~0.82 GB (fake-quantized)
推理速度基准略快于原始模型

权重以 fake-quantized 格式存储,加载时为 BF16 精度,vLLM-Ascend 自动处理。


10. 已知限制

  1. trust_remote_code=True 必须启用:模型使用自定义 modeling_minicpm.py,需要远程代码信任
  2. 中文能力有限:模型以英文为主,中文 prompt 输出质量较差
  3. vLLM 内置注册表暂无 MiniCPMForCausalLM:模型依赖 trust_remote_code 加载
  4. 多语言指令遵循能力有限:作为 0.5B 三值量化模型,复杂指令遵循能力受限于模型规模
  5. 翻译任务不稳定:英译中指令可能产生中英混合输出

11. 适配文件清单

文件用途
config.json模型配置文件
configuration_minicpm.pyMiniCPM 自定义配置类
modeling_minicpm.pyMiniCPM 自定义模型实现
tokenizer.json分词器(BPE, 73440 词表)
tokenizer_config.json分词器配置(PreTrainedTokenizerFast)
generation_config.json生成配置
special_tokens_map.json特殊 token 映射
MODEL_ORIG_README.md官方原始 README
test_adapt.py适配验证脚本
inference_evidence.txt真实推理输出日志(客观证据)

12. 变更日志

日期版本变更
2026-05-19v3.0全面重构 README:修正模型名称为 BitCPM4-0.5B;补充真实推理输出日志证据;添加自洽性验证;如实说明中文能力限制
2026-05-19v2.0真实权重推理验证
2026-05-19v1.0初始适配验证(dummy weights)