AI爱好者必备:在群晖NAS上搭建Llama 2大语言模型私人聊天机器人攻略

前言

本文将分享如何在群晖NAS上本地部署并运行一个基于大语言模型Llama 2的个人聊天机器人,并结合内网穿透工具实现公网远程访问。由于本地部署对设备配置有一定要求,建议使用高性能的服务器以获得更好的体验。

目前,大多数大语言模型产品都是基于在线服务的。如果希望在本地自行部署一个大语言模型,应该如何操作呢?接下来,我们将介绍一款可以在本地运行的大语言模型——Llama 2。

Llama 2是一款开源的大语言模型,其训练数据量已达到7B级别,在上下文长度为4K的单轮和多轮对话中表现优异。要成功部署和运行Llama 2,需要借助一个名为Ollama的框架。

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

利用Ollama框架,可以方便地运行Llama 2大语言模型。同时,为了与模型进行交互,还需要部署一个Web交互界面——Chatbot-Ollama。

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

通过将Chatbot-Ollama接入本地Ollama框架运行的Llama 2大语言模型,我们可以轻松创建一个本地聊天机器人。然而,Chatbot-Ollama的本地部署仅限于本地访问,无法提供远程访问。因此,我们还需要安装内网穿透工具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 镜像

### 如何训练自定义的聊天机器人 #### 选择平台和技术栈 对于想要开发和训练自定义聊天机器人的开发者来说,确定需求以及挑选合适的技术栈至关重要[^2]。这涉及到评估项目的需求,比如预期功能、支持的语言种类、性能要求等,并据此决定采用何种编程语言、框架和服务。 #### 数据准备与预处理 构建能够自我学习的中文聊天机器人时,在正式进入模型训练之前的数据准备工作尤为关键[^1]。此阶段的任务包括但不限于收集对话样本、清理文本中的噪声(如HTML标签)、分词、去除停用词等一系列操作以提高后续建模的效果。 #### 模型的选择与训练 当考虑利用特定API接口如ChatGPT所提供的能力来打造个性化的AI应用时,则可通过上传自有语料库的方式让其更好地理解业务场景下的表达习惯从而提供更贴合实际的服务体验[^3]。此外,还有其他开源的大规模预训练语言模型可供选用,例如Llama2,它允许用户在其基础上进一步微调适应具体应用场景的要求。 #### 部署方案设计 完成上述工作之后就是将训练完毕后的模型部署上线供最终使用者访问交流的过程了。如果倾向于私有化部署解决方案的话,那么像群晖NAS这样的硬件设备配合Ollama软件环境便能轻松实现在本地环境中托管运行大型语言模型实例的目的;同时为了便于人机交互还应配套设置相应的前端界面以便于输入输出管理[^4]。 ```python # 这里给出一段简单的Python代码用于加载并测试已有的预训练模型 from transformers import AutoModelForCausalLM, AutoTokenizer model_name_or_path = "path_to_your_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) def generate_response(input_text): inputs = tokenizer.encode(input_text + tokenizer.eos_token, return_tensors='pt') outputs = model.generate(inputs, max_length=50, pad_token_id=tokenizer.eos_token_id) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response print(generate_response("你好")) ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaixin_啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值