简介
什么是 ollama
官网:https://ollama.com/
看官网介绍非常的简洁:启动并运行大语言模型
因此 ollama 的定位就是:简化大型语言模型(LLMs)的本地部署和使用。如果没有 ollama,我们想在本地部署一个大模型,还是会比较费劲的,从 Deepseek 检索到需要这么多步骤:
1. 选择模型:首先确定你想运行的模型,如 LLaMA、GPT 等,并获取其预训练权重或模型文件。
2. 环境配置:安装必要的软件和库,如 Python、PyTorch 或 TensorFlow,并确保你的硬件(如 GPU)支持模型运行。
3. 模型加载:编写代码加载模型权重,并初始化模型架构。这一步可能需要根据模型的具体实现进行调整。
4. 数据处理:准备输入数据,并进行必要的预处理(如分词、编码等),以便模型能够理解和处理。
5. 运行推理:将处理后的数据输入模型,执行推理任务(如文本生成、分类等),并获取输出结果。
6. 优化与调试:根据运行结果,可能需要调整模型参数、优化代码或处理硬件瓶颈,以确保模型高效运行。
7. 部署:如果需要长期使用,可以考虑将模型部署到服务器或云平台上,以便随时访问和调用。
可以看到,没有算法基础的开发者,将会很难去本地部署。
ollama可以做什么
最常用的一个作用:在自己电脑上部署大语言模型,比如 Deepseek、通义千问、Gemma 等各种开源的大语言模型。
重点:受限于我们家用电脑的性能,在本地部署大模型这件事情,更多的目标在于体验、探索和研究,而很难去真正的代替其他比如官方的服务来日常使用。因为同一个大模型,也会区分为不同的参数版本,参数越高,越智能,而官网的或者说满血
的指的都是参数最高的那个版本,并且在网上进行对比的时候,也都是拿着最高参数的版本来评比,然而,高参数版本几乎都需要很高的算力,简单说就是对显卡的要求非常高,不是我们普通家用电脑能跑起来的。
所以,大家不要期望着自己在自己电脑上部署了一个之后,就可以免费平替 ChatGPT 或者 Deepseek 了。并且现在如果是日常查询使用、有很多免费的满血
大模型,效果肯定是比自己的要好。
ollama部署
ollama 可以帮助我们快速部署大模型,但是它是一个后端服务,也就是说部署成功之后,我们可以在控制台里面有它进行交互。这样的体验还是很差劲的,因此我们可以同时部署一个对应的 web-ui 来进行可视化使用,就跟 Deepseek、ChatGPT 官网那样的聊天页面。
而这个 web-ui 就可以使用 open-webui(https://github.com/open-webui/open-webui)
为什么用这个呢,因为这个开源项目中直接还提供了包含 ollama 的 docker compose 部署,并且这个项目之前就叫做:ollama-webui(估计作者最初就是希望给 ollama 做一个前端页面,后面适配了其他的后端服务,改名为了open)
部署前提
- Linux 操作系统(WSL也可)
- 已经安装 Docker 并且已经可以正常 pull 下镜像
不一定非得按照我前几期的教程来搞,只要满足上面条件即可,如果有问题,可以参考之前的教程,来让一个普普通通的 Windows 系统,达到上述条件:
- Wsl2下安装ArchLinux系统并进行常用配置(https://blog.chunxiao.site/posts/wsl2-arch/)
- Docker日常使用方案分享(https://blog.chunxiao.site/posts/docker/)
终端推荐:warp
(https://www.warp.dev/)
使用GPU(这里仅支持NVIDIA)
仅支持 NVIDIA 哈,因为我仅有的电脑就是这个的(RTX4060);想要让 Docker 使用我们的 GPU 资源,需要确保两个条件
针对 WSL 的,Windows 主机上需要安装好 NVIDIA 驱动,可以通过命令
nvidia-smi
查看,如果正常安装效果如下:安装
nvidia-container-toolkit
sudo pacman -S nvidia-container-toolkit 可能会有如下报错: error: unable to run hook nvidia-ctk-cdi.hook: could not satisfy dependencies 执行这个即可: sudo nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml
执行之后,可以通过:
sudo pacman -Qs nvidia-container-toolkit
来查看软件是否安装成功
安装部署
找一个目录,拉 git 库:https://github.com/open-webui/open-webui
如果执行有问题,也可以先下载,然后解压到指定目录即可。比如我的目录
/home/chunxiao.li/dockers/open-webui
可以大概看一眼这个 docker-compose.yaml 文件
services:
ollama:
volumes:
- ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
restart: unless-stopped
image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}
open-webui:
build:
context: .
args:
OLLAMA_BASE_URL: '/ollama'
dockerfile: Dockerfile
image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
container_name: open-webui
volumes:
- open-webui:/app/backend/data
depends_on:
- ollama
ports:
- ${OPEN_WEBUI_PORT-3000}:8080
environment:
- 'OLLAMA_BASE_URL=http://ollama:11434'
- 'WEBUI_SECRET_KEY='
extra_hosts:
- host.docker.internal:host-gateway
restart: unless-stopped
volumes:
ollama: {}
open-webui: {}
感觉是目前遇到的 docker-compose.yaml 文件写的最简单易用的了,我几乎都没改任何内容,因为我另一个 WSL 也部署的有,端口 3000 冲突了,因此端口我得改一下,大家使用我觉得不做任何修改都行。
可以看到部署了两个 service,一个 ollama,一个 open-webui,open-webui 是依赖 ollama的,并且在 open-webui 中配置了 ollama 的后台地址。
我们如果不是有 GPU 的话,直接使用这个配置即可,但是如果想要使用 GPU,还需要加载另一个配置文件:docker-compose.gpu.yaml
services:
ollama:
# GPU support
deploy:
resources:
reservations:
devices:
- driver: ${OLLAMA_GPU_DRIVER-nvidia}
count: ${OLLAMA_GPU_COUNT-1}
capabilities:
- gpu
可以看到这个是对上一个中 ollama 这个 service 的补充配置,配置了 drive 和 gpu 数量。
好,那么我们想要使用 GPU 启动服务的话,就这样来:
sudo docker compose -f docker-compose.yaml -f docker-compose.gpu.yaml up -d
看日志:
sudo docker compose logs -f
第一次执行需要拉很大的数据量,一定要保证好自己能够稳定的 pull 镜像,启动时候也有点儿慢
出现上面这个图标,应该就是启动完成了,可以去看下:
http://localhost:3000/
简单使用
第一次使用需要注册账号,随后登录,登录时候可能会遇到白屏好久(差不多2-3分钟吧),之前排查好久,后来才知道是 open-webui 默认在加载模型的时候,开启了外部的,我们容器内如果没科学的话,就会加载不了,等到了超时时间才会结束调用。
所以我们可以上去给关了:右上角 –> 管理员面板 –> 设置(在面板中间上方-不太好找)–> 外部链接(可以把自带的外网的关掉)
这样就会直接加载自己的本地模型。
下载模型
可以去这里查看 ollama 已经支持的模型:https://ollama.com/search
比如这个,我们如果选择 12b,可以看到后面的 8.1GB 的大小,这个我找 AI 咨询了,大概意思是加载起来之后,会占用 8.1GB 的内存,但是会不会占用 8.1GB 的显存呢,这是不一定的,因为加载到显存的时候,根据浮点、压缩等等各种因素吧,会比模型实际大小要小。因此有些不确定不能不跑的,可以自己尝试一下。关于下载模型,有两种办法:
直接通过页面下载
登录我们的 ollama 容器,执行 :
ollama run gemma3:12b
下载完成之后,都可以在页面上这个管理模型的页面看到。
并且在首页,也可以选择我们已经下载好的模型来进行使用:
大家也可以打开任务管理器来看一下输出过程中的资源占用。可以很明显的看到,我这里已经使用上了 GPU 资源。
确实很简单方便吧,降低了我们普通非算法工程师接触大模型的门槛,ollama 真好。
使用第三方api
最开始就提到了,我们大部分在家用电脑上部署 ollama,更多的意义是探索,研究,了解大模型,而绝不是使用。现在部署大模型的厂商非常多,比如 ChatGPT、Deepseek、阿里、腾讯、字节等等,几乎大厂人手一份。
厂商都提供的有 api 的调用方式,并且大部分都有免费额度,我们可以在 open-webui 里面集成其他厂商的 api 调用,这样就可以在自己的网站上来调用更加强大的大模型了。
还是上面最开始我们关闭的那个位置,
我们需要两个内容:
- 厂商api调用链接,这个需要去厂商那里找对应文档,比如阿里百炼的就是:
https://dashscope.aliyuncs.com/compatible-mode/v1
- 厂商api调用下发的token,这个也得去厂商那里生成
可以自定义加载哪些模型(阿里百炼的非常多,全加载出来的话也没用,建议直加载自己打算用的)
更新
先关闭服务:
sudo docker compose down
然后更新:
sudo docker compose pull
随后再次启动即可
其实 open-webui 还有很多其他功能,上面只介绍了简单的核心功能,大家可以自己随便玩,毕竟是自己本地,怎么搞都可以。
总结
其实有了 ollama + open-webui 这套架子后,我们就可以去尝试不同的开源模型了,前些时间我也进行过一些简单测评,能跑的开源模型有哪些。但后来意义实际上不大,因为还是最开始说的那样,我们本地跑的参数跟满血的比,还是差的太多,无法达到满血的效果。只能用来玩一玩。
另外呢,通过 open-webui 入门了简单的大模型调用前端之后,我们感兴趣的可以去找一些其他的开源 web-ui,进行更多的尝试,运行的机制其实都差不多,都是需要调用链接,以及对应的 token。
通过前面两期 + 这一期,我们其实可以实现,在普普通通的 Windows 电脑上面,谁都能部署起来一套本地大模型。
我的教程其实就是希望能够通过简单、易懂、无歧义的形式,来帮助大家在条件有限的情况下,也能尽可能的体验到最新的技术。
再次感谢各位的支持,也非常期望大家能在 B 站上关注我(UID:483468180 - 晓若寒轻)
后面一期做些什么,还没想好,但是应该还是和最近 AI 相关的,比如 RAG、还是 MCP 等等吧,大家有想法欢迎在 B 站留言。