官网:https://ollama.com
Github:https://github.com/ollama/ollama
中文文档:http://www.aidoczh.com/docs/ollama/
文章目录
- 一、Ollama 快速入门
- 二、OpenAI 兼容性
- 三、已有模型导入
- 四、自定义模型文件
- 五、在Linux上的安装配置
- 六、故障排除
- 七、FAQ
- 1. 如何升级 Ollama?
- 2. 如何查看日志?
- 3. 如何指定上下文窗口大小?
- 4. 如何配置 Ollama 服务器?
- 5. 如何在我的网络上公开 Ollama?
- 6. 如何使用代理服务器与 Ollama 一起使用?
- 7. 如何使用 ngrok 与 Ollama?
- 8. 如何允许其他网络来源访问 Ollama?
- 9. 模型存储在哪里?
- 10. Ollama 是否会将我的提示和答案发送回 ollama.com?
- 11. 如何在 Visual Studio Code 中使用 Ollama?
- 12. 如何在代理后面使用 Ollama?
- 13. 如何在 Docker 中使用 GPU 加速?
- 14. 为什么在 Windows 10 的 WSL2 中网络速度慢?
- 15. 如何预加载模型以获得更快的响应时间?
- 16. 如何保持模型在内存中加载或立即卸载它?
- 17. 控制使用哪些 GPU
一、Ollama 快速入门
Ollama 是一个用于在本地运行大型语言模型的工具,下面将介绍如何在不同操作系统上安装和使用 Ollama。
1. 安装
(1). macOS
在 macOS 上安装 Ollama,请点击以下链接进行下载:
(2). Windows 预览版
在 Windows 上安装 Ollama,请点击以下链接进行下载:
(3). Linux
在 Linux 上,可以通过以下命令进行安装:
curl -fsSL https://ollama.com/install.sh | sh
- 1
如果需要手动安装,请参考手动安装说明
(4). Docker
Ollama 官方提供了 Docker 镜像,可以在 Docker Hub 上获取:
Ollama Docker 镜像 ollama/ollama
2. 快速开始
要运行并与 Llama 2 进行交流,可以使用以下命令:
ollama run llama2
- 1
3. 模型库
Ollama 支持一系列模型,可以在 ollama.com/library 上找到。以下是一些示例模型及其下载方式:
模型 | 参数数量 | 大小 | 下载方式 |
---|---|---|---|
Llama 2 | 7B | 3.8GB | ollama run llama2 |
Mistral | 7B | 4.1GB | ollama run mistral |
Dolphin Phi | 2.7B | 1.6GB | ollama run dolphin-phi |
Phi-2 | 2.7B | 1.7GB | ollama run phi |
Neural Chat | 7B | 4.1GB | ollama run neural-chat |
Starling | 7B | 4.1GB | ollama run starling-lm |
Code Llama | 7B | 3.8GB | ollama run codellama |
Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
Llama 2 13B | 13B | 7.3GB | ollama run llama2:13b |
Llama 2 70B | 70B | 39GB | ollama run llama2:70b |
Orca Mini | 3B | 1.9GB | ollama run orca-mini |
Vicuna | 7B | 3.8GB | ollama run vicuna |
LLaVA | 7B | 4.5GB | ollama run llava |
Gemma | 2B | 1.4GB | ollama run gemma:2b |
Gemma | 7B | 4.8GB | ollama run gemma:7b |
注意:运行 7B 模型需要至少 8GB 的 RAM,运行 13B 模型需要 16GB RAM,运行 33B 模型需要 32GB RAM。
4. 自定义模型
(1). 从 GGUF 导入
Ollama 支持在 Modelfile 中导入 GGUF 模型:
-
创建一个名为
Modelfile
的文件,使用FROM
指令指定要导入的模型的本地文件路径。FROM ./vicuna-33b.Q4_0.gguf
- 1
-
创建模型
ollama create example -f Modelfile
- 1
-
运行模型
ollama run example
- 1
(2). 从 PyTorch 或 Safetensors 导入
查看导入模型指南获取更多信息。
(3). 自定义提示
可以使用提示来自定义 Ollama 模型。例如,要自定义 llama2
模型:
ollama pull llama2
- 1
创建一个 Modelfile
:
FROM llama2
# 设置温度为 1 [值越高越有创造性,值越低越连贯]
PARAMETER temperature 1
# 设置系统消息
SYSTEM """
You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
"""
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
接下来,创建并运行模型:
ollama create mario -f ./Modelfile
ollama run mario
>>> hi
Hello! It's your friend Mario.
- 1
- 2
- 3
- 4
更多示例,请参考examples目录。有关使用 Modelfile 的更多信息,请参考Modelfile文档。
5. CLI 参考
(1). 创建模型
使用 ollama create
命令从 Modelfile 创建模型。
ollama create mymodel -f ./Modelfile
- 1
(2). 拉取模型
ollama pull llama2
- 1
此命令也可用于更新本地模型。只会拉取差异部分。
(3). 删除模型
ollama rm llama2
- 1
(4). 复制模型
ollama cp llama2 my-llama2
- 1
(5). 多行输入
对于多行输入,可以使用 """
包裹文本:
>>> """Hello,
... world!
... """
I'm a basic program that prints the famous "Hello, world!" message to the console.
- 1
- 2
- 3
- 4
(6). 多模态模型
>>> What's in this image? /Users/jmorgan/Desktop/smile.png
The image features a yellow smiley face, which is likely the central focus of the picture.
- 1
- 2
(7). 将提示作为参数传入
$ ollama run llama2 "Summarize this file: $(cat README.md)"
Ollama is a lightweight, extensible framework for building and running language models on the local machine. It provides a simple API for creating, running, and managing models, as well as a library of pre-built models that can be easily used in a variety of applications.
- 1
- 2
(8). 列出计算机上的模型
ollama list
- 1
(9). 启动 Ollama
当您想要启动 Ollama 而不运行桌面应用程序时,可以使用 ollama serve
。
6. 构建
安装 cmake
和 go
:
brew install cmake go
- 1
然后生成依赖项:
go generate ./...
- 1
然后构建二进制文件:
go build .
- 1
更详细的说明可以在开发者指南中找到。
(1). 运行本地构建
接下来,启动服务器:
./ollama serve
- 1
最后,在另一个 shell 中,运行一个模型:
./ollama run llama2
- 1
7. REST API
Ollama 提供了用于运行和管理模型的 REST API。
(1). 生成响应
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt":"Why is the sky blue?"
}'
- 1
- 2
- 3
- 4
(2). 与模型交流
curl http://localhost:11434/api/chat -d '{
"model": "mistral",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
- 1
- 2
- 3
- 4
- 5
- 6
查看API 文档获取所有端点信息。
8. 社区集成
(1). Web & Desktop
- Lollms-Webui
- LibreChat
- Bionic GPT
- Enchanted (macOS native)
- HTML UI
- Saddle
- Chatbot UI
- Typescript UI
- Minimalistic React UI for Ollama Models
- Open WebUI
- Ollamac
- big-AGI
- Cheshire Cat assistant framework
- Amica
- chatd
- Ollama-SwiftUI
- Dify.AI
- MindMac
- NextJS Web Interface for Ollama
- Msty
- Chatbox
- WinForm Ollama Copilot
- NextChat with Get Started Doc
- Alpaca WebUI
- OllamaGUI
- OpenAOE
- Odin Runes
- LLM-X: Progressive Web App
- AnythingLLM (Docker + MacOs/Windows/Linux native app)
- Ollama Basic Chat: Uses HyperDiv Reactive UI
- Ollama-chats RPG
- ChatOllama: Open Source Chatbot based on Ollama with Knowledge Bases
- CRAG Ollama Chat: Simple Web Search with Corrective RAG
- RAGFlow: Open-source Retrieval-Augmented Generation engine based on deep document understanding
(2). 终端
- oterm
- Ellama Emacs client
- Emacs client
- gen.nvim
- ollama.nvim
- ollero.nvim
- ollama-chat.nvim
- ogpt.nvim
- gptel Emacs client
- Oatmeal
- cmdh
- ooo
- tenere
- llm-ollama for Datasette’s LLM CLI.
- typechat-cli
- ShellOracle
- tlm
(3). 数据库
- MindsDB
- chromem-go with example
(4). 包管理器
二、OpenAI 兼容性
注意: OpenAI 兼容性是实验性的,可能会有重大调整,包括破坏性更改。要完全访问 Ollama API,请查看 Ollama Python库、JavaScript库 和 REST API。
Ollama 提供了与 OpenAI API 部分功能的实验性兼容性,以帮助将现有应用程序连接到 Ollama。
1. 使用方法
(1). OpenAI Python库
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1/',
# 必需但被忽略
api_key='ollama',
)
chat_completion = client.chat.completions.create(
messages=[
{
'role': 'user',
'content': 'Say this is a test',
}
],
model='llama2',
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
(2). OpenAI JavaScript库
import OpenAI from 'openai'
const openai = new OpenAI({
baseURL: 'http://localhost:11434/v1/',
// 必需但被忽略
apiKey: 'ollama',
})
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: 'user', content: 'Say this is a test' }],
model: 'llama2',
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
(3). curl
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama2",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
2. 端点
(1). /v1/chat/completions
支持的功能
- 聊天完成
- 流式传输
- JSON 模式
- 可复现的输出
- 视觉
- 函数调用
- Logprobs
支持的请求字段
-
model
-
messages
- 文本
content
-
content
部分的数组
- 文本
-
frequency_penalty
-
presence_penalty
-
response_format
-
seed
-
stop
-
stream
-
temperature
-
top_p
-
max_tokens
-
logit_bias
-
tools
-
tool_choice
-
user
-
n
注意事项
- 设置
seed
将始终将temperature
设置为0
finish_reason
将始终为stop
- 对于缓存了提示评估的完成,
usage.prompt_tokens
将为 0
3. 模型
在使用模型之前,先在本地拉取它:ollama pull
:
ollama pull llama2
- 1
(1). 默认模型名称
对于依赖于默认 OpenAI 模型名称(如 gpt-3.5-turbo
)的工具,可以使用 ollama cp
将现有模型名称复制到临时名称:
ollama cp llama2 gpt-3.5-turbo
- 1
然后,可以在 model
字段中指定这个新模型名称:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
三、已有模型导入
本教程将指导您如何导入 GGUF、PyTorch 或 Safetensors 模型。
1. 导入(GGUF)
(1). 步骤 1:编写 Modelfile
首先创建一个 Modelfile
文件。这个文件是您模型的蓝图,指定了权重、参数、提示模板等信息。
FROM ./mistral-7b-v0.1.Q4_0.gguf
- 1
(可选)许多聊天模型需要一个提示模板才能正确回答问题。您可以在 Modelfile
中使用 TEMPLATE
指令指定默认的提示模板:
FROM ./mistral-7b-v0.1.Q4_0.gguf
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
- 1
- 2
(2). 步骤 2:创建 Ollama 模型
最后,从您的 Modelfile
创建一个模型:
ollama create example -f Modelfile
- 1
(3). 步骤 3:运行您的模型
接下来,使用 ollama run
测试模型:
ollama run example "你最喜欢的调味品是什么?"
- 1
2. 导入(PyTorch & Safetensors)
从 PyTorch 和 Safetensors 导入比从 GGUF 导入更复杂。正在进行使其更容易的改进工作。
(1). 设置
首先,克隆 ollama/ollama
仓库:
git clone git@github.com:ollama/ollama.git ollama
cd ollama
- 1
- 2
然后获取其 llama.cpp
子模块:
git submodule init
git submodule update llm/llama.cpp
- 1
- 2
接下来,安装 Python 依赖项:
python3 -m venv llm/llama.cpp/.venv
source llm/llama.cpp/.venv/bin/activate
pip install -r llm/llama.cpp/requirements.txt
- 1
- 2
- 3
然后构建 quantize
工具:
make -C llm/llama.cpp quantize
- 1
(2). 克隆 HuggingFace 仓库(可选)
如果模型当前托管在 HuggingFace 仓库中,首先克隆该仓库以下载原始模型。
安装 Git LFS,验证安装后,然后克隆模型仓库:
git lfs install
git clone https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1 model
- 1
- 2
(3). 转换模型
注意:某些模型架构需要使用特定的转换脚本。例如,Qwen 模型需要运行
convert-hf-to-gguf.py
而不是convert.py
python llm/llama.cpp/convert.py ./model --outtype f16 --outfile converted.bin
- 1
(4). 量化模型
llm/llama.cpp/quantize converted.bin quantized.bin q4_0
- 1
(5). 步骤 3:编写 Modelfile
接下来,为您的模型创建一个 Modelfile
:
FROM quantized.bin
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
- 1
- 2
(6). 步骤 4:创建 Ollama 模型
最后,从您的 Modelfile
创建一个模型:
ollama create example -f Modelfile
- 1
(7). 步骤 5:运行您的模型
接下来,使用 ollama run
测试模型:
ollama run example "你最喜欢的调味品是什么?"
- 1
3. 发布您的模型(可选 – 早期阿尔法版)
模型发布处于早期阿尔法版。如果您想发布模型以与他人共享,请按照以下步骤操作:
- 创建 一个账户
- 复制您的 Ollama 公钥:
- macOS:
cat ~/.ollama/id_ed25519.pub
- Windows:
type %USERPROFILE%\.ollama\id_ed25519.pub
- Linux:
cat /usr/share/ollama/.ollama/id_ed25519.pub
- macOS:
- 将您的公钥添加到您的 Ollama 账户
接下来,将您的模型复制到您的用户名空间:
ollama cp example <your username>/example
- 1
然后推送模型:
ollama push <your username>/example
- 1
发布后,您的模型将在 https://ollama.com/<your username>/example
上可用。
4. 量化参考
量化选项如下(从最高到最低的量化级别)。注意:某些架构如 Falcon 不支持 K quants。
q2_K
q3_K
q3_K_S
q3_K_M
q3_K_L
q4_0
(推荐)q4_1
q4_K
q4_K_S
q4_K_M
q5_0
q5_1
q5_K
q5_K_S
q5_K_M
q6_K
q8_0
f16
四、自定义模型文件
注意:
Modelfile
语法正在开发中
模型文件是使用Ollama创建和共享模型的蓝图。
1. 格式
Modelfile
的格式如下:
# 注释
INSTRUCTION 参数
- 1
- 2
- 3
指令 | 描述 |
---|---|
FROM (必需) | 定义要使用的基础模型。 |
PARAMETER | 设置Ollama运行模型的参数。 |
TEMPLATE | 要发送到模型的完整提示模板。 |
SYSTEM | 指定将设置在模板中的系统消息。 |
ADAPTER | 定义要应用于模型的(Q)LoRA适配器。 |
LICENSE | 指定法律许可。 |
MESSAGE | 指定消息历史。 |
2. 示例
(1). 基本Modelfile
创建一个马里奥蓝图的Modelfile
示例:
FROM llama2
# 将温度设置为1 [温度越高,创造性越强,温度越低,连贯性越强]
PARAMETER temperature 1
# 将上下文窗口大小设置为4096,这控制了LLM可以使用多少标记作为上下文来生成下一个标记
PARAMETER num_ctx 4096
# 设置自定义系统消息以指定聊天助手的行为
SYSTEM 你是超级马里奥兄弟中的马里奥,充当助手。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
使用方法:
- 将其保存为文件(例如
Modelfile
) ollama create choose-a-model-name -f <文件位置,例如./Modelfile>
ollama run choose-a-model-name
- 开始使用该模型!
更多示例可在示例目录中找到。
(2). ollama.com/library中的Modelfile
查看ollama.com/library中模型底层的Modelfile
有两种方法:
-
选项1:从模型的标签页面查看详细信息:
-
转到特定模型的标签页(例如https://ollama.com/library/llama2/tags)
-
单击标签(例如https://ollama.com/library/llama2:13b)
-
向下滚动至“Layers”
- 注意:如果
FROM
指令不存在,则表示该模型是从本地文件创建的
- 注意:如果
-
-
选项2:使用
ollama show
打印任何本地模型的Modelfile
,如下所示:> ollama show --modelfile llama2:13b # 由“ollama show”生成的Modelfile # 要基于此构建新的Modelfile,请将FROM行替换为: # FROM llama2:13b FROM /root/.ollama/models/blobs/sha256:123abc TEMPLATE """[INST] {{ if .System }}<<SYS>>{{ .System }}<</SYS>> {{ end }}{{ .Prompt }} [/INST] """ SYSTEM """""" PARAMETER stop [INST] PARAMETER stop [/INST] PARAMETER stop <<SYS>> PARAMETER stop <</SYS>>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
3. 说明
(1). FROM(必需)
FROM
指令定义创建模型时要使用的基础模型。
FROM <模型名称>:<标签>
- 1
从llama2构建
FROM llama2
- 1
可用基础模型列表:
https://github.com/jmorganca/ollama#model-library
从bin
文件构建
FROM ./ollama-model.bin
- 1
应将此bin文件位置指定为绝对路径或相对于Modelfile
位置的路径。
(2). PARAMETER
PARAMETER
指令定义在运行模型时可以设置的参数。
PARAMETER <参数> <参数值>
- 1
有效参数和值
参数 | 描述 | 值类型 | 示例用法 |
---|---|---|---|
mirostat | 启用 Mirostat 采样以控制困惑度。(默认值: 0, 0 = 禁用, 1 = Mirostat, 2 = Mirostat 2.0) | 整数 | mirostat 0 |
mirostat_eta | 影响算法对生成文本反馈的响应速度。较低的学习率会导致调整速度较慢,而较高的学习率会使算法更具响应性。(默认值: 0.1) | 浮点数 | mirostat_eta 0.1 |
mirostat_tau | 控制输出的连贯性和多样性之间的平衡。较低的数值会导致更加聚焦和连贯的文本。(默认值: 5.0) | 浮点数 | mirostat_tau 5.0 |
num_ctx | 设置用于生成下一个 Token 的上下文窗口大小。(默认值: 2048) | 整数 | num_ctx 4096 |
num_gqa | Transformer 层中的 GQA 组数。某些模型需要,例如 llama2:70b 需要设置为 8 | 整数 | num_gqa 1 |
num_gpu | 发送到 GPU 的层数。在 macOS 上,默认值为 1 以启用 Metal 支持,为 0 则禁用。 | 整数 | num_gpu 50 |
num_thread | 设置计算过程中要使用的线程数。默认情况下,Ollama 会检测以获得最佳性能。建议将此值设置为系统实际物理 CPU 核心数(而非逻辑核心数)。 | 整数 | num_thread 8 |
repeat_last_n | 设置模型回顾以避免重复的范围。(默认值: 64, 0 = 禁用, -1 = num_ctx) | 整数 | repeat_last_n 64 |
repeat_penalty | 设置惩罚重复的强度。较高的值(例如 1.5)会更严厉地惩罚重复,而较低的值(例如 0.9)会更宽容。(默认值: 1.1) | 浮点数 | repeat_penalty 1.1 |
temperature | 模型的温度。增加温度会使模型更具创造性。(默认值: 0.8) | 浮点数 | temperature 0.7 |
seed | 设置用于生成的随机数种子。将其设置为特定数字将使模型对相同提示生成相同的文本。(默认值: 0) | 整数 | seed 42 |
stop | 设置要使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在模型文件中指定多个单独的 stop 参数来设置多个停止模式。 | 字符串 | stop “AI assistant:” |
tfs_z | 尾部自由采样用于减少输出中较不可能的 Token 的影响。较高的值(例如 2.0)会更大程度地减少影响,而值为 1.0 则禁用此设置。(默认值: 1) | 浮点数 | tfs_z 1 |
num_predict | 生成文本时要预测的最大 Token 数。 (默认值: 128, -1 = 无限生成, -2 = 填充上下文) | 整数 | num_predict 42 |
top_k | 减少生成无意义文本的概率。较高的值(例如 100)会给出更多样化的答案,而较低的值(例如 10)会更保守。(默认值: 40) | 整数 | top_k 40 |
top_p | 与 top-k 一起使用。较高的值(例如 0.95)会导致更多样化的文本,而较低的值(例如 0.5)会生成更聚焦和保守的文本。(默认值: 0.9) | 浮点数 | top_p 0.9 |
(3). TEMPLATE
该模板将传递到模型中。它可以包括(可选)系统消息、用户消息和模型的响应。注意:语法可能是特定于模型的。模板使用Go 模板语法。
4. 模板变量
在模板中,我们使用以下变量来表示不同部分的内容:
变量 | 描述 |
---|---|
{{ .System }} | 用于指定自定义行为的系统消息。 |
{{ .Prompt }} | 用户提示消息。 |
{{ .Response }} | 模型生成的回复。在生成回复时,此变量后的文本将被省略。 |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
- 1
- 2
- 3
- 4
- 5
- 6
5. SYSTEM
SYSTEM
指令用于指定模板中要使用的系统消息。
SYSTEM """<system message>"""
- 1
6. ADAPTER
ADAPTER
指令用于指定要应用于基础模型的 LoRA 适配器。该指令的值应为绝对路径或相对于 Modelfile 的路径,并且文件必须采用 GGML 文件格式。适配器应该是从基础模型调整过的,否则行为是不确定的。
ADAPTER ./ollama-lora.bin
- 1
7. LICENSE
LICENSE
指令允许您指定在使用此 Modelfile 的模型下共享或分发的法律许可。
LICENSE """
<许可证文本>
"""
- 1
- 2
- 3
8. MESSAGE
MESSAGE
指令允许您为模型指定消息历史记录,以便在响应时使用。使用多个 MESSAGE
命令的迭代来构建对话,这将引导模型以类似的方式回答。
MESSAGE <角色> <消息>
- 1
(1). 有效角色
- system:为模型提供系统消息的替代方式。
- user:用户可能会提出的示例消息。
- assistant:模型应该如何回应的示例消息。
9. 示例对话
MESSAGE user 多伦多在加拿大吗?
MESSAGE assistant 是的
MESSAGE user 萨克拉门托在加拿大吗?
MESSAGE assistant 不是
MESSAGE user 安大略在加拿大吗?
MESSAGE assistant 是的
- 1
- 2
- 3
- 4
- 5
- 6
10. 注意事项
Modelfile
不区分大小写。在示例中,使用大写指令是为了更容易区分它与参数。- 指令可以以任何顺序出现。在示例中,
FROM
指令首先出现是为了使其易于阅读。
通过本教程,您可以更好地了解如何使用模板化模型的完整提示模板。希望这篇博客能帮助您更好地应用模板化模型。
五、在Linux上的安装配置
1. 安装
通过运行以下一行命令来安装Ollama:
curl -fsSL https://ollama.com/install.sh | sh
- 1
2. AMD Radeon GPU支持
虽然AMD已经将amdgpu
驱动程序贡献给了官方Linux内核源代码,但版本较旧,可能不支持所有ROCm功能。我们建议您从https://www.amd.com/en/support/linux-drivers下载并安装最新的驱动程序,以获得对您的Radeon GPU最佳支持。
3. 手动安装
(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
- 2
(2). 将Ollama添加为启动服务(推荐)
为Ollama创建一个用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
- 1
在/etc/systemd/system/
目录下创建一个服务文件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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
然后启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
- 1
- 2
(3). 安装CUDA驱动程序(可选 - 适用于Nvidia GPU)
下载并安装 CUDA。
通过运行以下命令验证驱动程序是否已安装,该命令应打印有关您的GPU的详细信息:
nvidia-smi
- 1
(4). 安装ROCm(可选 - 适用于Radeon GPU)
下载并安装 ROCm。
确保安装ROCm v6。
(5). 启动Ollama
使用systemd
启动Ollama:
sudo systemctl start ollama
- 1
4. 更新
通过再次运行安装脚本来更新Ollama:
curl -fsSL https://ollama.com/install.sh | sh
- 1
或通过下载Ollama二进制文件:
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
- 1
- 2
5. 查看日志
要查看作为启动服务运行的Ollama的日志,请运行:
journalctl -u ollama
- 1
6. 卸载
删除Ollama服务:
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
- 1
- 2
- 3
从您的bin目录(/usr/local/bin
、/usr/bin
或/bin
)中删除Ollama二进制文件:
sudo rm $(which ollama)
- 1
删除已下载的模型以及Ollama服务用户和组:
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
- 1
- 2
- 3
六、故障排除
有时候 Ollama 可能表现不如预期。找出发生了什么的最佳方法之一是查看日志。在 Mac 上通过运行以下命令找到日志:
cat ~/.ollama/logs/server.log
- 1
在带有 systemd 的 Linux 系统上,可以通过以下命令找到日志:
journalctl -u ollama
- 1
当在 容器 中运行 Ollama 时,日志会输出到容器中的 stdout/stderr:
docker logs <container-name>
- 1
(使用 docker ps
查找容器名称)
如果在终端中手动运行 ollama serve
,日志将显示在该终端上。
在 Windows 上运行 Ollama 时,有几个不同的位置。您可以通过按 <cmd>+R
键并输入以下内容在资源管理器窗口中查看它们:
explorer %LOCALAPPDATA%\Ollama
查看日志explorer %LOCALAPPDATA%\Programs\Ollama
浏览二进制文件(安装程序会将其添加到用户 PATH)explorer %HOMEPATH%\.ollama
浏览模型和配置存储位置explorer %TEMP%
临时可执行文件存储在一个或多个ollama*
目录中
要启用额外的调试日志以帮助解决问题,首先从托盘菜单中退出运行的应用程序,然后在 PowerShell 终端中执行以下命令:
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"
- 1
- 2
加入 Discord 获取帮助解释日志。
1. LLM 库
Ollama 包含为不同 GPU 和 CPU 矢量功能编译的多个 LLM 库。Ollama 会根据您系统的功能选择最佳的库。如果这种自动检测出现问题,或者遇到其他问题(例如 GPU 崩溃),您可以通过强制指定特定的 LLM 库来解决。cpu_avx2
将表现最佳,其次是 cpu_avx
,最兼容但速度最慢的是 cpu
。在 MacOS 下的 Rosetta 模拟将与 cpu
库一起使用。
在服务器日志中,您将看到类似以下消息的内容(每个版本可能有所不同):
Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]
- 1
实验性 LLM 库覆盖
您可以将 OLLAMA_LLM_LIBRARY 设置为任何可用的 LLM 库以绕过自动检测,例如,如果您有一个 CUDA 卡,但想要强制使用具有 AVX2 矢量支持的 CPU LLM 库,可以使用以下命令:
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve
- 1
您可以通过以下命令查看 CPU 的功能:
cat /proc/cpuinfo| grep flags | head -1
- 1
2. AMD Radeon GPU 支持
Ollama 利用 AMD ROCm 库,该库不支持所有 AMD GPU。在某些情况下,您可以强制系统尝试使用一个接近的 LLVM 目标。例如,Radeon RX 5400 是 gfx1034
(也称为 10.3.4),但 ROCm 目前不支持此目标。最接近的支持是 gfx1030
。您可以使用环境变量 HSA_OVERRIDE_GFX_VERSION
以 x.y.z
语法。例如,要强制系统在 RX 5400 上运行,您可以将 HSA_OVERRIDE_GFX_VERSION="10.3.0"
设置为服务器的环境变量。如果您有不受支持的 AMD GPU,可以尝试使用下面列出的受支持类型。
目前,已知支持的 GPU 类型如下 LLVM 目标。以下表格显示了一些映射到这些 LLVM 目标的示例 GPU:
LLVM 目标 | 示例 GPU |
---|---|
gfx900 | Radeon RX Vega 56 |
gfx906 | Radeon Instinct MI50 |
gfx908 | Radeon Instinct MI100 |
gfx90a | Radeon Instinct MI210 |
gfx940 | Radeon Instinct MI300 |
gfx941 | |
gfx942 | |
gfx1030 | Radeon PRO V620 |
gfx1100 | Radeon PRO W7900 |
gfx1101 | Radeon PRO W7700 |
gfx1102 | Radeon RX 7600 |
AMD 正在努力增强 ROCm v6,以在将来的发布中扩大对 GPU 家族的支持,这应该会增加对更多 GPU 的支持。
3. 在 Linux 上安装旧版或预发布版本
如果在 Linux 上遇到问题并希望安装旧版本,或者想在正式发布之前尝试预发布版本,您可以告诉安装脚本要安装哪个版本。
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION="0.1.29" sh
- 1
七、FAQ
1. 如何升级 Ollama?
在 macOS 和 Windows 上,Ollama 会自动下载更新。点击任务栏或菜单栏项目,然后点击“重新启动以更新”来应用更新。也可以通过手动下载最新版本来安装更新。
在 Linux 上,重新运行安装脚本:
curl -fsSL https://ollama.com/install.sh | sh
- 1
2. 如何查看日志?
查看有关使用日志的更多信息,请参阅故障排除文档。
3. 如何指定上下文窗口大小?
默认情况下,Ollama 使用 2048 个标记的上下文窗口大小。
在使用 ollama run
时更改这个值,使用 /set parameter
:
/set parameter num_ctx 4096
- 1
在使用 API 时,指定 num_ctx
参数:
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "为什么天空是蓝色的?",
"options": {
"num_ctx": 4096
}
}'
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4. 如何配置 Ollama 服务器?
Ollama 服务器可以通过环境变量进行配置。
(1). 在 Mac 上设置环境变量
如果 Ollama 作为 macOS 应用程序运行,应使用 launchctl
设置环境变量:
-
对于每个环境变量,调用
launchctl setenv
。launchctl setenv OLLAMA_HOST "0.0.0.0"
- 1
-
重新启动 Ollama 应用程序。
(2). 在 Linux 上设置环境变量
如果 Ollama 作为 systemd 服务运行,应使用 systemctl
设置环境变量:
-
通过调用
systemctl edit ollama.service
编辑 systemd 服务。这将打开一个编辑器。 -
对于每个环境变量,在
[Service]
部分下添加一行Environment
:[Service] Environment="OLLAMA_HOST=0.0.0.0"
- 1
- 2
-
保存并退出。
-
重新加载
systemd
并重新启动 Ollama:systemctl daemon-reload systemctl restart ollama
- 1
- 2
(3). 在 Windows 上设置环境变量
在 Windows 上,Ollama 继承您的用户和系统环境变量。
-
首先通过单击任务栏中的 Ollama 退出它
-
从控制面板中编辑系统环境变量
-
为您的用户帐户编辑或创建新变量,如
OLLAMA_HOST
、OLLAMA_MODELS
等。 -
单击 OK/应用以保存
-
从新的终端窗口运行
ollama
5. 如何在我的网络上公开 Ollama?
默认情况下,Ollama 绑定到 127.0.0.1 端口 11434。使用 OLLAMA_HOST
环境变量更改绑定地址。
有关如何在您的平台上设置环境变量,请参考上面的部分[如何配置 Ollama 服务器]。
6. 如何使用代理服务器与 Ollama 一起使用?
Ollama 运行一个 HTTP 服务器,可以使用诸如 Nginx 之类的代理服务器公开。为此,配置代理以转发请求,并可选择设置所需的标头(如果不在网络上公开 Ollama)。例如,使用 Nginx:
server {
listen 80;
server_name example.com; # 替换为您的域名或 IP
location / {
proxy_pass http://localhost:11434;
proxy_set_header Host localhost:11434;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
7. 如何使用 ngrok 与 Ollama?
可以使用各种隧道工具访问 Ollama。例如,使用 Ngrok:
ngrok http 11434 --host-header="localhost:11434"
- 1
8. 如何允许其他网络来源访问 Ollama?
Ollama 默认允许来自 127.0.0.1
和 0.0.0.0
的跨源请求。可以使用 OLLAMA_ORIGINS
配置额外的来源。
有关如何在您的平台上设置环境变量,请参考上面的部分[如何配置 Ollama 服务器]。
9. 模型存储在哪里?
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\<username>\.ollama\models
(1). 如何将它们设置为不同的位置?
如果需要使用不同的目录,将环境变量 OLLAMA_MODELS
设置为所选目录。
有关如何在您的平台上设置环境变量,请参考上面的部分[如何配置 Ollama 服务器]。
10. Ollama 是否会将我的提示和答案发送回 ollama.com?
不会。Ollama 在本地运行,对话数据不会离开您的计算机。
11. 如何在 Visual Studio Code 中使用 Ollama?
已经有大量针对 VSCode 以及其他编辑器的插件可供使用,这些插件利用了 Ollama。请查看主存储库自述文件底部的扩展和插件列表。
12. 如何在代理后面使用 Ollama?
如果配置了 HTTP_PROXY
或 HTTPS_PROXY
,Ollama 与代理服务器兼容。在使用这些变量时,请确保在 ollama serve
可以访问这些值的地方设置它们。在使用 HTTPS_PROXY
时,请确保代理证书已安装为系统证书。有关如何在您的平台上使用环境变量,请参考上面的部分。
(1). 如何在 Docker 中使用代理后面的 Ollama?
可以通过在启动容器时传递 -e HTTPS_PROXY=https://proxy.example.com
来配置 Ollama Docker 容器镜像使用代理。
另外,可以配置 Docker 守护程序使用代理。有关 Docker Desktop 在 macOS、Windows 和 Linux 上的说明,以及 Docker 带 systemd 的守护程序。
在使用 HTTPS 时,请确保代理证书已安装为系统证书。当使用自签名证书时,可能需要一个新的 Docker 镜像。
FROM ollama/ollama
COPY my-ca.pem /usr/local/share/ca-certificates/my-ca.crt
RUN update-ca-certificates
- 1
- 2
- 3
构建并运行此镜像:
docker build -t ollama-with-ca .
docker run -d -e HTTPS_PROXY=https://my.proxy.example.com -p 11434:11434 ollama-with-ca
- 1
- 2
13. 如何在 Docker 中使用 GPU 加速?
可以在 Linux 或 Windows(使用 WSL2)中配置 Ollama Docker 容器以使用 GPU 加速。这需要 nvidia-container-toolkit。有关更多详细信息,请参阅 ollama/ollama。
由于缺乏 GPU 透传和仿真,Docker Desktop 在 macOS 上不支持 GPU 加速。
14. 为什么在 Windows 10 的 WSL2 中网络速度慢?
这可能会影响安装 Ollama,以及下载模型。
打开 控制面板 > 网络和 Internet > 查看网络状态和任务
,然后在左侧面板点击 更改适配器设置
。找到 vEthernel (WSL)
适配器,右键单击并选择 属性
。
点击 配置
,打开 高级
选项卡。搜索每个属性,直到找到 大型发送卸载版本 2(IPv4)
和 大型发送卸载版本 2(IPv6)
。禁用 这两个属性。
15. 如何预加载模型以获得更快的响应时间?
如果使用 API,可以通过向 Ollama 服务器发送空请求来预加载模型。这适用于 /api/generate
和 /api/chat
API 端点。
要使用 generate 端点预加载 mistral 模型,请使用:
curl http://localhost:11434/api/generate -d '{"model": "mistral"}'
- 1
要使用 chat 完成端点,请使用:
curl http://localhost:11434/api/chat -d '{"model": "mistral"}'
- 1
16. 如何保持模型在内存中加载或立即卸载它?
默认情况下,模型在内存中保留 5 分钟,然后被卸载。这允许在向 LLM 发送大量请求时获得更快的响应时间。但是,您可能希望在 5 分钟之前释放内存,或者永久保留模型加载。使用 /api/generate
和 /api/chat
API 端点的 keep_alive
参数来控制模型在内存中保留的时间。
keep_alive
参数可以设置为:
- 一个持续时间字符串(例如 “10m” 或 “24h”)
- 以秒为单位的数字(例如 3600)
- 任何负数,将保持模型在内存中(例如 -1 或 “-1m”)
- ‘0’,将在生成响应后立即卸载模型
例如,要预加载模型并保留在内存中,请使用:
curl http://localhost:11434/api/generate -d '{"model": "llama2", "keep_alive": -1}'
- 1
要卸载模型并释放内存,请使用:
curl http://localhost:11434/api/generate -d '{"model": "llama2", "keep_alive": 0}'
- 1
17. 控制使用哪些 GPU
默认情况下,在 Linux 和 Windows 上,Ollama 将尝试使用 Nvidia GPU 或 Radeon GPU,并将使用找到的所有 GPU。您可以通过将环境变量 CUDA_VISIBLE_DEVICES
设置为 NVIDIA 卡的 GPU ID 的逗号分隔列表,或将 HIP_VISIBLE_DEVICES
设置为 Radeon GPU 的 GPU ID 来限制将要使用的 GPU。您可以使用 GPU 工具(如 nvidia-smi
或 rocminfo
)查看设备列表。您可以将其设置为无效的 GPU ID(例如,“-1”)以绕过 GPU 并回退到 CPU。