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通过哈希区分,不用担心会混淆
  • 修改系统路径PATHexport 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/Modelfile
      • myqwen是自定义名字,不要与模型本来的名字相同即可
    • 之后将模型名称换成myqwen即可
  • 模型名字不代表模型架构,比如说deepseek-r1:70b的架构是llama的架构(ollama的模型介绍页的README有写)

  • ollama show可以展示具体信息

    • ollama show 模型名字可以查看模型信息
    • ollama show --modelfile 模型名字可以查看各种参数以及chat template的信息
  • server返回503代表现在在队列中的待处理请求太多了(可以通过设置OLLAMA_MAX_QUEUE环境变量来调整,默认为512)

posted @ 2025-12-02 16:56  最爱丁珰  阅读(16)  评论(0)    收藏  举报