群晖NAS本地搭建可远程交互的大型语言模型LLM聊天机器人

news2024/9/22 7:24:53

文章目录

    • 前言
    • 1. 拉取相关的Docker镜像
    • 2. 运行Ollama 镜像
    • 3. 运行Chatbot Ollama镜像
    • 4. 本地访问
    • 5. 群晖安装Cpolar
    • 6. 配置公网地址
    • 7. 公网访问
    • 8. 固定公网地址

前言

本文主要分享如何在群晖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.coloradmin.cn/o/2042189.html

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

相关文章

零基础学习Redis(2) -- Redis安装与配置

Redis官方是并不支持Windows系统的,并且现在绝大部分公司都是使用的Linux,所以我们在Linux上进行安装,这里我使用的是Ubuntu 1. 安装步骤 1. 首先使用工具连接到我们的云服务器,然后输入apt指令搜索redis相关的软件包&#xff1…

【扒代码】roi_align的定义

这段代码是一个名为 roi_align 的函数的部分实现,它用于执行区域兴趣(RoI)对齐操作,通常用于计算机视觉任务中,例如目标检测和分割。这个函数的主要目的是从输入特征图中提取特定区域,并将这些区域调整到指…

8.14 Day19 Windows服务器(Windows service 2008 R2)上域的搭建 (2)

1、在活动目录中创建OU 2、OU的规划例题: 在新添加的域控制器中,使用“Active Directory用户和计算机”创建北京分公司的OU,并创建市场部、技术部和财务部等三个子OU。 若真要删除,则如下操作: 所有OU规划完成 3、域…

Docker Containerd初体验

Docker Containerd概述 ​ Containerd是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为了一个独立的项目,被纳入了Cloud Native Computing Foundation(C…

零基础学习大模型

揭秘大模型智能背后的神秘力量 前言 在这个信息爆炸的时代,人工智能(AI)已经渗透到我们生活的方方面面。其中,大模型(LLM)以其强大的语言处理能力和广泛的应用场景,成为了AI领域的一颗璀璨明珠…

用这工具开发go语言程序,谁都可以成为程序员

前言 在之前有关TitanIDE的文章中,展示了使用TitanIDE开发任何一种语言的程序都显得尤为简单,所以毫无例外的,我们在TitanIDE开发一个go程序同样简单,话不多说,上才艺 在TitanIDE开发你的第一个go程序 1.创建go项目…

【海贼王航海日志:前端技术探索】一篇文章带你走进JavaScript(二)

目录 1 -> 基础数据类型 1.1 -> 条件语句 1.1.1 if语句 1.2 -> 分支语句 1.2.1 -> switch语句 1.3 -> 循环语句 1.3.1 -> while循环 1.3.2 -> continue 1.3.3 -> break 1.3.4 -> for循环 1.4 -> 数组 1.4.1 -> 创建数组 1.4.2 -…

骂极氪背刺老车主?买车前先把握这三个原则

文 | AUTO芯球 作者 | 雷慢 极氪001的老车主该不会绝望了吧, 刚极氪官方确认了,24款极氪001无法升级到新款的浩瀚智驾, 但老款的智驾系统也会持续更新。 难怪大家要闹。 上周早些时候,我路过极氪的门店还奇怪呢, …

【乐吾乐大屏可视化组态编辑器】快速入门

大屏快速入门 乐吾乐大屏可视化设计软件 一、在线使用 https://v.le5le.com/ 二、步骤 通过本章内容,你将快速学习到大屏可视化设计平台的全流程开发 1.创建图纸 大屏可视化设计平台分为3部分,左侧为资源面板,包含了众多可被使用的方…

Javascript反调试实现判断用户是否打开了浏览器控制台

前言 晓杰最近在研究如何防止用户恶意调试前端网页代码,防止打开控制台进行调试,首先禁用了浏览器页面右键事件和F12等快捷键!然后利用了创建元素是否成功方式进行校验,具体实现代码如下。 代码 document.addEventListener(keydown, functi…

Lua调用c#

1. 类 --lua中使用C#的类非常简单 --固定套路 --CS.命名空间.类名 --Unity的类 比如 GameObject Transform等等 —— CS.UnityEngine.类名 --CS.UnityEngine.GameObject--通过C#中的类 实例化一个对象 lua中没有new 所以我们直接 类名括号就是实例化对象 --默认调用的 相当于就…

【MySQL进阶】事务、存储引擎、索引、锁

一、事务 1.概念 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向 系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 例子:转账,要求扣钱和进账…

从0开始搭建vue + flask 旅游景点数据分析系统(九):旅游景点管理之增删改查

这一期来做旅游景点数据的增删改查 先看下我们做好的效果是这样的: ## 1 后台接口 这里的接口已经考虑到了分页的情况,因为前端的表格是带有分页的,接受的前端传过来的get参数为 title 、page、 limit ,titie是查询的关键词&…

C#学习笔记15:上位机助手_usercontrol窗体内嵌的应用

今日完善一下之前的上位机助手,做一个组合窗体内嵌的多功能助手软件应用, 与之前的上位机软件相比: 更注重控件能够随着窗体缩放而缩放变换,串口助手部分能自动后台检测串口设备,解决市面上大部分串口助手的打开初始化会卡顿的问题 ( 多线程后…

Android全面解析之context机制(三): 从源码角度分析context创建流程(下)

前言 前面已经讲了什么是context以及从源码角度分析context创建流程(上)。限于篇幅把四大组件中的广播和内容提供器的context获取流程放在了这篇文章。广播和内容提供器并不是context家族里的一员,所以他们本身并不是context,因而…

Spring日志

1.日志的作用 定位和发现问题(主要)系统监控数据采集日志审计...... 2.日志的使用 2.1 ⽇志格式的说明 2.2 打印日志 Spring集成了日志框架,直接使用即可 步骤: 1.定义日志对象 2.使⽤⽇志对象打印⽇志 RestController public class LoggerController {private static Logger…

Ecovadis认证评估什么 Ecovadis认证有哪些注意事

Ecovadis认证是一个全球性的企业可持续性评估平台,它通过评估企业在环境、劳工与人权、公平商业实践、可持续采购等四个领域的表现,帮助企业识别潜在风险,提升ESG(环境、社会和公司治理)绩效,实现可持续发展 Ecovadis认证注意事项…

Linux-文件系统与日志分析

系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 8.Linu…

MapReduce 简单介绍

MapReduce 一、MapReduce概述二、MapReduce 基本设计思想分而治之2.2 抽象成模型2.3 上升到框架 三、MapReduce 优缺点3.1 MapReduce 的优点3.1 MapReduce 的缺点 四、MapReduce 编程模型4.1 MapReduce 分布式计算原理4.2 MapReduce 编程模型4.3 剖析 MapReduce 编程模型4.3.1 …

好书推荐!《Building LLM Apps》构建大语言模型LLM应用!一次性讲清楚!

《Building LLM Apps》这本书是一份全面而实用的指南,它不仅介绍了大型语言模型(LLM)的基础知识和前沿技术,还深入探讨了如何将这些模型应用到实际的AI应用中。 书中从对LLM的深入介绍入手,接着探讨了包括GPT 3.5、GP…