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

前言

人工智能技术正以惊人的速度重塑我们的日常生活与工作模式。在AI的广阔领域中,大型语言模型(LLM)凭借卓越的自然语言处理、强大的知识推理及广泛的适用场景,已成为众多企业和开发者竞相追逐的热点。其中,Llama3.1作为该领域的明星产品,凭借其高效性、智能性及高度的可扩展性,收获了广泛的认可与赞誉。

丹摩平台,作为AI技术应用领域的先锋,始终致力于为用户提供高效、稳定且安全的AI服务体验。在这个平台上,用户可以轻松实现各类先进AI模型的部署,并迅速将其融入实际应用场景。此刻,让我们一同深入探索在丹摩平台上部署与使用Llama3.1的精髓,揭开它神秘的面纱,领略它赋予我们的智能风采。

1. 初识Llama3.1


Llama 3.1是Meta公司精心打造的一款功能多样且开源的AI模型系列,该系列于2024年7月由Meta公司荣耀发布。Llama 3.1的问世,象征着开源AI模型在性能与功能上取得了历史性的飞跃,它首次超越了闭源领域的顶尖SOTA模型,为AI界注入了新的活力与创新动力。

模型规格及特色概述

  • 参数量级: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数量1
  • NVIDIA-GeForc-RTX-4090:该配置为60GB内存,24GB的显存(本次测试的LLaMA3.1 8B 版本至少需要GPU显存16G)

在这里插入图片描述

每个实例默认附带了50GB的数据硬盘,FLUX.1模型较大,建议扩容至150GB。

继续选择安装的镜像,这里筛选PyTorch,选择PyTorch 2.4.0。
在这里插入图片描述

创建密钥,输入自定义的名称,然后选择自动创建并将创建好的私钥保存的自己电脑中并将后缀改为.pem,以便后续本地连接使用。
在这里插入图片描述

创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!
在这里插入图片描述

登录实例


接下来将基于平台提供的JupyterLab工具,演示fp16版本的部署流程。

首先,启动JupyterLab,并创建终端:
在这里插入图片描述

在这里插入图片描述

登录后一般会在 /root/workspace 目录下,

部署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模型定能释放更大的潜能,为众多领域注入智能化的新活力。而我,作为这场智能化浪潮的见证者与推动者,将矢志不渝,勇往直前,拥抱更加辉煌的未来。
在这里插入图片描述

Logo

「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!

更多推荐