群晖NAS使用Docker部署大语言模型Llama 2结合内网穿透实现公网访问本地GPT聊天服务

文章目录

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

随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛,包括聊天机器人、智能客服、自动翻译、写作助手等。它们可以根据用户输入的文本生成相应的响应,提供个性化的建议和服务,目前大部分大语言模型的产品都是基于网络线上的,如果我们本地想自己部署一个自己的大语言模型,该如何操作呢,下面介绍一款可以在自己本地部署运行的大语言模型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,使得本地聊天机器人可以被远程访问.

Cpolar是一款强大的内网穿透软件,它能够在多个操作系统上无缝运行,包括Windows、MacOS和Linux,因此无论您使用哪种操作系统,都可以轻松将本地内网服务器的HTTP、HTTPS、TCP协议端口映射为公网地址端口,使得公网用户可以轻松访问您的内网服务,无需部署至公网服务器.

下面我们通过群晖Docker来演示如何结合上面介绍的技术来运行一个自己的本地聊天机器人并且发布到公网访问.本地部署,对设备配置要求高一些,如果想要拥有比较好的体验,可以使用高配置的服务器设备.

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邮箱账号与密码进行登录

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.rhkb.cn/news/294999.html

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

相关文章

《信息技术服务 智能运维 第2部分:数据治理》国家标准2024年第一次线下编写会议成功召开

2024年3月13日~15日,由运维数据治理国标编制组主办的运维数据治理国家标准2024年第一次编写工作会议在上海成功召开。 本次会议由云智慧(北京)科技有限公司承办,来自南网数字集团信通公司、太保科技、平安银行、广发银行、广东农…

【电源专题】电池不均衡的影响与原因

在使用多节电池设计产品时,大家都知道如果多节电池不均衡会影响电池寿命与充电安全。特别是在充电末端与放电末端时表现较为明显。 电池不均衡的影响 那么为什么会影响安全与寿命呢?其原因如下: 如果电池不均衡时,相当于木桶的短板效应。一方面没法充满,充电时电压高的那一…

透明天气超实用工具更便捷地查看本地天气情况!

确切的气象数据播报,支持分钟级的降雨预测,精选的数百万张美丽城市背景图片和精美的风景图片,满足您与数百万朋友分享美丽天气的需求,用户友好的设计,简洁的界面布局,轻松查询天气信息的同时,还…

【论文笔记】Text2QR

论文:Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation Abstract 二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。 为了保证美观二维码的稳定生成&a…

06 | Swoole 源码分析之 Coroutine 协程模块

首发原文链接:Swoole 源码分析之 Coroutine 协程模块 大家好,我是码农先森。 引言 协程又称轻量级线程,但与线程不同的是;协程是用户级线程,不需要操作系统参与。由用户显式控制,可以在需要的时候挂起、或…

分享一种快速移植OpenHarmony Linux内核的方法

移植概述 本文面向希望将 OpenHarmony 移植到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带 Linux 内核的现有能力,快速移植 OpenHarmony 到三方芯片平台的方法。 移植到三方芯片平台的整体思路 内核态层和用户态层 为了更好的解释整个内核…

曲线降采样之道格拉斯-普克算法Douglas–Peucker

曲线降采样之道格拉斯-普克算法Douglas–Peucker 该算法的目的是,给定一条由线段构成的曲线,找到一条点数较少的相似曲线,来近似描述原始的曲线,达到降低时间、空间复杂度和平滑曲线的目的。 附赠自动驾驶学习资料和量产经验&…

通过提交容器的方式修改ubuntu镜像的apt源

通过提交容器的方式修改ubuntu镜像的apt源 步骤总结 问题,每次创建容器之后,都要在容器内手动更改镜像源。 不如,干脆修改镜像的apt源,一次到位。 步骤 先创建一个容器,到容器内执行变更命令。 D:/sandbox> dock…

【Vue】vue3简介与环境配置

文章目录 项目编码规范什么是 Vue?安装node环境nvm针对node版本惊醒管理的工具 项目编码规范 组合式API Typescript setup(语法糖) 什么是 Vue? Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,…

【SQL】1633. 各赛事的用户注册率(COUNT函数 表达式用法)

题目描述 leetcode题目:1633. 各赛事的用户注册率 Code select contest_id, round(count(*)/(select count(*) from Users)*100, 2) as percentage from Register group by contest_id order by percentage desc, contest_id ascCOUNT()函数 COUNT函数用法&#…

docker容器之etcd安装

一、etcd介绍 1、etcd是什么 etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。 2、etcd特点 简单的接口,通过标准的HTTP API进行调用,也可以使用官方提供的 etcdctl 操作存储的数据。…

1999-2022年上市公司员工人数数据

1999-2022年上市公司员工人数数据 1、时间:1999-2022年 2、指标:证券代码、时间、员工人数 3、来源:整理自csmar 4、范围:上市公司 5、指标解释: 上市公司员工人数是衡量公司规模和发展状的重要指标。该数据直接…

编程新手必看,python中的转义字符及注释!(4)

1、常见的转义字符 Python中的转义字符用于在字符串中表示一些特殊的字符,这些字符通常无法直接输入或具有特殊的意义。以下是一些常见的转义字符及其含义: 在Python中,可以使用转义字符来表示一些特殊的字符。以下是使用转义字符的几种常见…

VuePress基于 Vite 和 Vue 构建优秀框架

VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown 编写的内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。 VitePress 附带一个用于技术文档…

Java复习第十六天学习笔记(JSP、Servlet),附有道云笔记链接

【有道云笔记】十六 4.2 JSP、Servlet https://note.youdao.com/s/QccA5g1G 一、软件的结构 C/S (Client - Server 客户端-服务器端) 典型应用:QQ软件 ,飞秋,印象笔记。 特点: 必须下载特定的客户端程序。服务器端升级&#…

保护Android应用安全:全面探究代码混淆在加固中的作用

Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解&#xff…

CSS面试题---基础

1、css选择器及优先级 选择器优先级:内联样式>id选择器>类选择器、属性选择器、伪类选择器>标签选择器、微元素选择器 注意: !important优先级最高; 如果优先级相同,则最后出现的样式生效; 继承得到的样式优先…

腾讯云2024年4月优惠券及最新活动入口

腾讯云是腾讯集团倾力打造的云计算品牌,提供全球领先的云计算、大数据、人工智能等技术产品与服务。为了吸引用户上云,腾讯云经常推出各种优惠活动。本文将为大家分享腾讯云优惠券及最新活动入口,助力大家轻松上云! 一、优惠券领取…

大模型prompt技巧——思维链(Chain-of-Thought)

1、Zero-shot、One-shot、Few-shot 与fintune prompt的时候给出例子答案,然后再让模型回答。 2、zero-shot-CoT “Let’s think step by step”有奇迹效果 3、多数投票提高CoT性能——自洽性(Self-consistency) 多个思维链,然后取…

浪潮分布式存储AS13000G6-M36改扩配后管理界面不能识别和标记硬盘的处理方法

AS13000G6 改配出问题的场景 浪潮分布式存储AS13000G6-M36渠道备货的分布式存储通常是流量机型,实际出货可能会涉及改配 集群部署完以后建议在系统视图下查看一下盘是否能识别 这个是正常的情况,可以正确管理到盘,硬盘侧边有绿色的指示灯。 如图是管理…