Ollama - 本地 LLMs 推理框架

Ollama 基础

Ollama 是一个支持在本地下载、管理运行大语言模型的工具

  • 支持多平台安装,包括压缩包、EXE 文件、Linux 脚本、Docker 镜像等
  • 能够管理并下载主流的 LLMs 文件,也支持第三方的模型导入(GGUF 格式)
  • 启动模型后,支持在命令行界面交互、也提供了REST API接口用于第三方服务

项目地址 105k ⭐

支持的 LLMs 模型列表

Ollama 基本操作:

ollama pull llama3.3 # 下拉模型
ollama show llama3.2 # 展示模型详情

ollama -v # 查看Ollama的版本
ollama list # 展示模型列表


ollama run llama3.3 # 运行模型
ollama ps # 监测正在运行的模型
ollama rm llama3.2 # 删除模型

由于使用界面简陋,所以 Ollama 一般会搭配其他 UI 软件使用

个人推荐的两个 UI 软件:网页端 WebUI 和桌面端 Chatbox

常用环境变量

环境变量 说明 默认值
OLLAMA_MODELS 模型文件存放目录 当前用户目录
OLLAMA_HOST 服务监听网址 127.0.0.1
OLLAMA_PORT 服务监听端口 11434
OLLAMA_KEEP_ALIVE 模型载入内存后的存活时间 5m (即 5 分钟)
OLLAMA_NUM_PARALLEL 请求处理并发数量 1
OLLAMA_MAX_QUEUE 请求队列长度 512
OLLAMA_DEBUG 是否输出 Debug 日志
OLLAMA_MAX_LOADED_MODELS 最多同时加载到内存中模型的数量 1
CUDA_VISIBLE_DEVICES 限制所使用的 GPU 使用所有可见的GPU
  • OLLAMA_HOST 设为0.0.0.0,可以允许局域网中的其他电脑访问
  • OLLAMA_KEEP_ALIVE 默认单位是秒,数字后用 m 表示分钟,h 表示小时

Ollama 的 API 调用

# 1. 文本生成模式(generate)的API调用 - 流式返回
curl http://localhost:11434/api/generate -d '{
  "model": "gemma:2b",
  "prompt":"介绍一下React,20字以内"
}'


curl http://api.chatanywhere.tech/v1/chat/completions -d '{
  "model": "gpt4",
  "prompt":"介绍一下React,20字以内"
}'

# 2. 文本生成模式(generate)的API调用 - 非流式返回
curl http://localhost:11434/api/generate -d '{
  "model": "gemma:2b", 
  "prompt":"介绍一下React,20字以内",
  "stream": false 
}'

# 3. 对话聊天模式(generate)的API调用 - 流式返回
curl http://localhost:11434/api/chat -d '{
  "model": "gemma:2b",
  "prompt":"介绍一下React,20字以内"
}'

generate 模式是一次性生成的数据;chat 模式可以附加历史记录,多轮对话

导入第三方模型文件

qwen1.5 0.5B 模型为例,进行演示:

  1. 下载模型
wget https://huggingface.co/Qwen/Qwen1.5-0.5B-Chat-GGUF/resolve/main/qwen1_5-0_5b-chat-q4_0.gguf

目前 Ollama 仅支持 GGUF 格式的模型导入,其他格式的文件需要转换工具

  1. 准备 modelfile 文件
FROM ./qwen1_5-0_5b-chat-q4_0.gguf

# set the PARAMETER 
PARAMETER temperature 0.7 #  [higher is more creative, lower is more coherent]
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20

TEMPLATE """{{ if and .First .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}<|im_start|>user
{{ .Prompt }}<|im_end|>
<|im_start|>assistant
{{ .Response }}"""

# set the system message
SYSTEM """
You are a helpful assistant.
"""

Modelfile 是自定义模型的必要文件,包含模型推理相关的设置

  1. 创建第三方模型:ollama create qwen0_5b -f Modelfile

修改 temperature 等模型参数后,需要重新 create 模型

Ollama 常见 QA

官方 FQA

  1. 模型下载后的存放位置在哪?
macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models #作为系统服务启动时
Linux: /home/<username>/.ollama/models #当前用户启动时
Windows: C:\Users\<username>\.ollama\models
  1. 如何修改模型的默认存储路径?
  • 一般通过配置环境变量 OLLAMA_MODELS 来修改模型
  • 需注意新设置的路径为 Ollama 用户设置读写权限
  1. 当模型文件无法下载时,如何配置代理?
  • 配置环境变量 HTTP_PROXYHTTPS_PROXY
  1. Ollama 使用一段时间后,为什么会自动停止?
  • 查看 ollama 的日志记录,一般是由于资源(如GPU显存)不足导致的
  • 尝试较小的模型,比如qwen 0.5B,然后观察是否出现同样的问题

往年同期文章