LLaMA 3.1 模型部署与实战:构建智能聊天机器人
LLaMA 3.1 大语言模型的特点与优势,详细阐述了在云端 GPU 实例上部署该模型的完整流程。内容包括创建计算实例、配置 Python 环境、安装依赖库、下载模型权重以及使用 Streamlit 构建交互式聊天机器人的代码实现。通过优化推理性能与资源消耗,展示了如何利用开源模型快速搭建本地化 AI 应用。

LLaMA 3.1 大语言模型的特点与优势,详细阐述了在云端 GPU 实例上部署该模型的完整流程。内容包括创建计算实例、配置 Python 环境、安装依赖库、下载模型权重以及使用 Streamlit 构建交互式聊天机器人的代码实现。通过优化推理性能与资源消耗,展示了如何利用开源模型快速搭建本地化 AI 应用。

LLaMA 3.1 是 Meta(Facebook 母公司)发布的系列大语言模型之一,属于 LLaMA(Large Language Model Meta AI)模型系列。LLaMA 模型的目标是通过更高效的设计在保持模型性能的前提下,显著降低其计算和资源需求。LLaMA 3.1 是该系列的最新版本,继承了前面版本,如 LLaMA 1 和 LLaMA 2 的许多技术优势,并对模型架构、训练数据和推理能力进行了改进。
LLaMA 3.1 主要有以下 4 个特点:
相较于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 系列模型的优势在于其高效性,即在保持较高的生成能力和理解能力的同时,资源消耗更低。LLaMA 3.1 通过对模型结构的精简和训练数据的多样化,在许多任务上能够提供接近甚至超过这些主流模型的性能。
(1)登录后点击控制台,选择 GPU 云实例并创建实例。
(2)付费类型选择按量付费,示例配置选 4 NVIDIA-L40S。
(3)GPU、数据硬盘按照默认的即可。
(4)镜像框架选择 PyTorch 2.4.0,选择密钥对后点击立即创建。
(5)实例状态变为运行中时即实例创建成功。
使用 conda 管理环境,示例环境已经默认安装了 conda 24.5.0,直接创建环境即可。
在终端输入:
conda create -n llama3 python=3.12
第一次在终端使用 conda 命令,需要先进行 conda 初始化,初始化完成后重新开下终端:
conda init
初始化后切换到新创建的环境:
conda activate llama3
安装 LLaMA 3.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 <model_download_url>
模型下载完成后解压缩 Llama-3.1-8B-Instruct.tar:
tar -xf Llama-3.1-8B-Instruct.tar
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 8501
使用云平台提供的端口映射功能,将内网端口映射到公网。
添加好后,通过示例端口的访问链接即可打开 LLaMA3.1 Chatbot 交互界面,可以跟该机器人进行对话。
本文介绍了 LLaMA 3.1 模型的特点、优势以及在云服务平台上的部署流程。LLaMA 3.1 是 Meta 发布的最新大语言模型,具有高效的计算设计和优异的推理性能。其主要优势在于相较于 OpenAI 的 GPT 系列或 Google 的 PaLM 系列,LLaMA 3.1 在消耗较少资源的情况下依然能够提供强大的生成和理解能力。
文章还详细描述了如何部署 LLaMA 3.1 的步骤,从创建 GPU 实例,到配置环境(使用 conda 管理 Python 环境),再到安装必要的依赖和下载模型文件。最后,还展示了如何构建一个基于 Streamlit 的聊天机器人,通过 LLaMA 3.1 生成对话内容并与用户交互。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online