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部分)。

常用命令

下载模型:

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
在这里插入图片描述

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值