大模型-部署工具-Ollama

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 创建模型:使用 Modelfile 创建模型的命令是 ollama create。
ollama create mymodel -f ./Modelfile

# 拉取模型:此命令还可用于更新本地模型。只会拉取差异。
ollama pull llama2

# 启动服务器
./ollama serve

# 运行模型
./ollama run llama3

# 删除模型
ollama rm llama2

# 复制模型
ollama cp llama2 my-llama2

# 多行输入:对于多行输入,可以使用"""
>>> """Hello,
... world!
... """
I’m a basic program that prints the famous "Hello, world!" message to the console.

# 多模态模型
>>> 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.

# 将prompt作为参数传递
$ 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.

# 列出模型的信息
ollama show llama3

# 列出计算机上的型号
ollama list

# 开始Ollama:在不运行桌面应用程序的情况下启动Ollama时使用Ollama服务。
ollama serve

运行模型

模型获取(非必须) pull

完成平台安装后,就是获取模型, Ollama library 提供了一系列可供选择的模型。比如 llama3、qwen2、phi3 等。
Ollama 采取了与 Docker 组织镜像相似的方案,使用模型名加上标签的形式( model:tag )来确定具体的模型版本,不加标签时默认为 latest ,通常对应 7B 参数量 4bit 量化版。而如果要运行 70B 版本,就可以使用 70B 标签:
例如:

1
2
3
4
5
6
7
8
9
#Instruct 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
8
FROM 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
5
ollama 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 部署;
image
终端 TUI 版:oterm 提供了完善的功能和快捷键支持,用 brew 或 pip 安装;
image
Raycast 插件:即 Raycast Ollama

-------------本文结束感谢您的阅读-------------