DAMODEL——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模型。本指南主要集中在Llama3.1的8B版本,该版本需要至少16GB的GPU显存。操作系
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模型。
本指南主要集中在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版本的显存需求。
在数据硬盘配置上,默认50GB的硬盘通常足够,但若通过官方方式下载模型,建议扩展至60GB。然后选择基础镜像,确保选择了包含PyTorch的镜像。
创建实例时,务必生成并保存密钥对,以便后续SSH连接使用。
登录实例
实例创建完成后,可以通过多种方式登录:
- JupyterLab:平台提供了在线JupyterLab入口,登录后可在
/root/workspace
目录下进行操作。 - SSH登录:使用终端工具进行SSH登录,输入必要的用户名、主机IP和密钥。
这里我们使用JupyterLab。
部署Llama3.1
在实例中,我们将使用conda
管理环境。可以直接创建一个新环境:
conda create -n llama3 python=3.12
切换到新创建的环境:
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-Instruct
模型,使用以下命令进行内网高速下载:
wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar
下载后,解压缩模型文件:
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)
在终端运行以下命令来启动Streamlit服务,确保服务地址设置为0.0.0.0
以便于浏览器访问:
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024
接着,通过丹摩平台的端口映射功能,将内网端口映射到公网,完成后您就可以通过提供的链接访问LLaMA3.1 Chatbot并与其互动。
进入GPU 云实例页面,点击操作-更多-访问控制:
点击添加端口,添加streamlit服务对应端口:
然后点击相应链接即可进入交互界面。
通过以上步骤,您将成功部署并使用Llama3.1模型,享受与强大聊天机器人的互动体验。
更多推荐
所有评论(0)