前言
使用 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
}
}