群晖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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ai】tx2-nx:安装深度学习环境及4.6对应pytorch

参考:https://www.waveshare.net/wiki/Jetson_TX2_NX#AI.E5.85.A5.E9.97.A8 英伟达2021年发布的的tritionserver 2.17 版本中,backend 有tensorflow1 和 onnxruntime ,他们都是做什么用的,作为backend 对于 triton 推理server意义是什么,是否应该有pytorch? Triton Infer…

PS给logo加白色描边

步骤1:打开你的Logo文件 步骤2:选择Logo层 在“图层”面板中找到你的Logo所在的图层。如果你的Logo是在背景图层上,可以将它转换为普通图层(右键点击背景图层,选择“从背景图层转换”)(此处也…

五大数据防泄漏系统排名|高效实用的防泄漏软件有哪些

在数字化时代,数据泄露已成为企业面临的重要安全挑战之一。为了有效应对这一挑战,企业需要借助先进的数据泄露防护系统来保护其敏感信息免受非法访问、使用和泄露。以下是五大备受推崇的数据泄露防护系统,它们各具特色,功能强大&a…

查看nginx安装/配置路径,一个服务器启动两个nginx

查看nginx安装/配置路径 查看nginx的pid: ps -ef | grep nginx查看pid对应服务的启动路径 ll /proc/2320/exe使用检查配置文件命令,查看配置文件位置 /usr/local/nginx/sbin/nginx -t一个服务启动两个nginx 拷贝一份程序,cpbin是我自己创…

阿里云服务器提醒漏洞要不要打补丁?

我们自己用的电脑一旦发现漏洞,往往是第一时间进行打补丁重启等等,但是作为服务器而言,往往没有这个习惯,为什么?因为害怕服务器打补丁以后,重启后出现打不开的情况,毕竟稳定的运行似乎在这种情…

java.io.eofexception:ssl peer shut down incorrectly

可能是因为 1)https设置 2)超时设置 FeignConfig.java package zwf.service;import java.io.IOException; import java.io.InputStream; import java.security.KeyStore;import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory;import org.apac…

北斗短报文终端在应急消防通信场景中的应用

在应对自然灾害和紧急情况时,北斗三号短报文终端以其全球覆盖、实时通信和精准定位的能力,成为应急消防通信的得力助手。它不仅能够在地面通信中断的极端条件下保障信息传递的畅通,还能提供精准的位置信息,为救援行动提供有力支持…

Adams 插件Plugin二次开发教程

通过cmd或python开发的Adams程序,可以通过执行cmd(python)命令的方式直接运行,也可以根据cmd教程中提供的创建菜单和对话框的方式调用这些程序,当然更合适的方式是通过插件的方式对二次开发的程序进行管理,…

Java程序员Python一小时速成

背景 由于最近要开发一些AI LLM(Large Language Model 大语言模型)应用程序,然后又想使用LangChain(LangChain 是一个用于构建和操作大语言模型(LLMs)的框架,旨在帮助开发者更方便地集成和使用…

Shell脚本、相关命令;重定向、管道符、变量相关命令讲解

目录 Shell脚本 概念 执行命令流程的交互区别 交互式 非交互式 Shell脚本应用场景 Shell的作用 Shell的作用 —— 命令解释器,“翻译官” 列出系统中全部解释器 实验 脚本的基本书写格式和执行命令 在子bash下执行脚本 指定解释器的方式执行脚本 指定…

代码讲解——ssm+jsp+maven项目目录结构说明

1 applicationContext.xml 应用上下文配置 2 db.properties 数据库配置 3 log4j.properties日志配置 4 mybatis-config.xml mybatis配置 5 springmvc.xml springmvc配置

万元主力机型该选什么固态硬盘,佰维NV7200、NV3500 的实用一定要让你知道

固态硬盘:变革存储技术,探索无尽可能 今年的固态市场价格一直是稳中上涨。 固态的价格上涨有技术上的因素,也有人工成本上的因素。好在国产固态技术的崛起,在固态价格上涨之下,依旧能选购到性价比和性能出众的型号。…

Elasticsearch搜索引擎(初级篇)

1.1 初识ElasticSearch | 《ElasticSearch入门到实战》电子书 (chaosopen.cn) 目录 第一章 入门 1.1 ElasticSearch需求背景 1.2 ElasticSearch 和关系型数据库的对比 1.3 基础概念 文档和字段 索引和映射 第二章 索引操作 2.0 Mapping映射属性 2.1 创建索引 DS…

【SEMI-e ·国际半导体深圳展】| 06月26-28日唯创知音语音芯片供应商 邀您来观展

世界聚焦半导体,产业规模空前!一场高端产业研学盛会即将如约而至。 SEMI-e 第六届2024国际半导体展深圳站,2024年06月26-28日将在深圳国际会展中心(宝安)开展,展会展出面积60000平方米,汇聚全国…

鄂州职业大学2024年成人高等继续教育招生简章

鄂州职业大学,作为一所享有盛誉的高等学府,一直以来都致力于为社会培养具备专业技能和良好素养的优秀人才。在成人高等继续教育领域,该校同样表现出色,为广大渴望继续深造、提升自身能力的成年人提供了宝贵的学习机会。 随着社会…

【C语言】12.指针与数组的关系

一、数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; }通过上述代码输出结果我们发现结果相同&#xff0c;因此我们得出结论&a…

李宏毅深度学习03——神经网络训练不起来怎么办

视频链接 如果Optimization失败的时候&#xff0c;怎么把梯度下降做的更好&#xff1f; 只考虑这种情况&#xff0c;不考虑overfitting 局部最小值&#xff08;local minima&#xff09;和鞍点&#xff08;saddle point&#xff09; 为什么Optimization会失败&#xff1f; …

南京邮电大学计算机网络实验一(网络操作系统的安装与配置)

文章目录 一、 实验目的和要求二、 实验环境(实验设备)三、 实验原理和步骤四、 实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;&#xff08;一&#xff09;问题和解决方法&#xff08;二&#xff09;心得体会&#xff08;三&#xff09;意见与建…

爬山算法优点

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

【stm32单片机应用】基于I2C协议的OLED显示(利用U82G库)

一、U8g2库 &#xff08;一&#xff09;U8g2简介 U8g2 是一个用于单色和彩色显示的嵌入式图形库&#xff0c;特别适用于单色OLED、LCD显示屏的驱动。它是对早期U8g库的扩展和改进&#xff0c;提供了更多功能和更广泛的硬件支持。U8g2作为一款强大而灵活的嵌入式图形库&#x…