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

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.