ollama是一个旨在简化大型语言模型本地部署和运行过程的工具。它提供了一个轻量级、易于扩展的框架,让开发者能够在本地机器上轻松构建和管理LLMs。通过ollama,开发者可以访问和运行一系列预构建的模型,或者导入和定制自己的模型,无需关注复杂的底层实现细节。
官网:Ollama
GitHub地址:GitHub - ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.
安装
平台安装
Ollama 提供了针对多种平台版本(Mac、Windows、Linux)的安装包,用户可以根据自己的操作系统选择对应的安装包(Linux是命令行,其他两个平台是下载包)。
常用命令
1 | 创建模型:使用 Modelfile 创建模型的命令是 ollama create。 |
运行模型
模型获取(非必须) pull
完成平台安装后,就是获取模型, Ollama library 提供了一系列可供选择的模型。比如 llama3、qwen2、phi3 等。
Ollama 采取了与 Docker 组织镜像相似的方案,使用模型名加上标签的形式( model:tag )来确定具体的模型版本,不加标签时默认为 latest ,通常对应 7B 参数量 4bit 量化版。而如果要运行 70B 版本,就可以使用 70B 标签:
例如:1
2
3
4
5
6
7
8
9Instruct is fine-tuned for chat/dialogue use cases.
Example:
ollama pull llama3 # 运行默认 8B 模型
ollama pull llama3:70b # 运行 70B 参数模型
Pre-trained is the base model.
Example:
ollama pull llama3:text
ollama pull llama3:70b-text
在这里列出几个中文支持比较好的模型:
- DeepSeek 系列,深度求索团队推出,包括针对代码训练的 DeepSeek-Coder 和 通用的 DespSeek-LLM;
- Yi 系列,零一万物团队推出,有支持 20 万上下文窗口的版本可选;
- 如果碰巧财力雄厚,不妨试试法国明星初创团队 Mistral 最新推出的首个开源混合专家 MoE 模型 Mixtral-8x7B,需要 48GB 内存以运行;
- 如果不巧硬件紧张,无需气馁,Phi-2 由微软团队针对逻辑和理解精调,2.7B 的尺寸只需 4 GB 内存即可运行,吐字速度飞快,只是不太懂中文。
运行模型 run
下载模型完成后,我们可以使用 run 命令运行模型(如果没有提前下载,那运行run时会开始进行下载),可直接将消息附在命令后,或留空进入对话模式,对话模式内置了几个以斜杠引出的命令:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 单条输入
》(base) ➜ ~ ollama run llama3 "天街小雨润如酥,的下一句"
A classic line from a famous Chinese poem!
The full poem is:
天街小雨润如酥,
春暖花朝瑞。
风前水后山寺静,
月明人影自在。
The next line would be:
春暖花朝瑞
对话模式
》ollama run llama2-chinese # 运行时不提供对话内容就会进入对话模式
(base) ➜ ~ ollama run llama3
>> #Send a message (/? for help)
其实至此,我们已经完成了大模型的本地部署和测试工作。这个运行时在命令行状态的,对于很多非IT背景的人员这并不又要,对此 Ollama 有一系列的周边工具可供使用,包含了网页、桌面、终端等交互界面及诸多插件和拓展。
自定义模型
有时候我们需要运行一些自定义模型,比如我们想要使用自己的模型,或者想要使用其他模型,我们可以使用 create 命令结合 Modelfile 来创建自定义模型。
使用其他来源的模型
其他来源的模型比较容易,我们只需要构建一个 Modelfile 文件,告诉 Ollama 模型所在路径即可。1
2
3
4
5
6
7
8 从 GGUF 导入:Ollama 支持在 Modelfile 中导入 GGUF 模型:
创建一个名为 Modelfile 的文件,其中包含一个 FROM 指令,指向要导入的模型的本地文件路径。FROM ./vicuna-33b.Q4_0.gguf
在 Ollama 中创建模型
ollama create example -f Modelfile
运行模型
ollama run example
调整参数
除了模型来源,有时候,我们可能也需要对模型的参数进行调整,那么相关调整我们也可以通过 Modelfile文件进行个性化的定义。1
2
3
4
5
6
7
8FROM llama2
PARAMETER temperature 1 将温度设置为 1 [较高为更具创造性,较低为更连贯]
set the system message设置系统消息
SYSTEM """
You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
""
FROM llama2
然后就是像运行其他来源的模型一样,创建我们的新模型1
2
3
4
5ollama create mario -f ./Modelfile
ollama run mario
>>> hi
Hello! It's your friend Mario.
ModelFile 类似DockerFile,具体参数配置可以参考官方文档,其中主要的关键字如下:
| Instruction | Description |
|---|---|
| FROM (required) | Defines the base model to use. |
| PARAMETER | Sets the parameters for how Ollama will run the model. |
| TEMPLATE | The full prompt template to be sent to the model. |
| SYSTEM | Specifies the system message that will be set in the template. |
| ADAPTER | Defines the (Q)LoRA adapters to apply to the model. |
| LICENSE | Specifies the legal license. |
| MESSAGE | Specify message history. |
模型套壳
Ollama 有一系列的周边工具可供使用,包含了网页、桌面、终端等交互界面及诸多插件和拓展。
之所以 Ollama 能快速形成如此丰富的生态,是因为它自立项之初就有清晰的定位:让更多人以最简单快速的方式在本地把大模型跑起来。于是,Ollama 不是简单地封装 llama.cpp,而是同时将繁多的参数与对应的模型打包放入;Ollama 因此约等于一个简洁的命令行工具和一个稳定的服务端 API。这为下游应用和拓展提供了极大便利。
就 Ollama GUI 而言,根据不同偏好,有许多选择:
Web 版:Ollama WebUI 具有最接近 ChatGPT 的界面和最丰富的功能特性,需要以 Docker 部署;
终端 TUI 版:oterm 提供了完善的功能和快捷键支持,用 brew 或 pip 安装;
Raycast 插件:即 Raycast Ollama