使用 Ollama 部署 Qwen3-235B-A22B 模型
1. 概述
受限于硬件资源,考虑通过 Ollama 部署 Qwen3-235B-A22B 大模型的 2-bit 量化版本。由于 Ollama 官方只提供了 4-bit 量化版本的模型,没有直接提供 2-bit 量化版的模型,将采用手动下载、合并 GGUF 文件并自定义 Modelfile 的方式完成部署。
2. 环境条件
确保环境满足以下条件:
- Ollama 已安装: 系统已经安装并运行 Ollama 服务。
llama.cpp工具: 需要llama.cpp项目编译出的工具集,特别是llama-gguf-split工具。确保该工具已编译并在系统中可用。- 存储空间: 需要足够的磁盘空间来存储下载的 GGUF 文件(合集 85.7 GB)以及合并后的单个 GGUF 文件(85.7 GB)。
3. 部署步骤
部署步骤如下:
3.1 下载 2-bit 量化模型文件
从 Hugging Face 下载 Qwen3-235B-A22B 的 Q2_K 量化 GGUF 文件。
-
模型仓库:
Hugging Face 上的unsloth/Qwen3-235B-A22B-GGUF仓库。 -
下载 GGUF 文件:
下载该目录下所有.gguf文件。它们是分片文件,如下:Qwen3-235B-A22B-Q2_K-00001-of-00002.ggufQwen3-235B-A22B-Q2_K-00002-of-00002.gguf
将这两个文件下载到本地工作目录的同一文件夹下。
3.2 合并 GGUF 文件
由于下载的模型文件是分片的,需要使用 llama.cpp 提供的 llama-gguf-split 工具将它们合并成一个单独的 GGUF 文件,以便 Ollama 使用。
-
执行合并命令:
llama-gguf-split --merge Qwen3-235B-A22B-Q2_K-00001-of-00002.gguf Qwen3-235B-A22B-Q2_K.gguf等待命令执行完成。完成后,将在当前目录下得到新生成的
Qwen3-235B-A22B-Q2_K.gguf文件。
3.3 创建 Modelfile
Ollama 使用 Modelfile 文件来定义如何加载和配置模型。创建一个 Modelfile 来指定使用刚刚合并的 GGUF 文件,并设置相应的模板和参数。
-
创建文件:
在包含合并后的Qwen3-235B-A22B-Q2_K.gguf文件的同一目录下,创建一个名为Modelfile的文本文件。 -
编辑内容:
FROM ./Qwen3-235B-A22B-Q2_K.gguf TEMPLATE """{{- if .Messages }} {{- if or .System .Tools }}<|im_start|>system {{- if .System }} {{ .System }} {{- end }} {{- if .Tools }} # Tools You may call one or more functions to assist with the user query. You are provided with function signatures within <tools></tools> XML tags: <tools> {{- range .Tools }} {"type": "function", "function": {{ .Function }}} {{- end }} </tools> For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags: <tool_call> {"name": <function-name>, "arguments": <args-json-object>} </tool_call> {{- end }}<|im_end|> {{ end }} {{- range $i, $_ := .Messages }} {{- $last := eq (len (slice $.Messages $i)) 1 -}} {{- if eq .Role "user" }}<|im_start|>user {{ .Content }}<|im_end|> {{ else if eq .Role "assistant" }}<|im_start|>assistant {{ if .Content }}{{ .Content }} {{- else if .ToolCalls }}<tool_call> {{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}} {{ end }}</tool_call> {{- end }}{{ if not $last }}<|im_end|> {{ end }} {{- else if eq .Role "tool" }}<|im_start|>user <tool_response> {{ .Content }} </tool_response><|im_end|> {{ end }} {{- if and (ne .Role "assistant") $last }}<|im_start|>assistant {{ end }} {{- end }} {{- else }} {{- if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant {{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }} """ PARAMETER repeat_penalty 1 PARAMETER temperature 0.6 PARAMETER top_k 20 PARAMETER top_p 0.95 PARAMETER stop "<|im_start|>" PARAMETER stop "<|im_end|>"
3.4 使用 Ollama 创建模型
使用 Ollama 命令行工具根据 Modelfile 创建自定义模型。
-
执行创建命令:
ollama create Qwen3-235B-A22B -f ./Modelfile -
等待创建过程:
Ollama 将读取Modelfile,找到 GGUF 文件,并将其添加到 Ollama 的模型库中。这个过程需要一些时间,终端会显示导入进度。
4. 验证
模型创建成功后,验证它是否能正常工作。
- 使用 Open WebUI:
- 模型运行状态:
受限于硬件资源,Ollama 以 GPU+CPU 混合推理模式运行。

