Llama3.1的部署与使用指南

在自然语言处理(NLP)领域,大模型(LLM)是基于深度学习算法训练而成的重要工具,应用范围包括自然语言理解和生成。随着技术的发展,开源的LLM不断涌现,涵盖了机器视觉(CV)、多模态模型以及科学计算等多个领域。

在当前的竞争格局中,开源LLM如雨后春笋般涌现,国内外都出现了不少优秀的开源模型。国外有LLaMA、Alpaca等,国内则有ChatGLM、BaiChuan、InternLM等,用户可以在这些模型的基础上进行本地部署和微调,创建个性化的应用。

Llama3.1介绍

2024年7月23日,Meta发布了其最新的开源模型——Llama 3.1,包括405B、70B和8B版本。值得注意的是,Llama 3.1 405B的上下文长度支持达到128K Tokens,其训练基于150万亿个Tokens,使用超过16,000个H100 GPU,是Meta迄今为止规模最大的Llama模型

image-20240813133905709

本指南主要集中在Llama3.1的8B版本,该版本需要至少16GB的GPU显存。以下是我们的测试环境配置:

  • 操作系统:Ubuntu 22.04
  • Python版本:3.12
  • CUDA版本:12.1
  • PyTorch版本:2.4.0

部署流程

创建云实例

首先,访问控制台-GPU云实例并点击创建实例。在创建页面中,选择合适的付费类型(按量或包月),接着配置GPU数量和型号。建议首次创建选择按量付费,1个NVIDIA-GeForce-RTX-4090 GPU,这样可以满足8B版本的显存需求。

image-20240921193104498

在数据硬盘配置上,默认50GB的硬盘通常足够,但若通过官方方式下载模型,建议扩展至60GB。然后选择基础镜像,确保选择了包含PyTorch的镜像。

创建实例时,务必生成并保存密钥对,以便后续SSH连接使用。

登录实例

实例创建完成后,可以通过多种方式登录:

  • JupyterLab:平台提供了在线JupyterLab入口,登录后可在/root/workspace目录下进行操作。
  • SSH登录:使用终端工具进行SSH登录,输入必要的用户名、主机IP和密钥。

这里我们使用JupyterLab

部署Llama3.1

在这里插入图片描述

在实例中,我们将使用conda管理环境。可以直接创建一个新环境:

conda create -n llama3 python=3.12

image-20240921193655581

切换到新创建的环境:

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

image-20240921194350770

接着,下载Llama-3.1-8B-Instruct模型,使用以下命令进行内网高速下载:

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

image-20240921194433961

下载后,解压缩模型文件:

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

使用指南

模型下载完成后,创建一个名为llamaBot.py的文件,并输入以下代码来加载模型和启动Web服务:

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 = 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

# 加载模型和tokenizer
tokenizer, model = get_model()

# 管理会话状态
if "messages" not in st.session_state:
    st.session_state["messages"] = []

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)
    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)
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    st.session_state.messages.append({"role": "assistant", "content": response})
    st.chat_message("assistant").write(response)

image-20240921195411833

在终端运行以下命令来启动Streamlit服务,确保服务地址设置为0.0.0.0以便于浏览器访问:

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

接着,通过丹摩平台的端口映射功能,将内网端口映射到公网,完成后您就可以通过提供的链接访问LLaMA3.1 Chatbot并与其互动。

进入GPU 云实例页面,点击操作-更多-访问控制:

image-20240921195653583

点击添加端口,添加streamlit服务对应端口:

image-20240921195724711

然后点击相应链接即可进入交互界面。

通过以上步骤,您将成功部署并使用Llama3.1模型,享受与强大聊天机器人的互动体验。

Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐