丹摩征文活动|基于丹摩算力Llama3.1实现私有化部署的Chatbot

一、简介

Llama 3.1 模型介绍

Llama 3.1 是一种大型的、开源的语言生成模型,类似于OpenAI的GPT-3,但它是由Meta(前Facebook)推出的。Llama 3.1具备强大的自然语言处理能力,可以执行各种语言任务,如对话生成、文本摘要、机器翻译等。Llama 3.1 设计之初就是为了使其在各种硬件和资源环境下高效运行,因此其能够通过优化模型架构,在不同规模的设备上实现较好的性能。

私有化部署的优势

私有化部署指的是将Chatbot部署在自己的服务器或者私有云环境中,而非依赖第三方服务(如OpenAI、Google Cloud等)。这样做有几个显著的优势:

1.数据隐私和安全性:企业或用户的数据不会离开本地系统,避免了将敏感数据暴露给外部服务提供商的风险。
2.定制化能力:用户可以根据特定业务需求对Chatbot进行更高层次的定制,包括训练专门的模型、调整对话策略等。
3.降低长期成本:虽然初期部署可能需要较高的基础设施投资,但长期来看,私有化部署可避免按调用次数收费的云服务费用。
4.可控性:企业拥有对整个系统的完全控制,能够随时进行优化和调整,而不依赖于第三方平台的更新和维护。

应用场景

基于 Llama 3.1 和丹摩算力的私有化部署 Chatbot 可应用于多个领域:

企业客服:通过自动化解答客户问题,提高服务效率,减少人工成本。
智能助手:提供个性化的智能助手服务,帮助用户完成日常任务。
教育与培训:为学生提供智能辅导,支持实时问答与互动式学习。
医疗健康:通过与医疗数据对接,提供初步的健康咨询服务。

三、部署 Llama 3.1

1. 创建实例

在这里插入图片描述
由于 CogVideoX 在 FP-16 精度下的推理至少需 18GB 显存,微调则需要 40GB 显存,我们这里需要选择大于 40GB 显存的实例。
在这里插入图片描述
镜像选择 PyTorch2.3.0、Ubuntu-22.04,CUDA12.1 镜像。
在这里插入图片描述
创建密钥对
进行实例
在这里插入图片描述
点击操作里的JupyterLab,进入JupyterLab的页面。平台已预置了调试好的代码库,开箱即用。

在这里插入图片描述
点击Terminal,进入终端页面

2. 安装依赖

安装 Llama 3.1 部署所需的 Python 库:

pip install langchain==0.1.15
pip install streamlit==1.36.0
pip install transformers==4.44.0
pip install accelerate==0.32.1

在这里插入图片描述

3. 下载模型

用丹摩平台的内网高速下载 Llama-3.1-8B-Instruct 模型:

wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar
tar -xf Llama-3.1-8B-Instruct.tar

在这里插入图片描述

四、Chatbot 项目开发

  1. 编写Web聊天机器人代码
    创建 llamaBot.py 文件,实现一个简单的 Web 聊天机器人:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import streamlit as st# 创建标题和副标题
st.title("💬 LLaMA3.1 Chatbot")
st.caption("🚀 A Streamlit chatbot powered by Llama 3.1")# 模型路径
model_path = '/root/workspace/Llama-3.1-8B-Instruct'# 获取模型和 tokenizer
@st.cache_resource
def load_model():tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_tokenmodel = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16).cuda()return tokenizer, modeltokenizer, model = load_model()# 初始化会话状态
if "messages" not in st.session_state:st.session_state["messages"] = []# 显示历史消息
for msg in st.session_state["messages"]:st.chat_message(msg["role"]).write(msg["content"])# 处理用户输入
if prompt := st.chat_input():st.chat_message("user").write(prompt)st.session_state.messages.append({"role": "user", "content": prompt})# 生成模型回复input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to('cuda')output = model.generate(input_ids, max_new_tokens=512)response = tokenizer.decode(output[0], skip_special_tokens=True)st.session_state.messages.append({"role": "assistant", "content": response})st.chat_message("assistant").write(response)

在这里插入图片描述

2. 运行 Streamlit 服务

在终端中启动 Web 服务:

streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024

在这里插入图片描述
需注意:

访问地址:务必使用 0.0.0.0,以便通过浏览器访问实例。
端口映射:通过丹摩平台的访问控制,将内部端口映射至公网。

3. 添加端口映射

进入 GPU 云实例页面,选择操作 -> 更多 -> 访问控制,添加 Streamlit 服务端口,映射成功后即可通过访问链接打开 Chatbot 界面。
在这里插入图片描述

五、效果展示

访问1024的端口链接,可见 Llama 3.1 Chatbot 的交互界面,用户可以直接输入问题,与 Chatbot 进行对话。

示例对话:

用户:请简述 Llama 3.1 的主要特性。
Chatbot:Llama 3.1 是 Meta 发布的最新开源模型,包含 405B、70B 和 8B 三个版本,支持 128K 上下文长度,具备更强的理解和生成能力。

在这里插入图片描述

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

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

相关文章

ssm168基于jsp的实验室考勤管理系统网页的设计与实现+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:实验室考勤管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本实验室考勤管…

(动画)Qt控件 QLCDNumer

文章目录 LCD Number1. 介绍2. 核心属性3 . 代码实现:倒计时1. 在界⾯上创建⼀个 QLCDNumber , 初始值设为 10.2. 修改 widget.h 代码, 创建⼀个 QTimer 成员, 和⼀个 updateTime 函数3. 修改 widget.cpp, 在构造函数中初始化 QTimer4. 修改 widget.cpp, 实现 updateTime 4. 动…

【线程】Java多线程编程

【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候,这些线程的执行顺序是不确定的。这一点,是我们之前提到的操作系统…

Java技术复习提升 11 常用类

第11章 常用类 1 包装类 不同包装类都继承自Object类 Serialiazble接口表示该类表示序列化 Comparable接口用于定义自然顺序 包装类和基本数据的转换 jdk5之前手动装箱拆箱 jdk5之后自动装箱拆箱 自动装箱底层调用的是valueof方法 拆箱仍然是intvalue方法 public class Inte…

P1 练习卷(C++4道题)

1.纷繁世界 内存限制:256MB 时间限制:1s 问题描述 这是一个纷繁复杂的世界。 某一天清晨你起床很迟,没有吃上早饭。于是你骑着自行车去超市,但是你又发现商店的工作人员已经重新贴上了价格标签,零食价格都涨了50%。你…

Selenium的八种定位方式

1. 通过 ID 定位 ID 是最直接和高效的方式来定位元素,因为每个页面中的 ID 应该是唯一的。 from selenium import webdriverdriver webdriver.Chrome(executable_pathpath/to/chromedriver) driver.get(https://example.com)# 通过 ID 定位 element driver.find…

logback动态获取nacos配置

文章目录 前言一、整体思路二、使用bootstrap.yml三、增加环境变量四、pom文件五、logback-spring.xml更改总结 前言 主要是logback动态获取nacos的配置信息,结尾完整代码 项目springcloudnacosplumelog,使用的时候、特别是部署的时候,需要改环境&#…

OpenMM的安装与使用

技术背景 OpenMM是一款基于Python开发的开源分子动力学模拟软件,这几年因为AlphaFold的缘故,使得这个软件的热度有了不少提升。并且可以使用GPU硬件加速,所以性能上也不赖。这里介绍一下该软件的基本安装和使用方法,并附带一个真空…

Linux各种并发服务器优缺点

本文旨在介绍针对“无并发C/S模型”改进的方法总结以及各种改进方法的优缺点,具体函数的实现并不介绍。 1. 无并发C/S模型 创建服务器流程分析: socket()创建服务器的监听套接字bind()将服务器给服务器的监听套接字绑定IP地址和Port端口号listen()设置…

cookie反爬----普通服务器,阿里系

目录 一.常见COOKIE反爬 普通: 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战: 无限debugger原理 1. Function("debugger").call() 2. …

网络无人值守批量装机-cobbler

网络无人值守批量装机-cobbler 一、cobbler简介 ​ 上一节中的pxe+kickstart已经可以解决网络批量装机的问题了,但是环境配置过于复杂,而且仅针对某一个版本的操作系统进批量安装则无法满足目前复杂环境的部署需求。 ​ 本小节所讲的cobbler则是基于pxe+kickstart技术的二…

推荐一款开源电子书阅读器Koodo Reader

Koodo Reader 是一个开源的电子书阅读器,支持多达15种主流电子书格式, 内置笔记、高亮、翻译功能,助力高效书籍阅读和学习。 官网地址:https://www.koodoreader.com/zh 一、下载软件 下载地址:https://dl.koodoreader.…

FreeRTOS——互斥信号量

一、为什么需要互斥信号量 前面的学习中: 调度锁、临界段不可避免的破坏了实时性,还有二值信号量存在这样的隐患——“优先级翻转” 优先级翻转 简单来说,就是由于信号量被低优先级任务占用,即使遇到高优先级任务,它…

AIGC学习笔记(6)——AI大模型开发工程师

文章目录 AI大模型开发工程师005 OpenAI大模型案例实践1 AI 翻译助手需求分析项目起源市场价格和市场前景基于大模型的翻译软件核心功能设计 2 AI 翻译助手架构设计架构设计代码结构设计 3 AI 翻译助手核心功能文档解析文档操作PDF文档操作表格操作图片操作 Prompt封装 4 AI 翻…

程序语言语法上手题目合集

程序语言语法上手题目合集 1跑步2猜年龄3Vigenre 密码 1跑步 2.跑步 - 蓝桥云课 枚举日期&#xff0c;判断是否符合条件即可。 参考程序&#xff1a; #include<stdio.h> int y2022,m1,d1; int week6; int month[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};int judg…

C#调用C++ DLL方法之P/Invoke

关于P/Invoke Platform Invoke (P/Invoke) 是 .NET 提供的一种服务&#xff0c;允许托管代码&#xff08;如 C#&#xff09;调用非托管代码&#xff08;如 C/C 编写的 DLL 函数&#xff09;。通过 P/Invoke&#xff0c;可以在 .NET 应用程序中使用现有的非托管代码库&#xff…

Centos Stream 9安装Jenkins-2.485 构建自动化项目步骤

官网&#xff1a;https://www.jenkins.io/ 1 下载 环境准备&#xff1a; 版本支持查询&#xff1a;https://pkg.jenkins.io/redhat-stable/ 安装JDK17&#xff1a;https://blog.csdn.net/qq_44870331/article/details/140784297 yum -y install epel-release wget upgradew…

青训营刷题笔记16

问题描述 小R从班级中抽取了一些同学&#xff0c;每位同学都会给出一个数字。已知在这些数字中&#xff0c;某个数字的出现次数超过了数字总数的一半。现在需要你帮助小R找到这个数字。 测试样例 样例1&#xff1a; 输入&#xff1a;array [1, 3, 8, 2, 3, 1, 3, 3, 3] 输出…

Go语言链接Redis数据库

1.使用go get命令安装go-redis/v8库&#xff1a; 我这里使用的vscode工具安装&#xff1a; go get github.com/go-redis/redis/v82.创建Redis客户端实例 使用以下Go代码连接到Redis服务器并执行命令&#xff1a; package mainimport ("context""fmt"&q…

Mybatis 核心配置文件

MyBatis的全局配置文件mybatis-config.xml&#xff0c;配置内容如下&#xff1a; properties&#xff08;属性&#xff09; settings&#xff08;全局配置参数&#xff09; typeAliases&#xff08;类型别名&#xff09; typeHandlers&#xff08;类型处理器&#xff09; obj…