LLaMA 3.1 模型在DAMODEL平台的部署与实战:打造智能聊天机器人

LLaMA 3.1 模型在DAMODEL平台的部署与实战:打造智能聊天机器人

文章目录

前言

一、LLaMA 3.1 的特点

二、LLaMA3.1的优势

三、LLaMA3.1部署流程

(一)创建实例

(二)通过JupyterLab登录实例

(3)部署LLaMA3.1

(4)使用教程

总结


前言

LLama3.1 是 Meta(Facebook 母公司)发布的系列大语言模型之一,属于 LLaMA(Large Language Model Meta AI)模型系列。LLaMA 模型的目标是通过更高效的设计在保持模型性能的前提下,显著降低其计算和资源需求。LLaMA 3.1 是该系列的最新版本,继承了前面版本,如 LLaMA 1 和 LLaMA 2的许多技术优势,并对模型架构、训练数据和推理能力进行了改进。


一、LLaMA 3.1 的特点

LLaMA 3.1主要有以下4个特点:

  • 规模较大且高效:LLaMA 3.1 在参数量上相比前代有所增加,但在设计和训练过程中注重提高效率,因此能够在相对较少的资源下达到与更大模型相似的性能水平。
  • 更多的训练数据:该版本的模型通过更广泛、更丰富的语料库进行训练,覆盖了更多领域的信息,使得它在回答问题、生成内容以及自然语言理解方面更强大。
  • 优化的推理性能:LLaMA 3.1 通过对推理算法和模型架构的优化,减少了推理时间,提高了在不同任务上的响应速度。
  • 开源的方式:与前代模型类似,LLaMA 3.1 也继续采用开源模式,这意味着研究人员和开发人员可以在其基础上进行进一步的研究和开发。这种开放性是 Meta 希望推动 AI 社区共同进步的一个关键策略。

二、LLaMA3.1的优势

相较于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 系列模型的优势在于其高效性,即在保持较高的生成能力和理解能力的同时,资源消耗更低。LLaMA 3.1 通过对模型结构的精简和训练数据的多样化,在许多任务上能够提供接近甚至超过这些主流模型的性能。


三、LLaMA3.1部署流程

DAMODEL地址:丹摩DAMODEL|让AI开发更简单!算力租赁上丹摩!

(一)创建实例

(1)登录后点击控制台,选择GPU云实例并创建实例

(2)付费类型选择按量付费,示例配置选4 NVIDIA-L40S

(3)GPU、数据硬盘按照默认的即可

(4)镜像框架选择PyTorch 2.4.0,选择密钥对后点击立即创建

(5)实例状态变为运行中时即实例创建成功

(二)通过JupyterLab登录实例

(3)部署LLaMA3.1

使用conda 管理环境,DAMODEL示例已经默认安装了 conda 24.5.0 ,直接创建环境即可

在终端输入:

conda create -n llama3 python=3.12

效果图:

第一次在终端使用conda命令,需要先进行conda初始化,初始化完成后重新开下终端

conda init

效果图:

初始化后切换到新创建的环境

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

效果图:

依赖安装完毕后,需要下载Llama-3.1-8B模型,使用命令进行内网下载Llama-3.1-8B-Instruct模型即可

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

效果图:

模型下载完成后解压缩Llama-3.1-8B-Instruct.tar

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

(4)使用教程

Llama-3.1-8B模型下载完成后,新建llamaBot.py文件,输入以下内容:

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 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 # 加载LLaMA3的model和tokenizer tokenizer, model = get_model() # 如果session_state中没有"messages",则创建一个包含默认消息的列表 if "messages" not in st.session_state: st.session_state["messages"] = [] # 遍历session_state中的所有消息,并显示在聊天界面上 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) # 将用户输入添加到session_state中的messages列表中 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) generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids) ] response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] # 将模型的输出添加到session_state中的messages列表中 st.session_state.messages.append({"role": "assistant", "content": response}) # 在聊天界面上显示模型的输出 st.chat_message("assistant").write(response) print(st.session_state)

在终端中运行以下命令启动 streamlit 服务,server.port 可以更换端口:

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

使用丹摩平台提供的端口映射功能,将内网端口映射到公网:

添加好后,通过示例端口的访问链接即可打开LLaMA3.1 Chatbot交互界面,可以跟该机器人进行对话


四、总结


本文介绍了 LLaMA 3.1 模型的特点、优势以及在 DAMODEL 平台上的部署流程。LLaMA 3.1 是 Meta 发布的最新大语言模型,具有高效的计算设计和优异的推理性能。其主要优势在于相较于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 3.1 在消耗较少资源的情况下依然能够提供强大的生成和理解能力。

文章还详细描述了如何通过 DAMODEL 平台部署 LLaMA 3.1 的步骤,从创建 GPU 实例,到配置环境(使用 conda 管理 Python 环境),再到安装必要的依赖和下载模型文件。最后,还展示了如何构建一个基于 Streamlit 的聊天机器人,通过 LLaMA 3.1 生成对话内容并与用户交互。

Read more

旧安卓手机别扔!用KSWEB搭个人博客,搭配外网访问超香

旧安卓手机别扔!用KSWEB搭个人博客,搭配外网访问超香

KSWEB 作为安卓端轻量级 Web 服务器,核心功能是提供 PHP、MySQL 运行环境,能轻松部署 Typecho、WordPress 等博客系统,Termux 则可辅助管理内网穿透服务;这类工具特别适合预算有限的学生、个人博主,或是想折腾闲置设备的数码爱好者,优点也很突出 —— 对硬件要求极低,1GB 内存就能运行,旧款红米、华为畅享等机型都能适配,而且内置的运行环境无需手动配置,新手也能快速上手。 使用这套工具时也有不少需要注意的地方,比如手机要长期插电并连接稳定 Wi-Fi,否则服务容易中断;还要给 KSWEB 和 Termux 关闭电池优化、放开存储权限,我用小米手机测试时就因为没关后台限制,导致 Apache 服务频繁被系统杀掉,折腾了好一会儿才排查出问题;另外非 Root 机型也能使用,但部分文件权限操作会稍显繁琐。 不过仅靠 KSWEB 部署完博客后,只能在局域网内访问,这会带来很多不便:比如在家用电脑能连手机看博客,

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-ZEEKLOG博客】 ❤感谢大家点赞👍收藏⭐评论✍         1.0 项目介绍         开发工具:IDEA、VScode         服务器:Tomcat, JDK 17         项目构建:maven         数据库:mysql 8.0 系统用户前台和管理后台两部分,项目采用前后端分离         前端技术:vue3 + elementUI         服务端技术:springboot + mybatis + redis + mysql         1.1 项目功能 后台功能:         1)登录、退出系统、首页         2)教室管理                 (1) 教室管理:添加、修改、删除、查询等功能。         3)教师管理

前端实现Word文档在线编辑与导出:基于mammoth.js与Blob对象的完整解决方案

如何在浏览器中直接编辑Word文档并导出?本文将深入探索一种基于mammoth.js和Blob对象的完整技术方案。 在当今的Web应用开发中,实现文档的在线编辑与导出已成为常见需求。无论是企业内部系统、教育平台还是项目管理工具,都迫切需要让用户能够在浏览器中直接编辑Word文档,而无需安装桌面软件。本文将详细介绍如何利用mammoth.js和Blob对象实现这一功能,并对比其他可行方案。 一、为什么选择mammoth.js与Blob方案? 在Web前端实现Word文档处理,主要有三种主流方案:浏览器原生Blob导出、mammoth.js专业转换和基于模板的docxtemplater方案。它们各有优劣,适用于不同场景。 mammoth.js的核心优势在于它能将.docx文档转换为语义化的HTML,而非简单复制视觉样式。这意味着它生成的HTML结构清晰、易于维护和样式定制。配合Blob对象,我们可以轻松将编辑后的内容重新导出为Word文档。 与直接使用Microsoft Office Online或Google Docs嵌入相比,mammoth.js方案不依赖外部服务,能更好地

前端安全:别让你的网站变成黑客的游乐场

前端安全:别让你的网站变成黑客的游乐场 毒舌时刻 这代码写得跟筛子似的,到处都是漏洞。 各位前端同行,咱们今天聊聊前端安全。别告诉我你还在忽略安全问题,那感觉就像在没有锁的房子里放贵重物品——能放,但随时可能被偷。 为什么你需要关注前端安全 最近看到一个项目,直接在前端存储用户密码,没有任何加密措施。我就想问:你是在做网站还是在做慈善? 反面教材 // 反面教材:不安全的代码 function Login() { const [username, setUsername] = React.useState(''); const [password, setPassword] = React.useState(''); const handleSubmit = async (e) => { e.preventDefault(); // 直接发送密码,没有加密 const response = await fetch('