Ollama 本地部署大模型

在当今的科技时代,AI 已经成为许多领域的关键技术。AI 的应用范围广泛,从自动驾驶汽车到语音助手,再到智能家居系统,都有着 AI 的身影,而随着Facebook 开源 LLama2 更让越来越多的人接触到了开源大模型。

今天我们推荐的是一条命令快速在本地运行大模型,在GitHub超过22K Star的开源项目:ollama随着围绕着 Ollama 的生态走向前台,更多用户也可以方便地在自己电脑上玩转大模型了。

Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和部署最新大语言模型,包括如Qwen2Llama3Phi3Gemma2等开源的大型语言模型。

Ollama 是一个强大的框架,设计用于在 Docker 容器中部署 LLM。Ollama 的主要功能是在 Docker 容器内部署和管理 LLM 的促进者,它使该过程变得非常简单。它帮助用户快速在本地运行大模型,通过简单的安装指令,可以让用户执行一条命令就在本地运行开源大型语言模型,例如 Llama 2。

在这里插入图片描述

快速上手

Ollama 安装十分简单,直接子官网下载安装即可。

在这里插入图片描述

提示: 请始终注意审阅判断 curl | sh 风格安装脚本的风险。

如果你熟悉 Docker,也可以直接使用其官方镜像。下载后可以直接打开

在这里插入图片描述

提示安装命令行

在这里插入图片描述

如果你不装的话,会找不到ollama 命令

![外链图片转存失败,源

当你运行 ollama --version 命令成功查询到版本时,表示 Ollama 的安装已经顺利完成

在这里插入图片描述

接下来便可以用 pull 命令从在线模型库下载模型来玩了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以中文微调过的 Llama2-Chinese 7B 模型为例,下述命令会下载接近 4GB 的 4-bit 量化模型文件,需要至少 8GB 的内存进行推理,推荐配备 16GB 以流畅运行。

ollama pull llama2-chinese

在这里插入图片描述

使用下面的命令即可运行llama2,如果模型不存在也是会先下载

ollama run llama2

在这里插入图片描述

除了Llama2以外 Ollama 还支持其他的开原模型,如下图:

在这里插入图片描述

更多支持的模型可以去这个网址 ollama.com/library 查看

下载完成后,使用 run 命令运行模型

在这里插入图片描述

可直接将消息附在命令后,或留空进入对话模式,对话模式内置了几个以斜杠引出的命令:

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

# 对话模式
ollama run llama2-chinese

查看帮助命令

/?
Available Commands:
  /set         Set session variables
  /show        Show model information
  /bye         Exit
  /?, /help    Help for a command

ollama 安装之后,其同时还是一个命令,与模型交互就是通过命令来进行的。

  • ollama list:显示模型列表。
  • ollama show:显示模型的信息
  • ollama pull:拉取模型
  • ollama push:推送模型
  • ollama cp:拷贝一个模型
  • ollama rm:删除一个模型
  • ollama run:运行一个模型

下面我们尝试着问一下

天空为什么是蓝色的?
​
根据大自然中的多种现象,我们可以得出一些观点:
​
1. 光的传播。当太阳闪烁时,天空伴有各种明亮色彩,这也是由于光的传播所造成的。而在晚上,天空变成了蓝色,因为大气中的氢分子会阻缓光线的传播,使得其成像效果更加平淡和低调。
​
2. 地球与太阳的相对位置。当地球和太阳之间的距离发生变化时,会导致天空的色彩也发生变化。在夏季,地球和太阳的距离更加接近,从而使得天空变成了浅黄色或者白色,因为大气中的分子会被太阳逐渐吸收。在冬季,地球和太阳的距离更加远离,使得天空变成了蓝色或者黑色,因为大气中的分子会被太阳反射。
​
3. 大气中的分子。当大气中的分子数量多时,可能会影响天空的颜色。这也是因为大气中的分子会产生辐射的效应,使得天空变成了蓝色或者其他色调。
​
无论是哪一个理由,都可以作为解释天空为什么是蓝色的。当然,这不是绝对的,也有些人认为天空会根据我们在它中感受到的环境和心理状态来改变颜色。

在这里插入图片描述

值得一提的是,Ollama 会判别正在运行的硬件并在可行的情况下调用 GPU 加速,不妨在推理时打开活动监视器或任务管理器观察以验证。

到此,你已经体验到触手可及的本地大模型了。

套上外壳

若是觉得命令行的形式不够易用,Ollama 有一系列的周边工具可供使用,包含了网页、桌面、终端等交互界面及诸多插件和拓展。

之所以 Ollama 能快速形成如此丰富的生态,是因为它自立项之初就有清晰的定位:让更多人以最简单快速的方式在本地把大模型跑起来。于是,Ollama 不是简单地封装 llama.cpp,而是同时将繁多的参数与对应的模型打包放入;Ollama 因此约等于一个简洁的命令行工具和一个稳定的服务端 API。这为下游应用和拓展提供了极大便利。

就 Ollama GUI 而言,根据不同偏好,有许多选择:

Web 版: Ollama WebUI 具有最接近 ChatGPT 的界面和最丰富的功能特性,需要以 Docker 部署;

在这里插入图片描述
Ollama WebUI 示例,图

终端 TUI 版: oterm 提供了完善的功能和快捷键支持,用 brewpip 安装;

在这里插入图片描述
Oterm 示例,图源项目首

Raycast 插件:Raycast Ollama,这也是我个人最常用的 Ollama 前端 UI,其继承了 Raycast 的优势,能在选中或复制语句后直接调用命令,体验丝滑。而作为价值约 8 美元/月的 Raycast AI 的平替,Raycast Ollama 实现了 Raycast AI 的绝大多数功能,且随着 Ollama 及开源模型的迭代,还将支持多模态等 Raycast AI 不支持的功能,可谓潜力无限。

在这里插入图片描述

进阶玩法

更换模型

如果你仔细读了前文演示中「天空为什么是蓝色的」的回答,可能隐约感觉到一丝异样——恭喜,你成功捕捉到了一次大语言模型的「幻觉」。实际上,因为参数量小又经过量化折损,适合在本地运行的模型更容易出现幻觉,严重时甚至会前言不搭后语。对此,唯一的缓解办法可能就是在条件允许的前提下,尽量运行参数更多的模型。

例如,前面上手时用的是 Llama2-Chinese 模型 7B 参数量 4bit 量化版。如果有 16GB 的内存,就可以考虑运行 13B 参数量版本。

如何操作呢?Ollama 采取了与 Docker 组织镜像相似的方案,使用模型名加上标签的形式( model:tag )来确定具体的模型版本,不加标签时默认为 latest ,通常对应 7B 参数量 4bit 量化版。而如果要运行 13B 版本,就可以使用 13b 标签:

% ollama run llama2-chinese:13b "天空为什么是蓝色的?"
​
天空是由大气层和太阳光的散射而成的蓝色。
​
在日出之前,我们看到的天空是紫色或彩虹色,这是因为太阳光从海平面反射回来时,会被大气中的二氧化碳和水分子散射成蓝色、紫色或彩虹色。
​
而在日出之后,天空变成了灰色,这是由于太阳光从大气中被阻挡,并且不再有足够的反射来给天空增加蓝色。
​
当我们看到天空时,它的颜色是由于太阳光与大气中的物质相互作用而形成的。这些物质包括水、二氧化碳和其他气体,以及微小的冰片和沙塵。
​
当我们看到天空变成了晚上时,天空会逐渐变得更加深蓝,这是由于太阳光在大气中传播,同时也因为大气层的结构。

可以看到,效果确实更好了一些。其他可选标签同样可在对应模型的标签页查看。

此外,还可以换用其他模型。在此,推荐几个官方模型库里对中文支持相对较好或比较有趣的几:

  • DeepSeek 系列,深度求索团队推出,包括针对代码训练的 DeepSeek-Coder 和 通用的 DespSeek-LLM
  • 如果碰巧财力雄厚,不妨试试法国明星初创团队 Mistral 最新推出的首个开源混合专家 MoE 模型 Mixtral-8x7B,需要 48GB 内存以运行;
  • 如果不巧硬件紧张,无需气馁,Phi-2 由微软团队针对逻辑和理解精调,2.7B 的尺寸只需 4 GB 内存即可运行,吐字速度飞快,只是不太懂中文。
图片支持

除了纯语言大模型,Ollama 自 0.1.15 版本始提供支持的视觉模型也值得一玩。将本地图片的路径写在 prompt 里即可(macOS 用户可以直接将图片拖入终端来获得其路径):

% 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."

在这里插入图片描述
LLaVA 示例,图源 Ollama

自定义系统提示词

根据 ChatGPT 的使用经验,多数人都已知晓系统提示词的重要性。好的系统提示词能有效地将大模型定制成自己需要的状态。在 Ollama 中,有多种方法可以自定义系统提示词。

首先,不少 Ollama 前端已提供系统提示词的配置入口,推荐直接利用其功能。此外,这些前端在底层往往是通过 API 与 Ollama 服务端交互的,我们也可以直接调用,并传入系统提示词选项:

curl  -d '{
  "model": "llama2-chinese:13b",
  "messages": [
    {
      "role": "system",
      "content": "以海盗的口吻简单作答。"
    },
    {
      "role": "user",
      "content": "天空为什么是蓝色的?"
    }
  ],
  "stream": false
}'

其中 rolesystem 的消息即为系统提示词。

更多选项

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

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

% 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:

FROM llama2-chinese:13b
​
SYSTEM "以海盗的口吻作答。"
PARAMETER temperature 0.1

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

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

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

补充:Linux 部署方式两种

通过 systemd 方式部署

事实上基于 systemd 的部署官方文档介绍的也非常仔细,这里就快速记录一下,主要有一些注意点,踩过一些坑,在这里一并记录一下。

安装步骤参考: github.com/ollama/olla…

这里着重介绍一下,配置 system 启动配置的时候,应该注意的一些点:

$ cat /etc/systemd/system/ollama.service
​
[Unit]
Description=Ollama Service
After=network-online.target
​
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_MODELS=/data/ollama/.ollama/models"
ExecStart=/usr/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
​
[Install]
WantedBy=default.target

我这里把用户改成了 root,以免出现权限问题。

另外增加了三个环境变量的声明:

  • OLLAMA_HOST:指定监听地址,默认为 127.0.0.1
  • OLLAMA_ORIGINS:指定允许跨域请求的源,这里因为都在内网,因此设置为 *
  • OLLAMA_MODELS:声明模型存放的路径,默认模型存放于 ~/.ollama/models,一般用户家目录的磁盘分区不会很大,而模型文件通常都比较大,因此不适合放在用户家目录中。
通过 docker 部署

官方介绍了 docker 的运行方式,我这里做了一些调整,可直接通过 docker-compose 拉起:

version: '3'
services:
  ollama:
    container_name: ollama
    image: ollama/ollama:latest
    restart: always
    ports:
      - "11434:11434"
    volumes:
      - /data/ollama:/root/.ollama
    environment:
      OLLAMA_ORIGINS: "*"
      OLLAMA_HOST: "0.0.0.0"

docker 拉起之后,你可以 exec 到容器里边,然后执行与模型的交互。

结语

如果与普通应用软件作比,Ollama 的使用体验也许还很难称得上「优雅」。但与数月前的状态相比,其带来的进步就像是从刀耕火种步入现代社会了:当时还需要真金白银堆卡、折腾配置环境才能调通,或是需要自行量化编译才能运行;如今模型发布不到一周就能丝滑地跑在笔记本上。从这个角度说,称 Ollama 为 AI 技术平民化作出了贡献并不为过。

Ollama 的设计是基于Docker 的,所以使用起来和docker 基本无异

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

CSDN粉丝独家福利

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】

读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈

(👆👆👆安全链接,放心点击)
Logo

科技之力与好奇之心,共建有温度的智能世界

更多推荐