Ollama部署Qwen2-7B-Instruct实战:本地大模型工具、自定义GGUF文件运行与API调用

Ollama是一个工具,能让你轻松在本地电脑上使用大型语言模型(LLM)。它支持MacOS、Linux和Windows系统,操作简便,类似Docker。你可以从官网下载模型,从GitHub获取部署指南和教程。

Ollama运行自定义的GGUF文件

1、获取自定义GGUF文件

克隆https://github.com/ggerganov/llama.cpp对应的b3140版本,运行convert-hf-to-gguf.py,即将huggingface上的权重转换为gguf格式,python convert-hf-to-gguf.py /models/Qwen2-7B-Instruct/

convert-hf-to-gguf.py
![](https://cdn.jsdelivr.net/gh/gkm0120/CDN/img/notion_57e9a685.png) 转换结束 ![](https://cdn.jsdelivr.net/gh/gkm0120/CDN/img/notion_8c9f0e82.png) ### 2、创建Modelfile 需要创建一个名为 Modelfile 的文件。文件内容如下所示:
text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM /models/Qwen2-7B-Instruct/ggml-model-f16.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.01
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

3、创建模型

通过运行ollama create qwen2_7b -f Modelfile创建 ollama 模型,并通过ollama run qwen2_7b 运行 ollama 模型:

ollama提供API接口服务(qwen2_7b + CPU推理)

1、搭建ollama环境

获取对应的docker镜像:hub.docker.com
第一步,将容器内的11434端口映射为本地8979端口
sudo docker run -d –network llm-management-network –name ollama_0143 –ipc=host -P -p 8979:11434 -v /data/models:/models –restart=always ollama/ollama:0.1.43

2、创建模型

同样执行ollama create qwen2_7b -f Modelfile 以及 ollama run qwen2_7b ,查看 ollama list 模型名称

3、API服务调用

通过curl调用

text
1
2
3
4
5
6
7
8
9
10
11
curl --location --request POST 'http://10.39.214.105:8979/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data-raw '{
"messages": [
{
"role": "user",
"content": "Please output: Say this is a test"
}
],
"model": "qwen2_7b:latest"
}'

或者使用postman模型调用

ollama提供API接口服务(qwen25_7b + GPU推理)

1、搭建ollama环境

获取对应的docker镜像:hub.docker.com
第一步,将容器内的11434端口映射为本地8767端口
sudo docker run -d --gpus all --network llm-management-network --name ollama_0143 --ipc=host -P -p 8767:11434 -v /data/models:/models --restart=always ollama/ollama:0.1.43

2、创建Modelfile

ollama模型权重
权重地址:Qwen/Qwen2.5-7B-Instruct · HF Mirror
权重版本:ggml-model-f16.gguf来自convert-hf-to-gguf.py转换默认Qwen2.5-7B-Instruct

需要创建一个名为 Modelfile 的文件。文件内容如下所示:

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM /models/Qwen2.5-7B-Instruct/ggml-model-f16.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.0
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 5

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

3、配置ollama.service文件

进入到容器内/etc/systemd/system/目录下,创建ollama.service文件。
echo写入指定文件,其中echo:用于输出文本到标准输出(通常是终端),- e:允许解释转义字符(如\n表示换行),>:将echo的输出重定向到文件。如果文件不存在,将会创建该文件;如果文件已存在,将会覆盖文件内容。
echo -e '[Service]\nEnvironment="CUDA_VISIBLE_DEVICES=0"' > ollama.service

4、创建模型

通过运行ollama create qwen25_7b -f /models/Qwen2.5-7B-Instruct/Modelfile创建 ollama 模型,并通过ollama run qwen25_7b 运行 ollama 模型。

ollama提供API接口服务(qwen25_7b量化4版本 + GPU推理)

1、搭建ollama环境

获取对应的docker镜像:hub.docker.com
第一步,将容器内的11434端口映射为本地8767端口
sudo docker run -d --gpus all --network llm-management-network --name ollama_0143 --ipc=host -P -p 8767:11434 -v /data/models:/models --restart=always ollama/ollama:0.1.43

2、创建Modelfile

ollama模型权重
权重地址:second-state/Qwen2.5-7B-Instruct-GGUF · HF Mirror
权重版本:Qwen2.5-7B-Instruct-Q4_K_M.gguf

需要创建一个名为 Modelfile_int4 的文件。文件内容如下所示:

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM /models/Qwen2.5-7B-Instruct/Qwen2.5-7B-Instruct-Q4_K_M.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.0
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 5

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

3、配置ollama.service文件

进入到容器内/etc/systemd/system/目录下,创建ollama.service文件。
echo写入指定文件,其中echo:用于输出文本到标准输出(通常是终端),- e:允许解释转义字符(如\n表示换行),>:将echo的输出重定向到文件。如果文件不存在,将会创建该文件;如果文件已存在,将会覆盖文件内容。
echo -e '[Service]\nEnvironment="CUDA_VISIBLE_DEVICES=0"' > ollama.service

4、创建模型

通过运行ollama create qwen25_7b_int4 -f /models/Qwen2.5-7B-Instruct/Modelfile_int4 创建 ollama 模型,并通过ollama run qwen25_7b_int4 运行 ollama 模型。

ollama提供API接口服务(qwen25_7b量化8版本 + GPU推理)

1、搭建ollama环境

获取对应的docker镜像:hub.docker.com
第一步,将容器内的11434端口映射为本地8767端口
sudo docker run -d --gpus all --network llm-management-network --name ollama_0143 --ipc=host -P -p 8767:11434 -v /data/models:/models --restart=always ollama/ollama:0.1.43

2、创建Modelfile

ollama模型权重
权重地址:https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct
权重版本:ggml-model-q8_0.gguf来自convert-hf-to-gguf.py转换默认Qwen2.5-7B-Instruct,其中–outtype可选参数为[“f32”, “f16”, “bf16”, “q8_0”, “auto”]

需要创建一个名为 Modelfile_int8 的文件。文件内容如下所示:

text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM /models/Qwen2.5-7B-Instruct/ggml-model-q8_0.gguf

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.0
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 5

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

3、配置ollama.service文件

进入到容器内/etc/systemd/system/目录下,创建ollama.service文件。
echo写入指定文件,其中echo:用于输出文本到标准输出(通常是终端),- e:允许解释转义字符(如\n表示换行),>:将echo的输出重定向到文件。如果文件不存在,将会创建该文件;如果文件已存在,将会覆盖文件内容。
echo -e '[Service]\nEnvironment="CUDA_VISIBLE_DEVICES=0"' > ollama.service

其他环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
OLLAMA_DEBUG 				显示额外的调试信息(例如:OLLAMA_DEBUG=1)
OLLAMA_HOST ollama服务器的IP地址(默认 127.0.0.1:11434)
OLLAMA_KEEP_ALIVE 模型在内存中加载的持续时间(默认 "5m")
OLLAMA_MAX_LOADED_MODELS 加载的最大模型数量(默认为1)
OLLAMA_MAX_QUEUE 队列中的最大请求数
OLLAMA_MODELS 模型目录的路径
OLLAMA_NUM_PARALLEL 并行请求的最大数量(默认为1)
OLLAMA_NOPRUNE 不在启动时清除模型块
OLLAMA_ORIGINS 允许源头的逗号分隔列表
OLLAMA_TMPDIR 临时文件的位置
OLLAMA_FLASH_ATTENTION 启用FLASH_ATTENTION
OLLAMA_LLM_LIBRARY 设置LLM库以绕过自动检测
OLLAMA_MAX_VRAM 最大VRAM

4、创建模型

通过运行ollama create qwen25_7b_int8 -f /models/Qwen2.5-7B-Instruct/Modelfile_int8 创建 ollama 模型,并通过ollama run qwen25_7b_int8 运行 ollama 模型。

5、ollama如何保持模型加载在内存中或立即卸载

Ollama模型默认在内存中保留5分钟后卸载。你可以通过设置keep_alive参数来控制模型的保留时间:

  • 用时间字符串(如”10分钟”或”24小时”)或秒数(如3600秒)来设定具体保留时间。
  • 设置为负数(如-1或”-1分钟”)将使模型无限期保留。
  • 设置为”0”会在生成响应后立即卸载模型。
    例如,要预加载模型并永久保留,可以用:
    curl http://localhost:11434/api/generate -d ‘{“model”: “qwen25_7b:latest”, “keep_alive”: -1}‘
    要卸载模型并释放内存,可以用:
    curl http://localhost:11434/api/generate -d ‘{“model”: “qwen25_7b:latest”, “keep_alive”: 0}‘

    6、在启动时添加OLLAMA_KEEP_ALIVE环境参数

    sudo docker run -d –gpus all -e OLLAMA_KEEP_ALIVE=-1 –network llm-management-network –name ollama_0143 –ipc=host -P -p 8767:11434 -v /data/models:/models –restart=always ollama/ollama:0.1.43
    查看是否设置成功
    docker exec -it ollama env
本文结束 感谢您的阅读