Linux快速部署大语言模型LLaMa3,Web可视化j交互(Ollama+Open Web UI)

本文在个人博客同步发布,前往阅读

1 介绍

本文将介绍使用开源工具Ollama(60.6k⭐)部署LLaMa大模型,以及使用Open WebUI搭建前端Web交互界面的方法。

我们先来过一遍几个相关的概念,对这块比较熟悉的朋友可跳过。

1.1 大规模语言模型

大规模语言模型(Large Language Models, LLMs),顾名思义是指在大量语料数据的基础上训练成的模型,能够模拟人类的语言风格生成较为生动的文本。这类模型的主要特征有:

  • 规模大:训练所使用的数据量非常庞大,有时超过1000亿个参数。
  • 复杂性高:模型结构比较复杂
  • 具有较好的上下文理解能力:大规模语言模型可以理解文本的上下文和细微差别

1.2 LLaMa

LLaMA是一种大规模语言模型,由Meta AI基于Transformer深度学习框架开发。该模型旨在生成各种风格的高质量文本(例如创意写作、对话甚至诗歌),能够胜任以下工作:

  • 自然语言处理(NLP):理解和生成自然语言。
  • 机器学习:根据数据和算法学习新的信息和技能。
  • 对话生成:可以与用户进行对话,并根据情况生成合适的回应。

1.3 Ollama

官网:Ollama

API文档:ollama/docs/api.md at main · ollama/ollama (github.com)

支持的模型列表:library

一款可以快速部署大模型的工具。

1.4 Open WebUI

官网:Open WebUI

相关介绍及源码:open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI) (github.com)

Open WebUI 是一个可视化的Web交互环境,它拥有清新简约的UI风格,具有可扩展、功能丰富、用户友好、自托管的特点,可以完全离线运行。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。

2 部署LLM服务

本文介绍的方法使用于Linux系统,同样适用于Windows系统的WSL(安装方法可参见我的这篇文章)。

2.1 部署Ollama

1、下载Ollama

Linux系统的安装命令如下:

curl -fsSL https://ollama.com/install.sh | sh

※此外官方还提供了macOS和Windows的下载方式。

2、下载llama3模型

ollama run llama3

※在这里可以看到该命令的相关介绍。

上述命令将自动拉取模型,并进行sha256验签。处理完毕后自动进入llama3的运行环境,可以使用中文或英文进行提问,ctrl+D退出。

3、配置服务

为使外网环境能够访问到服务,需要对HOST进行配置。

打开配置文件:vim /etc/systemd/system/ollama.service,根据情况修改变量Environment

  • 服务器环境下:Environment="OLLAMA_HOST=0.0.0.0:11434"
  • 虚拟机环境下:Environment="OLLAMA_HOST=服务器内网IP地址:11434"

3、启动服务

启动服务的命令:ollama serve

首次启动可能会出现以下两个提示:

Couldn’t find ‘/home/用户名/.ollama/id_ed25519’. Generating new private key.

该提示表示文件系统中不存在ssh私钥文件,此时命令将自动帮我们生成该文件,并在命令行中打印相应的公钥。

Error: listen tcp 127.0.0.1:11434: bind: address already in use

看到该提示,大概率服务已在运行中,可以通过netstat -tulpn | grep 11434命令进行确认。

  • 若命令输出的最后一列包含“ollama”字样,则表示服务已启动,无需做额外处理。
  • 否则,可尝试执行下列命令重启ollama:
# ubuntu/debian
sudo apt update
sudo apt install lsof
stop ollama
lsof -i :11434
kill <PID>
ollama serve

# centos
sudo yum update
sudo yum install lsof
stop ollama
lsof -i :11434
kill <PID>
ollama serve

如果您使用的是MacOS,可在🔗这里找到解决方法。

4、在外网环境验证连接

方法一:执行curl http://ip:11434命令,若返回“Ollama is running”,则表示连接正常。

方法二:在浏览器访问http://ip:11434,若页面显示文本“Ollama is running”,则表示连接正常。

2.2 Ollama常用命令

1、进入llama3运行环境:ollama run llama3

2、启动服务:ollama serve

3、重启ollama

systemctl daemon-reload
systemctl restart ollama

4、重启ollama服务

# ubuntu/debian
sudo apt update
sudo apt install lsof
stop ollama
lsof -i :11434
kill <PID>
ollama serve

# centos
sudo yum update
sudo yum install lsof
stop ollama
lsof -i :11434
kill <PID>
ollama serve

5、确认服务端口状态:netstat -tulpn | grep 11434

3 部署Open WebUI

1、下载Open WebUI

Open WebUI基于docker部署,docker的安装方法可以参考这篇知乎文章。

Open WebUI既可以部署在服务端,也可以部署在客户端:

# 若部署在客户端,执行:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

# 若部署在服务端,执行:
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

如果您的机器在国内,建议将--restart的参数值替换为ghcr.nju.edu.cn/open-webui/open-webui:main,下载速度会快非常多(见up主小杨生存日记的这篇文章)。

2、检查相关配置

下载完之后,就可以在浏览器访问了,地址为http://loacalhost:3000(客户端部署)或http://服务器ip:3000

页面加载完成后(这个过程可能需要一些时间),新注册一个账号并登录。

登录之后,点击页面顶端的齿轮⚙图标进入设置:

  1. 侧边导航栏-General,将语言设置为中文
  2. 侧边导航栏-连接,若“Ollama 基础 URL”这一项为http://host.docker.internal:11434,则表示ollama服务正常且连接成功;如果是空的,则需要回头检查一下ollama服务了
  3. 侧边导航栏-模型,一般会自动拉取ollama服务上部署好的模型,可选模型参看官方的这篇文档
  4. 其它的项目根据需要设置即可

3、选择模型

在顶端下拉框选择好模型,就可以开始提问啦!
在这里插入图片描述

参考文章

  • macOS + Ollama + Enchanted,本地部署最新 Llama3 - 掘金 (juejin.cn)
  • 服务器部署开源大模型完整教程 Ollama+Gemma+open-webui - 哔哩哔哩 (bilibili.com)
  • Ollama管理本地开源大模型,用Open WebUI访问Ollama接口 - 知乎 (zhihu.com)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【我的Java学习笔记-2】

程序初体验 JDK的安装目录 bin&#xff1a;该路径下存放了各种工具命令。其中比较重要的有:javac和java&#xff08;重点掌握&#xff09;conf&#xff1a;该路径下存放了相关配置文件。include&#xff1a;该路径下存放了一些平台特定的头文件。jmods&#xff1a;该路径下存…

亿道三防onerugged|三防车载电脑在港口货柜车上的应用

作为一个专业人员&#xff0c;我深知在港口货柜车运输中&#xff0c;三防车载电脑的应用对于提高工作效率和解决实际问题的重要性。亿道三防onerugged系列产品的三防车载电脑以其卓越的功能特点和可靠性&#xff0c;为港口货柜车运输带来了深远的影响。 首先&#xff0c;三防车…

BUUCTF--web(1)

1、[极客大挑战 2019]Http1 1.http报文请求&#xff1a; 1、请求行&#xff1a; 第一部分是请求方法&#xff0c;常见包括GET、POST、OPTIONS&#xff08;我目前还没有见过我是菜鸡&#xff09; 第二部分是url 第三部分是HTTP协议(http(Hypertext transfer protocol)超文本传…

c++多文件,cmakelist编写简单示例

记录下c多文件cmakelist编写流程&#xff1a; 目录结构大致如下&#xff1a; 1、swap.h #include <iostream> #include <vector> #include <string> using namespace std;void swap(int *a,int *b); 2、swap.cpp #include "swap.h"void swap(…

【Linux学习】​​学习Linux的准备工作和Linux的基本指令

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

【Linux】基础指令

文章目录 基础指令1. pwd 指令2. cd 指令3. ls 指令4. touch 指令5. mkdir 指令6. rmdir 和 rm 指令7. man 指令8. cp 指令9. mv 指令10. cat 指令11. more 和 less 指令12. head 和 tail 指令13. date 指令14. cal 指令15. find 指令16. grep 指令18. zip 和 unzip 指令19. ta…

Unity打开Android文件管理器并加载文件

1、在AssetStore商店中加入免费插件 2、调用代码 3、使用UnityWebRequest加载路径数据

RabbitMQ(高级)笔记

一、生产者可靠性 &#xff08;1&#xff09;生产者重连&#xff08;不建议使用&#xff09; logging:pattern:dateformat: MM-dd HH:mm:ss:SSSspring:rabbitmq:virtual-host: /hamllport: 5672host: 192.168.92.136username: hmallpassword: 123listener:simple:prefetch: 1c…

【问题实操】银河高级服务器操作系统实例分享,配置hugepages启动异常

1.问题现象 某运营商国产服务器操作系统项目&#xff0c;部署Kylin-Server-0524-aarch64服务器系统&#xff0c;内核从4.19.90-24.4升级到4.19.90-25.14。在grub中配置huagepages大页内存后&#xff0c;系统在内核启动阶段黑屏&#xff0c;只显示一个光标。grub配置如下图&…

Springboot+Vue项目-基于Java+MySQL的商业辅助决策系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现

深度学习论文: MobileNetV4 - Universal Models for the Mobile Ecosystem及其PyTorch实现 MobileNetV4 - Universal Models for the Mobile Ecosystem PDF: https://arxiv.org/pdf/2404.10518.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: ht…

Post请求中常见的Content-Type类型

Post请求中常见的Content-Type类型的结构 &#xff08;1&#xff09;application/x-www-form-urlencoded 这是浏览器原生的form表单类型&#xff0c;或者说是表单默认的类型。 下面是一个请求实例&#xff1a; 请求报文&#xff1a; 可以看得出&#xff0c;post将请求参数以k…

配置jupyter的启动路径

jupyter的安装参考&#xff1a;python环境安装jupyter-CSDN博客 1&#xff0c;背景 继上一篇python环境安装jupyter&#xff0c;里面有一个问题&#xff0c;就是启动jupyter&#xff08;命令jupyter notebook&#xff09;之后&#xff0c;页面默认显示的是启动时候的路径。 …

HarmonyOS开发案例:【使用List组件实现设置项】

介绍 在本篇CodeLab中&#xff0c;我们将使用List组件、Toggle组件以及Router接口&#xff0c;实现一个简单的设置页&#xff0c;点击将跳转到对应的详细设置页面。效果图如下&#xff1a; 相关概念 [CustomDialog]&#xff1a;CustomDialog装饰器用于装饰自定义弹窗。[List]…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式&#xff08;Routing&#xff09;是 RabbitMQ 中的一种消息传递模式&#xff0c;也称为直连模式。它允许生产者将消息发送到一个交换机&#xff0c;并指定一个或多个路由键&#xff08;routing key&#xff09;&#xff0c;交换机根据路由键将消息路由到与之匹配的…

【介绍下Chrome插件开发】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

使用 NVM 动态切node版本

一、安装nvm 官网链接&#xff1a; Release 1.1.9 coreybutler/nvm-windows GitHub 无脑安装直接下一步 安装完之后验证一下&#xff1a; #打开命令行输入命令 nvm 这样就是安装好了&#xff0c;然后我们开始安装node。 二、使用nvm安装node 1、去node官网获取版本号 …

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题&#xff1f;数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题&#xff1f; 也叫多目标车间调度问题。 柔性作业车间调…

什么是pytest自动化测试框架?如何安装和使用呢?

一、pytest是什么&#xff1f; pytest是一款强大的Python测试工具&#xff0c;可以胜任各种类型或级别的软件测试工作。实际上&#xff0c;越来越多的项目在使用pytest。因为pytest会提供更丰富的功能&#xff0c;包括assert重写、第三方插件&#xff0c;以及其他测试工具无法…