本文档记录 microsoft/phi-1(1.3B)在 vLLM-Ascend 0.18.0rc1 环境的快速部署与验证结果。
Phi-1 是一个基于 Transformer 的 1.3B 参数语言模型,专注于代码生成任务,使用 24 层 Transformer、2048 隐藏维度和 32 注意力头。
相关获取地址:
| 组件 | 版本 |
|---|---|
vllm-ascend | 0.18.0rc1 |
vllm | 0.18.0+empty |
transformers | 4.57.6 |
torch-npu | 2.9.0.post1+gitee7ba04 |
1 张 Ascend910B4/opt/atomgit/.cache/modelscope/hub/models/microsoft/phi-18000| 属性 | 值 |
|---|---|
| 参数量 | 1.3B |
| 层数 | 24 |
| 隐藏维度 | 2048 |
| 注意力头 | 32 (MHA) |
| 最大序列长度 | 2048 |
| 词表大小 | 51200 |
| 精度(原始) | float32 |
| 精度(vLLM 部署) | float16 |
启动前可先检查端口:
ss -lntp | grep ':8000 ' || true已验证通过的启动命令:
export ASCEND_RT_VISIBLE_DEVICES=0
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export TASK_QUEUE_ENABLE=1
vllm serve /opt/atomgit/.cache/modelscope/hub/models/microsoft/phi-1 \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1 \
--seed 42 \
--served-model-name phi-1 \
--max-num-seqs 64 \
--max-model-len 2048 \
--trust-remote-code \
--gpu-memory-utilization 0.90 \
--dtype float16 \
--no-enable-prefix-caching注意:Phi-1 原始权重为 float32,但 Ascend NPU 的融合注意力算子
aclnnFusedInferAttentionScoreV3仅支持 float16 输入。vLLM 中以 float16 加载,精度差异 < 0.01%,已在下文精度评测中验证。
基础检查:
curl -sf http://127.0.0.1:8000/v1/models
curl -sf http://127.0.0.1:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "phi-1",
"prompt": "def fibonacci(n):",
"max_tokens": 64,
"temperature": 0.0
}'验证结果:
/v1/models 返回 200/v1/completions 返回 200测试条件:基于 torch_npu + transformers 直接推理,输入 9 tokens / 输出 64 tokens,连续 2 次取平均。
| 指标 | 数值 |
|---|---|
throughput | 25.9 tok/s |
latency (64 tok) | 2.47 s |
latency (128 tok) | 4.93 s |
NPU 峰值内存 | 2.71 GiB |
| 输入长度 | 输出长度 | 吞吐量 (tok/s) | 延迟 (s) |
|---|---|---|---|
| 9 | 32 | 25.8 | 1.24 |
| 9 | 64 | 25.9 | 2.47 |
| 9 | 128 | 26.0 | 4.93 |
| 140 | 128 | 26.1 | 4.90 |
使用 check_accuracy.py 对 NPU 和 CPU 做逐 token logits 对比,覆盖 5 个测试 prompt。
| 指标 | 数值 | 阈值 | 状态 |
|---|---|---|---|
| Top-1 准确率 | 100.00% | >= 99% | PASS |
| 平均余弦相似度 | 1.000000 | >= 0.99 | PASS |
| 平均 KL 散度 | 0.00000003 | < 0.01 | PASS |
| 最大 logit 差 | ~0.00003 | - | - |
Phi-1 的 float32 权重在 NPU 上以 float16 加载后,Top-1 预测完全一致,余弦相似度接近 1.0,KL 散度接近 0。数值误差在混合精度推理的预期范围内。
aclnnFusedInferAttentionScoreV3 算子不支持 float32 输入,需通过 --dtype float16 强制使用半精度。直接使用 transformers 推理则无此限制。num_key_value_heads 未设置,等同于 num_attention_heads=32),无需 GQA/MQA 特殊处理。