当前位置:AIGC资讯 > AIGC > 正文

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

总结

### 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仓库获取更多信息。

更新时间 2024-09-15