跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

LLaMA 3.1 模型本地部署与 Streamlit 聊天机器人实战

LLaMA 3.1 是 Meta 推出的高效大语言模型,具备更强的推理能力和开源特性。详细记录了在 GPU 环境下部署 LLaMA 3.1 的完整流程,包括环境配置、依赖安装及模型加载。通过 Streamlit 构建交互式聊天界面,实现了基于 LLaMA 3.1 的智能对话应用,展示了如何在有限资源下运行高性能模型并快速验证效果。

热情发布于 2026/3/26更新于 2026/10/2496 浏览
LLaMA 3.1 模型本地部署与 Streamlit 聊天机器人实战

LLaMA 3.1 模型本地部署与 Streamlit 聊天机器人实战

前言

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

LLaMA 3.1 的特点

LLaMA 3.1 主要具备以下四个特点:

  • 规模较大且高效:参数量相比前代有所增加,但设计注重效率,能在较少资源下达到与更大模型相似的性能水平。
  • 更多的训练数据:通过更广泛、丰富的语料库训练,覆盖更多领域信息,提升了回答问题、生成内容及自然语言理解的能力。
  • 优化的推理性能:优化了推理算法和模型架构,减少了推理时间,提高了响应速度。
  • 开源方式:继续采用开源模式,研究人员和开发人员可在此基础上进行进一步研究和开发,推动社区共同进步。

LLaMA 3.1 的优势

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

部署流程

准备 GPU 环境

首先需要在云端或本地准备好 GPU 实例。登录控制台后,选择 GPU 云实例并创建。

  1. 付费类型:建议选择按量付费,根据需求选择配置(例如 NVIDIA L40S)。
  2. 硬件配置:GPU 和数据硬盘通常使用默认配置即可满足运行需求。
  3. 镜像框架:选择 PyTorch 版本(如 2.4.0),设置密钥对后点击立即创建。
  4. 启动实例:等待实例状态变为'运行中'即表示创建成功。

登录与初始化

通过 JupyterLab 或 SSH 登录实例终端。确保环境中已安装 conda 用于管理 Python 环境。

如果首次使用 conda,需要先进行初始化:

conda init

执行完成后重新打开终端,然后创建新的虚拟环境:

conda create -n llama3 python=3.12

激活环境:

conda activate llama3

安装依赖与模型

安装 LLaMA 3.1 运行所需的依赖包。建议使用 pip 指定版本以确保兼容性:

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

接下来下载模型文件。这里以内网下载为例,实际使用时请替换为 HuggingFace 或其他官方源地址:

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

解压模型文件:

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

构建聊天机器人

模型下载完成后,新建 llamaBot.py 文件,编写 Streamlit 交互代码。这段代码负责加载模型、处理对话历史并展示界面。

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.address 设置为 0.0.0.0 以允许外部访问,端口可根据实际情况调整:

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

配置好网络端口映射后,通过公网 IP 和端口访问链接即可打开 LLaMA 3.1 Chatbot 交互界面,开始与机器人对话。

总结

本文记录了 LLaMA 3.1 模型的特点、优势以及在 GPU 环境下的部署流程。LLaMA 3.1 是 Meta 发布的最新大语言模型,具有高效的计算设计和优异的推理性能。其主要优势在于相较于其他主流模型,在消耗较少资源的情况下依然能够提供强大的生成和理解能力。

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

目录

  1. LLaMA 3.1 模型本地部署与 Streamlit 聊天机器人实战
  2. 前言
  3. LLaMA 3.1 的特点
  4. LLaMA 3.1 的优势
  5. 部署流程
  6. 准备 GPU 环境
  7. 登录与初始化
  8. 安装依赖与模型
  9. 构建聊天机器人
  10. 创建一个标题和一个副标题
  11. 定义模型路径
  12. 定义一个函数,用于获取模型和 tokenizer
  13. 加载 LLaMA3 的 model 和 tokenizer
  14. 如果 session_state 中没有"messages",则创建一个包含默认消息的列表
  15. 遍历 session_state 中的所有消息,并显示在聊天界面上
  16. 如果用户在聊天输入框中输入了内容,则执行以下操作
  17. 启动服务
  18. 总结

更多推荐文章

查看全部
  • Clumsy 网络故障模拟工具使用指南
  • 每周学习总结:健康、文档搭建与算法练习
  • 6 种适合居家办公的副业方向与实操建议
  • 网络安全基础知识详解与常见问答
  • 华为 Kaggle 大师级智能体 Agent K v1.0 诞生,自主解决数据科学难题
  • 1028 人口普查 Python 实现
  • 使用 Spec-Kit 和 Copilot 实践规格驱动开发
  • ChatGPT 保护指令:提升 GPTs 提示词与知识库文件安全性
  • Linux 信号保存核心:未决信号集与阻塞信号集详解
  • Docker 搭建 MySQL 主从服务实战操作详解
  • C++ 基于正倒排索引的搜索引擎 Searcher 模块详解
  • OpenAkita:自我进化的开源 AI 助手框架
  • Kimi K2.5 实测:多模态与编程能力能否兼得
  • AI 写作辅助平台深度评测:炼字工坊与蛙蛙写作
  • Spring Boot 集成 JUnit 出现 NoSuchMethodError 错误解决
  • DeepSeek 时代下前端开发的应用与实践
  • SpringBoot 整合轻量级安全框架 JWE 项目实战
  • 研究发现思维链(CoT)在某些任务中会降低大模型准确率
  • 基于大模型构建专属 AI 应用的实践指南
  • AutoFigure:基于长文本生成高质量科研插图的 AI 框架

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online