ollama 部署教程
安装
- 安装压缩包:
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama.tgz - 解压:
tar -xzvf ollama.tgz - 添加权限:
chmod +x bin/ollama - 修改模型权重存储路径(默认是
~/.ollama,其他杂七杂八文件也在这里):export OLLAMA_MODELS="/data/dingxingd/ollama/models"- 所有模型的权重可以放到同一个目录下,ollama通过哈希区分,不用担心会混淆
- 修改系统路径
PATH:export PATH="/data/dingxingdi/ollama/bin/:$PATH"(将其放在最前面代表高优先级,也可以写成export PATH="$PATH:/data/dingxingdi/ollama/bin/"代表低优先级)- 在终端中输入任何东西,第一个都是可执行程序
- 终端都会在
PATH的目录中去寻找这个可执行程序 - 当然更标准的做法是创建软链接:
ln -s /opt/ollama/ollama /usr/bin/ollama(但是这个需要ROOT权限)
- 启动服务:
ollama serve - 测试是否安装成功:在另一个终端运行
curl http://localhost:11434,输出ollama is running
环境变量(在server所在终端先设置再ollama serve)
OLLAMA_HOST- ollama的服务端口,可以对外暴露从而对外提供服务
- 默认值为
127.0.0.1:11434
OLLAMA_NUM_GPU- 在可用内存允许的情况下,可同时加载的最大模型数量
- 这个指的是不同模型,同一种模型只能加载一个
- 所以实际上用ollama是会浪费一些GPU的,不是所有GPU都会使用到
- 目前没有发现什么好方法,只能手动开启多个实例然后自己使用负载均衡(比如Nginx);vllm也是这样,没有什么好办法
- 要实现这个功能,好像这个issue有帮助
- 默认值
- 当使用CPU的时候为3
- 当使用GPU的时候为GPU的数量的三倍
OLLAMA_NUM_PARALLEL- 每个模型可同时处理的并行请求最大数量
- 默认值根据内存自动选择4或者1
OLLAMA_MAX_QUEUE- Ollama在繁忙时允许排队等待的最大请求数量,超过此数量将拒绝新请求
- 默认值为512
CUDA_VISIBLE_DEVICES- ollama可见的NVIDIA的GPU的数目
- 默认值为GPU总数
OLLAMA_SCHED_SPREAD- 强制将模型并行分到多少个GPU上
- 这里是模型并行不是数据并行,用于单个GPU放不下一个模型的时候(所以并不会增加推理速度,实际上还可能下降,因为有通信成本);一般不用设置,ollama会自动分配
使用
- 安装模型:
ollama pull qwen3:0.6b - 进行聊天:
ollama run qwen3:0.6b- 当然还可以使用其他很多方式,具体见官方文档
技巧
-
ollama支持
openai库,具体操作见官方文档 -
如果是ollama自己支持的参数,那么通过
extra_body传递extra_body这个参数是OpenAI专门给与openai兼容的后端设计的,传递openai本来不支持的参数,由后端处理- 在ollama中,这个参数接受一个键为
opetions的字典- 比如开启推理模式为
extra_body={"options": {"think": "true"}},然后就可以在completion.choices[0].message.thinking中看到推理内容,在completion.choices[0].message.content中看到输出内容
- 比如开启推理模式为
实际上这是一个还没有合并的PR,根据这个issue的末尾,合作者说一般不会合并,所以就不要用这个操作了
正确的关闭思考的方法,要么就是改Chat template,要么就是使用非思考模型(比如qwen3:235b-a22b-instruct-2507-q4_K_M),要么就是使用ollama的原生API而不是OpenAI库。
提供一个修改chat template的例子:- 在ollama的模型介绍页中找到这个模型的template
- 找到其中的思考标志
- 然后询问AI,搞懂这个chat template
- 将对话模板修改成为不带思考的样子。注意不要改变分布。比如这个就要修改成把
修改成{{- if and $.IsThinkSet $.Think (not $.Tools) -}} <think>{{- if and $.IsThinkSet $.Think (not $.Tools) -}} </think>
-
ollama默认的上下文长度是4096,即使模型的上下文长度比这个高得多也没用。如果使用
openai库的话,修改上下文长度的步骤如下:- 创建
Modefile文件(不一定非要叫Modelfile,实际上推荐叫model_模型新名,因为这个样子就可以与各种模型一一对应(知道自定义的模型是从哪个模型FROM的,同时知道自定义模型的modelfile具体是哪一个),后面在我们下载了多个大模型的时候非常方便)FROM qwen3:0.6b PARAMETER num_ctx 20480 - 运行命令(不是在
ollama service之前运行,而是先开启服务然后在另一个终端运行):ollama create myqwen -f path/to/Modelfilemyqwen是自定义名字,不要与模型本来的名字相同即可
- 之后将模型名称换成
myqwen即可
- 创建
-
模型名字不代表模型架构,比如说
deepseek-r1:70b的架构是llama的架构(ollama的模型介绍页的README有写) -
ollama show可以展示具体信息ollama show 模型名字可以查看模型信息ollama show --modelfile 模型名字可以查看各种参数以及chat template的信息
-
server返回503代表现在在队列中的待处理请求太多了(可以通过设置
OLLAMA_MAX_QUEUE环境变量来调整,默认为512)

浙公网安备 33010602011771号