智能

AIGC 实战(环境篇)—— Debian 部署 Ollama

波比AI · 5月2日 · 2025年本文共8797个字 · 预计阅读30分钟3次已读

一、Ollama 简介

Ollama 仓库创建于 2023年6月26日,截至2024年8月,Ollama 经过了一年多的发展。相信在不久的未来,将会在越来越多的边缘端产品中看到大模型的身影。

什么是 Ollama ?正如 Ollama 官方仓库所说:本地启动并运行大型语言模型。

Ollama 是一个开源的大型语言模型服务工具,旨在帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以通过一条命令轻松启动和运行开源的大型语言模型。 它提供了一个简洁易用的命令行界面和服务器,专为构建大型语言模型应用而设计。用户可以轻松下载、运行和管理各种开源 LLM。与传统 LLM 需要复杂配置和强大硬件不同,Ollama 能够让用户在消费级的 PC 上体验 LLM 的强大功能。

Ollama 会自动监测本地计算资源,如有 GPU 的条件,会优先使用 GPU 的资源,同时模型的推理速度也更快。如果没有 GPU 条件,直接使用 CPU 资源。

Ollama 极大地简化了在 Docker 容器中部署和管理大型语言模型的过程,使用户能够迅速在本地启动和运行这些模型。

Ollama 特点:

  • 开源免费:Ollama 及其支持的模型完全开源且免费,用户可以随时访问和使用这些资源,而无需支付任何费用。
  • 简单易用:Ollama 无需复杂的配置和安装过程,只需几条简单的命令即可启动和运行,为用户节省了大量时间和精力。
  • 支持多平台:Ollama 提供了多种安装方式,支持 Mac、Linux 和 Windows 平台,并提供 Docker 镜像,满足不同用户的需求。
  • 模型丰富:Ollama 支持包括 DeepSeek-R1、 Llama3.3、Gemma2、Qwen2 在内的众多bobyai热门开源 LLM,用户可以轻松一键下载和切换模型,享受丰富的选择。
  • 功能齐全:Ollama 将模型权重、配置和数据捆绑成一个包,定义为 Modelfile,使得模型管理更加简便和高效。
  • 支持工具调用:Ollama 支持使用 Llama 3.1 等模型进行工具调用。这使模型能够使用它所知道的工具来响应给定的提示,从而使模型能够执行更复杂的任务。
  • 资源占用低:Ollama 优化了设置和配置细节,包括 GPU 使用情况,从而提高了模型运行的效率,确保在资源有限的环境下也能顺畅运行。
  • 隐私保护:Ollama 所有数据处理都在本地机器上完成,可以保护用户的隐私。
  • 社区活跃:Ollama 拥有一个庞大且活跃的社区,用户可以轻松获取帮助、分享经验,并积极参与到模型的开发和改进中,共同推动项目的发展。

二、Ollama 安装

(一) 自动安装

curl -fsSL https://ollama.com/install.sh | sh

(二)手动安装

ollama中文网:https://ollama.fan/getting-started/linux/

  1. 下载 ollama 二进制文件:Ollama 以自包含的二进制文件形式分发。将其下载到您的 PATH 中的目录:
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama

sudo chmod +x /usr/bin/ollama
  1. 将 Ollama 添加为启动服务(推荐):为 Ollama 创建一个用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
  1. 在 /etc/systemd/system/ollama.service 中创建一个服务文件:
#vim ollama.service 

[Unit]

Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3

[Install]
WantedBy=default.target
  1. 然后启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
  1. 启动 Ollama 使用 systemd 启动 bobyaiOllama:
sudo systemctl start ollama
  1. 更新,查看日志
#再次运行
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama

#要查看作为启动服务运行的 Ollama 的日志,请运行:
journalctl -u ollama
  1. 步骤7:关闭 Ollama 服务
#关闭ollama服务
service ollama stop

(三)离线安装

  1. 查看服务器CPU的型号
##查看Linux系统CPU型号命令,我的服务器cpu型号是x86_64
lscpu
  1. 步骤2:根据CPU型号下载Ollama安装包,并保存到目录

下载地址: https://github.com/ollama/ollama/releases/

#x86_64 CPU选择下载ollama-linux-amd64
#aarch64|arm64 CPU选择下载ollama-linux-arm64

AIGC 实战(环境篇)—— Debian 部署 Ollama

#有网机器下载过来也一样
wget https://ollama.com/download/ollama-linux-amd64 

下载到离线服务器上:/usr/bin/ollama ollama就是你下载的ollama-linux-amd64 改名了(mv),其他步骤一致

三、Ollama 配置

(一)修改存储路径

Ollama模型默认存储在:

  • macOS: ~/.ollama/models
  • Linux: /usr/share/ollama/.ollama/models
  • Windows: C:\Users<username>.ollama\models

如果 Ollama 作为 systemd 服务运行,则应使用以下命令设置环境变量systemctl:

  1. 通过调用 来编辑 systemd 服务systemctl edit ollama.service。这将打开一个编辑器。
  2. Environment对于每个环境变量,在部分下添加一行Service:

[!tip] 直接在“/etc/systemd/system/ollama.service”增了2行:

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/root/ollama"
  1. 保存并退出。
  2. 重新加载systemd并重新启动 Ollama:
systemctl daemon-reload 
systemctl restart ollama

参考链接:https://gbobyaiithub.com/ollama/ollama/blob/main/docs/faq.md

(二)常用配置

开启多模型、高并发等配置:

[Unit]
Description=Ollama Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/root/anaconda3/bin:/root/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/anaconda3/bin"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="CUDA_VISIBLE_DEVICES=0,1"
# 配置并行处理请求的数量
Environment="OLLAMA_NUM_PARALLEL=4"
# 配置同时加载的模型数量
Environment="OLLAMA_MAX_LOADED_MODELS=4"
# 如果进程崩溃自动重启
Restart=always
# 重启等待时间
RestartSec=10
# 配置所需的用户和权限
OLLAMA_NUM_THREADS=8。

[Install]
WantedBy=multi-user.target

说明:

  1. [Unit]:描述服务的基本信息,如服务名称和依赖。
    • Description: Ollama 服务的描述。
    • After: 依赖网络服务启动后再启动 Ollama。
  2. [Service]:定义服务如何启动和运行。
    • ExecStart: 启动命令,此处使用 /usr/local/bin/ollama serve 启动 Ollama。
    • Environment: 设置环境变量 OLLAMA_NUM_PARALLELOLLAMA_MAX_LOADED_MODELS,分别控制并发请求处理数量和同时加载的模型数量。
    • WorkingDirectory: 指定 Ollama 服务的工作目录。
    • Restart=always: 如果服务崩溃或意外退出,自动重启服务。
    • RestartSec=10: 在重启前等待 10 秒。
  3. [Install]:定义服务的安装行为。
    • WantedBy=multi-user.target: 指定服务在多用户模式下启动。
  4. 显卡资源使用不均横
    设置环境变量OLLAMA_SCHED_SPREAD1即可

  5. 加速计算
    FlashAttention 是一种优化的注意力机制,用于加速深度学习模型中常见的自注意力计算,尤其是在Transformer架构中。它通过改进内存访问模式和计算策略,显著提高了计算效率和内存使用率。
    我们可以通过设置环境变量OLLAMA_FLASH_ATTENTION1,开启改选项

增加上下文窗口

假设你从Ollama上拉取了大模型,其默认的窗口大小只有2048。我们可以通过如下方法,提高上下文窗口
ollama show --modelfile qwen2.5-coder > Modelfile

我们看一下生成的Modelfile

# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM qwen2.5-coder:latest

FROM ~/.ollama/models/blobs/sha256-ced7796abcbb47ef96412198ebd31ac1eca21e8bbc831d72a31df69e4a30aad5
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 }}

# 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 }}
{{- 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 }}"""
SYSTEM You are a helpful assistant.
PARAMETER stop <|endoftext|>

然后在PARAMETER处增加如下配置,32768就是上下文窗口大小,设置成你想要的即可
注意增加上下文窗口可能增加显存的使用,谨慎增加
PARAMETER num_ctx 32768
然后创建新模型即可ollama create qwen2.5-coder:7b-32k -f Modelfile
接下来,你就可以使用运行具有更高上下文的模型了 ollama run qwen2.5-coder:7b-32k

(三)其他设置

Ollama 可以设置的环境变量

  • OLLAMA_DEBUG: 显示额外的调试信息(例如:OLLAMA_DEBUG=1)。
  • OLLAMA_HOST: Ollama 服务器的 IP 地址(默认值:127.0.0.1:11434),如果你想要在局域网内的其他设备上访问它可以设置为0.0.0.0。
  • OLLAMA_PORT: 如果默认的 11434 端口被占用了,可以用它设置一个新的,比如 4567
  • OLLAMA_KEEP_ALIVE: 模型在内存中保持加载的时长(默认值:“5m”),防止睡眠,如果对外提供服务,可以设置类似24h这样的值,这样24小时内它就不会睡眠了,但同样的它也会一直加载在内存中。
  • OLLAMA_MAX_LOADED_MODELS: 每个 GPU 上最大加载模型数量。
  • OLLAMA_MAX_QUEUE: 请求队列的最大长度。
  • OLLAMA_MODELS: 模型目录的路径,默认.ollama/models,如果你的系统盘空间不够,或者想把模型放在更大的硬盘上可以配置指定路径。
  • OLLAMA_NUM_PARALLEL: 最大并行请求数。
  • OLLAMA_NOPRUNE: 启动时不修剪模型 blob。
  • OLLAMA_ORIGINS: 允许的源列表,使用逗号分隔。
  • OLLAMA_SCHED_SPREAD: 始终跨所有 GPU 调度模型。
  • OLLAMA_TMPDIR: 临时文件的位置。
  • OLLAMA_FLASH_ATTENTION: 启用 Flash Attention。
  • OLLAMA_LLM_LIBRARY: 设置 LLM 库以绕过自动检测。

[!tip] Environment=“OLLAMA_PORT=9380” 没有用

  • 这样指定:Environment="OLLAMA_HOST=0.0.0.0:7861"
  • 指定 GPU 本地有多张 GPU,如何用指定的 GPU 来运行 Ollama? 在Linux上创建如下配置文件,并配置环境变量 CUDA_VISIBLE_DEVICES 来指定运行 Ollama 的 GPU,再重启 Ollama 服务即可【测试序号从0还是1开始,应是从0开始】。
vim /etc/systemd/system/ollama.service
[Service]
Environment="CUDA_VISIBLE_DEVICES=0,1"

四、常见命令

终端输入 Ollama,输出如下:

Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  stop        Stop a running model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

总结如下:

命令 描述
ollama serve 启动 Ollama
ollama create 从 Modelfile 创建模型
ollama show 显示模型信息
ollama run 运行模型
ollama stop 停止正在运行的模型
ollama pull 从注册表中拉取模型
ollama push 将模型推送到注册表
ollama list 列出所有模型
ollama ps 列出正在运行的模型
ollama cp 复制模型
ollama rm 删除模型
ollama help 显示任意命令的帮助信息
标志 描述
-h, --help 显示 Ollama 的帮助信息
-v, --version 显示版本信息

多行输入命令时,可以使用 """ 进行换行。

AIGC 实战(环境篇)—— Debian 部署 Ollama

使用 """ 结束换行。

AIGC 实战(环境篇)—— Debian 部署 Ollama

终止 Ollama 模型推理服务,可以使用 /bye

AIGC 实战(环境篇)—— Debian 部署 Ollama

注意:Ollama 进程会一直运行,如果需要终止 Ollama 所有相关进程,可以使用以下命令:

Get-Process | Where-Object {$_.ProcessName -like '*ollama*'} | Stop-Process

后台运行:

nohup ollama run deepseek-r1:70b > ds.log 2>&1 < /dev/null &

五、支持的模型

Ollama 支持的模型库列表 https://ollama.com/library

下面是一些受欢迎的模型:

Model Tag Parameters Size Download
DeepSeek-R1 7B 4.7GB ollama run deepseek-r1
DeepSeek-R1 671B 404GB ollama run deepseek-r1:671b
Llama 3.3 70B 43GB ollama run llama3.3
Llama 3.2 3B 2.0GB ollama run llama3.2
Llama 3.2 1B 1.3GB ollama run llama3.2:1b
Llama 3.2 Vision Vision 11B 7.9GB ollama run llama3.2-vision
Llama 3.2 Vision Vision 90B 55GB ollama run llama3.2-vision:90b
Llama 3.1 8B 4.7GB ollama run llama3.1
Llama 3.1 405B 231GB ollama run llama3.1:405b
Gemma 2 2B 1.6GB ollama run gemma2:2b
Gemma 2 9B 5.5GB ollama run gemma2
Gemma 2 27B 16GB ollama run gemma2:27b
mistral 7b 4.1GB ollama run mistral:7b
qwen 110b 63GB ollama run qwen:110b
Phi 4 14B 9.1GB ollama run phi4
codellama Code 70b 39GB ollama run codellama:70b
qwen2 72b 41GB ollama run qwen2:72b
llava Vision 7b 4.7GB ollama run llava:7b
nomic-embed-text Embedding v1.5 274MB ollama pull nomic-embed-text:v1.5

所有支持的模型(数据统计至2024.8.2)。

最新支持模型请参考:https://ollama.com/search

注意:运行 7B 模型至少需要 8GB 内存,运行 13B 模型至少需要 16GB 内存,运行 33B 模型至少需要 32GB 内存。

六、参考

[Total: 0 Average: 0]
0 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!