Ollama保姆级教程
Ollama是一个开源框架,专门设计用于在本地运行大型语言模型。它的主要特点是将模型权重、配置和数据捆绑到一个包中,从而优化了设置和配置细节,包括GPU使用情况,简化了在本地运行大型模型的过程。
Ollama还提供了对模型量化的支持,这可以显著降低显存要求。例如,4-bit量化可以将FP16精度的权重参数压缩为4位整数精度,从而大幅减小模型权重体积和推理所需显存。这使得在普通家用计算机上运行大型模型成为可能。
此外,Ollama框架还支持多种不同的硬件加速选项,包括纯CPU推理和各类底层计算架构,如Apple Silicon。这使得Ollama能够更好地利用不同类型的硬件资源,提高模型的运行效率。
Ollama可以在命令行中直接进行使用,也可以作为服务通过api的形式进行访问。
安装
Windows系统需要是Win10 22H2及以上版本,如果有英伟达的独立显卡,需要将显卡的驱动更新到452.39及以上版本。
在官网下载安装包,进行安装即可。
默认安装位置:C:\Users\Administrator\AppData\Local\Programs\Ollama
默认模型下载保存位置(可修改,见文末Q&A):C:\Users\Administrator.ollama\models
支持的模型
下图是部分支持的模型,更多支持的模型可以在https://ollama.com/library进行查看
运行7B模型至少要有8G的内存;运行13B模型至少要有16G的内存;运行33B模型至少要有32G的内存;
这些是在你没有显存只有内存的情况下,如果你有显存,那么Ollama会将模型放在显存中,当显存中放不下时会将模型同时放在内存中(见文末Q&A部分)。
常用命令
下载模型:
ollama pull model_name
启动模型(若模型不存在,那么会先下载模型,然后再运行):
ollama run model_name
删除模型:
ollama rm model_name
查看下载的模型:
ollama list
查看模型信息 :
ollama show model_name
查看当前运行的模型:
ollama ps
启动和退出
启动模型(以qwen2:7b为例):
ollama run qwen2:7b
退出模型:在对话命令行中输入 /bye 即可
退出后,查看正在运行的模型:ollama ps
咦?不是退出了吗,怎么还在!是不是当我没上过小学,欺骗老子!
经过我测试,退出后一段时间内(大概是5分钟左右)没有与模型互动,该模型会自动结束运行,同时释放内存/显存。
两种交互方式
在命令行中进行对话:
1-启动模型后,直接输入prompt:
我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
2-使用ollama run 命令来进行交互,将prompt跟在该名后面:
ollama run qwen2:7b "我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她"
可以加上 --verbose来让模型同时显示性能信息
ollama run qwen2:7b "我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她" --verbose
可以看到在最后会输出本次交互相关的信息,如时间,token输出的速度等。
使用API的形式对话:
只要是启动了ollama,在本地就会默认建立一个ollama服务,可以通过API的形式来进行访问。
同时ollama适配了OpenAI的接口的访问和返回形式,可以很容易地使用ollama的API替换OpenAI的接口。
1-使用curl访问API
curl --request POST "http://localhost:11434/api/chat" ^
-d "{\"model\": \"qwen2:7b\", \"messages\": [ { \"role\": \"user\", \"content\": \"我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她\" } ], \"stream\": false}"
有个参数需要注意下,就是stream参数,设置为false,表示不以文档流的方式返回。
2-使用Python来访问API
import json
import requests
r = requests.post('http://localhost:11434/api/generate',
json={
'model': 'qwen2:7b',
'prompt': '我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她',
'context': [],
},
stream=True)
r.raise_for_status()
for line in r.iter_lines():
body = json.loads(line)
response_part = body.get('response', '')
# the response streams one token at a time, print that as we receive it
print(response_part, end='', flush=True)
if 'error' in body:
raise Exception(body['error'])
if body.get('done', False):
print(body['context'])
多模态模型的使用
首先下载并运行多模态模型llava:
ollama pull llava:7b
ollama run llava:7b
启动后,输入prompt:使用中文描述下这张图片 ./lecun.png
我使用的是这张图片:
可以看到,对照片内容的描述基本是符合的,有点不足的是用词不太准确,“颜色"应该是"彩色”,而且还有错别字,“呆着一种微笑的表情”,应该是使用了7B模型的原因,13B模型应该就没这么低级的错误了。
定制自己的模型
所谓定制模型,就是在使用某个模型作为base模型,然后在该模型上进行定制,下面我们就以qwen2:7b作为基础模型进行定制:
1-编写定制规则,即Modelfile文件,内容如下(此处Modelfile位置是C:\Users\Administrator\Desktop):
FROM qwen2:7b
# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1
# set the system message
SYSTEM """
You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
"""
2-使用Modelfile来创建定制模型,执行命令
ollama create mario -f ./Modelfile
3-查看已有的模型,ollama list
可以看到一个名称为mario 的模型已经存在了。运行该模型,输入prompt试一下:
效果不错,已经能按照定制的内容进行回答问题了。
关于定制化规则,更多的规则可以参考链接:
https://github.com/ollama/ollama/blob/main/docs/modelfile.md
https://blog.csdn.net/spiderwower/article/details/138755776
常见的Q&A整理:
如何指定上下文窗口大小
Ollama 默认上下文窗口大小为2048 tokens,可以通过命令 /set parameter num_ctx 4096 将上下文窗口长度调整为4096 token
先运行 gemma:2b模型,然后将上下文窗口长度改为4096
怎么判断模型时运行在CPU还是GPU上的?
执行命令ollama ps,如下图
通过Processor列来判断:
100% GPU 表示模型完全运行在GPU上,即显存中;
100% CPU 表示模型完全运行在RAM,即内存中;
48%/52% CPU/GPU 表示模型即运行在了显存中,也运行在了内存中;
修改Ollama Server的配置
OLLAMA_HOST:修改绑定的地址,可让别人通过局域网访问
OLLAMA_MODELS:修改模型的保存文件夹
更多的Q&A问题,参考官网文档:
https://github.com/ollama/ollama/blob/main/docs/faq.md
总结:
Ollama能够更容易的让大模型在本地运行起来,没错,是运行起来,至于交互就差点意思了。
总不能总是铜鼓命令行来交互吧,这样也太不优雅了!
实际上Ollama主要是用来提供服务的,也就是作为服务端,但是可以通过配合其他的UI界面来更方便的使用大模型,例如Open WebUI等。
今天的教程就到这里,欢迎点赞收藏!
Ollama官网:https://ollama.com/download
GitHub:https://github.com/ollama/ollama
Ollama文档:https://github.com/ollama/ollama/tree/main/docs
总结
### Ollama保姆级教程总结Ollama是一个开源框架,专为在本地运行大型语言模型设计。它通过绑定模型权重、配置和数据,优化设置和配置细节(包括GPU使用),大大简化了大型模型在本地运行的流程。以下是本教程的主要内容总结:
#### 主要特点
1. **模型优化**:支持对模型进行量化,显著降低显存要求,例如4-bit量化可大幅压缩模型权重和推理所需显存。
2. **硬件加速**:支持多种硬件加速选项,包括CPU和Apple Silicon等底层计算架构,充分利用不同类型硬件资源提高模型运行效率。
3. **易用性**:可通过命令行或API访问,灵活满足不同使用场景需求。
#### 安装与配置
- **系统要求**:Windows需Win10 22H2及以上版本,英伟达显卡驱动需452.39及以上。
- **安装步骤**:下载Ollama安装包,安装后默认位置为C:\Users\Administrator\AppData\Local\Programs\Ollama。
#### 支持的模型
- 列举了包括7B、13B和33B等在内的一系列模型,并指出运行不同模型所需的最低内存(或显存)要求。
#### 常用命令
- **下载、启动与删除模型**:通过`ollama pull`、`ollama run`和`ollama rm`等命令实现。
- **查看模型信息**:使用`ollama show`和`ollama list`命令查看模型详情和列表。
- **模型运行与退出**:启动模型后,可通过输入`/bye`来退出交互,但模型会在一段时间内自动停止运行并释放资源。
#### 交互方式
- **命令行交互**:启动模型后在命令行中直接输入prompt进行对话,或通过`ollama run`命令带有prompt参数进行交互。
- **API交互**:Ollama本地服务支持API访问,兼容OpenAI接口,可通过curl或Python等编程语言进行访问。
#### 多模态模型与定制化
- **多模态模型**:以llava为例展示了如何使用多模态模型进行图片描述。
- **模型定制化**:通过编写Modelfile文件并调用`ollama create`命令创建定制化模型。
#### 常见问题解答
- **上下文窗口大小**:可通过命令调整,以优化模型上下文处理能力。
- **运行环境与硬件**:通过`ollama ps`命令查看模型运行在CPU还是GPU上。
- **配置修改**:可通过环境变量修改Ollama服务配置,如绑定地址和模型文件夹等。
#### 总结与展望
Ollama框架为本地运行大型语言模型提供了便捷方案,尤其适合需要离线处理大规模数据或对敏感度要求较高的应用场景。未来可通过结合前端界面(如Open WebUI)进一步优化用户交互体验。
---
希望这份总结能够帮助你快速了解并上手Ollama框架。如有更多疑问,欢迎查阅相关文档或访问Ollama官网和GitHub仓库获取更多信息。