前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >DAMODEL丹摩|Llama3.1:从设置到操作,轻松上手全攻略!

DAMODEL丹摩|Llama3.1:从设置到操作,轻松上手全攻略!

作者头像
用户11292525
发布2024-11-21 16:04:35
发布2024-11-21 16:04:35
25600
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

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和16000个H100 GPU,显示了其前所未有的规模和技术实力。

在这里插入图片描述
在这里插入图片描述

对于开发者来说,Llama 3.1系列的发布为创造更加智能和高效的系统提供了新的机会。通过这些强大的模型,开发者可以设计出更复杂、更有效的解决方案。然而,随之而来的还有如何优化这些模型以适应特定应用场景的挑战,以及确保其可解释性和安全性的问题。随着技术的不断进步,开发者必须不断创新,以迎接未来的挑战和机遇。

在这个快速发展的领域,开源模型的进展不仅推动了技术的前沿探索,也为开发者提供了丰富的资源和灵活性。借助这些模型,开发者可以更轻松地实现复杂的任务,并推动技术创新,为用户带来更好的体验。随着时间的推移,预计会有更多的突破性发展等待我们去发现和利用。

部署流程

在丹摩里创建创建实例。

进入创建页面后,首先在实例配置中选择付费类型,一般短期需求可以选择按量付费或者包日,长期需求可以选择包月套餐。

在准备首次创建计算实例时,选择合适的GPU和硬盘配置是非常重要的一步。建议选择NVIDIA GeForce RTX 4090进行按需付费,该GPU提供了60GB的内存和24GB显存,完全能够支持LLaMA 3.1 8B版本的运行,该版本至少需要16GB的显存才能正常运作。

对于数据存储方面,每个实例默认配备了50GB的数据硬盘空间,这对于初次部署通常已经足够。这个默认配置可以满足大多数基础项目的存储需求,尤其是对于刚开始的用户而言。

在设置计算实例时,选择合适的操作镜像也是一个关键步骤。平台提供了多种预配置的基础镜像,帮助您快速启动项目。这些镜像内置了各种基础环境和开发框架,您可以根据需要进行选择。

为满足项目需求,我们建议挑选包含PyTorch的镜像。通过在筛选选项中勾选框架,选择PyTorch 2.4.0版本。这一版本为机器学习和深度学习项目提供了强大的支持,并能够与最新的研究和工具兼容。

为了确保登录过程的安全性,建议生成一个密钥对。首先,您需要为密钥对设置一个自定义名称,然后选择系统的自动生成功能来创建它。完成后,将生成的私钥文件下载到您的计算机上。为了便于后续的本地连接,请务必将文件后缀修改为.pem格式。

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

登录实例

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

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

一旦成功登录,您通常会直接进入 /root/workspace 目录。来让我们深入了解一下服务器中各个路径的特殊含义:

  1. /:此路径代表系统盘,负责存放所有系统级的数据和文件。每次当系统进行镜像替换或重置时,位于此处的数据都会被一并清空。
  2. /root/workspace:这是指向数据盘的路径。数据盘拥有扩展容量的特性,保证了其在保存镜像的过程中,数据不会被重置。
  3. /root/shared-storage:这是一个提供共享文件存储服务的路径,支持跨实例间的数据存储和访问。
  4. SSH登录:SSH其实只是一种连接方式,您可以选择使用系统内置的终端或其他工具如Xshell、MobaXterm等进行连接。 要想通过SSH登录,您需要提前准备以下几项信息:
    • 用户名,一般为root
    • 远程主机的域名或IP地址,这里我们使用的是host域名,可以在实例页面中找到
    • 端口号,同样可以在实例页面中获取
    • 登录密码或者密钥,这里我们选择使用密钥,即之前在创建实例时保存到本地的密钥文件

    记得在实例页面获取主机host和端口号,这是SSH远程登录的关键信息。

复制结果类似如下:

代码语言:javascript
代码运行次数:0
复制
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 ,直接创建环境即可:

代码语言:javascript
代码运行次数:0
复制
conda create -n llama3 python=3.12

环境创建好后,使用如下命令切换到新创建的环境:

代码语言:javascript
代码运行次数:0
复制
conda activate llama3

继续安装部署LLama3.1需要的依赖:

代码语言:javascript
代码运行次数:0
复制
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模型,执行以下命令即可内网高速下载:

代码语言:javascript
代码运行次数:0
复制
wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar

下载完成后解压缩/Llama-3.1-8B-Instruct.tar

代码语言:javascript
代码运行次数:0
复制
tar -xf Llama-3.1-8B-Instruct.tar

使用教程

模型下载好后,准备加载模型及启动Web服务等工作,新建 llamaBot.py 文件并在其中输入以下内容:

代码语言:javascript
代码运行次数:0
复制
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 可以更换端口:

代码语言:javascript
代码运行次数:0
复制
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024

需注意服务地址务必指定位0.0.0.0,否则无法通过浏览器访问

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

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

在这里插入图片描述
在这里插入图片描述

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Llama3.1:从设置到操作,轻松上手全攻略!
    • Llama3.1历史曲线
    • 部署流程
    • 登录实例
    • 部署Llama3.1
    • 使用教程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档