群晖NAS本地部署并运行一个基于大语言模型Llama2的个人本地聊天机器人

前言

本文主要分享如何在群晖 NAS 本地部署并运行一个基于大语言模型 Llama 2 的个人本地聊天机器人并结合内网穿透工具发布到公网远程访问。本地部署对设备配置要求高一些,如果想要拥有比较好的体验,可以使用高配置的服务器设备.

目前大部分大语言模型的产品都是基于网络线上的,如果我们本地想自己部署一个自己的大语言模型,该如何操作呢,下面介绍一款可以在自己本地部署运行的大语言模型 Llama 2

Llama 2 是一款开源的大语言模型,其中训练的数据目前已经达到 7B 级别,在上下文长度为 4K 下的单轮与多轮对话中表现出色,部署运行 Llama 2 同时需要借助一个框架 Ollama.

Ollama 是一个强大的框架,设计用于在 Docker 容器中部署大型语言模型(LLM)。它的主要功能是简化在 Docker 容器内部署和管理 LLM 的过程。Ollama 通过提供简单的安装指令,使用户能够轻松地在本地运行大型开源语言模型.

借助 Ollama 框架可以很方便运行 Llama2 大语言模型,同时,为了方便与模型进行交互,还需要部署一个 web 交互 界面 Chatbot-Ollama.

Chatbot-Ollama 是一个基于 Ollama 框架的聊天机器人前端应用。它利用 Ollama 框架提供的接口和功能,将大型语言模型(LLM)集成到聊天机器人中,使其能够与用户进行交互,并提供各种聊天机器人服务。

Chatbot-Ollama 接入本地 Ollama 框架运行的 Llama2 大语言模型,使我们可以很轻松简便在本地创建一个聊天机器人.Chatbot-Ollama 同时也是基于 docker 本地部署的,本地部署,只能局限于本地访问,无法做到提供远程给其他人访问,下面我们还需要安装一个内网穿透工具 cpolar,使得本地聊天机器人可以被远程访问.

1. 拉取相关的 Docker 镜像

运行 Llama 2 需要借助 Ollama 镜像,对语言模型进行交互需要用到 Chatbot-Ollama 前端界面,所以我们需要拉取这两个 docker 镜像,本例群晖版本由于无法直接在群晖控制面板 docker 界面搜索下载镜像,所以采用命令行方式进行镜像下载,首先开启群晖 ssh 连接,然后使用工具通过 ssh 连接上群晖,分别执行下面 docker 命令 拉取

*拉取 Ollama 镜像命令

sudo docker  pull ollama/ollama:latest

*拉取 Chatbot-Ollama 镜像命令

sudo docker  pull ghcr.io/ivanfioravanti/chatbot-ollama:main

拉取成功后,我们可以在 Docker 界面看到拉取的两个镜像,下面开始运行两个镜像,首先运行 ollama

image-20240228134827663

2. 运行 Ollama 镜像

选中镜像,点击运行进入配置界面,名称无需设置,默认即可,然后点击下一步

image-20240228140210393

输入外部访问的端口,和容器内部端口一致,填写 11434 即可,然后点击下一步

image-20240228140324795

然后点击完成即可运行 ollama

image-20240228140944482

运行后,打开容器界面,可以看到运行的服务,下面开始下载运行 Llama 2 模型,点击选中 ollama 容器,点击操作

image-20240228141509408

然后打开终端机,进入终端命令界面

image-20240228141933061

然后选择左边新增一个 bash 命令界面

image-20240228142029589

然后在 bash 命令界面,执行ollama run llama2命令,接着等待下载即可,最后出现 success,表示下载运行 Llama 2 模型成功,下载完成后可以关闭掉窗口.这样 ollama 容器启动,并运行 Llama 2 模型就成功了,下面运行 chatbot-ollama 镜像,配置前端交互界面

image-20240228142952591

3. 运行 Chatbot Ollama 镜像

选中我们下载的镜像,点击运行,开始进行设置

image-20240228143332721

名称可以默认,直接点击下一步

image-20240228143615754

设置对外端口,本例设置 3001,具体可以自己自定义,这个端口也是我们浏览器上 web 访问的端口

image-20240228143700098

然后设置一个环境变量,该变量就是连接我们上面运行 Ollama 框架服务的地址,我们设置本地地址:http://群晖局域网IP:11434即可,设置完成点击下一步,然后直接点击完成即可,chatbot Ollama 镜像就运行成功了,接下来我们进行本地访问.

image-20240228151028916

4. 本地访问

上面我们运行设置 chatbot ollama 的对外端口是 3001(具体以自己设置的为准),下面我们在浏览器访问群晖 3001 端口,既可看到我们的 web 交互 界面,同时,上面显示了使用的 llama2 模型,下面输入文字即可对话,这样一个本地部署的机器人就完成了,对话的响应速度取决于设备的配置,尽量使用高配置的服务器运行部署哦,本地完成后,我们接下来设置远程也可以访问,下面安装 cpolar 工具,实现无公网 IP 也可以远程访问我们的聊天机器人界面!

image-20240228144800166

5. 群晖安装 Cpolar

点击下面 Cpolar 群晖套件下载地址,下载相应版本的群晖 Cpolar 套件

https://www.cpolar.com/synology-cpolar-suite,

20221222170135

打开群晖套件中心,点击右上角的手动安装按钮。

image-20240111165335915

选择我们本地下载好的 cpolar 套件安装包,然后点击下一步

image-20240111165603922

点击同意按钮,然后点击下一步

image-20240111165702028

最后点击完成即可。

image-20240111165721365

安装完成后,在外部浏览器,我们通过群晖的局域网ip地址9200端口访问 Cpolar 的 Web 管理界面,然后输入 Cpolar 邮箱账号与密码进行登录,如无账号可去官网注册:

cpolar 官网地址:https://www.cpolar.com/

image-20230612165349594

6. 配置公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个 chatbot 的公网地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择 http
  • 本地地址:3001 (本地访问的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择 China

点击创建

image-20240228151510280

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是 http 和 https,下面我们使用生成的 http 地址访问

image-20240228151723949

7. 公网访问

使用上面 cpolar 生成的 http 地址,在浏览器访问,同样可以看到聊天机器人主界面,公网地址访问成功,无需公网 IP,无需云服务器,即可把我们本地聊天机器人发布到公网进行访问!

image-20240228152929542

小结

为了更好地演示,我们在前述过程中使用了 cpolar 生成的隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在 24 小时内会发生随机变化,更适合于临时使用。

我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:chatbot.cpolar.cn),这样更显正式,便于流交协作。

8. 固定公网地址

由于以上使用 Cpolar 所创建的隧道使用的是随机公网地址,24 小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn 已备案】

注意需要将 cpolar 套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn 已备案】

登录 cpolar 官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20240228152456948

保留成功后复制保留成功的二级子域名的名称

image-20240228152519922

返回登录 Cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20240228152612455

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240228152638853

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名的名称域名

image-20240228152714604

最后,我们使用固定的公网 http 地址访问,可以看到同样访问成功,这样一个固定且永久不变的公网地址就设置好了!

image-20240228152806444

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

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

相关文章

律所优选管理软件排名:Alpha法律智能操作系统领先行业

面对庞大复杂的管理体量,律所一体化建设面临的首要问题便是信息化系统的建设与应用,即统一管理平台的问题。Alpha法律智能操作系统集法律大数据、律所管理、人工智能于一体,从业务、人员、信息三个板块最大限度支持律所数字化建设&#xff0c…

电脑桌面文件夹删除不了怎么办?6种方法快速解决,建议收藏!

桌面文件夹删不掉怎么办?有时会遇到桌面上的文件夹无法删除的问题,这是由于文件夹被系统进程或某些应用占用,或者是由于权限设置等原因造成的。以下是解决桌面文件夹无法删除问题的方法,帮助你有效地清理桌面环境。 桌面文件夹删不…

南京邮电大学计算机网络实验二(网络路由器配置RIP协议)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验步骤四、实验小结(包括问题和解决方法、心得体会、意见与建议等)五、报告资源 一、 实验目的和要求 掌握思科路由器的运行过程,掌握思科路由器的硬件连线与接口,掌…

HNU-计算机系统(CSAPP)实验一 原型机vspm1.0

一、题目 【实验目的】 (1)了解冯诺伊曼体系结构; (2)理解指令集结构及其作用; (3)理解计算机的运行过程,就是指令的执行过程,并初步掌握调试方法。 【实…

黑马苍穹外卖4 店铺营业状态设置+Redis基础

店铺营业状态设置 Redis MySQL Java并发 JavaMVC 计算机网络 操作系统 算法,后端面试主要是这些,外加项目 Redis 数据库,基于内存存储的key-value结构。 mysql是磁盘存储,通过二维表存储。 在文件夹目录打开cmd 服务端&#xf…

HNU操作系统2023期中考试试卷及参考答案

本试题参考 甘晴void 的CSDN博客【2.2】操作系统OS_甘晴void的博客-CSDN博客,本意为期中复习自用,答案在其基础上进行进一步完善,若有错误还请指正! 第一题:基础题(20分) 1.1(4分&a…

Windows反截屏开发实现

文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力,所谓反截屏就是我们无法通过截图软件(微信,QQ,截图等程序)截取桌面的…

lock-锁的概念

锁的简介 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免发生资源争抢) 在并发环境下,多个线程会对同一个资源进行争抢,可能会导致数据不一致的问题。为了解决这一问题,需要通过一种抽象的锁来对资源进行…

springboot + Vue前后端项目(第十八记)

项目实战第十八记 写在前面1. 前台页面搭建(Front.vue)2. 路由3.改动登录页面Login.vue4. 前台主页面搭建Home.vue总结写在最后 写在前面 本篇主要讲解系统前台搭建,通常较大的项目都会搭建前台 1. 普通用户登录成功后前台页面效果&#xf…

RestTemple请求GET接口403

问题描述 使用oss接口获取资源的时候,通过浏览器可以直接下载,在代码中使用RestTemplate的get方式访问的时候,出现403错误 问题排查 因为返回状态码是403,就想着是不是授权问题,因为有的接口是有防抓取规则的&…

Java实现自动定时任务配置并判断当天是否需要执行示例

最近接到一个需求,用户要能配置一个定时循环的任务,就是和手机闹钟循环差不多,设置好比如周一、周二、周三,那么在这几天内这个任务就需要自动执行 需求不复杂,首先我需要判断当前是周几,当然用户说了让我…

【廉颇老矣,尚能饭否】传统的数据仓库是否还能发挥作用?

引言:随着数字化转型的深入和大数据技术的发展,大数据平台、数据中台和和数据湖技术不断涌现,给人感觉传统的数据仓库技术已经过时,廉颇老矣,不能应对新的挑战,在数字化转型中,不能发挥重要作用…

第4章 工程经济评价指标 作业

第4章 工程经济评价指标 作业 一单选题&#xff08;共27题&#xff0c;100分&#xff09; (单选题)利息备付率是指( )与应付利息费用的比值。 A. 息税前利润 B. 利润总额 C. 净利润 D. 营业收入 正确答案: A:息税前利润; (单选题)当净现值( )0时,该项目不可行。 A. < B. …

界面构件开发之RC文件

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);gtk_rc_parse("./mainrc");GtkWidget *winN…

珈和科技和比昂科技达成战略合作,共创智慧农业领域新篇章

6月14日&#xff0c;四川省水稻、茶叶病虫害监测预警与绿色防控培训班在成都蒲江举办。本次培训班由四川省农业农村厅植物保护站主办&#xff0c;蒲江县农业农村局、成都比昂科技筹办。四川省农业农村厅植物保护站及四川省14个市州36个县植保站负责人进行了观摩学习。 武汉珈…

轻松选购指南:如何挑选3D建模和3D渲染的高效计算机?

选择最适合 3D 建模和3D渲染的计算机可能是一项艰巨的任务&#xff0c;特别是对于初学者来说。有很多因素需要考虑&#xff0c;包括处理器、显卡、内存和存储容量。 如果你计划购买一台计算机或利用3D产品渲染服务&#xff0c;那么你必须了解需要考虑的特性。以下是选择3D建模…

数据结构(中)

完全二叉树的第6层有10个结点&#xff0c;那么有&#xff08;21&#xff09;个叶子结点。 10-52*2*2*2 设树中某结点不是根结点&#xff0c;则离它最近的祖先结点是双亲结点 一颗有5个结点的深度为3的二叉树采用顺序存储方式存储&#xff0c;存储数组的大小至少为7 看深度&…

python自动化系列:自动复制一个工作簿的所有工作表到其他工作簿

作品介绍 作品名称&#xff1a;自动复制一个工作簿的所有工作表到其他工作簿 开发环境&#xff1a;PyCharm 2023.3.4 python3.7 用到的库&#xff1a;os、xlwings 作品效果&#xff1a; 实现过程 一、代码设计 以下是代码的详细说明&#xff1a; 导入模块&#xff1a; …

数字乡村:绘就乡村振兴的智慧新画卷

在乡村振兴战略的宏伟蓝图下&#xff0c;“数字乡村”作为新时代农村现代化的重要抓手&#xff0c;正悄然改变着中国乡村的面貌。本文旨在深度剖析数字乡村建设的核心价值、关键技术、成功案例以及未来展望&#xff0c;为乡村振兴战略提供前瞻性的思考与启示。 数字乡村的核心价…

【Golang - 90天从新手到大师】Day09 - string

系列文章合集 Golang - 90天从新手到大师 String 一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据&#xff0c;但是通常是用来包含人类可读的文本。 len()返回字符串字节数目&#xff08;不是rune数&#xff09;。 通过索引可以访问某个字节值&#xff0c;0…