本地大模型运行框架Ollama
什么是 Ollama ?
Ollama是一个简明易用的本地大模型运行框架。能在本地启动并运行Llama 2、Mistral、Gemma及其他大语言模型。
和老苏之前介绍的 LocalAI 比较类似,但是加载模型更容易,感觉上比较像 docker,也采用了 tags 来区分模型的不同版本,尤其是 CLI 也采用了 pull、rm、run 等等;
因为老苏的小机器不支持
Nvidia GPU,所以下面👇的安装示例仅支持CPU
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 ollama ,选择第一个 ollama/ollama,版本选择 latest。
本文写作时,
latest版本对应为0.1.27;

卷
在 docker 文件夹中,创建一个新文件夹 ollama,并在其中建一个子文件夹 data
| 文件夹 | 装载路径 | 说明 |
|---|---|---|
docker/ollama/data |
/root/.ollama |
存放模型数据 |

端口
本地端口不冲突就行,不确定的话可以用命令查一下
1 | # 查看端口占用 |
| 本地端口 | 容器端口 |
|---|---|
11434 |
11434 |

容器名称
因为后面有进入容器的操作,所以这里规范下命名,就叫 ollama 吧

命令行安装
如果你熟悉命令行,可能用 docker cli 更快捷
1 | # 新建文件夹 ollama 和 子目录 |
也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件
1 | version: '3' |
然后执行下面的命令
1 | # 新建文件夹 ollama 和 子目录 |
运行
在浏览器中输入 http://群晖IP:11434 ,如果看到 Ollama is running,表示服务启动正常

下载模型
官方提供了一个模型库,地址:https://ollama.com/library
你可以根据需要进行搜索,例如搜索 llama2

选中 llama2 ,你会看到关于这个模型的简介

进入 tags 查看需要的版本

关于不同参数模型文件所需要的内存,之前提过,这里简单再说一下
7b:至少需要8GB内存;13b:至少需要16GB内存;33b:至少需要32GB内存;
老苏接下来尝试了
llama2:7b和llama2-chinese:7b,从介绍看,后者采用了中文指令集来进行微调,使其具备较强的中文对话能力。目前这个中文微调参数模型总共发布了7B,13B两种参数大小。
模型下载需进入容器内,不熟悉命令行的,可以进入 终端机 操作

执行下面的命令
1 | # 下载模型 |

老苏个人更喜欢用 SSH 客户端的命令行,多一步进入容器的命令,下载是一样的
1 | # 进入容器 |
开始下载

下载完成

开始提问
接下里就可以提问了,比如: 为什么天空是蓝色的
命令行
假设已经进入容器或者尚未退出容器,可以直接运行下面的命令
1 | # 运行模型 |
因网络中断,答案并没有生成完全,就这几个字已经花了近
2小时

curl
用 SSH 客户端登录到群晖后,执行下面的命令
1 | curl -X POST http://192.168.0.197:11434/api/generate -d '{ |
其中:
IP需要改为你自己的主机IP;model后面是我们要使用的模型文件;prompt后面就是我们提的问题;

当然你还可以用 API 工具,不过可能还是 Web UI 的界面用起来更好,暂时找到了 Open WebUI ,有时间再找找

小结
跑大模型,需要的硬件资源是越高越好的。老苏的小机器既不支持 GPU,内存也仅仅够了最低要求的 8GB,所以每个问题回答的时间,都慢到让你怀疑人生。

但是,这并不能阻止我们追求知识和进行探索的热情。
参考文档
ollama/ollama: Get up and running with Llama 2, Mistral, Gemma, and other large language models.
地址:https://github.com/ollama/ollamaOllama
地址:https://ollama.com/ollama/ollama - Docker Image | Docker Hub
地址:https://hub.docker.com/r/ollama/ollamalibrary
地址:https://ollama.com/libraryopen-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI)
地址:https://github.com/open-webui/open-webui