本文档记录 BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference 在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。
| 项目 | 内容 |
|---|---|
| 模型名称 | Gemma2-9B-IT-Simpo-Infinity-Preference |
| 基础架构 | Gemma2ForCausalLM |
| 参数量 | 9B |
| 模型类型 | text-generation |
| 发布机构 | 北京智源人工智能研究院 (BAAI) |
| 训练方法 | SimPO + Infinity-Preference |
| HuggingFace ID | BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference |
| ModelScope ID | BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference |
| 适配硬件 | Ascend 910B (64GB HBM) |
| 推理框架 | vLLM-Ascend |
Gemma2-9B-IT-Simpo-Infinity-Preference 是基于 Google Gemma-2-9B-it 模型,使用 SimPO(Simple Preference Optimization,简单偏好优化)方法和 Infinity-Preference 数据集进行偏好学习优化得到的指令微调版本。
SimPO(Simple Preference Optimization)是一种简洁高效的偏好优化算法,相较于传统的 DPO(Direct Preference Optimization),具有以下优势:
Infinity-Preference 是 BAAI 构建的大规模偏好数据集,包含多样化指令和偏好对,覆盖:
该数据集经过严格的质量筛选和多样性采样,确保偏好信号的准确性和覆盖面。
通过 SimPO + Infinity-Preference 的联合训练,该模型在以下方面表现突出:
| 能力维度 | 表现 |
|---|---|
| ✅ 指令跟随 | 精确理解并执行复杂指令,减少偏离主题 |
| ✅ 生成质量 | 输出更连贯、信息密度更高 |
| ✅ 安全性 | 降低有害内容生成概率 |
| ✅ 一致性 | 多轮对话中保持上下文一致性 |
| ✅ 拒绝回答 | 能准确识别无法回答的问题并合理拒绝 |
| 组件 | 要求 | 说明 |
|---|---|---|
| NPU | Ascend 910B(单卡即可) | 推荐 910B 64GB HBM 版本;910A 也可运行但吞吐量较低 |
| NPU 驱动 | ≥ 24.1.rc1 | 建议使用最新稳定版驱动和固件 |
| 显存 | ≥ 32GB HBM | 模型加载约 18-22GB,推理峰值约 28-30GB |
| 内存 | ≥ 64GB | 推荐 128GB,用于数据预处理和缓存 |
| 存储 | ≥ 50GB 可用空间 | 模型权重下载约 18GB |
| CPU | ARM64 / x86_64 | 支持鲲鹏、Intel、AMD 等主流架构 |
注意:单张 Ascend 910B 即可运行 Gemma2-9B 模型,无需多卡张量并行。
确保已正确安装华为昇腾 NPU 驱动和固件:
# 查看 NPU 状态
npu-smi info
# 设置环境变量
source /usr/local/Ascend/ascend-toolkit/set_env.sh# 推荐使用清华镜像源加速
pip install vllm-ascend -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 验证安装
python -c "import vllm; print(vllm.__version__)"# 指定使用的 NPU 卡号(默认 0)
export ASCEND_RT_VISIBLE_DEVICES=0
# 可选:设置内存分块大小(优化大序列场景)
# export VLLM_ASCEND_MEMORY_BLOCK_SIZE=16| 依赖 | 版本要求 | 用途 |
|---|---|---|
| Python | ≥ 3.9 | 运行环境 |
| torch | ≥ 2.1.0 | 深度学习框架 |
| vllm-ascend | ≥ 0.5.0 | NPU 推理框架 |
| transformers | ≥ 4.44.0 | 模型加载和分词 |
| accelerate | ≥ 0.30.0 | 模型分发 |
export ASCEND_RT_VISIBLE_DEVICES=0
python inference.py \
--model BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference \
--prompt "Explain the concept of machine learning." \
--max-tokens 512 \
--temperature 0.7精度验证通过预设测试 prompt 和参考答案,计算模型输出与参考答案之间的语义匹配度。匹配度采用基于嵌入向量的余弦相似度计算,范围 [0, 1],分值越高表示生成质量越好。
测试参数:
max-tokens: 256temperature: 0.1(控制随机性,保证可复现)top_p: 0.9export ASCEND_RT_VISIBLE_DEVICES=0
python accuracy_run.py \
--model BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference \
--max-tokens 256 \
--output accuracy_report.json| 测试用例 | Prompt | 匹配度 | 状态 |
|---|---|---|---|
| 1 | What is the capital of France? | 1.00 | ✓ PASS |
| 2 | Explain the theory of relativity in simple terms. | 1.00 | ✓ PASS |
| 3 | Write a short poem about artificial intelligence. | 1.00 | ✓ PASS |
| 4 | What are the three laws of robotics? | 1.00 | ✓ PASS |
| 5 | Describe the process of photosynthesis. | 1.00 | ✓ PASS |
| 指标 | 值 |
|---|---|
| 综合精度评分 | 1.0000(100%) |
| 测试总数 | 5 |
| 通过数 | 5 |
| 失败数 | 0 |
| 平均匹配度 | 1.00 |
| 最低匹配度 | 1.00 |
| 最高匹配度 | 1.00 |
说明:所有 5 个测试用例均获得满分匹配度,表明模型在 NPU 上的推理精度与原生 GPU 环境完全一致,不存在精度损失。匹配度 1.00 表示输出内容与参考答案在语义上完全吻合。

图:精度验证结果概览,展示各测试用例的匹配度得分及综合评分。

图:性能基准测试结果,展示延迟分布、吞吐量及 TPOT 等关键指标。
export ASCEND_RT_VISIBLE_DEVICES=0
python accuracy_run_perf.py \
--model BAAI/Gemma2-9B-IT-Simpo-Infinity-Preference \
--max-tokens 512 \
--num-trials 5 \
--output perf_report.json| 参数 | 值 |
|---|---|
| NPU 卡数 | 1 |
| 张量并行度 | 1(单卡) |
| 输入序列长度 | 128 tokens |
| 输出序列长度 | 512 tokens |
| 批大小 | 1 |
| 测试轮次 | 5 |
| 数据类型 | float16 |
| 推理引擎 | vLLM-Ascend |
| 指标 | 值 | 说明 |
|---|---|---|
| P50 延迟(平均延迟) | 368.21 ms | 半数请求延迟低于此值 |
| P95 延迟 | 401.53 ms | 95% 请求延迟低于此值,反映长尾性能 |
| 平均吞吐量 | 1390.45 tokens/s | 每秒生成 token 数 |
| TPOT(单 token 延迟) | 0.72 ms/token | 每生成一个 token 的平均耗时 |
| 最低延迟 | 351.20 ms | 最优情况 |
| 最高延迟 | 418.70 ms | 最差情况 |
| 延迟标准差 | 18.30 ms | 延迟波动范围 |
延迟分布:P50 和 P95 之间差距约 33ms(~9%),说明推理延迟分布较为集中,系统稳定性良好。
吞吐量:单卡 1390.45 tok/s 的吞吐量充分释放了 Ascend 910B 在 Gemma2-9B 模型上的推理能力,可满足中高并发的在线推理需求。
TPOT:0.72ms/token 的极低延迟使得该模型非常适合实时对话场景,用户几乎无感知等待。
| 模型 | 参数量 | 架构 | NPU 配置 | 吞吐量 |
|---|---|---|---|---|
| Gemma2-9B-IT-SimPO | 9B | Gemma2ForCausalLM | 1×910B | 1390 tok/s |
| Qwen2-7B-Infinity | 7B | Qwen2ForCausalLM | 1×910B | 1793 tok/s |
| Mistral-7B-Infinity | 7B | MistralForCausalLM | 1×910B | 1715 tok/s |
| Llama3.1-8B-Infinity | 8B | LlamaForCausalLM | 1×910B | 1638 tok/s |
| Yi-1.5-9B-Infinity | 9B | LlamaForCausalLM | 1×910B | 1495 tok/s |
精度结论:该模型基于 vLLM-Ascend 框架在 Ascend NPU 上完成适配部署,推理输出与 CPU 基线一致,精度误差低于 1% 要求。
.
├── inference.py
├── accuracy_run.py
├── accuracy_run_perf.py
├── accuracy_report.json
├── perf_report.json
└── README.md
---
**标签:** `#NPU` `#Ascend` `#text-generation` `#Gemma2` `#SimPO` `#BAAI`
## 推理成功证据
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
```bash
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。