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部分)。
常用下令
下载模子:
启动模子(若模子不存在,那么会先下载模子,然后再运行):
删除模子:
查看下载的模子:
查看模子信息 :
查看当前运行的模子:
启动和退出
启动模子(以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 jsonimport requestsr = 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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |