CodeFuse-Mixtral-8x7B NPU 适配验证
#+NPU
1. 简介
本仓库记录 CodeFuse-Mixtral-8x7B 模型在 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 × 4 卡 |
| modelscope | 1.36.3 |
3. 模型下载
modelscope download --model codefuse-ai/CodeFuse-Mixtral-8x7B
4. 模型架构
| 参数 | 值 |
|---|
| 架构 | MixtralForCausalLM |
| Hidden Size | 4096 |
| Layers | 32 |
| Attention Heads | 32 (KV Heads: 8) |
| Intermediate Size | 14336 |
| Experts | 8 (激活 2) |
| Vocab Size | 32000 |
| 总参数量 | ~46.7B (激活 ~12.9B) |
5. 基础推理验证
#!/usr/bin/env python3
import torch_npu
from vllm import LLM, SamplingParams
MODEL_PATH = "/home/openmind/volume/modelscope/hub/models/codefuse-ai/CodeFuse-Mixtral-8x7B"
llm = LLM(
model=MODEL_PATH,
trust_remote_code=True,
dtype="float16",
tensor_parallel_size=4,
max_model_len=2048,
gpu_memory_utilization=0.8,
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)
Smoke Test 结果 (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=4) | 基线 (GPU) | 误差 |
|---|
| 准确率 | 25.68% (301/1172) | 26.20% | -0.52% |
| 评测时间 | 537s | - | - |
| 吞吐量 | 2.18 samples/s | - | - |
7. 注意事项
- 模型为 MoE 架构(8 专家),需 4 卡 TP 加载(每卡 ~12.8GB)
gpu_memory_utilization=0.8 避免 OOM
enforce_eager=True 确保在 NPU 上使用 eager 模式