亲身体验Llama 3.1:开源模型的部署与应用之旅

文章目录

    • [1 Llama 3.1系列的诞生](#1 Llama 3.1系列的诞生)
    • [2 大型模型的未来发展](#2 大型模型的未来发展)
    • [3 使用教程](#3 使用教程)
    • [4 Llama 3.1在客户服务中的运用](#4 Llama 3.1在客户服务中的运用)

1 Llama 3.1系列的诞生

在人工智能的浪潮中,大型语言模型(LLM)正以其独特的魅力和潜力,成为深度学习领域的一颗耀眼明星。

这些模型不仅在自然语言处理(NLP)领域取得了令人瞩目的成就,还在计算机视觉(CV)、多模态学习和科学计算等多个领域展现出了巨大的应用前景。

开源LLM的兴起,为全球的开发者和研究者提供了一个广阔的舞台,他们可以在这个舞台上自由地探索、实验和创新。

2024年7月23日,Meta公司发布了Llama 3.1系列,这一事件无疑为开源模型领域注入了新的活力。

Llama 3.1 405B模型,以其4050亿的参数量和128K Tokens的上下文长度,成为了Meta公司迄今为止最大规模的训练成果之一。

这一成就的背后,是超过15万亿的Tokens和超过1.6万个H100 GPU的庞大计算资源的支撑。

Llama 3.1在规模和性能上的显著提升,不仅在技术上实现了飞跃,更在多种任务中展现出了前所未有的灵活性和潜力。

2 大型模型的未来发展

作为一名AI工程师,我对这一进展感到无比兴奋。

这些大型模型的出现,不仅推动了技术的进步,也为我们的日常工作带来了新的挑战和机遇。

它们提供了强大的工具,使我们能够构建更加智能和高效的系统,我们也面临着如何优化这些模型以适应特定应用场景的问题,以及如何确保这些模型的可解释性和安全性。

在体验这些大型模型的过程中,我深刻感受到了它们的强大能力。例如,Llama 3.1 405B模型在处理长文本数据时的出色表现,让我对自然语言的理解有了新的认识。

它能够理解和生成连贯、逻辑性强的文本,这在以往的模型中是难以想象的,并且它在多语言支持方面的能力也令人印象深刻,这对于全球化的应用开发来说是一个巨大的优势。

3 使用教程

(1)使用 conda 管理环境,DAMODEL示例已经默认安装了 conda 24.5.0 ,直接创建环境即可:

bash 复制代码
conda create -n llama3 python=3.12

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

bash 复制代码
conda activate llama3

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

bash 复制代码
pip install langchain==0.1.15
pip install streamlit==1.36.0
pip install transformers==4.44.0
pip install accelerate==0.32.1

(4)安装好后,下载 Llama-3.1-8B 模型,平台已预制Llama-3.1-8B-Instruct模型,执行以下命令即可内网高速下载:

bash 复制代码
wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar

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

bash 复制代码
tar -xf Llama-3.1-8B-Instruct.tar

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

python 复制代码
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)

(7)在终端中运行以下命令,启动 streamlit 服务,server.port 可以更换端口:

bash 复制代码
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024

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

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

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

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

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

4 Llama 3.1在客户服务中的运用

在实际应用中,我尝试将Llama 3.1 405B模型集成到一个客户服务机器人中,这个机器人需要处理大量的用户查询,并提供准确的回答。

通过使用Llama 3.1 405B模型,机器人能够更好地理解用户的意图,提供更加个性化的服务。这不仅提高了用户的满意度,也提高了服务的效率。

我还尝试将Llama 3.1 405B模型应用于一个复杂的数据分析项目中,在这个项目中,模型需要从大量的数据中提取有价值的信息,并生成报告。

Llama 3.1 405B模型的上下文理解能力,使得它能够从数据中提取出更深层次的关联和模式,这对于数据分析来说是非常宝贵的。

相关推荐
chaojihaomai3 小时前
AI电商商品图生成中的材质保真问题——扩散模型重建优先级分析与锁定式方案
人工智能·材质
大模型探索者5 小时前
2026 企业智能体平台选型指南:从通用到行业深耕,怎么选?
大数据·人工智能
深圳行云创新5 小时前
北极星知识图谱平台|太空越来越“拥挤”,知识图谱如何预测空间碎片碰撞风险?
人工智能·知识图谱
Am-Chestnuts5 小时前
国产AI多轮对话归档与多格式导出实践
人工智能·word
麻瓜生活睁不开眼6 小时前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
workflower6 小时前
装备企业的 AI 路线图
人工智能·深度学习·机器学习·设计模式·机器人
AKAMAI7 小时前
Linode接口及默认防火墙现已全面开放使用
人工智能·云计算
前端开发江鸟7 小时前
RAG 回答错了,问题到底出在召回、重排,还是生成?
人工智能
美狐美颜SDK开放平台7 小时前
直播app开发如何实现主播级美颜效果?美颜sdk开发方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美颜api
东方小月8 小时前
从零开发一个 Coding Agent(四):使用状态机校验大模型事件流
前端·人工智能·后端