跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

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

综述由AI生成LLaMA 3.1 作为 Meta 推出的开源大模型,凭借高效的架构设计和丰富的训练数据,在推理性能和资源消耗之间取得了良好平衡。详细记录了在 Linux 环境下配置 Python 虚拟环境、安装依赖库及下载模型文件的完整流程,并通过 Streamlit 框架快速构建了一个具备多轮对话能力的聊天机器人应用。重点涵盖了 Conda 环境管理、Hugging Face 模型加载优化以及前端交互界面的实现细节,为开发者提供了从零搭建本地 AI 助手的参考方案。

SqlMaster发布于 2026/4/7更新于 2026/4/252 浏览
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 通过对模型结构的精简和训练数据的多样化,在许多任务上能够提供接近甚至超过主流模型的性能。

三、LLaMA 3.1 部署流程

(一)准备 GPU 环境

首先需要在云端创建一个 GPU 实例。建议选择按量付费模式,配置至少一张 NVIDIA-L40S 显卡以确保推理流畅度。GPU 和数据硬盘可按默认设置,镜像框架推荐选择 PyTorch 2.4.0 版本,并创建密钥对后启动实例。

(二)登录与初始化

实例运行后,通过 JupyterLab 或终端登录。首次使用 Conda 管理环境时,建议先进行初始化操作,然后重新打开终端窗口生效。

conda init

(三)构建 Python 环境

使用 Conda 创建独立的虚拟环境,避免依赖冲突。这里我们指定 Python 3.12 版本。

conda create -n llama3 python=3.12
conda activate llama3

接下来安装 LLaMA 3.1 运行所需的依赖库。包括 LangChain 用于编排、Streamlit 用于前端展示、Transformers 用于模型加载以及 Accelerate 用于加速推理。

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-Instruct 模型文件。可以通过内网源或 Hugging Face 获取。下载完成后解压缩至工作目录。

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

(五)编写聊天应用

新建 llamaBot.py 文件,利用 Streamlit 快速构建交互界面。代码中使用了 @st.cache_resource 来缓存模型加载过程,避免每次请求都重复加载,提升响应速度。

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")

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

# 定义一个函数,用于获取模型和 tokenizer
@st.cache_resource
def get_model():
    # 从预训练的模型中获取 tokenizer
    tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
    tokenizer.pad_token = tokenizer.eos_token
    
    # 从预训练的模型中获取模型,并设置模型参数
    model = AutoModelForCausalLM.from_pretrained(
        model_name_or_path, 
        torch_dtype=torch.bfloat16
    ).to('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

完成端口映射后,即可通过浏览器访问生成的链接,开始与 LLaMA 3.1 聊天机器人进行对话。

总结

本文记录了 LLaMA 3.1 模型的特点、优势以及在 Linux 环境下的完整部署流程。从创建 GPU 实例、配置 Conda 环境,到安装依赖和下载模型文件,最后通过 Streamlit 构建出具备多轮对话能力的聊天机器人。LLaMA 3.1 凭借高效的计算设计和优异的推理性能,在消耗较少资源的情况下依然能提供强大的生成和理解能力,是本地化部署大模型的优秀选择。

目录

  1. 前言
  2. 一、LLaMA 3.1 的特点
  3. 二、LLaMA 3.1 的优势
  4. 三、LLaMA 3.1 部署流程
  5. (一)准备 GPU 环境
  6. (二)登录与初始化
  7. (三)构建 Python 环境
  8. (四)下载模型文件
  9. (五)编写聊天应用
  10. 创建一个标题和一个副标题
  11. 定义模型路径
  12. 定义一个函数,用于获取模型和 tokenizer
  13. 加载 LLaMA3 的 model 和 tokenizer
  14. 如果 session_state 中没有"messages",则创建一个包含默认消息的列表
  15. 遍历 session_state 中的所有消息,并显示在聊天界面上
  16. 如果用户在聊天输入框中输入了内容,则执行以下操作
  17. (六)启动服务
  18. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 能做什么?常见应用场景与学习指南
  • 云开发 Copilot:AI 赋能的低代码开发
  • OpenClaw 漏洞预警:AI 代理日志审计与风险追溯
  • 如何在 Java 中使用 protobuf-java 生成 proto 文件及序列化
  • 无人机光伏巡检:低空经济下的运维革新与实战
  • 基于 MCP Server - Figma AI Bridge 实现 Figma 到前端代码自动化生成
  • WebAI2API 将网页版 AI 转换为 OpenAI 兼容 API 接口
  • Visual Studio Code + Continue + Ollama 实现本地 AI 代码助手
  • 阿里开源 Page-Agent:一行 JS 实现大模型前端 DOM 操控
  • Docker Compose 多服务部署:日志集中管理实战方案(基础与进阶)
  • 基于 OpenCV 和 Python 的车道线检测系统(带 UI 界面)
  • ASP.NET Core Web API 控制器与方法注解属性详解
  • AI 鸿蒙 App 开发:从页面到能力系统的架构演变
  • C++ 高性能订单簿(Order Book)核心实现与优化
  • 如何选择最适合您需求的向量数据库
  • OpenClaw「龙虾」本地部署指南:安装、QQ 接入及运维实战
  • VSCode 精准禁用 Copilot 代码补全:按语言与场景灵活配置
  • 职场人如何利用 Python 提升工作效率与拓展技能边界
  • HarmonyOS ArkTS 前景模糊样式 foregroundBlurStyle 详解
  • Open Interpreter 接入智谱 GLM-4:打造本地电脑控制 AI Agent

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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