ToB企服应用市场:ToB评测及商务社交产业平台

标题: Ollama保姆级教程 [打印本页]

作者: 海哥    时间: 2024-9-8 17:18
标题: Ollama保姆级教程
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部分)。
常用下令

下载模子:
  1. ollama pull model_name
复制代码
启动模子(若模子不存在,那么会先下载模子,然后再运行):
  1. ollama run model_name  
复制代码
删除模子:
  1. ollama rm model_name
复制代码
查看下载的模子:
  1. ollama list
复制代码
查看模子信息 :
  1. ollama show model_name
复制代码
查看当前运行的模子:
  1. ollama ps
复制代码
启动和退出

启动模子(以qwen2:7b为例):
  1. ollama run qwen2:7b
复制代码

退出模子:在对话下令行中输入 /bye 即可

退出后,查看正在运行的模子:ollama ps


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

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

  1. 我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
复制代码

2-使用ollama run 下令来举行交互,将prompt跟在该名背面:

  1. ollama run qwen2:7b
  2. "我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
  3. "
复制代码

可以加上 --verbose来让模子同时显示性能信息
  1. ollama run qwen2:7b
  2. "我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
  3. " --verbose     
复制代码

可以看到在最后会输出本次交互相关的信息,如时间,token输出的速率等。
使用API的形式对话:

只要是启动了ollama,在本地就会默认建立一个ollama服务,可以通过API的形式来举行访问。
同时ollama适配了OpenAI的接口的访问和返回形式,可以很容易地使用ollama的API替换OpenAI的接口。
1-使用curl访问API

  1. curl --request POST "http://localhost:11434/api/chat" ^-d "{"model": "qwen2:7b", "messages": [ { "role": "user", "content": "我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
  2. " } ], "stream": false}"
复制代码
有个参数必要注意下,就是stream参数,设置为false,表示不以文档流的方式返回。

2-使用Python来访问API

  1. import jsonimport requestsr = requests.post('http://localhost:11434/api/generate',  json={  'model': 'qwen2:7b',  'prompt': '我想玩游戏,老婆不让玩,请列出10个玩游戏的好处来说服她
  2. ',  '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:
  1. ollama pull llava:7b
  2. ollama run llava:7b
复制代码
启动后,输入prompt:使用中文描述下这张图片 ./lecun.png

我使用的是这张图片:

可以看到,对照片内容的描述基本是符合的,有点不足的是用词不太准确,“颜色"应该是"彩色”,而且另有错别字,“呆着一种微笑的表情”,应该是使用了7B模子的原因,13B模子应该就没这么低级的错误了。
定制本身的模子

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

  1. FROM qwen2:7b
  2. # set the temperature to 1 [higher is more creative, lower is more coherent]
  3. PARAMETER temperature 1
  4. # set the system message
  5. SYSTEM """
  6. You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
  7. """
复制代码
2-使用Modelfile来创建定制模子,实行下令

  1. 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企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4