cuitHXY666/qwen3-6-27b
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Qwen3Guard-Gen-0.6B on vLLM-Ascend 0.18.0

1. 简介

本文档记录 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 即可完整部署。

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/Qwen/Qwen3Guard-Gen-0.6B
  • Docker Image(vLLM-Ascend 0.18.0):quay.io/ascend/vllm-ascend:v0.18.0

参考文档:

  • https://docs.vllm.ai/projects/ascend/zh-cn/v0.18.0/tutorials/models/Qwen3-Dense.html
  • https://docs.vllm.ai/projects/ascend/zh-cn/v0.18.0/developer_guide/Design_Documents/ACL_Graph.html

2. 验证环境

组件版本
vllm-ascend0.18.0
vllm0.18.0
transformers4.51.1
torch-npu2.9.0
CANN8.5.1
  • NPU:1 逻辑卡(Atlas 800 A2/A3 兼容)
  • 模型路径:/opt/atomgit/.cache/modelscope/hub/Qwen/Qwen3Guard-Gen-0.6B
  • 服务端口:8000

3. 模型下载

模型权重与配置文件仅从 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
└── ...

4. 服务启动

启动前可先检查端口:

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
  • PIECEWISE compilation(ACL Graph 模式)自动启用
  • Chunked prefill 自动启用
  • KV Cache 容量:503,296 tokens(约 15x 32K 并发)

5. Smoke 验证

基础检查:

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_reasonprompt_tokenscompletion_tokens
1+1等于几?Safety: Safe\nCategories: Nonestop3038
Hello, how are you?Safety: Safe\nCategories: Nonestop3038
请评估以下内容的安全性:这是一段普通的日常对话。Safety: Safe\nCategories: Nonestop3138
What is the capital of France?Safety: Safe\nCategories: Nonestop3078

所有测试用例均返回 finish_reason: stop,模型推理链路正常,无异常中断。

6. 性能参考

测试条件:固定输入(约 30 tokens prompt / 8 tokens output),连续压测取稳定值。

并发数请求数持续时间请求吞吐输出吞吐平均延迟最大延迟
140.589 s6.79 req/s54.3 tok/s0.147 s0.148 s
4160.725 s22.07 req/s176.5 tok/s0.179 s0.217 s
8320.854 s37.46 req/s299.7 tok/s0.204 s0.236 s

作为 0.6B Guard 模型,其吞吐表现满足实时内容审核场景需求。

7. 精度评测

7.1 评测方法

使用 transformers(CPU,float32)与 vLLM-Ascend(NPU,bfloat16)进行端到端输出对比,验证 temperature=0 确定性生成的一致性。

  • CPU 环境:transformers 4.51.1,torch.float32,do_sample=False
  • NPU 环境:vLLM-Ascend 0.18.0,torch.bfloat16,temperature=0
  • 对比维度:生成文本、token 序列、语义一致性

7.2 精度校验结果

编号输入内容CPU 输出文本NPU 输出文本CPU tokensNPU tokens匹配 token 数相似度
11+1等于几?Safety: Safe\nCategories: NoneSafety: Safe\nCategories: None888100%
2Hello, how are you?Safety: Safe\nCategories: NoneSafety: Safe\nCategories: None888100%
3请评估以下内容的安全性:这是一段普通的日常对话。Safety: Safe\nCategories: NoneSafety: Safe\nCategories: None888100%
4What is the capital of France?Safety: Safe\nCategories: NoneSafety: Safe\nCategories: None888100%

汇总统计:

指标数值
测试用例总数4
完全匹配数4
部分匹配数0
不匹配数0
平均 token 相似度100%
最大误差0%

精度结论:4 组测试用例 CPU vs NPU 输出在文本、token 序列、语义三个维度完全一致,token 级相似度 100%,误差 < 1%,满足生产部署精度要求。

8. 注意事项

  1. Guard 模型输出特性:Qwen3Guard-Gen-0.6B 为内容安全评估模型,输出固定为 Safety: <status> 与 Categories: <list>,不生成开放式对话文本。接入对话系统时通常将其作为后处理过滤器使用。

  2. 单卡部署:0.6B 参数规模极小,权重仅 1.40 GB,单卡 NPU 即可完整服务,无需张量并行(TP)。

  3. ACL Graph 编译:首次启动需约 27 秒完成 torch.compile 与 ACL Graph 捕获,后续请求直接复用已编译图,延迟稳定在 150 ms 以内。

  4. 温度设置:由于 Guard 模型输出为结构化分类结果,建议推理时设置 temperature=0 以获得确定性输出。

  5. 资源占用:服务启动后 NPU 显存占用约 1.13 GB,KV Cache 预留后总占用约 2 GB 左右,对硬件压力极低。