DAMODEL——Llama3.1的部署与使用指南

news2024/9/21 21:12:50

Llama3.1的部署与使用指南

在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了机器视觉(CV)、多模态模型以及科学计算等多个领域。

在当前的竞争格局中,开源LLM如雨后春笋般涌现,国内外都出现了不少优秀的开源模型。国外有LLaMA、Alpaca等,国内则有ChatGLM、BaiChuan、InternLM等,用户可以在这些模型的基础上进行本地部署和微调,创建个性化的应用。

Llama3.1介绍

2024年7月23日,Meta发布了其最新的开源模型——Llama 3.1,包括405B、70B和8B版本。值得注意的是,Llama 3.1 405B的上下文长度支持达到128K Tokens,其训练基于150万亿个Tokens,使用超过16,000个H100 GPU,是Meta迄今为止规模最大的Llama模型

image-20240813133905709

本指南主要集中在Llama3.1的8B版本,该版本需要至少16GB的GPU显存。以下是我们的测试环境配置:

  • 操作系统:Ubuntu 22.04
  • Python版本:3.12
  • CUDA版本:12.1
  • PyTorch版本:2.4.0

部署流程

创建云实例

首先,访问控制台-GPU云实例并点击创建实例。在创建页面中,选择合适的付费类型(按量或包月),接着配置GPU数量和型号。建议首次创建选择按量付费,1个NVIDIA-GeForce-RTX-4090 GPU,这样可以满足8B版本的显存需求。

image-20240921193104498

在数据硬盘配置上,默认50GB的硬盘通常足够,但若通过官方方式下载模型,建议扩展至60GB。然后选择基础镜像,确保选择了包含PyTorch的镜像。

创建实例时,务必生成并保存密钥对,以便后续SSH连接使用。

登录实例

实例创建完成后,可以通过多种方式登录:

  • JupyterLab:平台提供了在线JupyterLab入口,登录后可在/root/workspace目录下进行操作。
  • SSH登录:使用终端工具进行SSH登录,输入必要的用户名、主机IP和密钥。

这里我们使用JupyterLab

部署Llama3.1

在这里插入图片描述

在实例中,我们将使用conda管理环境。可以直接创建一个新环境:

conda create -n llama3 python=3.12

image-20240921193655581

切换到新创建的环境:

conda activate llama3

安装Llama3.1所需的依赖:

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

image-20240921194350770

接着,下载Llama-3.1-8B-Instruct模型,使用以下命令进行内网高速下载:

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

image-20240921194433961

下载后,解压缩模型文件:

tar -xf Llama-3.1-8B-Instruct.tar

使用指南

模型下载完成后,创建一个名为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 Self-LLM")

# 定义模型路径
mode_name_or_path = '/root/workspace/Llama-3.1-8B-Instruct'

# 获取模型和tokenizer的函数
@st.cache_resource
def get_model():
    tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
    tokenizer.pad_token = tokenizer.eos_token
    model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16).cuda()
    return tokenizer, model

# 加载模型和tokenizer
tokenizer, model = get_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.apply_chat_template(st.session_state["messages"], tokenize=False, add_generation_prompt=True)
    model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda')
    generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512)
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    st.session_state.messages.append({"role": "assistant", "content": response})
    st.chat_message("assistant").write(response)

image-20240921195411833

在终端运行以下命令来启动Streamlit服务,确保服务地址设置为0.0.0.0以便于浏览器访问:

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

接着,通过丹摩平台的端口映射功能,将内网端口映射到公网,完成后您就可以通过提供的链接访问LLaMA3.1 Chatbot并与其互动。

进入GPU 云实例页面,点击操作-更多-访问控制:

image-20240921195653583

点击添加端口,添加streamlit服务对应端口:

image-20240921195724711

然后点击相应链接即可进入交互界面。

-更多-访问控制:

[外链图片转存中…(img-t5dURskR-1726919894498)]

点击添加端口,添加streamlit服务对应端口:

[外链图片转存中…(img-1jy0SGBr-1726919894498)]

然后点击相应链接即可进入交互界面。

通过以上步骤,您将成功部署并使用Llama3.1模型,享受与强大聊天机器人的互动体验。

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

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

相关文章

数字人直播带货火了,只要有了这个工具,就可以打造数字人,建议新手小白赶紧尝试!

经济下行,普通人应该尽早认清一个事实,没有一技之长,没有核心竞争力,即便是打工皇帝,年入百万也只是浮云。 一定要保证主业的稳定,再探索新的机会,要多从”1-10",而不是反复”…

初中数学证明集锦之三角形内角和

导言 非常喜欢数学那套,由简单到复杂,逐层递进的证明之美。 既证了,而且明了 😃 让人不得不信服! 由人教版教材看到的三角形内角和180度的证明法,觉得现在课本不单传播了知识,而且点睛数学之…

简单多状态dp第二弹 leetcode -删除并获得点数 -粉刷房子

740. 删除并获得点数 删除并获得点数 分析: 使用动态规划解决 这道题依旧是 打家劫舍I 问题的变型。 我们注意到题目描述,选择 x 数字的时候, x - 1 与 x 1 是不能被选择的。像不像 打家劫舍 问题中,选择 i 位置的金额之后,就不…

【网络】高级IO——LT和ET

在上一篇的学习中,我们已经简单的使用了epoll的三个接口,但是仅仅了解那些东西是完全不够的!!接下来我们将更深入的学习epoll 1.epoll的两种工作模式——LT和ET 下面来举一个例子帮助大家理解ET和LT模式的区别(送快递…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的(从哪个页面跳转过来的) 浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer。当你在 sogou 页面进行搜索时,新进入的网页就会有 referer 有一个非常典型的用…

深度学习-图像处理篇1.3pytorch神经网络例子

batch:一批图像数量 官方例子 #model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 nn.Conv2d(3,16,5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16, 32, 5)self.…

Python 找到给定点集的简单闭合路径(Find Simple Closed Path for a given set of points)

给定一组点,将这些点连接起来而不相交 例子: 输入:points[] {(0, 3), (1, 1), (2, 2), (4, 4), (0, 0), (1, 2), (3, 1}, {3, 3}}; 输出:按以下顺序连接点将 不造成任何交叉 {(0, 0), (3, …

将sqlite3移植到开发板上

1、下载c源码 sqlite官网下载C源码:SQLite Download Page 点击第二个链接下载 2、解压 1、将下载好的c源码,放在linux下, 2、解压压缩包:tar -zxvf sqlite-autoconf-3460100 新建一个用存放 编译出来的文件: mkd…

Web开发:使用C#创建、安装、调试和卸载服务以及要注意的写法

目录 一、创建服务 1.创建项目(.NET Framework) 2.重命名 3.编写逻辑代码 二、安装服务 1.方案一:利用VS2022安装文件的配置 选择添加安装程序 安装文件的介绍及配置 ​编辑​ 重新编译 工具安装 2.方案二:编写bat脚本安…

Excel match 函数使用方法,和 index 函数是绝配

大家好,这里是效率办公指南! 🔎 在处理Excel数据时,我们经常需要找出特定数据在列表或数组中的位置。MATCH函数正是为此设计的,它可以返回一个值在指定数组中的相对位置。今天,我们将详细介绍MATCH函数的使…

MySQL基础(13)- MySQL数据类型

目录 一、数据类型概述 1.MySQL中的数据类型 二、整型 1.数据类型可选属性 2.使用建议 三、浮点数、定点数、位类型 1.类型介绍 2.浮点类型 3.定点数类型 4.位类型 四、日期时间类型 1.YEAR 2.DATE 3.TIME 4.DATETIME 5.TIMESTAMP 6.TIMESTAMP和DATETIME的区别…

Android Studio开发发布教程

本文讲解Android Studio如何发布APP。 在Android Studiobuild菜单栏下点击Generate Singed Bundle/APK…打开对话框。 选择APK点击Next 点击Create New...进行创建

Flask找上下文源码

1. app Flask(__name__) app.__call__ 1.1 按住 command 键 点击 进到这个函数里 1.2 接着找 return 看看返回什么 点进去 1.3 找到定义函数 1.4 点进去先看这个里边有啥 1.5 找到定义类 1.6 找到RequestContext 类 1.7 找到 RequestContext ---> 的push 方法 1.8 点击 _c…

Redis面试真题总结(二)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ Redis常见的数据类型有哪些? string 字符串 字符串类型…

Mobile net V系列详解 理论+实战(3)

Mobilenet 系列 论文精讲部分0.摘要1. 引文2. 引文3. 基础概念的讨论3.1 深度可分离卷积3.2 线性瓶颈3.3 个人理解 4. 模型架构细节5. 实验细节6. 实验讨论7. 总结 论文精讲部分 鉴于上一小节中采用的代码是V2的模型,因此本章节现对V2模型论文讲解,便于…

【C++二叉树】二叉树的前序遍历、中序遍历、后序遍历递归与非递归实现

1.二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) 前序遍历方式:根-左子树-右子树。 递归实现: 要传一个子函数来实先递归,原因是原函数返回值为vector,在原函数迭代,返回值就难…

基于python上门维修预约服务数据分析系统

目录 技术栈和环境说明解决的思路具体实现截图python语言框架介绍技术路线性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示操作可行性详细视频演示源码获取 技术栈和环境说明 结合用户的使用需求,本系统采用运用较为广…

一、机器学习算法与实践_03概率论与贝叶斯算法笔记

1、概率论基础知识介绍 人工智能项目本质上是一个统计学项目,是通过对 样本 的分析,来评估/估计 总体 的情况,与数学知识相关联 高等数学 ——> 模型优化 概率论与数理统计 ——> 建模思想 线性代数 ——> 高性能计算 在机器学…

Qt窗口——对话框

文章目录 对话框自定义对话框对话框分类消息对话框QMessageBox使用示例自定义按钮快速构造对话框 颜色对话框QColorDialog文件对话框QFileDialog字体对话框QFontDialog输入对话框QInputDialog 对话框 对话框可以理解成一个弹窗,用于短期任务或者简洁的用户交互 Qt…

AIoT智能工控板

在当今竞争激烈的商业环境中,企业需要强大的科技力量来助力腾飞,AIoT智能工控板就是这样的力量源泉。 其领先的芯片架构设计,使得主板的性能得到了极大的提升。无论是数据的处理速度、图形的渲染能力,还是多任务的并行处理能力&a…