0%

拥抱本地大模型:Ollama 简明易用指南


引言

在过去的几个季度里,大语言模型(LLM)的平民化运动一直在快速发展,从最初的 Meta 发布 Llama 2 到如今,开源社区以不可阻挡之势适配、进化、落地。LLM已经从昂贵的GPU运行转变为可以在大多数消费级计算机上运行推理的应用,通称为本地大模型。

然而,本地大模型的推理需要相当大的显存,对于16位浮点精度(FP16)的模型,显存需求约为模型参数量的两倍。这使得运行大模型成为对普通家用计算机硬件规格的挑战。为了解决这个问题,模型量化技术应运而生,将权重参数的精度压缩为4位整数精度,大幅减小了显存需求。

在这一背景下,llama.cpp项目通过C/C++重写了推理代码,避免了PyTorch引入的复杂依赖,并提供了更广泛的硬件支持,包括纯CPU推理、Apple Silicon等。然而,llama.cpp的使用仍然对用户有一定的门槛,需要获取模型权重、克隆项目代码、执行模型量化、设置环境变量等。

直到Ollama的出现,一个简明易用的本地大模型运行框架,为用户提供了更便捷的方式在个人电脑上运行大模型。

快速上手

Ollama的安装非常简单,macOS用户只需在官网下载安装包并运行,而Windows用户则可以通过WSL 2以Linux方式用命令进行安装。同时,熟悉Docker的用户也可以直接使用其官方镜像。

1
2
% curl https://ollama.ai/install.sh | sh

安装完成后,通过运行 ollama –version 命令检查版本,确认安装成功后即可通过 ollama pull 命令从在线模型库下载模型。例如,下载中文微调过的Llama2-Chinese 7B模型的4-bit量化版本:

1
% ollama pull llama2-chinese

下载完成后,使用 ollama run 命令即可运行模型并进行推理,支持单条输入或对话模式。

1
2
3
# 单条输入
% ollama run llama2-chinese "天空为什么是蓝色的?"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 对话模式
% ollama run llama2-chinese
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/bye Exit
/?, /help Help for a command

Use """ to begin a multi-line message.

>>> 天空为什么是蓝色的?

这个问题是一个常见的争议。有一些科学家认为天空的蓝色可以被解释为雾和云层中的微小碎片反射出来的光色,而其他人则认为这是由于地球自身温度的影响。目前还没这个问题是一个常见的争议。有一些科学家认为天空的蓝色可以被解释为雾和云层中的微小碎片反射出来的光色,而其他人则认为这是由于地球自身温度的影响。目前还没有一个公认的解释。

套壳玩法

尽管Ollama为用户带来了便利,但命令行形式仍然对一些用户来说不够友好。为此,Ollama提供了一系列周边工具,包括Web界面、桌面应用、终端工具等。其中,Ollama GUI的选择多样,包括Web版本、终端TUI版本(oterm)以及Raycast插件等,以满足用户不同的使用偏好。
传送门

进阶玩法

更换模型

Ollama支持用户自定义系统提示词和调整推理温度等参数。用户可以根据自己的需求选择不同版本的模型,如13B版本,只需在命令中添加对应标签:

1
2
3
4
5
6
7
8
9
10
11
% ollama run llama2-chinese:13b "天空为什么是蓝色的?"

天空是由大气层和太阳光的散射而成的蓝色。

在日出之前,我们看到的天空是紫色或彩虹色,这是因为太阳光从海平面反射回来时,会被大气中的二氧化碳和水分子散射成蓝色、紫色或彩虹色。

而在日出之后,天空变成了灰色,这是由于太阳光从大气中被阻挡,并且不再有足够的反射来给天空增加蓝色。

当我们看到天空时,它的颜色是由于太阳光与大气中的物质相互作用而形成的。这些物质包括水、二氧化碳和其他气体,以及微小的冰片和沙塵。

当我们看到天空变成了晚上时,天空会逐渐变得更加深蓝,这是由于太阳光在大气中传播,同时也因为大气层的结构。

图片支持

除了纯语言大模型,Ollama还从0.1.15版本开始提供了对视觉模型的支持。用户只需在提示中添加本地图片路径即可进行图像文本推理。

1
2
3
4
5
% ollama run llava
>>> What does the text in this image say? /Users/mchiang/Downloads/image.png
Added image '/Users/mchiang/Downloads/image.png'

The text in this image says "The Ollamas."

自定义系统提示词

Ollama允许用户自定义系统提示词,提高模型的个性化。用户可以通过前端工具或直接调用API传入系统提示词选项进行配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl http://localhost:11434/api/chat -d '{
"model": "llama2-chinese:13b",
"messages": [
{
"role": "system",
"content": "以海盗的口吻简单作答。"
},
{
"role": "user",
"content": "天空为什么是蓝色的?"
}
],
"stream": false
}'

更多选项

Ollama的ModelFile提供了更多自定义的空间,包括系统提示词、对话模板、模型推理温度、上下文窗口长度等参数均可自行设置,适合进阶使用者。

在创建前,通过 show --modelfile 命令可以查看现有模型的 ModelFile 内容,作为参考:

1
2
3
4
5
6
7
8
9
10
11
12
% ollama show --modelfile llama2-chinese:13b
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this one, replace the FROM line with:
# FROM llama2-chinese:13b

FROM ~/.ollama/models/blobs/sha256:8359bebea988186aa6a947d55d67941fede5044d02e0ab2078f5cc0dcf357831
TEMPLATE """{{ .System }}
Name: {{ .Prompt }}
Assistant:
"""
PARAMETER stop "Name:"
PARAMETER stop "Assistant:"

以自定义系统提示词并修改推理温度参数为例,应构建如下格式的 ModelFile:

1
2
3
4
FROM llama2-chinese:13b

SYSTEM "以海盗的口吻作答。"
PARAMETER temperature 0.1

然后使用 create 命令进行创建,新的模型会沿用原有模型的权重文件和未作调整的选项参数:

1
ollama create llama2-chinese-pirate -f ~/path/to/ModelFile

从而得到了属于自己的本地模型。

结语

Ollama的出现使得本地大模型的运行变得更加简单快捷。尽管相较于普通应用软件,Ollama的使用体验可能仍有提升空间,但与数月前相比,其进步巨大。称Ollama为AI技术平民化的贡献并不为过,它为更多人以最简单快速的方式在本地运行大模型提供了可能。