海哥 发表于 2024-9-8 17:18:46

Ollama保姆级教程

Ollama保姆级教程

Ollama是一个开源框架,专门计划用于在本地运行大型语言模子。它的重要特点是将模子权重、配置和数据捆绑到一个包中,从而优化了设置和配置细节,包罗GPU使用情况,简化了在本地运行大型模子的过程。
Ollama还提供了对模子量化的支持,这可以显著降低显存要求。比方,4-bit量化可以将FP16精度的权重参数压缩为4位整数精度,从而大幅减小模子权重体积和推理所需显存。这使得在平凡家用计算机上运行大型模子成为大概。
此外,Ollama框架还支持多种差异的硬件加快选项,包罗纯CPU推理和各类底层计算架构,如Apple Silicon。这使得Ollama可以或许更好地利用差异类型的硬件资源,进步模子的运行服从。
Ollama可以在下令行中直接举行使用,也可以作为服务通过api的形式举行访问。
安装

Windows系统必要是Win10 22H2及以上版本,如果有英伟达的独立显卡,必要将显卡的驱动更新到452.39及以上版本。
在官网下载安装包,举行安装即可。
https://i-blog.csdnimg.cn/direct/dc0784a1732b43c999f5e9ef729183bd.png
默认安装位置:C:\Users\Administrator\AppData\Local\Programs\Ollama
https://i-blog.csdnimg.cn/direct/72a62b863ff74c4cadd5c42bf465ee13.png
默认模子下载保存位置(可修改,见文末Q&A):C:\Users\Administrator.ollama\models
支持的模子

下图是部分支持的模子,更多支持的模子可以在https://ollama.com/library举行查看
https://i-blog.csdnimg.cn/direct/c2d3603798fe411fbf7ec5589f8ce1f2.png
运行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
https://i-blog.csdnimg.cn/direct/29db89d3b4c44d32977d9411d64d0cc6.png
退出模子:在对话下令行中输入 /bye 即可
https://i-blog.csdnimg.cn/direct/bd3dda9202ee4983865c07c744d6c0b2.png
退出后,查看正在运行的模子:ollama ps

https://i-blog.csdnimg.cn/direct/c2a867fc618c4219a81e7c4ae660ec1d.png
咦?不是退出了吗,怎么还在!是不是当我没上过小学,欺骗老子!
经过我测试,退出后一段时间内(大概是5分钟左右)没有与模子互动,该模子会自动结束运行,同时释放内存/显存。
两种交互方式

在下令行中举行对话:
1-启动模子后,直接输入prompt:

我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
https://i-blog.csdnimg.cn/direct/4cb620e25f264da5b2500872f57a279e.png
2-使用ollama run 下令来举行交互,将prompt跟在该名背面:

ollama run qwen2:7b
"我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
" https://i-blog.csdnimg.cn/direct/5b67085c27fa43d3bb4c46086fc0b6e4.png
可以加上 --verbose来让模子同时显示性能信息
ollama run qwen2:7b
"我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
" --verbose    https://i-blog.csdnimg.cn/direct/498b939fc0ef4b7da8bab88bae8e2e20.png
可以看到在最后会输出本次交互相关的信息,如时间,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,表示不以文档流的方式返回。
https://i-blog.csdnimg.cn/direct/3c8f043ad4064eafbd07c44be366cdcc.png
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 itprint(response_part, end='', flush=True)if 'error' in body:raise Exception(body['error'])if body.get('done', False):print(body['context']) https://i-blog.csdnimg.cn/direct/e403b30f9b13445ca7dbb9d7d45f4c1e.png
多模态模子的使用

首先下载并运行多模态模子llava:
ollama pull llava:7b
ollama run llava:7b
启动后,输入prompt:使用中文描述下这张图片 ./lecun.png
https://i-blog.csdnimg.cn/direct/2da458fbe51f44eea6dcbe8052dbd080.png
我使用的是这张图片:
https://i-blog.csdnimg.cn/direct/32186cbf7a4a412dba89a2e753c1dc90.png
可以看到,对照片内容的描述基本是符合的,有点不足的是用词不太准确,“颜色"应该是"彩色”,而且另有错别字,“呆着一种微笑的表情”,应该是使用了7B模子的原因,13B模子应该就没这么低级的错误了。
定制本身的模子

所谓定制模子,就是在使用某个模子作为base模子,然后在该模子上举行定制,下面我们就以qwen2:7b作为基础模子举行定制:
1-编写定制规则,即Modelfile文件,内容如下(此处Modelfile位置是C:\Users\Administrator\Desktop):

FROM qwen2:7b

# set the temperature to 1
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
https://i-blog.csdnimg.cn/direct/de0131772d8b4d138258bbec4f3564a1.png
3-查看已有的模子,ollama list


https://i-blog.csdnimg.cn/direct/b87dc61d80904cd8903ad29e75982a4c.png
可以看到一个名称为mario 的模子已经存在了。运行该模子,输入prompt试一下:
https://i-blog.csdnimg.cn/direct/6b98c4b0c5b4495a9d657b304b0c8dc9.png
效果不错,已经能按照定制的内容举行答复问题了。
关于定制化规则,更多的规则可以参考链接:
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
https://i-blog.csdnimg.cn/direct/d9566dd3743a4f68ad79cea154d04eaf.png
先运行 gemma:2b模子,然后将上下文窗口长度改为4096
怎么判定模子时运行在CPU还是GPU上的?
实行下令ollama ps
,如下图
https://i-blog.csdnimg.cn/direct/138e2ffbed6548c9b5a32bf458a2800b.png
通过Processor列来判定:
100% GPU 表示模子完全运行在GPU上,即显存中;
100% CPU 表示模子完全运行在RAM,即内存中;
48%/52% CPU/GPU 表示模子即运行在了显存中,也运行在了内存中;
修改Ollama Server的配置
https://i-blog.csdnimg.cn/direct/ffc908aee9024c20914e5a14394196ee.png
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
https://i-blog.csdnimg.cn/direct/31db1799e1854bd8b1284ba2aab54388.jpeg#pic_center

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Ollama保姆级教程