📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹
❀ 丹摩征文
- 1. 初识Llama3.1
- 2. 部署流程
- 创建实例
- 登录实例
- 部署LLama3.1
- 3. 实践使用教程
- 4. 实践感想
前言:人工智能(AI)技术正以前所未有的速度改变着我们的生活和工作方式。大型语言模型(LLM)作为AI领域的重要分支,以其卓越的自然语言处理能力、强大的知识推理能力和广泛的应用场景,成为了众多企业和开发者关注的焦点。而Llama3.1,作为这一领域的佼佼者,更是以其高效、智能和可扩展的特性,赢得了广泛的赞誉。
丹摩平台,作为AI技术应用的领先者,一直致力于为用户提供高效、稳定、安全的AI服务。在这个平台上,用户可以轻松部署各种先进的AI模型,并快速应用到实际场景中。今天,我们将一起探索在丹摩平台上部署与使用Llama3.1的奥秘,揭开其神秘的面纱,感受它带来的智能魅力。
1. 初识Llama3.1
Llama 3.1是由Meta公司推出的一款多功能、开源的AI模型系列,Llama 3.1于2024年7月由Meta公司正式发布。该模型的发布标志着开源AI模型在性能和能力上取得了重大突破,首次击败了闭源最强SOTA模型,为AI领域带来了新的活力和创新。
Llama 3.1 与其他模型对比:
模型规格与特点:
- 参数规模:Llama 3.1系列包括80亿(8B)、700亿(70B)和4050亿(405B)参数版本,满足了不同场景和需求下的使用。
- 多语言支持:原生支持8种语言,包括英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语,增强了模型的跨语言处理能力。
- 上下文长度:最长上下文窗口达到128K,能够处理更复杂的对话和文本生成任务。
模型架构:采用标准的仅解码器Transformer模型结构,并进行小幅改动以最大化训练稳定性。
由于资源的局限性,我们此次选择部署 Llama3.1 的 8B 版本,该版本至少需要GPU显存16G
。
测试环境:
ubuntu 22.04 python 3.12 cuda 12.1 pytorch 2.4.0
2. 部署流程
创建实例
进入控制台-GPU云实例,点击创建实例:
我们这里只是短期需求,可以选择按量付费,其次选择GPU数量和需求的GPU型号。
创建实例推荐选择:
按量付费–GPU数量1–NVIDIA-GeForc-RTX-4090,该配置为60GB内存,24GB的显存(本次测试的LLaMA3.1 8B 版本至少需要GPU显存16G),首次创建可以就选择默认大小50GB
数据盘我选择60G
注意:
如果您通过官方预制方式下载模型,建议扩容至60GB
继续选择安装的镜像,这里筛选PyTorch,选择PyTorch 2.4.0。
创建密钥,输入自定义的名称,然后选择自动创建并将创建好的私钥保存的自己电脑中并将后缀改为.pem,以便后续本地连接使用。
创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!
登录实例
等待实例创建成功,就可以进行登录了,在 GPU云实例 中查看实例信息:
登陆方式一:JupyterLab
平台提供了在线访问实例的 JupyterLab 入口,可以直接登录实例:
JupyterLab 界面:
登录后一般会在 /root/workspace 目录下,
/root/workspace
:数据盘,支持扩容,保存镜像时此处数据不会重置。
登陆方式二:SSH
SSH登录一般需要以下 4 个信息:
- 用户名:root
- 远程主机域名或IP(这里使用host域名):实例页面获取
- 端口号:实例页面获取
- 登录密码或密钥(这里使用密钥):前面创建实例时保存到本地的密钥
在实例页面获取主机host和端口号:
ssh -p 端口号 root@主机host
部署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
3. 实践使用教程
在完成上述的工作后,我们可以新建 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 1024
注意
:服务地址务必指定位0.0.0.0,否则无法通过浏览器访问
接下来我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网;
进入GPU 云实例页面,点击操作-更多-访问控制:
点击添加端口,添加streamlit
服务对应端口:
添加成功后,通过访问链接即即可打开LLaMA3.1 Chatbot交互界面,并与其对话:
4. 实践感想
随着我在丹摩平台上对Llama3.1的深入部署与使用,这段充满挑战与收获的旅程已悄然接近尾声。从初次接触Llama3.1的震撼,到在丹摩平台上一步步实现其部署的喜悦,再到实际运用中对其强大功能的深刻体会,每一步都凝聚着我对AI技术的热爱与追求。
在丹摩平台的助力下,Llama3.1展现出了前所未有的智能魅力。它不仅在自然语言处理、代码生成等核心任务上表现出色,更在跨语言处理、长上下文理解等复杂场景中展现出了卓越的能力。
我相信,在丹摩平台这样的优秀平台上,Llama3.1等开源AI模型将发挥更大的作用,为更多领域带来智能化的变革。而我,也将作为这场变革的见证者和参与者,不断前行,迎接更加美好的明天。