ggg_0963/baichuan-7B
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Baichuan-7B on vLLM-Ascend 0.18.0rc1 #+NPU

1. 简介

本文档记录 baichuan-inc/baichuan-7B 在 vLLM-Ascend 0.18.0rc1 环境的快速部署与验证结果。

baichuan-7B 是百川智能推出的 7B 参数预训练基座模型,基于 BaiChuanForCausalLM 架构(自定义实现),32 层 Transformer,hidden_size=4096,使用自定义 modeling_baichuan.py 代码,需 --trust-remote-code 参数加载。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/baichuan-inc/baichuan-7B
  • Docker Image(vLLM-Ascend 0.18.0rc1):quay.io/ascend/vllm-ascend:v0.18.0rc1

参考文档:

  • https://docs.vllm.ai/projects/ascend/zh-cn/v0.18.0/tutorials/models/Qwen3.5-27B.html

2. 验证环境

组件版本
vllm-ascend0.18.0rc1
vllm0.18.0+empty
transformers4.57.6
torch-npu2.9.0.post1+gitee7ba04
modelscope1.35.3
  • NPU:1 逻辑卡 (Ascend910_9362)
  • 模型路径:/opt/atomgit/models/baichuan-7B
  • 服务端口:8000

3. 服务启动

启动前可先检查端口:

ss -lntp | grep ':8000 ' || true

已验证通过的启动命令:

export ASCEND_RT_VISIBLE_DEVICES=0
export VLLM_USE_MODELSCOPE=false
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True

# 方式一:enforce-eager 模式(推荐,首次验证使用)
vllm serve /opt/atomgit/models/baichuan-7B \
  --host 0.0.0.0 \
  --port 8000 \
  --data-parallel-size 1 \
  --tensor-parallel-size 1 \
  --served-model-name baichuan-7B \
  --max-num-seqs 32 \
  --max-model-len 4096 \
  --trust-remote-code \
  --dtype bfloat16 \
  --gpu-memory-utilization 0.85 \
  --enforce-eager

# 方式二:PIECEWISE 编译模式(性能更优)
vllm serve /opt/atomgit/models/baichuan-7B \
  --host 0.0.0.0 \
  --port 8000 \
  --data-parallel-size 1 \
  --tensor-parallel-size 1 \
  --served-model-name baichuan-7B \
  --max-num-seqs 32 \
  --max-model-len 4096 \
  --trust-remote-code \
  --dtype bfloat16 \
  --gpu-memory-utilization 0.85

关键参数说明:

参数值说明
--tensor-parallel-size17B 模型单卡即可运行
--max-model-len4096模型 max_position_embeddings 限制
--trust-remote-code-必须开启,模型使用自定义架构代码
--gpu-memory-utilization0.85KV 缓存占用 85% NPU 内存
--enforce-eager-禁用图编译,首次验证推荐
--dtypebfloat16部署精度(原始权重为 float32)

4. 模型下载

# 从 ModelScope 下载模型权重
modelscope download --model baichuan-inc/baichuan-7B \
  --local_dir /opt/atomgit/models/baichuan-7B

5. 推理使用

5.1 单次推理

python inference.py --prompt "What is the capital of France?"

5.2 批量推理

python inference.py --input prompts.txt --output results.json

5.3 交互模式

python inference.py --interactive

5.4 多轮对话

python inference.py --interactive --multi-turn

5.5 流式输出

python inference.py --prompt "Explain quantum entanglement." --stream

5.6 自定义 API 地址

python inference.py --api-base http://192.168.1.100:8000/v1 --prompt "Hello"

5.7 Completions 模式(推荐)

baichuan-7B 为预训练基座模型,推荐使用 completions API:

python inference.py --prompt "The capital of France is" --use-completion

6. 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": "baichuan-7B",
    "prompt": "The capital of France is",
    "temperature": 0,
    "max_tokens": 32
  }'

验证结果:

  • /v1/models 返回 200
  • /v1/completions 返回 200,模型正确续写文本

7. 性能评测

7.1 评测方法

使用 benchmark_perf.py 脚本,分三个维度测试:

  1. 单请求延迟:不同输出长度(32/64/128/256 tokens),prompt=128 tokens
  2. 首 Token 延迟(TTFT):不同输入长度(32/128/512/1024 tokens),max_tokens=128
  3. 并发吞吐量:不同并发数(1/4/8/16/32),prompt=128 tokens,max_tokens=128
python benchmark_perf.py \
  --api-base http://127.0.0.1:8000/v1 \
  --model baichuan-7B \
  --output ./benchmark_results.json

测试条件:单卡 Ascend910_9362,enforce-eager 模式,max_model_len=4096。

7.2 单请求延迟

输出 tokens延迟 (s)输出吞吐 (tok/s)
321.0430.8
642.0631.0
1283.9232.7
2568.1731.3

平均输出吞吐:~31.5 tok/s

7.3 首 Token 延迟(TTFT)

输入 tokensTTFT (s)
320.078
1280.072
5120.068
10240.070

平均 TTFT:~0.072s

7.4 并发吞吐量

并发数请求总数总耗时 (s)输出吞吐 (tok/s)总吞吐 (tok/s)RPSP99 延迟 (s)
1416.3331.3662.960.244.167
41617.56116.61234.140.914.415
83216.38248.45498.941.954.277
166416.37502.111009.223.914.237
3212817.60930.871869.017.274.593

7.5 性能概要

指标数值
模型加载时间~5s (pytorch_model.bin)
模型权重占用~13.5 GB
单请求输出吞吐~31.5 tok/s
首 Token 延迟 (TTFT)~0.072s
32 并发输出吞吐~931 tok/s
32 并发总吞吐~1869 tok/s
32 并发 RPS~7.3

注:性能数据基于 enforce-eager 模式,使用 PIECEWISE 编译模式可获得更优性能。

8. 精度评测

8.1 评测方法

使用 GPQA(Graduate-Level Google-Proof Q&A)数据集做精度评测。

  1. 下载数据集:modelscope download --dataset modelscope/gpqa
  2. 使用 eval_gpqa.py 脚本,32 并发逐题发送请求
  3. 使用 few-shot prompting(3-shot)引导模型输出选项
  4. 使用 completions API(基座模型推荐)
  5. max_tokens=256(适配模型 max_model_len=4096 限制)
  6. 从模型输出中提取 A/B/C/D 答案选项
  7. 与正确答案对比计算准确率
python eval_gpqa.py \
  --dataset /tmp/GPQA/gpqa_main.csv \
  --model baichuan-7B \
  --output ./gpqa_results.json \
  --workers 32 \
  --use-completion \
  --few-shot

8.2 评测结果

指标数值
数据集GPQA
总题数448
正确数119
准确率26.6%
GPU/CPU 基线27.0%

8.3 NPU vs GPU/CPU 对比

指标NPUGPU/CPU差异
准确率26.6%27.0%0.4%

结论:NPU 与 GPU/CPU 准确率差异 0.4% < 1%,通过精度验证。

8.4 按学科分布

学科正确/总数准确率
Biology20/7825.6%
Chemistry46/18325.1%
Physics53/18728.3%

8.5 注意事项

  • GPQA 为研究生级别多选题,4 个选项随机打乱
  • baichuan-7B 为预训练基座模型(非指令微调),使用 few-shot prompting 引导输出
  • 448 题使用 32 并发评测,总耗时约 70 分钟
  • 模型 max_position_embeddings=4096,需配合较小 max_tokens 使用
  • 4 选项随机猜测基线为 25%,模型表现略高于随机基线

9. 架构兼容性分析

9.1 模型配置

特性说明昇腾兼容性
架构类型BaiChuanForCausalLM✅ 已知支持
自定义代码modeling_baichuan.py✅ trust-remote-code 加载
注意力机制Full Attention✅ 昇腾支持
精度FP32 → BF16 部署✅ 昇腾支持
层数32 层✅ 支持
hidden_size4096✅ 支持
num_attention_heads32✅ 支持
max_position_embeddings4096✅ 支持
vocab_size64000✅ 支持
编译模式PIECEWISE (ACL Graph)✅ 支持

9.2 支持状态

baichuan-7B 使用 BaiChuanForCausalLM 架构,已在 vLLM-Ascend 注册表中注册,无特殊不兼容算子。需 --trust-remote-code 加载自定义模型代码。

10. 注意事项

  1. 基座模型特性:baichuan-7B 为预训练基座模型,未经指令微调。推荐使用 completions API + few-shot prompting 进行推理,而非指令式提示。

  2. max_model_len 限制:模型 max_position_embeddings=4096,输入 + 输出总长度不能超过此限制。

  3. trust-remote-code:模型使用自定义 modeling_baichuan.py 代码,启动时必须添加 --trust-remote-code 参数。

  4. 模型下载:权重文件为 pytorch_model.bin(~14GB),下载时间较长。


验证日期:2026-05-16 验证工具版本:vllm-ascend v0.18.0rc1 验证人:Ascend NPU 适配验证