AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


上百大语言模型快速部署调用工具 Ollama使用指南
发布日期:2024-04-23 06:33:30 浏览次数: 4436 来源:数智笔记


一、Ollama 快速入门

Ollama 是一个用于在本地运行大型语言模型的工具,下面将介绍如何在不同操作系统上安装和使用 Ollama。

官网:https://ollama.com
Github:https://github.com/ollama/ollama

1. 安装

(1). macOS

在 macOS 上安装 Ollama,请点击以下链接进行下载:

下载链接

(2). Windows 预览版

在 Windows 上安装 Ollama,请点击以下链接进行下载:

下载链接

(3). Linux

在 Linux 上,可以通过以下命令进行安装:

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

如果需要手动安装,请参考手动安装说明

(4). 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
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 模型:

  1. 创建一个名为 Modelfile 的文件,使用 FROM 指令指定要导入的模型的本地文件路径。

    FROM ./vicuna-33b.Q4_0.gguf
  2. 创建模型

    ollama create example -f Modelfile
  3. 运行模型

    ollama run example

(2). 从 PyTorch 或 Safetensors 导入

查看导入模型指南获取更多信息。

(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
>>> hi
Hello! It's your friend Mario.

更多示例,请参考examples目录。有关使用 Modelfile 的更多信息,请参考Modelfile文档。

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). 多行输入

对于多行输入,可以使用 """ 包裹文本:

>>> """Hello,
... world!
... "
""
I'm a basic program that prints the famous "Hello, world!" message to the console.

(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.

(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.

(8). 列出计算机上的模型

ollama list

(9). 启动 Ollama

当您想要启动 Ollama 而不运行桌面应用程序时,可以使用 ollama serve

6. 构建

安装 cmakego

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?" }
  ]
}'

查看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). 包管理器

  • Pacman
  • Helm Chart

二、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). 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',
})

(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!"
            }
        ]
    }'

2. 端点

(1). /v1/chat/completions

支持的功能

  • [x] 聊天完成
  • [x] 流式传输
  • [x] JSON 模式
  • [x] 可复现的输出
  • [ ] 视觉
  • [ ] 函数调用
  • [ ] Logprobs

支持的请求字段

  • [x] model
  • [x] messages
    • [x] 文本 content
    • [ ] content 部分的数组
  • [x] frequency_penalty
  • [x] presence_penalty
  • [x] response_format
  • [x] seed
  • [x] stop
  • [x] stream
  • [x] temperature
  • [x] top_p
  • [x] 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). 默认模型名称

对于依赖于默认 OpenAI 模型名称(如 gpt-3.5-turbo)的工具,可以使用 ollama cp 将现有模型名称复制到临时名称:

ollama cp llama2 gpt-3.5-turbo

然后,可以在 model 字段中指定这个新模型名称:

curl http://localhost:11434/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "gpt-3.5-turbo",
        "messages": [
            {
                "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.bin
TEMPLATE "[INST] {{ .Prompt }} [/INST]"

(6). 步骤 4:创建 Ollama 模型

最后,从您的 Modelfile 创建一个模型:

ollama create example -f Modelfile

(7). 步骤 5:运行您的模型

接下来,使用 ollama run 测试模型:

ollama run example "你最喜欢的调味品是什么?"

3. 发布您的模型(可选 – 早期阿尔法版)

模型发布处于早期阿尔法版。如果您想发布模型以与他人共享,请按照以下步骤操作:

  1. 创建 一个账户
  2. 复制您的 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 <your username>/example

    然后推送模型:

    ollama push <your username>/example

    发布后,您的模型将在 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 参数
    指令 描述
    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. 将其保存为文件(例如Modelfile
    2. ollama create choose-a-model-name -f <文件位置,例如./Modelfile>
    3. ollama run choose-a-model-name
    4. 开始使用该模型!

    更多示例可在示例目录中找到。

    (2). ollama.com/library中的Modelfile

    查看ollama.com/library中模型底层的Modelfile有两种方法:

    • 选项1:从模型的标签页面查看详细信息:

      • 注意:如果FROM指令不存在,则表示该模型是从本地文件创建的
    1. 转到特定模型的标签页(例如https://ollama.com/library/llama2/tags)

    2. 单击标签(例如https://ollama.com/library/llama2:13b)

    3. 向下滚动至“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 <模型名称>:<标签>

    从llama2构建

    FROM llama2

    可用基础模型列表:

    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 <container-name>

    (使用 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"

    加入 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]

    实验性 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_VERSIONx.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 设置环境变量:

    1. 对于每个环境变量,调用 launchctl setenv

      launchctl setenv OLLAMA_HOST "0.0.0.0"
    2. 重新启动 Ollama 应用程序。

    (2). 在 Linux 上设置环境变量

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

    1. 通过调用 systemctl edit ollama.service 编辑 systemd 服务。这将打开一个编辑器。

    2. 对于每个环境变量,在 [Service] 部分下添加一行 Environment

      [Service]
      Environment="OLLAMA_HOST=0.0.0.0"
    3. 保存并退出。

    4. 重新加载 systemd 并重新启动 Ollama:

      systemctl daemon-reload
      systemctl restart ollama

    (3). 在 Windows 上设置环境变量

    在 Windows 上,Ollama 继承您的用户和系统环境变量。

    1. 首先通过单击任务栏中的 Ollama 退出它

    2. 从控制面板中编辑系统环境变量

    3. 为您的用户帐户编辑或创建新变量,如 OLLAMA_HOSTOLLAMA_MODELS 等。

    4. 单击 OK/应用以保存

    5. 从新的终端窗口运行 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.10.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_PROXYHTTPS_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 加速。

    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-smirocminfo)查看设备列表。您可以将其设置为无效的 GPU ID(例如,“-1”)以绕过 GPU 并回退到 CPU。



    53AI,企业落地应用大模型首选服务商

    产品:大模型应用平台+智能体定制开发+落地咨询服务

    承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

    联系我们

    售前咨询
    186 6662 7370
    预约演示
    185 8882 0121

    微信扫码

    与创始人交个朋友

    回到顶部

     
    扫码咨询