ollama 部署教程(window、linux)

目录

一、官网

二、安装方式一:window10版本下载

三、安装方式二:linux版本docker

四、 模型库

五、运行模型

六、API服务

七、python调用

ollama库调用

langchain调用 

requests调用

aiohttp调用

八、模型添加方式

1.线上pull

2.导入 GGUF 模型文件

3.导入 safetensors 模型文件

九、部署Open WebUI


参考链接:Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用 - 老牛啊 - 博客园 (cnblogs.com)icon-default.png?t=O83Ahttps://www.cnblogs.com/obullxl/p/18295202/NTopic2024071001

一、官网

在 macOS 上下载 Ollama - Ollama 中文

二、安装方式一:window10版本下载

安装完成没有提示。 接下来配置环境变量!

Ollama的安装过程,与安装其他普通软件并没有什么两样,安装完成之后,有几个常用的系统环境变量参数建议进行设置:

  1. OLLAMA_MODELS:模型文件存放目录,默认目录为当前用户目录(Windows 目录:C:\Users%username%.ollama\models,MacOS 目录:~/.ollama/models,Linux 目录:/usr/share/ollama/.ollama/models),如果是 Windows 系统建议修改(如:D:\OllamaModels),避免 C 盘空间吃紧
  2. OLLAMA_HOST:Ollama 服务监听的网络地址,默认为127.0.0.1,如果允许其他电脑访问 Ollama(如:局域网中的其他电脑),建议设置0.0.0.0,从而允许其他网络访问
  3. OLLAMA_PORT:Ollama 服务监听的默认端口,默认为11434,如果端口有冲突,可以修改设置成其他端口(如:8080等)
  4. OLLAMA_ORIGINS:HTTP 客户端请求来源,半角逗号分隔列表,若本地使用无严格要求,可以设置成星号,代表不受限制
  5. OLLAMA_KEEP_ALIVE:大模型加载到内存中后的存活时间,默认为5m即 5 分钟(如:纯数字如 300 代表 300 秒,0 代表处理请求响应后立即卸载模型,任何负数则表示一直存活);我们可设置成24h,即模型在内存中保持 24 小时,提高访问速度
  6. OLLAMA_NUM_PARALLEL:请求处理并发数量,默认为1,即单并发串行处理请求,可根据实际情况进行调整
  7. OLLAMA_MAX_QUEUE:请求队列长度,默认值为512,可以根据情况设置,超过队列长度请求被抛弃
  8. OLLAMA_DEBUG:输出 Debug 日志标识,应用研发阶段可以设置成1,即输出详细日志信息,便于排查问题
  9. OLLAMA_MAX_LOADED_MODELS:最多同时加载到内存中模型的数量,默认为1,即只能有 1 个模型在内存中

看看是不是已经启动了ollama。右下角图标如下 

如果没有,则去打开一下

黑窗口查看一下 版本

浏览器查看一下API服务:127.0.0.1:11434

 如果出现连接不上,则检查一下环境变量是不是配错了,是不是没有E盘(如果你照抄)。 

运行一个0.5b的qwen模型

ollama run qwen2:0.5b

看看API访问情况: 

提问:

对话: 

① system 代表系统设定(也就是告诉chatGPT他的角色)

② user 表示用户

③ assistant 表示GPT的回复

三、安装方式二:linux版本docker

Olama现已作为官方Docker镜像提供 · Olama博客 - Ollama 中文

docker run -d -v ollama:/root/.ollama -p 11435:11434 --name ollama ollama/ollama

 

进入容器内部:

docker exec -it ollama /bin/bash

 查看ollama执行

ollama

ollama serve    # 启动ollama
ollama create    # 从模型文件创建模型
ollama show        # 显示模型信息
ollama run        # 运行模型,会先自动下载模型
ollama pull        # 从注册仓库中拉取模型
ollama push        # 将模型推送到注册仓库
ollama list        # 列出已下载模型
ollama ps        # 列出正在运行的模型
ollama cp        # 复制模型
ollama rm        # 删除模型

# 本地模型列表
>ollama list
NAME            ID              SIZE    MODIFIED
gemma2:9b       c19987e1e6e2    5.4 GB  7 days ago
qwen2:7b        e0d4e1163c58    4.4 GB  10 days ago
# 删除单个模型
>ollama rm gemma2:9b
deleted 'gemma2:9b'>ollama list
NAME            ID              SIZE    MODIFIED
qwen2:7b        e0d4e1163c58    4.4 GB  10 days ago
# 启动本地模型
>ollama run qwen2:0.5b
>>>
# 运行中模型列表
>ollama ps
NAME            ID              SIZE    PROCESSOR       UNTIL
qwen2:0.5b      6f48b936a09f    693 MB  100% CPU        4 minutes from now
# 复制本地大模型:ollama cp 本地存在的模型名 新复制模型名
>ollama cp qwen2:0.5b Qwen2-0.5B
copied 'qwen2:0.5b' to 'Qwen2-0.5B'>ollama list
NAME                    ID              SIZE    MODIFIED
Qwen2-0.5B:latest       6f48b936a09f    352 MB  4 seconds ago
qwen2:0.5b              6f48b936a09f    352 MB  29 minutes ago
qwen2:7b                e0d4e1163c58    4.4 GB  10 days ago

四、 模型库

library (ollama.com)

五、运行模型

模型要求

 这里我们运行一个要求最小的0.5B的qwen模型。

注意这是在容器内部运行的: 

ollama run qwen2:0.5b
root@535ec4243693:/# ollama run qwen2:0.5b
pulling manifest 
pulling 8de95da68dc4... 100% ▕████████████████████████████████████▏ 352 MB                         
pulling 62fbfd9ed093... 100% ▕████████████████████████████████████▏  182 B                         
pulling c156170b718e... 100% ▕████████████████████████████████████▏  11 KB                         
pulling f02dd72bb242... 100% ▕████████████████████████████████████▏   59 B                         
pulling 2184ab82477b... 100% ▕████████████████████████████████████▏  488 B                         
verifying sha256 digest 
writing manifest 
removing any unused layers 
success 
>>> 你是谁
我是来自阿里云的超大规模语言模型——通义千问。我能够理解、生产、传播各种语言和文字,可以回答您在任
何语言或任何问题的问题。>>> Send a message (/? for help)

六、API服务

curl --location --request POST 'http://127.0.0.1:11435/api/generate' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--data-raw '{"model": "qwen2:0.5b","prompt": "你知道麦克斯韦吗"
}'
curl --location --request POST 'http://127.0.0.1:11435/api/chat' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Content-Type: application/json' \
--data-raw '{"model": "qwen2:0.5b","messages": [{"role": "system","content": "你是一个历史专家"},{"role": "user","content": "东北三省是哪三个?"},{"role": "assistant","content": "东北三省是指中国东北地区(不含内蒙古)。它包括吉林省的延边朝鲜族自治州、黑龙江省的黑河市和哈尔滨市,以及辽宁省的抚顺市、本溪市、丹东市。其中,延边州包括临山子、龙沙等13个县市。"},{"role": "user","content": "张作霖的势力是在这里兴起的吗"}],"stream": false
}'

① system 代表系统设定(也就是告诉chatGPT他的角色)

② user 表示用户

③ assistant 表示GPT的回复

七、python调用

  • temperature:用于调整生成结果的创造性程度,设置越高,生成的文本越新颖、越独特,设置越低,结果更集中。
  • stream:默认false,是否流式传输回部分进度。
  • format: 转录输出的格式,可选项包括json、str等。

ollama库调用
pip install ollama
import ollamahost = "127.0.0.1"
port = "11434"
client = ollama.Client(host=f"http://{host}:{port}")
res = client.chat(model="qwen2:0.5b",messages=[{"role": "user", "content": "你是谁"}],options={"temperature": 0})print(res)
langchain调用 
pip install langchain
pip install langchain_community
from langchain_community.llms import Ollama
host="127.0.0.1"
port="11434" #默认的端口号为11434
llm=Ollama(base_url=f"http://{host}:{port}", model="qwen2:0.5b",temperature=0)
res=llm.invoke("你是谁")
print(res)
requests调用
pip install requests
host="127.0.0.1"
port="11434"
url = f"http://{host}:{port}/api/chat"
model = "qwen2:0.5b"
headers = {"Content-Type": "application/json"}
data = {"model": model, #模型选择"options": {"temperature": 0.  #为0表示不让模型自由发挥,输出结果相对较固定,>0的话,输出的结果会比较放飞自我},"stream": False, #流式输出"messages": [{"role": "system","content":"你是谁?"}] #对话列表}
response=requests.post(url,json=data,headers=headers,timeout=60)
res=response.json()
print(res)

aiohttp调用
pip install aiohttp

Welcome to AIOHTTP — aiohttp 3.10.5 documentation

import asyncio
import json
import aiohttphost = "127.0.0.1"
port = "11434"
url = f"http://{host}:{port}/api/chat"headers = {'Content-Type': 'application/json'
}payload = json.dumps({"model": "qwen2:0.5b","options": {"temperature": 0.  # 为0表示不让模型自由发挥,输出结果相对较固定,>0的话,输出的结果会比较放飞自我},"messages": [{"role": "system", "content": "你是一个历史砖家,专门胡说八道,混淆历史"},{"role": "user", "content": "吕雉和吕不韦是啥关系?汉朝是大秦帝国的延续吗?"}],"stream": False
})async def main():start_time = asyncio.get_event_loop().time()async with aiohttp.ClientSession() as session:try:async with session.post(url, headers=headers, data=payload, timeout=60) as response:if response.status == 200:data = await response.text()print(data)end_time = asyncio.get_event_loop().time()elapsed_time = end_time - start_timeexcept asyncio.TimeoutError:print("请求超时了")finally:print(f"耗时:0.0570秒")if __name__ == '__main__':asyncio.run(main())

八、模型添加方式

1.线上pull(推荐

即上述教程采用的方式。

2.导入 GGUF 模型文件(推荐

示例:

从 HF 或者 ModeScope 下载了 GGUF 文件:qwen2-0_5b-instruct-q4_0.gguf

新建一个文件夹来存放GGUF文件,例如我存放在E:\huggingface_models\qwen2-05b-q4中,在GGUF文件的同级,创建一个文件名为Modelfile的文件,该文件的内容如下:

FROM ./qwen2-0_5b-instruct-q4_0.gguf

打开终端,执行命令导入模型文件:

ollama create 模型名称 -f ./Modelfile

导入成功之后,我们就可以通过list命名,看到名为Llama-3-8B的本地模型了,后续可以和其他模型一样进行管理了。

3.导入 safetensors 模型文件(不推荐,操作过程太慢了)

示例

https://huggingface.co/Qwen/Qwen2.5-0.5B/tree/main

从 HF 或者 ModeScope 下载了 safetensors 文件(文件目录为:Mistral-7B

git lfs installgit clone https://www.modelscope.cn/rubraAI/Mistral-7B-Instruct-v0.3.git Mistral-7B

然后,我们转换模型(结果:Mistral-7B-v0.3.bin):

python llm/llama.cpp/convert.py ./Mistral-7B --outtype f16 --outfile Mistral-7B-v0.3.bin

接下来,进行量化量化:

llm/llama.cpp/quantize Mistral-7B-v0.3.bin Mistral-7B-v0.3_Q4.bin q4_0

最后,通过 Ollama 导入到本地磁盘,创建Modelfile模型文件:

FROM Mistral-7B-v0.3_Q4.bin

执行导入命令,导入模型文件:ollama create 模型名称 -f ./Modelfile

>ollama create Mistral-7B-v0.3 -f ./Modelfile
transferring model data
using existing layer sha256:647a2b64cbcdbe670432d0502ebb2592b36dd364d51a9ef7a1387b7a4365781f
creating new layer sha256:459d7c837b2bd7f895a15b0a5213846912693beedaf0257fbba2a508bc1c88d9
writing manifest
success

九、部署Open WebUI

 🏡 Home | Open WebUI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148158.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

类中的特殊内容

仿照string类&#xff0c;自己手动实现 My_string #include <iostream> #include <string.h> using namespace std;class My_string { private:int len;int size;char *ptr; public:My_string():size(15),len(0){ptrnew char[size];ptr[0]\0;}My_string(const char…

拓维思注册机Tovos PowerLine4.0.19树障分析 Tovos SmartPlan2.0.0航线规划软件

Tovos PowerLine是功能强大的输电线路智能巡检系统&#xff01;这是一个专业且智能的软件&#xff0c;能够更准确的进行巡检和对线路设备进行精确的测量&#xff0c;通过获取高精度的点云来获取精准的三维路线的地形地貌、设备设施、途径的各种物体等来精确您的三维空间信息和三…

【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)

文章目录 前言1. 二叉树链式结构的意义2. 手搓一棵二叉树3. 二叉树的遍历&#xff08;重要&#xff09;3.1 遍历的规则3.2 先序遍历3.3 中序遍历3.4 后序遍历3.5 遍历的代码实现3.5.1 先序遍历代码实现3.5.2 中序遍历代码实现3.5.3 后序遍历代码实现 4. 统计二叉树结点的个数5.…

基于Vision-Board的智能应急环境监测控制小车

目录 1 项目概述 1.1 项目背景 1.2 系统功能介绍 1.2.1 下位机智能小车控制系统 1.2.2 微信小程序App 1.2.3 PC上位机App 1.3 框图介绍 1.3.1 主控板卡 1.3.2 小车控制模块 1.3.3 通信模块 1.4 系统使用的技术要点 2 系统硬件设计 2.1 Version board主控板块系统结…

《深度学习》卷积神经网络CNN 实现手写数字识别

目录 一、卷积神经网络CNN 1、什么是CNN 2、核心 3、构造 二、案例实现 1、下载训练集、测试集 代码实现如下&#xff1a; 2、展示部分图片 运行结果&#xff1a; 3、图片打包 运行结果&#xff1a; 4、判断当前使用的CPU还是GPU 5、定义卷积神经网络 运行结果&a…

通信工程学习:什么是NFVO网络功能虚拟化编排器

NFVO&#xff1a;网络功能虚拟化编排器 NFVO&#xff08;Network Functions Virtualization Orchestrator&#xff09;&#xff0c;即网络功能虚拟化编排器&#xff0c;是网络功能虚拟化&#xff08;NFV&#xff09;架构中的核心组件之一。NFV是一种将传统电信网络中的网络节点…

Linux学习笔记13---GPIO 中断实验

中断系统是一个处理器重要的组成部分&#xff0c;中断系统极大的提高了 CPU 的执行效率&#xff0c;本章会将 I.MX6U 的一个 IO 作为输入中断&#xff0c;借此来讲解如何对 I.MX6U 的中断系统进行编程。 GIC 控制器简介 1、GIC 控制器总览 I.MX6U(Cortex-A)的中断控制器…

全栈开发(三):springBoot3中使用mybatis-plus

MyBatis-Plus &#x1f680; 为简化开发而生 (baomidou.com) 1.配置pom.xml <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version></dependency&g…

90%的爆文作者都在用的AI标题公式 超实用7个迭代技巧

本文背景 我的上篇文章&#xff0c;关于我是如何在5分钟之内写出AI爆文结构化提示词的&#xff08;附50条优化指令词&#xff09;&#xff0c;已经详细的讲解了如何快速生成提示词&#xff0c;以及一些常用的优化提示词的指令&#xff0c;今天大象再来详细掰头掰头如何迭代提示…

虚拟摄像头抓屏

目录 一、下载: 二、安装 三、使用 前两天跟客户闲聊,说的了一个应用需求。他想实现将服务器操作过程实时记录下来,好比现在很多博主拍摄Vlog,再具体一点儿就是维修类短视频,可以记录维修过程,发现错误可以参照视频恢复,成功了也可以作为日后培训的教程。 实现的方法…

第一个Web项目(java+servlet+jsp)

通过百度网盘分享的文件&#xff1a;第一个Web项目 链接&#xff1a;https://pan.baidu.com/s/11vnAPeAf6Dtax7H6aYKZgA 提取码&#xff1a;1234 目录 声明&#xff1a; 简介&#xff1a; 注意&#xff1a; 操作步骤&#xff1a; 1.在idea中新建java项目&#xff0c;项目…

手写数字识别案例分析(torch,深度学习入门)

在人工智能和机器学习的广阔领域中&#xff0c;手写数字识别是一个经典的入门级问题&#xff0c;它不仅能够帮助我们理解深度学习的基本原理&#xff0c;还能作为实践编程和模型训练的良好起点。本文将带您踏上手写数字识别的深度学习之旅&#xff0c;从数据集介绍、模型构建到…

U盘格式化了怎么办?这4个工具能帮你恢复数据。

如果你思维U盘被格式化了&#xff0c;也不用太过担心&#xff0c;其实里面的数据并没有被删除&#xff0c;只是被标记为了可覆盖的状态。只要我们及时采取正确的数据恢复措施&#xff0c;就有很大的机会可以将数据找回。比如使用专业得的数据恢复软件&#xff0c;我也可以跟大家…

Keysight 下载信源 Visa 指令

用于传输原始的IQ数据 file.wiq 或者 file.bin wave_bin:bytes with open("./WaveForm.wfm","rb") as f:wave_bin f.read()log.info("File:WaveForm.wfm Size:%d Bytes"%len(wave_bin)) IMPL.sendCommand(":MEM:DATA \"WFM1:FILE1\&q…

使用 IntelliJ IDEA 连接到达梦数据库(DM)

前言 达梦数据库是一款国产的关系型数据库管理系统&#xff0c;因其高性能和稳定性而被广泛应用于政府、金融等多个领域。本文将详细介绍如何在 IntelliJ IDEA 中配置并连接到达梦数据库。 准备工作 获取达梦JDBC驱动&#xff1a; 访问达梦在线服务平台网站或通过其他官方渠道…

远程升级又双叒叕失败?背后原因竟然是。。。

最近又遇到了远程升级接连失败的情况&#xff0c;耐心和信心都备受折磨&#xff01; 事情是这样的&#xff1a;有客户反馈在乡村里频繁出现掉线的情况&#xff0c;不敢耽搁&#xff0c;赶紧联系小伙伴排查测试&#xff0c;最后发现&#xff0c;只有去年某一批模块在当下环境才…

Redis:持久化

1. Redis持久化机制 Redis 支持 RDB 和 AOF 两种持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的文件即可实现数据恢复。 2.RDB RDB 持久化是把当前进程数据⽣成快照保存到硬盘的过程&#xff0c;触发 RDB…

c++类中的特殊函数

My_string.cpp #include <iostream> #include "my_string.h" #include <string.h> using namespace std; My_string::My_string():size(15) { this->ptr new char[size] ; this->ptr[0]\0;//串为空串 this->len 0; }; My_string::My_str…

如何使用ssm实现疫苗预约系统+vue

TOC ssm673疫苗预约系统vue 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和笔记本的广泛运用&#xff…

Django 数据库配置以及字段设置详解

配置PostGre 要在 Django 中配置连接 PostgreSQL 数据库&#xff0c;并创建一个包含“使用人”和“车牌号”等字段的 Car 表 1. 配置 PostgreSQL 数据库连接 首先&#xff0c;在 Django 项目的 settings.py 中配置 PostgreSQL 连接。 修改 settings.py 文件&#xff1a; …