本地大模型运行框架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