当前位置: 首页 > news >正文

ollama+open-webui,本地部署自己的大模型

目录

一、效果预览

二、部署ollama

1.ollama说明

2.安装流程

2.1 windows系统

2.1.1下载安装包

2.1.2验证安装结果

2.1.3设置模型文件保存地址

2.1.4拉取大模型镜像

2.2linux系统

2.2.1下载并安装ollama

2.2.2设置环境变量

2.2.3拉取模型文件

三、部署open-webui

1.open-webui介绍

2.安装流程

2.1windows

2.1.1下载源码

2.1.2用pycharm新建一个虚拟环境​编辑​​

2.1.3安装nodejs依赖

2.1.4安装python依赖

2.1.5启动webui

2.2linux

2.2.1安装nodejs

2.2.2安装miniconda3

2.2.3创建python虚拟环境

2.2.4安装open-webui并启动

四、注意事项


一、效果预览

基于ollama和open-webui,本地部署类似chatgpt的网页版大模型。先看看部署效果

如果不习惯英文界面,可以设置成中文界面

二、部署ollama

1.ollama说明

ollama的官网https://www.ollama.com/

ollama的github项目地址https://github.com/ollama/ollama

ollama,是一个大模型容器管理框架,它可以帮助用户快速在本地运行大模型,类似于docker。ollama可以运行在GPU或CPU,它会自动根据你电脑硬件,选择GPU或CPU运行。

windows只支持win10或更高的版本,官方说明如下。

ollama 支持具有 5.0+ 计算能力的 Nvidia GPU,显卡计算能力如下图所示

ollama也支持AMD,详见官方文档说明ollama/docs/gpu.md at main · ollama/ollama (github.com)https://github.com/ollama/ollama/blob/main/docs/gpu.md

ollama管理的大模型都是经过量化后的大模型,所以它的模型文件会小很多。以ollama中llama3-8b为例,llama3-8b原始模型大小接近15G,量化模型的只有4.7G,需要的硬件条件大大降低(老破小的福音)。

2.安装流程

2.1 windows系统

windows只支持win10或更高的版本。

2.1.1下载安装包

windows系统,直接下载安装程序(默认是最新的版本),下载完成后,直接点击安装即可,默认安装在C:\Users\Administrator\AppData\Local\Programs\Ollama。
Download Ollama on Windowshttps://ollama.com/download

2.1.2验证安装结果

安装完成后,电脑右下角任务栏处显示ollama图标。安装后,打开cmd命令窗口,输入ollama -v查看安装版本,如果不小心关闭了ollama程序,输入ollama serve即可重新启动ollama服务,ollama自带运行日志管理。

ollama serve默认端口为127.0.0.1:11434,这个端口在部署open-webui时需要用到,建议默认即可。如果需要修改默认端口,则需要添加一个环境变量OLLAMA_HOST=0.0.0.0:11434。

2.1.3设置模型文件保存地址

设置模型文件保存位置,打开系统环境变量配置,添加一个环境变量OLLAMA_MODELS=D:\huggingface\ollama(自己指定任意一个文件夹路径),然后点确定。

如果不设置环境变量,模型文件会自动保存在C盘。时间久了,C盘很容易存满。

2.1.4拉取大模型镜像

以下载llama3-8b为例子,打开ollama官网Ollama,点击右上角Models型。

重新打开一个cmd窗口,输入ollama run llama3:8b。模型会拉取文件,然后运行模型。如果只想下载模型,则输入ollama pull llama3:8b。需要运行的时候再输入ollama run llama3:8b即可。

模型下载速度很快(不需要魔法),基本上可以达到满速,如果自己电脑下载很慢,ctrl+c中止下载,再重新下载镜像。

不知道为啥,文件快要下载完成的时候会突然变慢。此时ctrl+c中止后,再重新下载镜像,下载速度又快了。

下载完成后,如果界面如下,则表示llama3:8b可以正常对话了。

如果出现Error: llama runner process no longer running: 3221225785。很有可能是ollama版本与操作系统不和谐的关系,默认下载的是最新版,此时需要降低ollama版本至0.1.31。博客首页有ollama0.1.31版本下载链接。网盘下载链接

2.2linux系统

2.2.1下载并安装ollama
curl -fsSL https://ollama.com/install.sh | sh
2.2.2设置环境变量

设置默认端口0.0.0.0:11434,这种情况可以允许所有网络请求,存在一定安全风险,个人建议最好将OLLAMA_HOST改成127.0.0.1:11434。

echo export OLLAMA_HOST="0.0.0.0:11434">>~/.bashrc

设置模型默认下载地址

echo export OLLAMA_MODELS=/root/ollama/models>>~/.bashrc

查看设置情况

cat ~/.bashrc

激活配置

source ~/.bashrc

启动ollama 服务

ollama serve
2.2.3拉取模型文件

重新打开一个shell终端

ollama run llama3:8b

三、部署open-webui

1.open-webui介绍

Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种LLM运行器,包括 Ollama 和 OpenAI 兼容的 API。

open-webui项目地址https://github.com/open-webui/open-webui/tree/main

2.安装流程

项目运行需要python和nodejs环境

node.js安装及环境配置超详细教程【Windows系统安装包方式】_node 0.12.6 安装 node-echarts 包-CSDN博客

2.1windows

2.1.1下载源码

从github上下载open-webui源码,无法打开github网站的也可以从gitee等国内镜像上搜索open-webui。我用的是pycharm运行项目,然后复制.env.example文件为.env。

​​

2.1.2用pycharm新建一个虚拟环境​​
2.1.3安装nodejs依赖

设置npm下载镜像源,提高下载速度

npm config set registry https://mirrors.huaweicloud.com/repository/npm/
npm i
npm run build
2.1.4安装python依赖
cd backend
pip install -r requirements.txt
2.1.5启动webui

2.1.5.1windows系统,运行start_windows.bat。linux系统运行start.sh文件。

2.1.5.2执行脚本后,会自动从huggingface.co下载sentence-transformers模型文件all-MiniLM-L6-v2,服务器在国外,无法下载,所以先从国内镜像网站上将模型和配置文件下载到本地。HF-Mirror - Huggingface 镜像站

​​

2.1.5.3打开backend/apps/rag/utils.py文件,修改第318行。重新执行start_windows.bat或start.sh

# 原代码为
embedding_model_repo_path = snapshot_download(**snapshot_kwargs)# 替换为本地文件路径
embedding_model_repo_path = r'D:\huggingface\all-MiniLM-L6-v2' #embedding_model_repo_path = snapshot_download(**snapshot_kwargs)

2.1.6启动后的界面,网页地址在最下面,点击即可打开webui

​​

2.2linux

2.2.1安装nodejs
 #1.安装最新版nodejscurl -sL https://deb.nodesource.com/setup_20.x -o nodesource_setup.shbash nodesource_setup.shapt install nodejs -y#2.测试nodejs npm是否安装正确echo nodejs版本为:`node -v`echo npm 版本为:`npm -v`#3.设置npm镜像源npm config set registry https://mirrors.huaweicloud.com/repository/npm/

2.2.2安装miniconda3

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash && source /root/.bashrc
# ~/miniconda3/bin/conda init zsh
#设置conda镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
#设置pip镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
2.2.3创建python虚拟环境
#1.构建虚拟环境
conda create -n open-webui python=3.8
#2.更新bashrc中的环境变量
conda init bash && source /root/.bashrc
#3.切换到创建的虚拟环境
conda activate open-webui
2.2.4安装open-webui并启动
#1.拉取源码
cd ~
git clone https://gitee.com/pandaworker/open-webui.git
cd open-webui
cp -RPp .env.example .env
#2.安装前端依赖
npm i
npm run build
#3.安装后端依赖
cd backend
pip install -r requirements.txt
#4.启动后端
bash start.sh

四、注意事项

1.打开网页后,注册的第一个用户默认为管理员账号,以后注册的账号角色均为pending(待分配权限)。

2.修改权限的方法。方法一:数据存放在backend/data/webui.db中,可以用数据库可视化软件打开数据库,将账号由pending修改为user或admin。方法二:修改backend/config.py文件中第358行,DEFAULT_USER_ROLE = os.getenv("DEFAULT_USER_ROLE", "pending"),将pending修改为user(普通用户)或admin(管理员),以后每次注册的账号就不需要管理员分配权限。

3.ollama run llama3无法运行,提示Error: llama runner process no longer running: 3221225785。很有可能是ollama版本与操作系统不和谐的关系,默认下载的是最新版,此时需要降低ollama版本至0.1.31。博客首页有ollama0.1.31版本下载链接。

相关文章:

ollama+open-webui,本地部署自己的大模型

目录 一、效果预览 二、部署ollama 1.ollama说明 2.安装流程 2.1 windows系统 2.1.1下载安装包 2.1.2验证安装结果 2.1.3设置模型文件保存地址 2.1.4拉取大模型镜像 2.2linux系统 2.2.1下载并安装ollama 2.2.2设置环境变量 2.2.3拉取模型文件 三、部署open-webui…...

Oracle EBS 12.1和APEX 集成时 Apache的配置代理

在有些场景下,apex的前端服务不是和oracle EBS 应用部署在同一个服务器上或者要求apex和访问地址和EBS公用同一个域名同一个端口,那么怎么才能做到用EBS 的域名和端口来实现对apex的访问呢 通过配置代理规则解决,以Oracle EBS 12.1.3 为例&am…...

hive开窗函数边界值ROWS BETWEEN 和 RANGE BETWEEN区别

目录 一、概念 1.rows between ... and ... 2.range between ... and ... 二、语法 1.关键词含义 一、概念 1.rows between ... and ... rows:指以行号来决定frame的范围,是物理意义上的行。 2.range between ... and ... range:指以当…...

HTML第一节

一.HTML标签 注意:1.双标签是要包裹内容的 (单标签单独记) 二.HTML骨架 1.骨架规则 注意:1.title为网页的名字 2.VS code自动生成骨架 注意:1.先输入感叹号(必须为英文) 再按回车 三.标签间的…...

Google第三方库详解------ProtoBuf详解 + 样例(5万字详解!)

目录 前言: 提示: 插件 入门: ProtoBuf普通字段类型: 编译命令: 序列化与反序列化: Proto3语法: 字段规则:数组类型 应用 将通讯录数据序列化后写入文件 工具介绍&#x…...

机器学习数学通关指南——泰勒公式

前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 泰勒公式是用多…...

如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?

如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗? DeepSeek R1 思考 35 秒 思考过程 好的,用户的问题是关于在Android客户端使用Kotlin处理后台返回的Long类型数据为n…...

ai-financial-agent - 为金融投资打造的AI代理

探索人工智能在投资研究中的应用。本项目仅用于**教育**目的,不用于真实交易或投资。 作者声明: 本项目仅用于教育和研究目的。 不用于真实交易或投资不提供任何保证或担保过去的表现并不代表未来的结果Creator 对经济损失不承担任何责任咨询财务顾问…...

学习路程三 数据加载及向量化

前序 之前简单粗暴将LangChain分了几块,现在就挨着了解学习每块内容。今天主要从文档这条路来看。 本地文档这一条链路,通过加载,分割,向量化,再存储数据库 ps:看到这里还想继续实操下去,可以…...

基于GWO灰狼优化的WSN网络最优节点部署算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 无线传感器网络(Wireless Sensor Network, WSN)由大量分布式传感器节点组成,用于监测物理或环境状况。节点部署是 WSN 的关键问…...

保姆级! 本地部署DeepSeek-R1大模型 安装Ollama Api 后,Postman本地调用 deepseek

要在Postman中访问Ollama API并调用DeepSeek模型,你需要遵循以下步骤。首先,确保你有一个有效的Ollama服务器实例运行中,并且DeepSeek模型已经被加载。 可以参考我的这篇博客 保姆级!使用Ollama本地部署DeepSeek-R1大模型 并java…...

架构对比分析

您提到的两种架构描述本质上遵循相同的分层设计理念,但存在差异的原因在于 视角不同 和 硬件平台特性。以下是详细解析: 一、架构对比分析 1. 逻辑分层(通用软件设计视角) 应用层(UI/用户交互)↓ 业务逻辑…...

【每日八股】Redis篇(二):数据结构

Redis 数据类型? 主要有 STRING、LIST、ZSET、SET 和 HASH。 STRING String 类型底层的数据结构实现主要是 SDS(简单动态字符串),其主要应用场景包括: 缓存对象:可以用 STRING 缓存整个对象的 JSON&…...

windows使用命令解压jar包,替换里面的文件。并重新打包成jar包,解决Failed to get nested archive for entry

有一个jar包,需要替换里面的文件,使用解压工具打开项目,然后找到对应的子包,再次打开,然后进行手工替换重新压缩成jar包后,发现启动服务报错Failed to get nested archive for entry。 使用下面的命令可实…...

2025电商与跨境贸易实战全解析:DeepSeek赋能细分领域深度指南(附全流程案例)

🚀 2025电商与跨境贸易实战全解析:DeepSeek赋能细分领域深度指南(附全流程案例)🚀 📚 目录 DeepSeek在电商与跨境贸易中的核心价值选品与市场分析:AI驱动的精准决策Listing优化与多语言营销:提升转化率的秘密物流与供应链管理:AI赋能的效率革命客户服务与私域运营:…...

驱动开发系列39 - Linux Graphics 3D 绘制流程(二)- 设置渲染管线

一:概述 Intel 的 Iris 驱动是 Mesa 中的 Gallium 驱动,主要用于 Intel Gen8+ GPU(Broadwell 及更新架构)。它负责与 i915 内核 DRM 驱动交互,并通过 Vulkan(ANV)、OpenGL(Iris Gallium)、或 OpenCL(Clover)来提供 3D 加速。在 Iris 驱动中,GPU Pipeline 设置 涉及…...

自动驾驶中planning为什么要把横纵向分开优化?

在自动驾驶系统中,将 横向(Lateral)规划 和 纵向(Longitudinal)规划 分开优化是一种常见的设计范式,其核心原理在于 解耦车辆运动控制的多维复杂性,同时兼顾 计算效率 和 安全性约束。以下从原理…...

Linux 命令大全完整版(06)

2. 系统设置命令 pwunconv 功能说明:关闭用户的投影密码。语法:pwunconv补充说明:执行 pwunconv 指令可以关闭用户投影密码,它会把密码从 shadow 文件内,重回存到 passwd 文件里。 rdate(receive date) 功能说明&a…...

第9章:LangChain结构化输出-示例2(数字提取服务)

如何使用LangChain4j框架创建和使用多种AI服务。它通过定义接口和注解,将自然语言处理任务(如情感分析、数字提取、日期提取、POJO提取等)封装为服务,并通过LangChain4j的AiServices动态生成这些服务的实现。 本章主要讲述基于Lan…...

每天五分钟深度学习pytorch:使用Inception模块搭建GoogLeNet模型

本文重点 前面我们学习了Incetption模块,它的作用类似于vgg块对于VGG网络模型一样,本文我们使用Inception搭建GoogLeNet网络,如果使用卷积层开始从头开始搭建GoogleNet,那么这样看起来会很不清晰,我们使用已经封装好的Inception来搭建GoogLeNet网络 关键点 关键点在于I…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...