当前位置: 首页 > news >正文

丹摩征文活动|Llama3.1:零障碍部署,尽享无忧使用!

丹摩征文活动 | Llama3.1:零障碍部署,尽享无忧使用!

Llama3.1介绍

开源大型语言模型(LLM)领域正蓬勃发展,不断有新模型如LLaMA、Alpaca以及国内的ChatGLM、BaiChuan和InternLM(书生·浦语)等引人注目的产品问世。这些模型不仅为开发者提供了本地部署和个性化定制的可能性,而且推动了创新应用的开发。

2024年7月23日,Meta公司推出了Llama 3.1系列,这标志着开源模型发展的又一重要里程碑。特别是Llama 3.1 405B模型,凭借其4050亿参数和128K Tokens的上下文长度,成为Meta迄今为止最大的模型。在训练过程中,该模型涉及超过15万亿的Tokens和1.6万个H100 GPU,规模之大前所未有。

在这里插入图片描述

二、部署流程

使用丹摩平台进行实例的创建。

在这里插入图片描述

当您开始创建新的计算实例时,首步是确定计费方案。对于短期项目,您可以选择灵活的按需计费或日租服务;而长期项目则更适合选择月度套餐,以享受更优惠的价格。这样的设置让您能够根据项目时长灵活选择,优化成本。

在这里插入图片描述

对于初次搭建,建议采用:

  • 计费模式:按需计费
  • GPU配置:1个单位
  • 型号:NVIDIA GeForce RTX 4090,配备60GB内存和24GB显存,足以满足LLaMA3.1 8B版本至少16G显存的需求。
  • 存储:每个实例都预装了50GB的硬盘空间,对于新用户来说,这个容量已经足够起步。

在这里插入图片描述

在选择部署环境时,您可以从平台提供的基础镜像中挑选,这些镜像预装了必要的环境和框架。您可以通过勾选功能来选择需要的框架,例如,如果您需要PyTorch,就可以直接选择PyTorch 2.4.0版本,以快速搭建您的开发环境。

在这里插入图片描述

为保证安全登录,创建密钥对,输入自定义的名称,然后选择自动创建并将创建好的私钥保存的自己电脑中并将后缀改为.pem,以便后续本地连接使用。

在这里插入图片描述

创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!

在这里插入图片描述

登录实例

等待实例创建成功,在 GPU云实例 中查看实例信息。

在这里插入图片描述

平台提供了在线访问实例的 JupyterLab 入口,可以直接登录实例:

在这里插入图片描述

当您成功登录服务器后,通常会出现在/root/workspace路径中。以下是服务器中不同目录的作用:

  1. /:这是您的系统根目录,如果您需要重置系统,请注意,此目录下的数据将会被清除。
  2. /root/workspace:这是一个数据目录,您可以在这里存储数据,并且它支持扩展容量。在备份镜像时,此目录的数据不会被清除,确保了数据的持久性。
  3. /root/shared-storage:这是一个跨服务器实例的共享存储空间,方便您在不同的服务器之间共享文件。

为了获取服务器的域名和端口信息,您需要访问实例页面。在那里,您可以找到所有必要的连接详情,以便通过SSH安全地连接到您的服务器。

在这里插入图片描述

复制结果类似如下:

ssh -p 31729 root@gpu-s277r6fyqd.ssh.damodel.com

其中,gpu-s277r6fyqd.ssh.damodel.com 即主机host,31729 为端口号。

终端登录方式详见SSH登录与密钥对。

部署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

使用教程

模型下载好后,准备加载模型及启动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():# 从预训练的模型中获取tokenizertokenizer = 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 可以更换端口:

# 需注意服务地址务必指定位0.0.0.0,否则无法通过浏览器访问
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024

接下来我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网;

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

体验感想

这些模型为开发者提供了在本地环境中进行部署和定制的可能性,使我们能打造具有独特价值的应用。

对于开发者来说,这些新模型的发布不仅带来了新的发展机遇,也带来了挑战,比如如何针对特定场景优化模型,以及如何确保模型的可解释性和安全性。随着技术的不断进步,我们可以期待更多的创新和突破即将到来。


http://www.mrgr.cn/news/74703.html

相关文章:

  • 工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程
  • 基于扩散模型的模糊医学图像分割
  • Excel——宏教程(精简版)
  • unity li2cpp逆向原理是什么?
  • uni-app快速入门(十)--常用内置组件(下)
  • 美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
  • 鸿蒙学习基本概念
  • 【go从零单排】Spawning Processes 、Exec‘ing Processes
  • 01、Spring MVC入门程序
  • 室内定位论文精华-无人机与机器人在地下与室内环境中的自主导航与定位新技术
  • 高阶智驾「血拼」,跨域融合开启淘汰,谁会冲出重围,谁将出局?
  • RocketMQ-02 集群架构部署
  • jenkins使用cli发行uni-app到h5
  • ChatGPT提问prompt范例模板
  • ArkTs面向对象编程
  • 网络基础协议理论(SSH协议)
  • 校友会系统的实现ssm+论文源码调试讲解
  • PHP Session
  • 猫头虎分享: 小米大模型升级第二代MiLM2:从一代到二代,能力飞跃提升
  • 【postgresql初级使用】逻辑复制是对数据库对象进行复制,非常灵活的完成数据归集与分发
  • [经典] Sessionstorage用法?
  • 问:数据库的六种锁机制实践总结?
  • 系统安全第十一次作业题目及答案
  • 【经验技巧】基于Matlab和ADS的PCIe 4.0 AMI模型建模与仿真分析
  • springboot的依赖实现原理:spring-boot-starter-parent解析
  • Nginx 负载均衡与权重配置解析