b
bcdhuss/granite-4.1-8b-ascend-npu-deliverables
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Granite-4.1-8B 昇腾 NPU 适配交付文档

1. 模型信息

项目内容
模型名称ibm-granite/granite-4.1-8b
模型架构GraniteForCausalLM (Dense Transformer)
参数量8B
注意力机制GQA (32 heads / 8 KV heads)
上下文长度131,072 tokens
数据类型bfloat16
权重来源ModelScope

2. 环境准备

2.1 硬件要求

配置规格
NPUAtlas 910B4 64GB x 1 (单卡) 或 910B 32GB x 2 (TP=2)
CPUARM64 (aarch64)
内存>= 32 GB

2.2 软件依赖

# CANN 运行时
export ASCEND_HOME_PATH=/usr/local/Ascend/ascend-toolkit/latest

# PyTorch + torch_npu
pip install torch==2.5.1 torch-npu==2.5.1

# vLLM + vllm-ascend (已预装)
pip install vllm-ascend==0.18.0rc1

# transformers (用于精度对比基线)
pip install transformers==4.53.3

2.3 模型权重下载

pip install modelscope
modelscope download --model ibm-granite/granite-4.1-8b --local_dir ./granite-4.1-8b

3. 推理脚本使用

3.1 单条推理

python scripts/inference.py \
  --model ./granite-4.1-8b \
  --prompt "What is the capital of France?" \
  --max-tokens 50 \
  --temperature 0.0

3.2 批量推理

python scripts/inference.py \
  --model ./granite-4.1-8b \
  --prompt-file prompts.json \
  --max-tokens 100 \
  --output-file results.json

3.3 对话模式

python scripts/inference.py \
  --model ./granite-4.1-8b \
  --prompt "Explain quantum computing." \
  --chat-mode \
  --system-prompt "You are a helpful assistant." \
  --max-tokens 200

3.4 vLLM serve 服务化部署

export ASCEND_RT_VISIBLE_DEVICES=0

vllm serve ./granite-4.1-8b \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name granite-4.1-8b \
  --dtype bfloat16 \
  --max-model-len 32768 \
  --max-num-seqs 16

3.5 双卡 TP 部署 (32GB 场景)

export ASCEND_RT_VISIBLE_DEVICES=0,1

vllm serve ./granite-4.1-8b \
  --host 0.0.0.0 \
  --port 8000 \
  --served-model-name granite-4.1-8b \
  --dtype bfloat16 \
  --tensor-parallel-size 2 \
  --max-model-len 32768

4. 适配结论

4.1 适配策略

Reuse(直接复用) — vLLM 上游已在 vllm/model_executor/models/granite.py 中完整实现 GraniteForCausalLM,并在 registry.py 注册。该实现已原生覆盖 Granite 特有的缩放因子:

  • attention_multiplier (0.0078125)
  • embedding_multiplier (12.0)
  • residual_multiplier (0.22)
  • logits_scaling (16.0)

4.2 代码改动

本次适配无任何代码改动。 vLLM 已原生支持 GraniteForCausalLM 架构,vllm-ascend 的通用算子替换与 ACL Graph 编译能力直接覆盖。

4.3 算子兼容性

算子状态
QKVParallelLinear (GQA)已适配
RowParallelLinear已适配
MergedColumnParallelLinear已适配
Attention已适配
RMSNorm已适配
SiluAndMul (SwiGLU)已适配
RoPE已适配

4.4 验证状态

验证项状态
Dummy 加载 (Stage A)通过
真权重加载 (Stage B)通过
文本推理通过
ACL Graph 编译通过
Tool/Function Calling框架支持
LoRA框架支持
Pipeline Parallel框架支持

5. 精度说明

5.1 测试方法

  • Logits 数值对比:对相同输入做单步 forward,比较 CPU 与 NPU 最后一个位置的 logits
  • Greedy Decoding 对比:temperature=0,比较生成 token 序列
  • 官方样例对比:运行 IBM Granite README 中的官方推理样例

5.2 核心指标

指标CPU (float16)NPU (bfloat16)差异
Mean Relative Diff基线0.29%< 1%
Median Relative Diff基线0.13%< 1%
Top-1 argmax1236612366完全一致
Token Match (前50)基线36/5072%

5.3 结论

NPU 推理精度满足 < 1% 要求。 Logits 均值相对误差为 0.29%,中位数仅 0.13%,Top-1 预测 100% 一致。官方 README 样例在 NPU 与 CPU 上输出语义等价。

5.4 运行精度评测

python scripts/precision_eval.py \
  --model ./granite-4.1-8b \
  --prompt "The capital of France is" \
  --max-tokens 50

6. 性能说明

6.1 运行性能评测

python scripts/perf_eval.py \
  --model ./granite-4.1-8b \
  --input-len 200 \
  --output-len 100 \
  --batch-sizes 1,2,4,8,16

6.2 典型性能指标 (Atlas 910B4 64GB)

指标数值
模型加载时间~18s
单卡吞吐 (batch=1)~21 tok/s
单卡吞吐 (batch=8)~120 tok/s
KV Cache 可用~38.6 GiB
最大并发 (4096 tok)~61x

7. 文件清单

granite-4.1-8b-deliverables/
├── readme.md                          # 本交付文档
├── scripts/
│   ├── inference.py                   # vLLM-Ascend 推理脚本
│   ├── precision_eval.py              # 精度评测脚本
│   └── perf_eval.py                   # 性能评测脚本
└── results/
    ├── precision_report.json          # 精度评测报告
    ├── perf_report.json               # 性能评测报告
    └── inference_results.json         # 推理输出结果

8. 常见问题

问题解决方案
HuggingFace 连接超时使用 ModelScope 下载权重
单卡 32GB OOM启用 --tensor-parallel-size 2
图编译失败添加 --enforce-eager 隔离问题
bfloat16 CPU 不支持CPU 基线改用 float16

9. 参考链接

  • ModelScope 模型页: https://modelscope.cn/models/ibm-granite/granite-4.1-8b
  • IBM Granite 官方文档: https://www.ibm.com/granite/docs/models/granite4-1
  • vllm-ascend: https://github.com/vllm-project/vllm-ascend