OPT-6.7B NPU 适配验证
#+NPU
1. 简介
本仓库记录 OPT-6.7B 模型在 Ascend NPU 上的适配和验证结果。
2. 验证环境
| 组件 | 版本 |
|---|
| Python | 3.11.14 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0 |
| transformers | 4.57.6 |
| vllm-ascend | 0.18.0rc1 |
| CANN | 8.5.1 |
| NPU | Ascend 910B2 |
| modelscope | 1.36.3 |
3. 模型下载
modelscope download --model facebook/opt-6.7b
4. 模型架构
| 参数 | 值 |
|---|
| 架构 | OPTForCausalLM |
| 隐藏层大小 | 4096 |
| 层数 | 32 |
| 注意力头数 | 32 |
| 中间层大小 | 16384 |
| 词表大小 | 50272 |
| 总参数量 | ~6.7B |
5. 基础推理验证
#!/usr/bin/env python3
import torch_npu
from vllm import LLM, SamplingParams
MODEL_PATH = "/home/openmind/volume/modelscope/hub/models/facebook/opt-6___7b"
llm = LLM(
model=MODEL_PATH,
trust_remote_code=True,
dtype="float16",
tensor_parallel_size=1,
max_model_len=2048,
gpu_memory_utilization=0.9,
enforce_eager=True,
)
sampling = SamplingParams(max_tokens=64, temperature=0)
outputs = llm.generate(["The capital of France is"], sampling)
print(outputs[0].outputs[0].text)
冒烟测试结果 (4/4 通过)
| 测试 | 输入 | 输出 |
|---|
| 常识推理 | The capital of France is | Paris. |
| 代码生成 | def fibonacci(n): | (生成内容) |
| 翻译 | Translate to English: Bonjour le monde | (生成内容) |
| 数学运算 | 2 + 3 * 4 = | (生成内容) |
6. 精度评测
ARC-Challenge 25-shot
| 指标 | hardware: NPU (vLLM-Ascend tp=1) | 基线 (GPU) | 误差 |
|---|
| 准确率 | 23.55% (276/1172) | 23.00% | +0.55% |
| 评测时间 | 469s | - | - |
| 吞吐量 | 2.50 samples/s | - | - |
7. 性能基准
输入长度 vs 输出吞吐量 (output_len=128, num_prompts=10):
| 输入长度 | 吞吐量 (tokens/s) |
|---|
| 32 | 248.35 |
| 128 | 238.82 |
| 512 | 243.23 |
| 1024 | 245.64 |
| 2048 | 246.71 |
8. 注意事项
- 模型为 OPT 架构,单卡即可加载(~12.4GB)
enforce_eager=True 确保在 NPU 上使用 eager 模式
- 吞吐量约 240-248 tokens/s