A100 部署量化 Qwen3-235B-A22B

前言

使用 40G 显存版本 A100 部署满血 Qwen3-235B-A22B 模型至少需要 16 卡(可以参考该教程),如果想要在单机 8 卡 A100 上运行,可以部署 Unsloth 的 Q6_K 量化版本

系统要求

  • 系统镜像:docker pull nvidia/cuda:12.4.1-cudnn-devel-rockylinux8
  • GPU:A100-SXM4-40GB

编译安装 llama.cpp

参考前述教程,不再赘述。

下载合并模型权重

mkdir Qwen3-235B-A22B-Q6_K
cd Qwen3-235B-A22B-Q6_K

wget https://huggingface.co/unsloth/Qwen3-235B-A22B-GGUF/resolve/main/Q6_K/Qwen3-235B-A22B-Q6_K-00001-of-00004.gguf
wget https://huggingface.co/unsloth/Qwen3-235B-A22B-GGUF/resolve/main/Q6_K/Qwen3-235B-A22B-Q6_K-00002-of-00004.gguf
wget https://huggingface.co/unsloth/Qwen3-235B-A22B-GGUF/resolve/main/Q6_K/Qwen3-235B-A22B-Q6_K-00003-of-00004.gguf
wget https://huggingface.co/unsloth/Qwen3-235B-A22B-GGUF/resolve/main/Q6_K/Qwen3-235B-A22B-Q6_K-00004-of-00004.gguf

llama-gguf-split \
    --merge \
    Qwen3-235B-A22B-Q6_K-00001-of-00004.gguf \
    Qwen3-235B-A22B-Q6_K.gguf

部署模型

使用 llama.cpp(推荐)

部署

llama-server \
    --model Qwen3-235B-A22B-Q6_K.gguf \
    --threads 32 \
    --ctx-size 40960 \
    --n-gpu-layers 99 \
    --seed 3407 \
    --prio 3 \
    --temp 0.6 \
    --min-p 0.0 \
    --top-p 0.95 \
    --top-k 20 \
    --host 0.0.0.0 \
    --port 8081

测试

请求:

curl http://127.0.0.1:8081/v1/chat/completions \
     -X POST \
     -d '{"messages":[{"role":"user","content":"你是谁?"}]}'

响应:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "<think>\n嗯,用户问我是谁。我需要先确定用户想知道什么。他们可能是在测试我的身份,或者想了解我的功能。首先,我应该介绍自己的名字,通义千问,然后说明我是通义实验室研发的超大规模语言模型。接下来,可能需要提到我的中文名和英文名,这样用户更清楚。然后,我应该列举一些主要功能,比如回答问题、创作文字、编程、表达观点等,这样用户知道我能帮他们做什么。还要提到我支持多语言,这样国际用户也会觉得有用。最后,保持友好,邀请用户提问,这样可以促进进一步的互动。要注意用简洁易懂的语言,避免技术术语太多,让用户容易理解。同时,语气要亲切,让用户感觉我是来帮忙的。可能需要检查有没有遗漏的重要信息,比如我的训练数据截止时间,或者是否有其他需要强调的特点。不过根据之前的回答,可能不需要太深入的技术细节,保持简洁就好。总之,回答要全面但不过于冗长,让用户快速了解我的身份和能力。\n</think>\n\n你好!我是通义千问,阿里巴巴集团旗下的超大规模语言模型。我的中文名是通义千问,英文名是Qwen。我能够回答问题、创作文字(比如写故事、写公文、写邮件、写剧本等),还能进行逻辑推理、编程、表达观点、玩游戏等。我支持多种语言,包括但不限于中文、英文、德语、法语、西班牙语等。如果你有任何问题或需要帮助,随时告诉我哦!"
      }
    }
  ],
  "created": 1746248858,
  "model": "gpt-3.5-turbo",
  "system_fingerprint": "b5269-1d36b367",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 321,
    "prompt_tokens": 11,
    "total_tokens": 332
  },
  "id": "chatcmpl-1gpOtD2Tput2hyS4GYzAp9r5jhY1IsIS",
  "timings": {
    "prompt_n": 1,
    "prompt_ms": 52.661,
    "prompt_per_token_ms": 52.661,
    "prompt_per_second": 18.98938493382199,
    "predicted_n": 321,
    "predicted_ms": 16443.617,
    "predicted_per_token_ms": 51.22622118380062,
    "predicted_per_second": 19.521252532213566
  }
}

使用 Ollama

部署

详细步骤参考 DeepSeek-R1 的 Ollama 部署方案。Ollama Modelfile 可以参考下面,

FROM Qwen3-235B-A22B-Q6_K.gguf
PARAMETER num_thread 32
PARAMETER num_ctx 40960
PARAMETER num_gpu 99
PARAMETER seed 3407
PARAMETER temperature 0.6
PARAMETER min_p 0.0
PARAMETER top_p 0.95
PARAMETER top_k 20
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""

测试

请求:

curl http://127.0.0.1:8081/v1/chat/completions \
     -X POST \
     -d '{"model":"Qwen3-235B-A22B-Q6_K","messages":[{"role":"user","content":"你是谁?"}]}'

响应:

{
  "id": "chatcmpl-203",
  "object": "chat.completion",
  "created": 1746250006,
  "model": "Qwen3-235B-A22B-Q6_K",
  "system_fingerprint": "fp_ollama",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "<think>\n嗯,用户问“你是谁?”,我需要先确定他们想知道什么。可能是在确认我的身份,或者想了解我的功能和用途。根据指示,应该介绍自己是通义千问,由通义实验室研发的大语言模型,并说明能力范围。\n\n要保持口语化,避免使用技术术语或复杂结构。开头可以用“嘿,你好呀!”这样的问候语让对话更自然。然后简洁地列出核心能力,比如回答问题、创作文字、编程等,让用户了解我能提供什么帮助。最后以开放性的问题结尾邀请用户互动提问,这样能引导继续交流。\n\n需要注意别提到不相关的细节或超出角色设定的内容。同时保持友好活泼的语气,适当使用表情符号增添亲和力。整体结构要清晰易懂且有吸引力,既要传达必要信息也要鼓励后续沟通。\n</think>\n\n嘿,你好呀!我是通义千问(Qwen),是阿里巴巴集团旗下的通义实验室自主研发的超大规模语言模型。你可以把我看作一个超级智能助手,擅长回答问题、创作文字、编程、表达观点等等。\n\n比如:\n- 想写一首诗?我可以帮你即兴创作\n- 遇到难解的数学题?让我试试逻辑推演\n- 工作文档不会写?简历/报告/公文都能搞\n- 甚至还能玩角色扮演,陪你聊天解闷\n\n有什么需要帮忙的吗?😊"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 11,
    "completion_tokens": 298,
    "total_tokens": 309
  }
}

参考资料

  1. https://huggingface.co/Qwen/Qwen3-235B-A22B
  2. https://docs.unsloth.ai/basics/qwen3-how-to-run-and-fine-tune
  3. https://qwen.readthedocs.io/zh-cn/latest/run_locally/llama.cpp.html#llama-server
  4. https://github.com/ggml-org/llama.cpp/tree/master/tools/server
Comment