丹摩征文活动|Llama3.1部署与使用全攻略
@
Llama3.1-部署与使用
- 1. Llama基本介绍
- 2. Llama3.1的部署流程
- 创建并登录实例
- 3. LLama3.1部署
- 4. Llama3.1的使用教程
- 5. 总结
前言:在当今人工智能快速发展的时代,大模型的应用越来越广泛,其中Llama3.1作为一款功能强大的语言模型,受到了广泛的关注和应用。而丹摩平台,作为一个高效、稳定且易于使用的平台,为Llama3.1的部署与使用提供了极大的便利。
本文旨在详细介绍如何在丹摩平台下部署和使用Llama3.1,帮助读者快速上手并充分发挥其强大的功能。无论是对于初学者还是有一定经验的用户,本文都将提供全面的指导和实践建议,让读者能够更好地理解和应用Llama3.1。
在接下来的内容中,我们将从Llama3.1的基本介绍开始,逐步深入到在丹摩平台下的部署流程、使用技巧以及常见问题的解决方案。
1. Llama基本介绍
概述:Llama3.1是由Meta(前Facebook)开发的一款先进的大型语言模型,在自然语言处理领域具有显著优势。它基于Transformer架构,通过庞大的训练数据集进行训练,具备强大的语义理解和上下文捕捉能力。Llama3.1能够执行多种自然语言处理任务,如自然语言理解、对话生成、文本摘要、翻译等,并以其规模和性能而著称。
技术特点:
- Transformer架构:Llama3.1采用了Transformer架构,这是一种神经网络架构,可以处理文本、音频、视频和图像等顺序数据。Transformer不使用任何循环层或卷积层,其基础层叫做Attention(注意力),还包含其他基本层,如全连接层、规范化层(主要是LayerNorm)、Embedding层和位置编码层。
- 大规模训练数据集:Llama3.1是由一个包含1.3万亿个参数的巨大数据集训练的,使其成为目前训练过的最大语言模型之一。
强大的语义理解和上下文捕捉能力:通过庞大的训练数据集和先进的算法,Llama3.1具备了强大的语义理解和上下文捕捉能力,能够处理复杂的语言结构和多样的语义需求。- 多语言支持:Llama3.1支持多种语言的处理,包括但不限于英语、中文、法语、德语等,使其能够在全球范围内的应用中发挥作用。
- 高效能:通过优化模型结构和算法,Llama3.1实现了低延迟和高效能,能够在较短时间内处理大规模数据,并生成高质量的文本。
以Llama3.0的对比为例:


由于资源限制,我们此次选择部署 Llama3.1 的 8B 版本,该版本至少需要GPU显存16G。本次测试环境:
ubuntu 22.04 python 3.12 cuda 12.1 pytorch 2.4.0
2. Llama3.1的部署流程
创建并登录实例
进入控制台-GPU云实例,点击创建实例:

在创建实例之前,我们需要选择配置,我这里选择按量付费--GPU数量1--NVIDIA-GeForc-RTX-4090,该配置为80GB内存(多开一点内存,怕不够用),24GB的显存(本次测试的LLaMA3.1 8B 版本至少需要GPU显存16G)
需关注:
- 如果您通过官方预制方式下载模型,建议扩容至60GB,我的建议是再大一点

选择安装的镜像,这里我们筛选PyTorch,然后我们选择PyTorch 2.4.0。

创建密钥对,然后选择刚刚新建的密钥对,再点击创建

在创建完成后,在 GPU云实例 中查看实例信息:

登录方式有两种,我们逐步来介绍:
JupyterLab:

JupyterLab 界面:

登录后一般会在 /root/workspace 目录下,服务器各个路径具体意义如下:
- /:系统盘,替换镜像,重置系统时系统盘数据都会重置。
- /root/workspace:数据盘,支持扩容,保存镜像时此处数据不会重置。
- /root/shared-storage:共享文件存储,可跨实例存储。
SSH登录:
在SSH登录时,我们只需要在实例详情页面,复制一下SSH的访问链接即可,实现登录

复制结果类似如下:
ssh -p 37454 root@cn-north-b.ssh.damodel.com
- 其中 37454 为端口号,cn-north-b.ssh.damodel.com为主机host
3. LLama3.1部署
我们使用 conda 管理环境,DAMODEL示例已经默认安装了 conda 24.5.0 ,直接创建环境即可:
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 模型,平台已预制Llama-3.1-8B-Instruct模型,执行以下命令即可内网高速下载:
wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar
下载完成后解压缩/Llama-3.1-8B-Instruct.tar
tar -xf Llama-3.1-8B-Instruct.tar
4. Llama3.1的使用教程
模型下载好后,准备加载模型及启动Web服务等工作,新建 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 7777
需关注:
需注意服务地址务必指定位0.0.0.0,否则无法通过浏览器访问
接下来我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网;
进入GPU 云实例页面,点击操作-更多-访问控制:

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

添加成功后,通过访问链接即即可打开LLaMA3.1 Chatbot交互界面,并与其对话:

5. 总结
在探索丹摩平台下LLama3.1的部署与使用的旅程即将画上句号之际,在丹摩平台上高效部署LLama3.1,我们不禁为这一强大语言模型的广泛应用前景和无限潜力所折服。从最初的安装配置,到逐步熟悉其API接口,再到实际应用于文本生成、对话系统、内容创作等多个领域,每一步都见证了LLama3.1作为AI技术前沿代表的实力与魅力。
在此,让我们以开放的心态、探索的精神,继续拥抱变化,不断学习新知,共同推动LLama3.1及类似先进技术在更多领域的创新应用,为构建更加美好的智能世界贡献自己的力量。感谢各位读者的陪伴与支持,愿我们在技术的海洋中乘风破浪,共创辉煌!
更多推荐



所有评论(0)