一、Ollama 快速入门
Ollama 是一个用于在本地运行大型语言模型的工具,下面将介绍如何在不同操作系统上安装和使用 Ollama。
Github:https://github.com/ollama/ollama
公众号文章:https://mp.weixin.qq.com/s/S5Pxb9fe055F6Kg8aMQUDw

1. 安装
(1). macOS和Windows 预览版
安装 Ollama,请点击以下链接进行下载:
(2). Linux
在 Linux 上,可以通过以下命令进行安装:
curl -fsSL https://ollama.com/install.sh | sh
如果需要手动安装,请参考手动安装说明
(3). Docker
Ollama 官方提供了 Docker 镜像,可以在 Docker Hub 上获取:
Ollama Docker 镜像 ollama/ollama
2. 快速开始
要运行并与 Llama 2 进行交流,可以使用以下命令:
ollama run llama2
3. 模型库
Ollama 支持一系列模型,可以在 ollama.com/library 上找到。以下是一些示例模型及其下载方式:
模型 | 参数数量 | 大小 | 下载方式 |
---|---|---|---|
Llama 2 | 7B | 3.8GB | ollama run llama2 |
Code Llama | 7B | 3.8GB | ollama run codellama |
4. 自定义模型
(1). 从 GGUF 导入
Ollama 支持在 Modelfile 中导入 GGUF 模型:
创建一个名为 Modelfile 的文件,使用 FROM 指令指定要导入的模型的本地文件路径。
FROM ./vicuna-33b.Q4_0.gguf创建模型
ollama create example -f Modelfile
运行模型
ollama run example
(2). 从 PyTorch 或 Safetensors 导入
如果要导入的模型是以下架构之一,则可以通过 Modelfile 将其直接导入到 Ollama 中:LlamaForCausalLMMistralForCausalLMGemmaForCausalLM
FROM /path/to/safetensors/directory
(3). 自定义提示
可以使用提示来自定义 Ollama 模型。例如,要自定义 llama2 模型:
ollama pull llama2
创建一个 Modelfile:
FROM llama2
设置温度为 1 [值越高越有创造性,值越低越连贯]
PARAMETER temperature 1
设置系统消息:
SYSTEM """You are Mario from Super Mario Bros. Answer as Mario, the assistant, only."""
接下来,创建并运行模型:
ollama create mario -f ./Modelfile
ollama run mario
5. CLI 参考
(1). 创建模型
使用 ollama create 命令从 Modelfile 创建模型。
ollama create mymodel -f ./Modelfile
(2). 拉取模型
ollama pull llama2
此命令也可用于更新本地模型。只会拉取差异部分。
(3). 删除模型
ollama rm llama2
(4). 复制模型
ollama cp llama2 my-llama2
(5). 多行输入
对于多行输入,可以使用 """ 包裹文本
(6). 多模态模型
What's in this image? /Users/jmorgan/Desktop/smile.pngThe image features a yellow smiley face, which is likely the central focus of the picture.
(7). 将提示作为参数传入
ollama run llama2 "Summarize this file: $(cat README.md)"
(8). 列出计算机上的模型
ollama list
(9). 启动 Ollama
当您想要启动 Ollama 而不运行桌面应用程序时,可以使用 ollama serve
6. 构建
安装 cmake 和 go:
brew install cmake go
然后生成依赖项:
go generate ./...
然后构建二进制文件:
go build .
更详细的说明可以在开发者指南中找到。
(1). 运行本地构建
接下来,启动服务器:
./ollama serve
最后,在另一个 shell 中,运行一个模型:
./ollama run llama2
7. REST API
Ollama 提供了用于运行和管理模型的 REST API。
(1). 生成响应
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt":"Why is the sky blue?"
}'
(2). 与模型交流
curl http://localhost:11434/api/chat -d '{
"model": "mistral",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'
二、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',
)
(2). 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!"
}
]
}'
三、已有模型导入
本教程将指导您如何导入 GGUF、PyTorch 或 Safetensors 模型。
1. 导入(GGUF)
(1). 步骤 1:编写 Modelfile
首先创建一个 Modelfile 文件。这个文件是您模型的蓝图,指定了权重、参数、提示模板等信息。
FROM ./mistral-7b-v0.1.Q4_0.gguf
(可选)许多聊天模型需要一个提示模板才能正确回答问题。您可以在 Modelfile 中使用 TEMPLATE 指令指定默认的提示模板:
FROM ./mistral-7b-v0.1.Q4_0.gguf
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
(2). 步骤 2:创建 Ollama 模型
最后,从您的 Modelfile 创建一个模型:
ollama create example -f Modelfile
(3). 步骤 3:运行您的模型
接下来,使用 ollama run 测试模型:
ollama run example "你最喜欢的调味品是什么?"
2. 导入(PyTorch & Safetensors)
从 PyTorch 和 Safetensors 导入比从 GGUF 导入更复杂。正在进行使其更容易的改进工作。
(1). 设置
首先,克隆 ollama/ollama 仓库:
git clone git@github.com:ollama/ollama.git ollama
cd ollama
然后获取其 llama.cpp 子模块:
git submodule init
git submodule update llm/llama.cpp
接下来,安装 Python 依赖项:
python3 -m venv llm/llama.cpp/.venv
source llm/llama.cpp/.venv/bin/activate
pip install -r llm/llama.cpp/requirements.txt
然后构建 quantize 工具:
make -C llm/llama.cpp quantize
(2). 克隆 HuggingFace 仓库(可选)
如果模型当前托管在 HuggingFace 仓库中,首先克隆该仓库以下载原始模型。安装 Git LFS,验证安装后,然后克隆模型仓库:
git lfs install
git clone https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1 model
(3). 转换模型
注意:某些模型架构需要使用特定的转换脚本。例如,Qwen 模型需要运行 convert-hf-to-gguf.py 而不是 convert.py
python llm/llama.cpp/convert.py ./model --outtype f16 --outfile converted.bin
(4). 量化模型
llm/llama.cpp/quantize converted.bin quantized.bin q4_0
(5). 步骤 3:编写 Modelfile
接下来,为您的模型创建一个 Modelfile:
FROM quantized.binTEMPLATE "[INST] {{ .Prompt }} [/INST]"
(6). 步骤 4:创建 Ollama 模型
最后,从您的 Modelfile 创建一个模型:
ollama create example -f Modelfile
(7). 步骤 5:运行您的模型
接下来,使用 ollama run 测试模型:
ollama run example "你最喜欢的调味品是什么?"
3. 发布您的模型(可选 – 早期阿尔法版)
模型发布处于早期阿尔法版。如果您想发布模型以与他人共享,请按照以下步骤操作:
创建 一个账户, 复制您的 Ollama 公钥:
macOS: cat ~/.ollama/id_ed25519.pub
Windows: type %USERPROFILE%\.ollama\id_ed25519.pub
Linux: cat /usr/share/ollama/.ollama/id_ed25519.pub
将您的公钥添加到您的 Ollama 账户接下来,将您的模型复制到您的用户名空间:
ollama cp example
然后推送模型:
ollama push
发布后,您的模型将在 https://ollama.com/用户名/example 上可用。
4. 量化参考
量化选项如下(从最高到最低的量化级别)。注意:某些架构如 Falcon 不支持 K quants。
q2_Kq3_Kq3_K_Sq3_K_Mq3_K_Lq4_0(推荐)q4_1q4_Kq4_K_Sq4_K_Mq5_0q5_1q5_Kq5_K_Sq5_K_Mq6_Kq8_0f16
四、自定义模型文件
模型文件是使用Ollama创建和共享模型的蓝图。
1. 格式
Modelfile的格式如下:
指令 | 描述 |
---|---|
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 你是超级马里奥兄弟中的马里奥,充当助手。
使用方法:
将其保存为文件(例如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:从模型的标签页面查看详细信息:
注意:如果FROM指令不存在,则表示该模型是从本地文件创建的转到特定模型的标签页(例如 https://ollama.com/library/llama2/tags )
单击标签(例如 https://ollama.com/library/llama2:13b )
向下滚动至“Layers”
选项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>>
3. 说明
(1). FROM(必需)
FROM指令定义创建模型时要使用的基础模型。
FROM <模型名称>:<标签>
可用基础模型列表:https://github.com/jmorganca/ollama#model-library
从bin文件构建
FROM ./ollama-model.bin
应将此bin文件位置指定为绝对路径或相对于Modelfile位置的路径。
(2). PARAMETER
PARAMETER指令定义在运行模型时可以设置的参数。
PARAMETER <参数> <参数值>
有效参数和值
参数 | 描述 | 值类型 | 示例用法 |
---|---|---|---|
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
"""
5. SYSTEM
SYSTEM 指令用于指定模板中要使用的系统消息。
SYSTEM """<system message>"""
6. ADAPTER
ADAPTER 指令用于指定要应用于基础模型的 LoRA 适配器。该指令的值应为绝对路径或相对于 Modelfile 的路径,并且文件必须采用 GGML 文件格式。适配器应该是从基础模型调整过的,否则行为是不确定的。
ADAPTER ./ollama-lora.bin
7. LICENSE
LICENSE 指令允许您指定在使用此 Modelfile 的模型下共享或分发的法律许可。
LICENSE """
<许可证文本>
"""
8. MESSAGE
MESSAGE 指令允许您为模型指定消息历史记录,以便在响应时使用。使用多个 MESSAGE 命令的迭代来构建对话,这将引导模型以类似的方式回答。
MESSAGE <角色> <消息>
(1). 有效角色
system:为模型提供系统消息的替代方式。user:用户可能会提出的示例消息。assistant:模型应该如何回应的示例消息。
9. 示例对话
MESSAGE user 多伦多在加拿大吗?
MESSAGE assistant 是的
MESSAGE user 萨克拉门托在加拿大吗?
MESSAGE assistant 不是
MESSAGE user 安大略在加拿大吗?
MESSAGE assistant 是的
10. 注意事项
Modelfile 不区分大小写。 在示例中,使用大写指令是为了更容易区分它与参数。指令可以以任何顺序出现。在示例中,FROM 指令首先出现是为了使其易于阅读。
通过本教程,您可以更好地了解如何使用模板化模型的完整提示模板。
五、在Linux上的安装配置
1. 安装
通过运行以下一行命令来安装Ollama:
curl -fsSL https://ollama.com/install.sh | sh
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
(2). 将Ollama添加为启动服务(推荐)
为Ollama创建一个用户:
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
在/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
然后启动服务:
sudo systemctl daemon-reload
sudo systemctl enable ollama
(3). 安装CUDA驱动程序(可选 - 适用于Nvidia GPU)
下载并安装 CUDA。
通过运行以下命令验证驱动程序是否已安装,该命令应打印有关您的GPU的详细信息:
nvidia-smi
(4). 安装ROCm(可选 - 适用于Radeon GPU)
下载并安装 ROCm。确保安装ROCm v6。
(5). 启动Ollama
使用systemd启动Ollama:
sudo systemctl start ollama
4. 更新
通过再次运行安装脚本来更新Ollama:
curl -fsSL https://ollama.com/install.sh | sh或通过下载Ollama二进制文件:
sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
5. 查看日志
要查看作为启动服务运行的Ollama的日志,请运行:
journalctl -u ollama
6. 卸载
删除Ollama服务:
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
从您的bin目录(/usr/local/bin、/usr/bin或/bin)中删除Ollama二进制文件:
sudo rm $(which ollama)
删除已下载的模型以及Ollama服务用户和组:
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
六、故障排除
有时候 Ollama 可能表现不如预期。找出发生了什么的最佳方法之一是查看日志。在 Mac 上通过运行以下命令找到日志:
cat ~/.ollama/logs/server.log
在带有 systemd 的 Linux 系统上,可以通过以下命令找到日志:
journalctl -u ollama
当在 容器 中运行 Ollama 时,日志会输出到容器中的 stdout/stderr:
docker logs
如果在终端中手动运行 ollama serve,日志将显示在该终端上。
在 Windows 上运行 Ollama 时,有几个不同的位置。您可以通过按
explorer %LOCALAPPDATA%\Ollama 查看日志
explorer %LOCALAPPDATA%\Programs\Ollama 浏览二进制文件(安装程序会将其添加到用户 PATH)
explorer %HOMEPATH%\.ollama 浏览模型和配置存储位置
explorer %TEMP% 临时可执行文件存储在一个或多个 ollama* 目录中
要启用额外的调试日志以帮助解决问题,首先从托盘菜单中退出运行的应用程序,然后在 PowerShell 终端中执行以下命令:
$env:OLLAMA_DEBUG="1"
& "ollama app.exe"
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]
实验性 LLM 库覆盖
您可以将 OLLAMA_LLM_LIBRARY 设置为任何可用的 LLM 库以绕过自动检测,例如,如果您有一个 CUDA 卡,但想要强制使用具有 AVX2 矢量支持的 CPU LLM 库,可以使用以下命令:
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve
您可以通过以下命令查看 CPU 的功能:
cat /proc/cpuinfo| grep flags | head -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 的支持。
在 Discord 上联系或提交 问题 获取额外帮助。
3. 在 Linux 上安装旧版或预发布版本
如果在 Linux 上遇到问题并希望安装旧版本,或者想在正式发布之前尝试预发布版本,您可以告诉安装脚本要安装哪个版本。
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION="0.1.29" sh
七、FAQ
1. 如何升级 Ollama?
在 macOS 和 Windows 上,Ollama 会自动下载更新。点击任务栏或菜单栏项目,然后点击“重新启动以更新”来应用更新。也可以通过手动下载最新版本来安装更新。
在 Linux 上,重新运行安装脚本:
curl -fsSL https://ollama.com/install.sh | sh
2. 如何查看日志?
查看有关使用日志的更多信息,请参阅故障排除文档。
3. 如何指定上下文窗口大小?
默认情况下,Ollama 使用 2048 个标记的上下文窗口大小。
在使用 ollama run 时更改这个值,使用 /set parameter:
/set parameter num_ctx 4096在使用 API 时,指定 num_ctx 参数:
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "为什么天空是蓝色的?",
"options": {
"num_ctx": 4096
}
}'
4. 如何配置 Ollama 服务器?
Ollama 服务器可以通过环境变量进行配置。
(1). 在 Mac 上设置环境变量如果 Ollama 作为 macOS 应用程序运行,应使用 launchctl 设置环境变量:
对于每个环境变量,调用 launchctl setenv。
launchctl setenv OLLAMA_HOST "0.0.0.0"重新启动 Ollama 应用程序。
(2). 在 Linux 上设置环境变量
如果 Ollama 作为 systemd 服务运行,应使用 systemctl 设置环境变量:
通过调用 systemctl edit ollama.service 编辑 systemd 服务。这将打开一个编辑器。
对于每个环境变量,在 [Service] 部分下添加一行 Environment:
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
保存并退出。
重新加载 systemd 并重新启动 Ollama:
systemctl daemon-reload
systemctl restart ollama
(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;
}
}
7. 如何使用 ngrok 与 Ollama?
可以使用各种隧道工具访问 Ollama。例如,使用 Ngrok:
ngrok http 11434 --host-header="localhost:11434"
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
构建并运行此镜像:
docker build -t ollama-with-ca .
docker run -d -e HTTPS_PROXY=https://my.proxy.example.com -p 11434:11434 ollama-with-ca
13. 如何在 Docker 中使用 GPU 加速?
可以在 Linux 或 Windows(使用 WSL2)中配置 Ollama Docker 容器以使用 GPU 加速。这需要 nvidia-container-toolkit。有关更多详细信息,请参阅 ollama/ollama。
由于缺乏 GPU 透传和仿真,Docker Desktop 在 macOS 上不支持 GPU 加速。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# cpu
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
# 运行deepseek-r1模型示例
docker exec -it ollama ollama run deepseek-r1
# 设置界面,用浏览器打开http://localhost:3000
docker run -p 3000:3000 -e DEFAULT_MODEL=deepseek-r1 -e OLLAMA_HOST=http://IP地址:11434 ghcr.io/ivanfioravanti/chatbot-ollama:main
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"}'
要使用 chat 完成端点,请使用:
curl http://localhost:11434/api/chat -d '{"model": "mistral"}'
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}'
要卸载模型并释放内存,请使用:
curl http://localhost:11434/api/generate -d '{"model": "llama2", "keep_alive": 0}'
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。