一、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/
- 下载 ollama 二进制文件:Ollama 以自包含的二进制文件形式分发。将其下载到您的 PATH 中的目录:
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
- 将 Ollama 添加为启动服务(推荐):为 Ollama 创建一个用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
- 在 /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
- 然后启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
- 启动 Ollama 使用 systemd 启动
bobyai Ollama:
sudo systemctl start ollama
- 更新,查看日志
#再次运行
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
#要查看作为启动服务运行的 Ollama 的日志,请运行:
journalctl -u ollama
- 步骤7:关闭 Ollama 服务
#关闭ollama服务
service ollama stop
(三)离线安装
- 查看服务器CPU的型号
##查看Linux系统CPU型号命令,我的服务器cpu型号是x86_64
lscpu
- 步骤2:根据CPU型号下载Ollama安装包,并保存到目录
下载地址: https://github.com/ollama/ollama/releases/
#x86_64 CPU选择下载ollama-linux-amd64
#aarch64|arm64 CPU选择下载ollama-linux-arm64
#有网机器下载过来也一样
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:
- 通过调用 来编辑 systemd 服务systemctl edit ollama.service。这将打开一个编辑器。
- Environment对于每个环境变量,在部分下添加一行Service:
[!tip] 直接在“/etc/systemd/system/ollama.service”增了2行:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/root/ollama"
- 保存并退出。
- 重新加载systemd并重新启动 Ollama:
systemctl daemon-reload
systemctl restart ollama
参考链接:https://g
(二)常用配置
开启多模型、高并发等配置:
[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
说明:
[Unit]
:描述服务的基本信息,如服务名称和依赖。Description
: Ollama 服务的描述。After
: 依赖网络服务启动后再启动 Ollama。
[Service]
:定义服务如何启动和运行。ExecStart
: 启动命令,此处使用/usr/local/bin/ollama serve
启动 Ollama。Environment
: 设置环境变量OLLAMA_NUM_PARALLEL
和OLLAMA_MAX_LOADED_MODELS
,分别控制并发请求处理数量和同时加载的模型数量。WorkingDirectory
: 指定 Ollama 服务的工作目录。Restart=always
: 如果服务崩溃或意外退出,自动重启服务。RestartSec=10
: 在重启前等待 10 秒。
[Install]
:定义服务的安装行为。WantedBy=multi-user.target
: 指定服务在多用户模式下启动。
- 显卡资源使用不均横
设置环境变量OLLAMA_SCHED_SPREAD
为1
即可 -
加速计算
FlashAttention 是一种优化的注意力机制,用于加速深度学习模型中常见的自注意力计算,尤其是在Transformer架构中。它通过改进内存访问模式和计算策略,显著提高了计算效率和内存使用率。
我们可以通过设置环境变量OLLAMA_FLASH_ATTENTION
为1
,开启改选项
增加上下文窗口
假设你从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 |
显示版本信息 |
多行输入命令时,可以使用 """
进行换行。
使用 """
结束换行。
终止 Ollama 模型推理服务,可以使用 /bye
。
注意: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 内存。
六、参考
- [ 1 ] LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发-腾讯云开发者社区-腾讯云
- [ 2 ] Ollama开启多模型、高并发配置等配置 可用性更强 – 全栈开发
- [ 3 ]
- [ 4 ]
必须 注册 为本站用户, 登录 后才可以发表评论!