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

文章目录

    • 1 Llama 3.1系列的诞生
    • 2 大型模型的未来发展
    • 3 使用教程
    • 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 ,直接创建环境即可:

conda create -n llama3 python=3.12

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

conda activate llama3

(3)继续安装部署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

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

wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar

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

tar -xf Llama-3.1-8B-Instruct.tar

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

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模型的上下文理解能力,使得它能够从数据中提取出更深层次的关联和模式,这对于数据分析来说是非常宝贵的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/885393.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型增量训练--基于transformer制作一个大模型聊天机器人

针对夸夸闲聊数据集,利用UniLM模型进行模型训练及测试,更深入地了解预训练语言模型的使用方法,完成一个生成式闲聊机器人任务。 项目主要结构如下: data 存放数据的文件夹 dirty_word.txt 敏感词数据douban_kuakua_qa.txt 原始语…

【算法篇】二叉树类(2)(笔记)

目录 一、Leetcode 题目 1. 左叶子之和 (1)迭代法 (2)递归法 2. 找树左下角的值 (1)广度优先算法 (2)递归法 3. 路径总和 (1)递归法 (2…

JavaScript类型转换和相等性详解

类型转换 10"objects" //10objects,数字10转换为字符串 "7"*"4" //28,两个字符串均转为数字,只要不是加,其他都按两个数字算 var n 1-"x"// NaN,字符串x无法转化为数字 n"objects"//…

大模型训练:K8s 环境中数千节点存储最佳实践

今天这篇博客来自全栈工程师朱唯唯,她在前不久举办的 KubeCon 中国大会上进行了该主题分享。 Kubernetes 已经成为事实的应用编排标准,越来越多的应用在不断的向云原生靠拢。与此同时,人工智能技术的迅速发展,尤其是大型语言模型&…

通信工程学习:什么是CSMA/CD载波监听多路访问/冲突检测

CSMA/CD:载波监听多路访问/冲突检测 CSMA/CD(Carrier Sense Multiple Access/Collision Detect),即载波监听多路访问/冲突检测,是一种用于数据通信的介质访问控制协议,广泛应用于局域网(特别是以…

rpm方式安装jdk1.8

1、查询系统中是否已经安装jdk rpm -qa |grep java 或 rpm -qa |grep jdk 2、卸载已有的openjdk rpm -e --nodeps java-1.7.0-openjdk rpm -e --nodeps java-1.7.0-openjdk-headless rpm -e --nodeps java-1.8.0-openjdk rpm -e --nodeps java-1.8.0-openjdk-headless3、安装j…

考拉悠然携手中国系统打造城市智能中枢,让城市更聪明更智慧

在21世纪的科技浪潮中,智慧城市建设已成为推动城市现代化进程的重要引擎。随着人工智能技术的飞速发展,AI正以前所未有的速度融入智慧城市管理的每一个角落,从交通出行到公共安全,从环境保护到城市管理,无一不彰显着智…

2.1 HuggingFists系统架构(二)

部署架构 上图为HuggingFists的部署架构。从架构图可知,HuggingFists主要分为服务器(Server)、计算节点(Node)以及数据库(Storage)三部分。这三部分可以分别部署在不同的机器上,以满足系统的性能需求。为部署方便,HuggingFists社区版将这三部…

生产环境升级mysql流程及配置主从服务

之前写到过mysql升级8.4的文章, 因此不再介绍mysql的安装过程 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客 生产环境升级mysql8.4.x流程 安装mysql 参考之前文章: 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客…

尚硅谷MyBatis笔记

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“intern…

yolov8/9/10模型在仪表盘、指针表检测中的应用【代码+数据集+python环境+训练/应用GUI系统】

可视化训练系统 可视化应用系统 yolov8/9/10模型在仪表盘、指针表检测中的应用【代码数据集python环境训练/应用GUI系统】 背景意义 随着科学技术的快速发展,机器视觉以及人工智能等技术逐渐从理论走向实践,并在各个领域得到广泛应用。机器视觉检测系统…

使用powershell的脚本报错:因为在此系统中禁止执行脚本

1.添加powershell功能环境: 2.启动powershell的执行策略 因为在此系统中禁止执行脚本。 set-executionpolicy unrestricted

若依生成主子表

一、准备工作 确保你已经部署了若依框架,并且熟悉基本的开发环境配置。同时,理解数据库表结构对于生成代码至关重要。 主子表代码结构如下(字表中要有一个对应主表ID的字段作为外键,如下图的customer_id) -- ------…

springboot 集成 camunda

项目地址: stormlong/springboot-camundahttps://gitee.com/stormlong/springboot-camunda 官网集成引导 进入官网 https://camunda.com/ 选择 camunda7 滑倒页面底部 进入 getStart 页面 https://start.camunda.com/ 点击 GENERATE 下载导入 idea 即可 流程设计…

水波荡漾效果+渲染顺序+简单UI绘制

创建场景及布置 创建新场景Main,在Main场景中创建一个plane物体,命名为WaterWavePla,具体数值及层级面板排布如下: 编写脚本 创建一个文件夹,用于存放脚本,命名Scripts,创建一个子文件夹Effect,存放特效相关脚本,创建…

grafana全家桶-loki promtail收集k8s容器日志

loki是grafana旗下轻量级日志收集工具,为了减少loki对集群的影响,把loki的agent日志收集端promtail部署在k8s集群中,loki server部署在集群外面。这样简单做一个解耦,避免大量读写的应用影响到集群内业务服务。 一、promtail部署…

Transformer算法7个面试常见问题

1.Transformer为何使用多头注意力机制?(为什么不使用一个头) 英文论文中是这么说的: Multi-head attention allows the model to jointly attend to information from different representation subspaces at different position…

1.1.5 计算机网络的性能指标(上)

信道: 表示向某一方向传送信息的通道(信道!通信线路)一条通信线路在逻辑上往往对应一条发送信道和一条接收信道。 速率: 指连接到网络上的节点在信道上传输数据的速率。也称数据率或比特率、数据传输速率。 速率单…

(二)大模型调用

一、基本概念 1.1、Prompt 大模型的所有输入,即,我们每一次访问大模型的输入为一个 Prompt, 而大模型给我们的返回结果则被称为 Completion。 1.2、Temperature LLM 生成是具有随机性的,在模型的顶层通过选取不同预测概率的预测结…

职称评审难在哪?

没有项目业绩资料? 社保不符合? 看不懂评审文件? 申报材料不会做? 论文没地发表? 有这些疑问的 评论区滴滴