m0_74196153/phi-1
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Phi-1 on vLLM-Ascend 0.18.0rc1

1. 简介

本文档记录 microsoft/phi-1(1.3B)在 vLLM-Ascend 0.18.0rc1 环境的快速部署与验证结果。

Phi-1 是一个基于 Transformer 的 1.3B 参数语言模型,专注于代码生成任务,使用 24 层 Transformer、2048 隐藏维度和 32 注意力头。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/microsoft/phi-1
  • 权重下载地址(HuggingFace):https://huggingface.co/microsoft/phi-1

2. 验证环境

组件版本
vllm-ascend0.18.0rc1
vllm0.18.0+empty
transformers4.57.6
torch-npu2.9.0.post1+gitee7ba04
  • NPU:1 张 Ascend910B4
  • 模型路径:/opt/atomgit/.cache/modelscope/hub/models/microsoft/phi-1
  • 服务端口:8000

模型配置

属性值
参数量1.3B
层数24
隐藏维度2048
注意力头32 (MHA)
最大序列长度2048
词表大小51200
精度(原始)float32
精度(vLLM 部署)float16

3. 服务启动

启动前可先检查端口:

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%,已在下文精度评测中验证。

4. Smoke 验证

基础检查:

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

5. 性能参考

测试条件:基于 torch_npu + transformers 直接推理,输入 9 tokens / 输出 64 tokens,连续 2 次取平均。

指标数值
throughput25.9 tok/s
latency (64 tok)2.47 s
latency (128 tok)4.93 s
NPU 峰值内存2.71 GiB

并发及输出长度影响

输入长度输出长度吞吐量 (tok/s)延迟 (s)
93225.81.24
96425.92.47
912826.04.93
14012826.14.90

6. 精度评测

使用 check_accuracy.py 对 NPU 和 CPU 做逐 token logits 对比,覆盖 5 个测试 prompt。

指标数值阈值状态
Top-1 准确率100.00%>= 99%PASS
平均余弦相似度1.000000>= 0.99PASS
平均 KL 散度0.00000003< 0.01PASS
最大 logit 差~0.00003--

Phi-1 的 float32 权重在 NPU 上以 float16 加载后,Top-1 预测完全一致,余弦相似度接近 1.0,KL 散度接近 0。数值误差在混合精度推理的预期范围内。

7. 注意事项

  • float32 兼容性:Phi-1 原始权重为 float32(与 phi-1_5/phi-2 的 float16 不同)。NPU 上的 aclnnFusedInferAttentionScoreV3 算子不支持 float32 输入,需通过 --dtype float16 强制使用半精度。直接使用 transformers 推理则无此限制。
  • 模型架构:Phi-1 使用 MHA(num_key_value_heads 未设置,等同于 num_attention_heads=32),无需 GQA/MQA 特殊处理。
  • 首次编译:vLLM 首次启动时 PIECEWISE 编译约需 1-2 分钟(ACL Graph 捕获),后续启动可复用编译缓存。