文章目录
- 离线安装Ollama
- Ollama下载
- Ollama硬件需求
- Ollama 常用命令参考
- Ollama安装
- Ollama 服务管理&开机启动
- 开启局域网访问 Ollama 服务
- 离线安装模型
- gguf 文件格式
- 下载Qwen2.5-Coder-7B-Instruct-GGUF
- 格式选择 ( gguf 版本 )
- 构建Modelfile文件
- 加载并运行离线模型
- 测试
- 集成客户端
- 问题
- 缺少依赖
- 小结
离线安装Ollama
Ollama下载
https://github.com/ollama/ollama/releases
Ollama硬件需求
Ollama 对硬件的基础要求较低,但不同规模的模型对资源的需求不同 .可参考如下配置:
模型参数 | 模型大小 | 建议 CPU | 建议内存 | 建议显存 | 特点 |
---|---|---|---|---|---|
1.5B | 1.1GB | 4 核 | 4~8GB | 4GB | 轻量级,普通文本处理 |
7B | 4.7GB | 8 核 | 16GB | 14GB | 硬件要求适中,性能较好 |
8B | 4.9GB | 8 核 | 16GB | 14GB | 略强于 7B,精度更高 |
14B | 9GB | 12 核 | 32GB | 26GB | 适合复杂任务,如数学推理、代码生成 |
32B | 20GB | 16 核 | 64GB | 48GB | 高精度任务 |
70B | 43GB | 32 核 | 128GB | 140GB | 大规模计算和高复杂度任务 |
671B | 404GB | 64 核 | 512GB | 1342GB | 超大规模,性能卓越 |
如果没有显卡,就不要折腾了,线上服务器16Core 32G内存, 无显存。 实测部署了个qwen2.5-coder 7B的模型, 对话延时400多秒… qwen2.5-coder 0.5B 延时近30秒, 每秒基本保持在5个token…基本无法使用。
Ollama 常用命令参考
ollama 提供了丰富的命令行工具,方便用户对模型进行管理。
ollama --help:查看帮助信息。ollama serve:启动 Ollama 服务。ollama create <model-name> [-f Modelfile]:根据一个 Modelfile 文件导入模型。ollama show <model-name:[size]>:显示某个模型的详细信息。ollama run <model-name:[size]>:运行一个模型。若模型不存在会先拉取它。ollama stop <model-name:[size]>:停止一个正在运行的模型。ollama pull <model-name:[size]>:拉取指定的模型。ollama push <model-name>:将一个模型推送到远程模型仓库。ollama list:列出所有模型。ollama ps:列出所有正在运行的模型。ollama cp <source-model-name> <new-model-name>:复制一个模型。ollama rm <model-name:[size]>:删除一个模型。
Ollama安装
上传 ollama linux amd64.tgz
到服务器 ,解压
# 解压安装包
tar -zxvf ollama linux amd64.tgz# 将 ollama 执行命令移动到 /usr/bin 目录下 (可选,为了后面的服务配置做准备)
sudo mv bin/ollama /usr/bin/ollama# 创建执行用户 (可选 , 有 ollama 执行权限的用户都可以,这里我使用了root)
sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)
Ollama 服务管理&开机启动
创建文件 /etc/systemd/system/ollama.service
, 其中的 User 和 Group 根据上一步的选择填写
[Unit]
Description=ollama
After=local-fs.target sockets.target[Service]
User=root
Group=root
RemainAfterExit=yes
ExecStart=/usr/bin/ollama serve
Restart=always
EnvirOnment="OLLAMA HOST=0.0.0.0"
EnvirOnment="OLLAMA ORIGINS=*"[Install]
WantedBy-multi-user.target
# 加载配置
sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable ollama
# 启动 ollama 服务
sudo systemctl start ollama
开启局域网访问 Ollama 服务
默认情况下,Ollama API 仅允许本机访问。如果需要局域网其他设备访问,需要修改 OLLAMA_HOST
和 OLLAMA_ORIGINS
环境变量
Windows
# Windows(CMD)设置
setx OLLAMA_HOST 0.0.0.0:11434
setx OLLAMA_ORIGINS *
Linux
临时方案(当前会话有效)
export OLLAMA_HOST=0.0.0.0:11434
export OLLAMA_ORIGINS=*
sudo systemctl restart ollama # 重启服务使配置生效
永久生效(推荐)
创建 systemd 配置文件, 适用于通过 systemd 管理的 Ollama 服务:
[Unit]
Description=ollama
After=local-fs.target sockets.target[Service]
User=root
Group=root
RemainAfterExit=yes
ExecStart=/usr/bin/ollama serve
Restart=always
EnvirOnment="OLLAMA HOST=0.0.0.0"
EnvirOnment="OLLAMA ORIGINS=*"[Install]
WantedBy-multi-user.target
重新加载配置并重启服务
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama
ss -tuln | grep 11434
离线安装模型
我们这里采用 gguf 模型安装方式
gguf 文件格式
GGUF(GPT-Generated Unified Format)是新一代专为本地大语言模型(LLM)优化的文件格式,由 llama.cpp 团队设计,用于替代旧版 GGML 格式。
- 目标:提升模型推理效率、兼容性和可扩展性,同时降低资源占用。
- 典型特性:
- ✅ 单文件结构:模型权重、参数、元数据(如上下文长度)直接嵌入文件,无需外挂配置文件。
- ✅ 跨平台兼容:原生适配 CPU/GPU/NPU 混合计算,支持量化模型(如 4-bit/5-bit)。
- ✅ 动态扩展性:允许开发者灵活添加新功能(例如新增量化类型),无需破坏旧版本兼容性。
下载Qwen2.5-Coder-7B-Instruct-GGUF
访问 https://huggingface.co/Qwen ,查找我们要部署的Coder
- Qwen2.5:阿里云通义千问模型系列的第 2.5 代版本,性能和功能相较于前代有优化。
- Coder:表明该模型专为代码生成、理解与补全任务设计,擅长处理编程语言(如 Python、Java、C++ 等)。
- 7B:模型参数量为 70 亿级别(7 Billion Parameters),属于中等规模模型。
- Instruct:表示该模型经过指令微调(Instruction Tuning),能更精准理解用户指令并生成符合要求的响应。
请选择 GGUF格式的模型
格式选择 ( gguf 版本 )
Qwen/Qwen2.5-Coder-7B-Instruct-GGUF
这里需要结合模型具体的量化。
我们通过Ollama部署,就要去Ollama官网看下 7b支持情况
https://ollama.com/library/qwen2.5-coder:7b
Model Arch: Qwen2 :模型架构为 Qwen2,即阿里云通义千问模型的第二代架构。
Parameters: 7.62B :模型参数量为 7.62 亿(7.62 Billion Parameters)。
Quantization: Q4_K_M :模型经过 4-bit 量化,具体为 Q4_K_M 量化方法。
我们去找 Q4_K_M 格式的 GGUF文件
一般来说大模型文件会比较大,会被分片存储 。 上图就是两个文件,下面就要进行模型文件合并。 我们可以直接下载qwen2.5-coder-7b-instruct-q4_k_m.gguf
如果自己要合并的话可以下载llama.cpp
https://github.com/ggerganov/llama.cpp/releases
然后进到解压包里面使用命令进行合并, 通过如下命令
bash ./llama-gguf-split.exe --merge ../qwen2.5-7b-instruct-q4_k_m-00001-of-00002.gguf ../qwen2.5-7b-instruct-q4_k_m.gguf
构建Modelfile文件
将下载后的文件qwen2.5-coder-7b-instruct-q4_k_m.gguf
上传到服务器的目录, 并重命名为 qwen2.5-coder-7b.gguf
, 这里重命名为了方便Modelfile中FROM引用
Modelfile格式
命令 | 描述 |
---|---|
FROM | (必需的)引入使用的模型或者模型源文件。 |
PARAMETER | 设置大模型的运行参数。 |
TEMPLATE | 用于大模型请求的 prompt 提示词模板。 |
SYSTEM | 设置大模型默认的系统消息。 |
ADAPTER | 定义适用于模型的(Q)LoRA 适配器。 |
LICENSE | 指定 license。 |
MESSAGE | 指定消息历史。 |
在模型的同级目录下创建文件 Modelfile, 添加如下内容
# 刚才命名的模型名
FROM ./qwen2.5-coder-7b.gguf# 可以到 ollama 网站上的模型库去寻找, 如qwen2.5-coder-7b的见上图 https://ollama.com/library/qwen2.5-coder/blobs/e94a8ecb9327
# 直接复制 ollama 上的 Template 到如下三个双引号中间
TEMPLATE """{{- if .Suffix }}<|fim_prefix|>{{ .Prompt }}<|fim_suffix|>{{ .Suffix }}<|fim_middle|>
{{- else if .Messages }}
{{- if or .System .Tools }}<|im_start|>system
{{- if .System }}
{{ .System }}
{{- end }}
{{- if .Tools }}# ToolsYou 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 }}"""
有的模型,比如qwq有参数,比如
如果后续运行有问题,可以在Modefile中添加参数
# 这一步参考 ollama 上的 parameters, 但是 ollama 上的 qwen2.5-coder-7b 是没有参数的, 按照下面的格式添加即可
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"
加载并运行离线模型
# 通过模型描述文件, 创建并运行 qwen2.5 模型
ollama create qwen2.5-coder-7b -f ./Modelfile
# 查看模型运行列表, 是否正在运行
ollama ls
测试
# 通过 api 调用模型, 检测模型是否运行正常
curl --location --request POST 'http://127.0.0.1:11434/api/generate' \
--header 'Content-Type: application/json' \
--data '{"model": "qwen2.5-coder-7b","stream": false,"prompt": "你好,你是谁?"
}' \
-w "Time Total: %{time_total}s\n"
model的名字,请保持和ollama create qwen2.5-coder-7b -f Modelfile
中的一致
等待正常返回即可
我这里截一个0.5b的图
返回后,ollama ps (以0.5b的为例)就可以看到了(我之前看不到,以为有问题)
集成客户端
如何将 Chatbox 连接到远程 Ollama 服务:逐步指南
设置下 模型即可
对话如下
问题
缺少依赖
运行ollama ,报错
./ollama: /lib64/libstdc++.so.6: version GLIBCXX_3.4.25 not found (required by ./ollama)
检查
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
就然只到了3.4.24 , 我从 https://download.csdn.net/download/gyqhlbt/86752716 下载了一个
把原来的软连接删除,上传新的,重新软连一下 即可 ln -s
小结
其他的模型,也可以按照上面的方式来安装,别浪费了你的卡子, 赶紧私有化起来吧 ‘
’