本文档记录 Qwen3Guard-Gen-0.6B 在 vLLM-Ascend 0.18.0 环境的快速部署与验证结果。
Qwen3Guard-Gen-0.6B 是 Qwen3 系列中的内容安全评估(Guard)模型,基于 Qwen3ForCausalLM 架构,用于对输入/输出内容进行安全性分类与评估。模型输出格式固定为 Safety: <status> 与 Categories: <list>,区别于普通对话模型。
从模型配置看,Qwen3Guard-Gen-0.6B 隐藏层维度 1024、28 层、16 头注意力(GQA,KV 头数 8)、bfloat16 精度,单卡 NPU 即可完整部署。
相关获取地址:
quay.io/ascend/vllm-ascend:v0.18.0参考文档:
| 组件 | 版本 |
|---|---|
vllm-ascend | 0.18.0 |
vllm | 0.18.0 |
transformers | 4.51.1 |
torch-npu | 2.9.0 |
CANN | 8.5.1 |
1 逻辑卡(Atlas 800 A2/A3 兼容)/opt/atomgit/.cache/modelscope/hub/Qwen/Qwen3Guard-Gen-0.6B8000模型权重与配置文件仅从 ModelScope 下载:
from modelscope import snapshot_download
path = snapshot_download('Qwen/Qwen3Guard-Gen-0.6B')下载完成后目录结构:
Qwen3Guard-Gen-0.6B/
├── config.json
├── model.safetensors (1.40 GB)
├── tokenizer_config.json
└── ...启动前可先检查端口:
ss -lntp | grep ':8000 ' || true已验证通过的启动命令:
export ASCEND_RT_VISIBLE_DEVICES=0
export VLLM_USE_MODELSCOPE=true
export PYTORCH_NPU_ALLOC_CONF=expandable_segments:True
export TASK_QUEUE_ENABLE=1
export OMP_NUM_THREADS=1
vllm serve /opt/atomgit/.cache/modelscope/hub/Qwen/Qwen3Guard-Gen-0.6B \
--host 0.0.0.0 \
--port 8000 \
--served-model-name qwen3guard-gen-0.6b \
--max-num-seqs 32 \
--max-model-len 32768 \
--trust-remote-code \
--gpu-memory-utilization 0.90启动日志关键信息:
ascend 自动激活Qwen3ForCausalLM基础检查:
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": "qwen3guard-gen-0.6b",
"messages": [
{"role": "system", "content": "You are a content safety evaluator."},
{"role": "user", "content": "请评估以下内容的安全性:这是一段普通的日常对话。"}
],
"temperature": 0,
"max_tokens": 32
}'验证结果:
/v1/models 返回 200,模型名称为 qwen3guard-gen-0.6b/v1/chat/completions 返回 200推理正常输出证据(完整 API 响应):
请求:
curl -sf http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3guard-gen-0.6b",
"messages": [
{"role": "system", "content": "You are a content safety evaluator."},
{"role": "user", "content": "请评估以下内容的安全性:这是一段普通的日常对话。"}
],
"temperature": 0,
"max_tokens": 32
}'响应:
{
"id": "chatcmpl-9b56b4f96459ec3f",
"object": "chat.completion",
"created": 1779094584,
"model": "qwen3guard-gen-0.6b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Safety: Safe\nCategories: None",
"refusal": null,
"annotations": null,
"audio": null,
"function_call": null,
"tool_calls": [],
"reasoning": null
},
"logprobs": null,
"finish_reason": "stop",
"stop_reason": null,
"token_ids": null
}
],
"usage": {
"prompt_tokens": 313,
"total_tokens": 321,
"completion_tokens": 8,
"prompt_tokens_details": null,
"completion_tokens_details": null
}
}附加推理示例:
| 输入 | 输出 | finish_reason | prompt_tokens | completion_tokens |
|---|---|---|---|---|
1+1等于几? | Safety: Safe\nCategories: None | stop | 303 | 8 |
Hello, how are you? | Safety: Safe\nCategories: None | stop | 303 | 8 |
请评估以下内容的安全性:这是一段普通的日常对话。 | Safety: Safe\nCategories: None | stop | 313 | 8 |
What is the capital of France? | Safety: Safe\nCategories: None | stop | 307 | 8 |
所有测试用例均返回 finish_reason: stop,模型推理链路正常,无异常中断。
测试条件:固定输入(约 30 tokens prompt / 8 tokens output),连续压测取稳定值。
| 并发数 | 请求数 | 持续时间 | 请求吞吐 | 输出吞吐 | 平均延迟 | 最大延迟 |
|---|---|---|---|---|---|---|
| 1 | 4 | 0.589 s | 6.79 req/s | 54.3 tok/s | 0.147 s | 0.148 s |
| 4 | 16 | 0.725 s | 22.07 req/s | 176.5 tok/s | 0.179 s | 0.217 s |
| 8 | 32 | 0.854 s | 37.46 req/s | 299.7 tok/s | 0.204 s | 0.236 s |
作为 0.6B Guard 模型,其吞吐表现满足实时内容审核场景需求。
使用 transformers(CPU,float32)与 vLLM-Ascend(NPU,bfloat16)进行端到端输出对比,验证 temperature=0 确定性生成的一致性。
transformers 4.51.1,torch.float32,do_sample=FalsevLLM-Ascend 0.18.0,torch.bfloat16,temperature=0| 编号 | 输入内容 | CPU 输出文本 | NPU 输出文本 | CPU tokens | NPU tokens | 匹配 token 数 | 相似度 |
|---|---|---|---|---|---|---|---|
| 1 | 1+1等于几? | Safety: Safe\nCategories: None | Safety: Safe\nCategories: None | 8 | 8 | 8 | 100% |
| 2 | Hello, how are you? | Safety: Safe\nCategories: None | Safety: Safe\nCategories: None | 8 | 8 | 8 | 100% |
| 3 | 请评估以下内容的安全性:这是一段普通的日常对话。 | Safety: Safe\nCategories: None | Safety: Safe\nCategories: None | 8 | 8 | 8 | 100% |
| 4 | What is the capital of France? | Safety: Safe\nCategories: None | Safety: Safe\nCategories: None | 8 | 8 | 8 | 100% |
汇总统计:
| 指标 | 数值 |
|---|---|
| 测试用例总数 | 4 |
| 完全匹配数 | 4 |
| 部分匹配数 | 0 |
| 不匹配数 | 0 |
| 平均 token 相似度 | 100% |
| 最大误差 | 0% |
精度结论:4 组测试用例 CPU vs NPU 输出在文本、token 序列、语义三个维度完全一致,token 级相似度 100%,误差 < 1%,满足生产部署精度要求。
Guard 模型输出特性:Qwen3Guard-Gen-0.6B 为内容安全评估模型,输出固定为 Safety: <status> 与 Categories: <list>,不生成开放式对话文本。接入对话系统时通常将其作为后处理过滤器使用。
单卡部署:0.6B 参数规模极小,权重仅 1.40 GB,单卡 NPU 即可完整服务,无需张量并行(TP)。
ACL Graph 编译:首次启动需约 27 秒完成 torch.compile 与 ACL Graph 捕获,后续请求直接复用已编译图,延迟稳定在 150 ms 以内。
温度设置:由于 Guard 模型输出为结构化分类结果,建议推理时设置 temperature=0 以获得确定性输出。
资源占用:服务启动后 NPU 显存占用约 1.13 GB,KV Cache 预留后总占用约 2 GB 左右,对硬件压力极低。