章
目
录
qwq模型凭借它强大的语言理解和生成能力,成功吸引了不少开发者和企业的目光。不过在实际使用的时候,有些场景对网络环境要求高,还有些特别注重数据隐私,这种情况下,把qwq模型进行离线部署就成了很多人的刚需。ollama作为一款挺好用的模型部署工具,为实现qwq模型的离线部署提供了便利。今天咱就来详细唠唠,怎么用ollama进行qwq模型的离线部署,包括前期环境准备、模型文件获取、创建Modelfile、模型创建和运行这些关键步骤,顺便也聊聊实际应用中可能碰到的问题和优化方法,希望能给大伙一份实用的部署指南。
一、环境准备
在开始部署之前,得先确保ollama已经安装好了。要是还没装,大伙可以参考这篇文章(ollama本地部署deepseek:7b模型使用ollama实现deepseek-r1:7b的本地部署,包括Linux – 掘金),按照里面的步骤进行安装。
二、模型文件获取
模型文件可以在魔搭社区搜索下载,注意要选文件名后缀是gguf的模型文件。魔搭社区里有不少qwq模型的版本,像通义千问QwQ – 32B、Qwen/QwQ – 32B这些,每个版本都有不同的特点。大伙可以根据自己的实际需求,选择对应的量化版本,这里以q8为例给大家讲讲。
在下载页面,能看到不同版本模型的文件大小、更新时间等信息,比如:
文件名 | 文件大小 | 更新时间 | 下载 |
---|---|---|---|
qwq – 32b – fp16 – 00016 – of – 00017.gguf GGUF | 3.90GB | 11天前 | 下载 |
qwq – 32b – q8_0.gguf GUF | 34.82GB | 10天前 | 下载 |
把下载好的模型文件上传到ollama/models这个目录下,准备工作就完成得差不多啦。
三、创建Modelfile
在ollama文件夹里,咱们要创建一个Modelfile文件(名字可以自己定)。下面这些命令就是用来创建和修改这个文件的:
// 创建Modelfile文件
touch Modelfile
// 使用vi编辑器修改Modelfile文件
vi Modelfile
打开文件后,往里面写入下面这些内容:
FROM /home/ubuntu/ollama/models/qwq-32b-q8_0.gguf // 这里要改成你自己模型的实际路径
TEMPLATE """{{- 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 }}"""
PARAMETER repeat_penalty 1
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER temperature 0.6 // 这个参数控制模型的创造性,数值越大,模型生成内容的创造性越强
PARAMETER top_k 40
PARAMETER top_p 0.95
这里面的FROM
指定了模型文件的路径,一定要改成自己实际的路径。TEMPLATE
部分定义了模型的输入输出格式,PARAMETER
后面跟着的是模型的一些参数,像temperature
能调整模型生成内容的创造性,大家可以根据自己的需求来设置。
四、模型创建与运行
Modelfile创建好之后,通过下面这个命令来创建模型:
ollama create <model_name> -f <path_to_Modelfile> // model_name是你给生成后的模型取的名字
// 比如说我想把模型命名为qwq:32b_q8
ollama create qwq:32b_q8 -f Modelfile
模型创建成功后,可以用ollama list
命令查看已经创建好的模型。像这样:
模型创建好就能用啦,使用ollama run
命令就能和模型对话:
从实际使用情况来看,这个模型的生成速度还不错,运行的时候显存占用大概30G左右。
五、写在最后
到这儿,用ollama离线部署qwq模型的流程就讲完啦。在实际操作过程中,大伙可能还会碰到各种各样的问题,这就需要咱们多去摸索、尝试。要是你对模型部署感兴趣,不妨按照上面的步骤动手试试!