本文档记录 google/functiongemma-270m-it 在 vLLM-Ascend 0.18.0rc1 环境的快速部署与验证结果。
functiongemma-270m-it 是 Google 发布的轻量级函数调用(Function Calling)专用模型,基于 Gemma3 架构,参数量约 270M,支持文本生成与工具调用(tool use)能力。该模型在昇腾 NPU 上通过 vLLM-Ascend 可直接运行,无需额外适配。
相关获取地址:
quay.io/ascend/vllm-ascend:v0.18.0rc1参考文档:
| 组件 | 版本 |
|---|---|
vllm-ascend | 0.18.0rc1 |
vllm | 0.18.0+empty |
transformers | 4.57.6 |
torch-npu | 2.9.0.post1+gitee7ba04 |
2 逻辑卡(本验证使用 1 卡)/opt/atomgit/weight/functiongemma-270m-it8000export VLLM_USE_MODELSCOPE=true
python3 -c "
from modelscope import snapshot_download
snapshot_download('google/functiongemma-270m-it', cache_dir='./weight')
"python3 -c "
from huggingface_hub import snapshot_download
snapshot_download('google/functiongemma-270m-it', local_dir='./weight/functiongemma-270m-it')
"启动前可先检查端口:
ss -lntp | grep ':8000 ' || true已验证通过的启动命令:
export VLLM_USE_MODELSCOPE=true
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export HCCL_BUFFSIZE=512
export OMP_PROC_BIND=false
export OMP_NUM_THREADS=1
export TASK_QUEUE_ENABLE=1
vllm serve /opt/atomgit/weight/functiongemma-270m-it \
--host 0.0.0.0 \
--port 8000 \
--tensor-parallel-size 1 \
--seed 1024 \
--served-model-name functiongemma-270m-it \
--max-num-seqs 32 \
--max-model-len 8192 \
--trust-remote-code \
--dtype bfloat16 \
--gpu-memory-utilization 0.90服务启动后,可通过以下命令检查模型加载状态:
curl -sf http://127.0.0.1:8000/v1/models基础检查:
curl -sf http://127.0.0.1:8000/v1/models
curl -sf http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "functiongemma-270m-it",
"messages": [
{"role": "user", "content": "Explain the difference between TCP and UDP in one sentence."}
],
"temperature": 0.7,
"max_tokens": 64
}'验证结果:
/v1/models 返回 200/v1/chat/completions 返回 200,模型可正常生成文本使用配套 inference.py 脚本进行离线推理:
# Completion 模式
python3 inference.py \
--model-path /opt/atomgit/weight/functiongemma-270m-it \
--mode completion \
--prompt "The future of artificial intelligence is" \
--max-tokens 64
# Chat 模式
python3 inference.py \
--model-path /opt/atomgit/weight/functiongemma-270m-it \
--mode chat \
--prompt "What is machine learning?" \
--max-tokens 64使用 vllm bench latency 与 vllm bench throughput 进行性能测试。
测试条件:batch_size=1, input_len=512, output_len=128
| 指标 | 数值 |
|---|---|
Avg latency | 6.956 s |
P50 latency | 6.953 s |
P90 latency | 7.008 s |
P99 latency | 7.068 s |
测试条件:num_prompts=32, input_len=512, output_len=128
| 指标 | 数值 |
|---|---|
Throughput | 4.07 requests/s |
Total tokens/s | 4684.02 tok/s |
Output tokens/s | 520.45 tok/s |
运行命令:
# 延迟测试
python3 benchmark_latency.py --model-path /opt/atomgit/weight/functiongemma-270m-it
# 吞吐测试
python3 benchmark_throughput.py --model-path /opt/atomgit/weight/functiongemma-270m-it使用 eval_precision.py 对模型进行基础功能验证:
python3 eval_precision.py \
--model-path /opt/atomgit/weight/functiongemma-270m-it \
--max-tokens 64 \
--output eval_precision_report.json验证内容:
评测结果:PASS
采用 NPU 与 CPU 基线对比的方式,对模型输出的 Logits 和 Hidden States 进行精度评估。
| 指标 | Logits | Hidden States |
|---|---|---|
| max_abs_error | 0.000109 | 0.000710 |
| mean_abs_error | 0.000014 | 0.000006 |
| relative_error | 0.0009% | 0.0039% |
| cosine_similarity | 1.000000 | 1.000000 |
| threshold | 1.0% | 1.0% |
| 结果 | PASS | PASS |
结论:NPU 与 CPU 基线高度一致,cosine_similarity = 1.0,relative_error < 0.004%,验证通过。
模型定位:functiongemma-270m-it 是面向 function calling / tool use 场景的轻量模型,通用对话能力相对有限,建议在其设计场景(工具调用、结构化输出)下使用。
tokenizer regex 警告:加载 tokenizer 时会出现 regex pattern 警告,这是 transformers 版本与 tokenizer 配置之间的已知提示,不影响实际推理结果。如需消除可在加载 tokenizer 时传入 fix_mistral_regex=True。
内存占用:模型权重仅约 0.56 GB,但在 Ascend NPU 上编译 ACL Graph 与 KV Cache 分配后,整体 NPU 内存占用约 55 GB 左右(受 gpu-memory-utilization 参数控制)。单机多实例部署时需调低该参数。
服务与离线推理互斥:由于 vLLM-Ascend 会独占 NPU 设备内存,运行 vllm serve 后,同设备上无法同时启动离线推理实例。建议性能测试时停止服务进程,或使用 vllm bench serve 对在线服务进行压测。