群晖NAS使用Docker部署大语言模型

随着OpenAI的ChatGPT及阿里云的Open Sora引发的全球热潮,我们正步入一个崭新的大语言模型(LLM)主导的时代,这一领域正以前所未有的深度与广度重塑人工智能的版图。LLMs在众多应用场景中展现其巨大价值,如对话系统、智能客服平台、自动翻译工具以及写作辅助软件等。它们凭借精准理解用户输入文本的能力,输出相应且个性化的内容,满足多样化的服务需求。尽管大多数LLM产品依托云端服务,但对于有特定需求的用户来说,搭建本地化部署不失为一种选择。接下来,我们将聚焦于一款名为Llama 2的开源LLM及其配套部署方案。

Llama 2,这款数据规模已达70亿级别的大语言模型,在处理长达4096字符的对话上下文中,无论是单轮问答还是多轮交互,均展现出卓越性能。实现其本地部署的关键在于一个名为Ollama的部署框架。

Ollama框架专为在Docker环境中高效布署大型LLMs而设计,旨在显著简化此类任务的复杂性。该框架通过提供精炼的安装脚本,使得用户能够轻而易举地在个人设备上运行诸如Llama 2这样的开源LLMs,无需深陷复杂的配置细节之中。

为了与Llama 2进行直观便捷的交互,我们引入Chatbot-Ollama——一个构建于Ollama之上的Web前端应用。作为一款聊天机器人界面,Chatbot-Ollama巧妙运用Ollama框架提供的API与功能模块,将LLM的强大能力封装进用户友好的交互界面中,实现人机间流畅的对话交流与服务提供。

为了让本地部署的Chatbot-Ollama能够跨越本地网络限制,供远程用户访问,我们需要借助内网穿透工具cpolar。cpolar以其跨平台兼容性(支持Windows、MacOS、Linux)和易用性著称,它能将本地运行的HTTP、HTTPS、TCP服务端口透明映射至公共互联网地址,无需将服务迁移至公网服务器,即可实现全球范围内的访问接入。

最后,我们将通过群晖Docker环境,详细演示如何整合上述技术栈,从零开始搭建并公开发布一款完全基于本地硬件资源运行的高性能聊天机器人。值得注意的是,本地部署对硬件配置有一定要求,若追求极致用户体验,选用高配服务器将是理想之选。

拉取相关的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-20240416142352720

运行Ollama 镜像

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

image-20240416142418758

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

image-20240416142435365

然后点击完成即可运行ollama

image-20240416142459829

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

image-20240416142522679

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

image-20240416142545951

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

image-20240416142606171

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

image-20240416142629835

运行Chatbot Ollama镜像

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

image-20240416142652508

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

image-20240416142710179

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

image-20240416142728454

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

image-20240416142814452

本地访问

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

image-20240416142950066

群晖安装Cpolar

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

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

image-20240416143037358

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

image-20240416143055484

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

image-20240416143113796

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

image-20240416143132216

最后点击完成即可。

image-20240416143153933

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

image-20240416143214530

配置公网地址

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

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

点击创建

image-20240416143238772

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

image-20240416143301031

公网访问

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

image-20240416143348091

小结

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

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

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

固定公网地址

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

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

image-20240416143506296

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

image-20240416143535174

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

image-20240416143606948

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

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

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

image-20240416143631451

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

image-20240416143657419

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

image-20240416143716084

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.