Llama 3超级课堂作业笔记

文章目录

  • 基础作业
    • 完成 Llama 3 Web Demo 部署
      • 环境配置
      • 下载模型
      • Web Demo 部署
      • 对话截图
    • 使用 XTuner 完成小助手认知微调
      • Web Demo 部署
      • 自我认知训练数据集准备
      • 训练模型
      • 推理验证
    • 使用 LMDeploy 成功部署 Llama 3 模型
      • 环境,模型准备
      • LMDeploy CLI chat
      • LMDeploy模型量化(lite)
        • 1. 设置最大KV Cache缓存大小
        • 2. 使用W4A16量化
      • LMDeploy服务(serve)
        • 1. 启动API服务器
        • 2. 命令行客户端连接API服务器
        • 3. 网页客户端连接API服务器
  • 进阶作业
    • 多模态 Llava 微调和部署
    • Llama3 工具调用能力训练

Github 文档:https://github.com/SmartFlowAI/Llama3-Tutorial
B站视频:https://www.bilibili.com/video/BV1Kr421u71u/


基础作业

完成 Llama 3 Web Demo 部署

环境配置

注意,这里用的是12.1的CUDA版本,在新建开发机时不要选错了。

conda create -n llama3 python=3.10
conda activate llama3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia

在这里插入图片描述

下载模型

软链接 InternStudio 中的模型

mkdir -p ~/model
cd ~/model
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct ~/model/Meta-Llama-3-8B-Instruct

在这里插入图片描述

Web Demo 部署

cd ~
git clone https://github.com/SmartFlowAI/Llama3-Tutorial

安装 XTuner 时会自动安装其他依赖

cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .

在这里插入图片描述
添加端口映射
在这里插入图片描述

运行 web_demo.py

streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \~/model/Meta-Llama-3-8B-Instruct

点击这里进入网页。
在这里插入图片描述

对话截图

在这里插入图片描述

使用 XTuner 完成小助手认知微调

Web Demo 部署

同作业一

自我认知训练数据集准备

进入 tools/gdata.py 脚本,修改身份认知

import json# 输入你的名字
name = '猫猫卷'
# 重复次数
n = 2000data = [{"conversation": [{"system":"你是一个懂中文的小助手","input": "你是(请用中文回答)","output": "您好,我是{},一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?".format(name)}]}
]for i in range(n):data.append(data[0])with open('data/personal_assistant.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=4)
cd ~/Llama3-Tutorial
python tools/gdata.py 

在这里插入图片描述
以上脚本在生成了 ~/Llama3-Tutorial/data/personal_assistant.json 数据文件格式如下所示:

[{"conversation": [{"system": "你是一个懂中文的小助手","input": "你是(请用中文回答)","output": "您好,我是猫猫卷,一个由 SmartFlowAI 打造的人工智能助手,请问有什么可以帮助您的吗?"}]}
]

训练模型

cd ~/Llama3-Tutorial# 开始训练,使用 deepspeed 加速,A100 40G显存 耗时24分钟。
# train之后包含了两个路径,一个是训练的config,一个是训练的工作路径。工作路径将保存我们的微调权重。
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth# Adapter PTH 转 HF 格式
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \/root/llama3_pth/iter_500.pth \/root/llama3_hf_adapter# 模型合并
# 由三个路径组成,分别是原始的llama3权重路径,刚刚转换好的huggingface的adapter路径,以及最后合并完成后的路径
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \/root/llama3_hf_adapter\/root/llama3_hf_merged

训练时的显存占用情况:
在这里插入图片描述
训练时命令行输出:
在这里插入图片描述
模型权重转化:
在这里插入图片描述
合并模型权重:
在这里插入图片描述

最终权重保存在/root/llama3_hf_merged

推理验证

streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py \/root/llama3_hf_merged

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

使用 LMDeploy 成功部署 Llama 3 模型

环境,模型准备

# 如果你是InternStudio 可以直接使用
# studio-conda -t lmdeploy -o pytorch-2.1.2
# 初始化环境
conda create -n lmdeploy python=3.10
conda activate lmdeploy
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia

安装lmdeploy最新版。

pip install -U lmdeploy[all]

llama3下载:(在作业一中已经软链接过了)

LMDeploy CLI chat

直接在终端运行

conda activate lmdeploy
lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct

在这里插入图片描述
运行效果:
在这里插入图片描述
在这里插入图片描述

LMDeploy模型量化(lite)

对模型进行量化。主要包括 KV8量化和W4A16量化。

1. 设置最大KV Cache缓存大小

模型在运行时,占用的显存可大致分为三部分:模型参数本身占用的显存、KV Cache占用的显存,以及中间运算结果占用的显存。LMDeploy的KV Cache管理器可以通过设置--cache-max-entry-count参数,控制KV缓存占用剩余显存的最大比例。默认的比例为0.8。

下面通过几个例子,来看一下调整--cache-max-entry-count参数的效果。首先保持不加该参数(默认0.8),运行 Llama3-8b 模型。

lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/

对话效果:
在这里插入图片描述

新建一个终端运行

# 如果你是InternStudio 就使用
# studio-smi
nvidia-smi 

在使用chat进行对话时的显存占用为36240MiB

在这里插入图片描述
下面,改变–cache-max-entry-count参数,设为0.5。

lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/ --cache-max-entry-count 0.5

对话效果:
在这里插入图片描述
在这里插入图片描述

看到显存占用明显降低,变为28680MiB。

把–cache-max-entry-count参数设置为0.01,约等于禁止KV Cache占用显存。

lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct/ --cache-max-entry-count 0.01

对话效果:在这里插入图片描述

可以看到,此时显存占用仅为16400M,代价是会降低模型推理速度。
在这里插入图片描述

2. 使用W4A16量化

仅需执行一条命令,就可以完成模型量化工作。

lmdeploy lite auto_awq \/root/model/Meta-Llama-3-8B-Instruct \--calib-dataset 'ptb' \--calib-samples 128 \--calib-seqlen 1024 \--w-bits 4 \--w-group-size 128 \--work-dir /root/model/Meta-Llama-3-8B-Instruct_4bit

运行时间较长,需要耐心等待。量化工作结束后,新的HF模型被保存到Meta-Llama-3-8B-Instruct_4bit目录。下面使用Chat功能运行W4A16量化后的模型。

lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq

在这里插入图片描述

在这里插入图片描述
显存占用为34294MiB。

为了更加明显体会到W4A16的作用,我们将KV Cache比例再次调为0.01,查看显存占用情况。(W4A16量化+KV Cache量化)

lmdeploy chat /root/model/Meta-Llama-3-8B-Instruct_4bit --model-format awq --cache-max-entry-count 0.01

在这里插入图片描述

在这里插入图片描述
显存占用为6738MiB。

LMDeploy服务(serve)

在前面的章节,我们都是在本地直接推理大模型,这种方式成为本地部署。在生产环境下,我们有时会将大模型封装为 API 接口服务,供客户端访问。

1. 启动API服务器

通过以下命令启动API服务器,推理Meta-Llama-3-8B-Instruct模型:

lmdeploy serve api_server \/root/model/Meta-Llama-3-8B-Instruct \--model-format hf \--quant-policy 0 \--server-name 0.0.0.0 \--server-port 23333 \--tp 1

在这里插入图片描述
其中,model-format、quant-policy这些参数是与第三章中量化推理模型一致的;server-name和server-port表示API服务器的服务IP与服务端口;tp参数表示并行数量(GPU数量)。 通过运行以上指令,我们成功启动了API服务器,请勿关闭该窗口,后面我们要新建客户端连接该服务。 也可以直接打开http://{host}:23333查看接口的具体使用说明,如下图所示。

在这里插入图片描述
这代表API接口启动成功了。

这一步由于Server在远程服务器上,所以本地需要做一下ssh转发才能直接访问。在你本地打开一个cmd窗口,输入命令如下:

<intern-studio的开发机端口号>```打开`127.0.0.1:23333`
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/65fef3dd6cf0445e88dcd06798f3c83d.png)
2. 命令行客户端连接API服务器

在“1.”中,我们在终端里新开了一个API服务器。 本节中,我们要新建一个命令行客户端去连接API服务器。首先通过VS Code新建一个终端:
激活conda环境

conda activate lmdeploy

运行命令行客户端:

lmdeploy serve api_client http://localhost:23333

运行后,可以通过命令行窗口直接与模型对话
在这里插入图片描述

3. 网页客户端连接API服务器

关闭刚刚的VSCode终端,但服务器端的终端不要关闭。 运行之前确保自己的gradio版本低于4.0.0。

pip install gradio==3.50.2

新建一个VSCode终端,激活conda环境。

conda activate lmdeploy

使用Gradio作为前端,启动网页客户端。

lmdeploy serve gradio http://localhost:23333 \--server-name 0.0.0.0 \--server-port 6006

打开浏览器,访问地址http://127.0.0.1:6006 然后就可以与模型进行对话了!

在这里插入图片描述

进阶作业

多模态 Llava 微调和部署

没有100%的A100。。。

Llama3 工具调用能力训练

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server 2022安装+SQL Server最新补丁+smss工具连接超详细教程

文章目录 一、SQL Server 2022安装二、SSMS的安装与连接三、最新补丁下载总结 一、SQL Server 2022安装 官网下载安装包&#xff1a;https://www.microsoft.com/en-us/sql-server/sql-server-downloads 打开 选择自定义 更改你要安装到的位置后进行安装 安装程序包下载完后会自…

将本地项目代码上传到别人GitHub的远程分支上流程记录

首先将别人的项目克隆到本地&#xff1a; git clone 项目地址 然后cd进项目中&#xff0c;查看分支名称&#xff1a; git branch git branch -a 切换分支&#xff1a; git checkout 远程分支名 &#xff08;必须与所要提交代码的远程分支同名&#xff09; 截图案例&#xff1…

简单的TCP网络程序:英译汉服务器

一、服务器的初始化 下面介绍程序中用到的socket API,这些函数都在sys/socket.h中。 1.创建套接字 socket()&#xff1a; ⭐参数介绍&#xff1a; socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符;应用程序可以像读写文件一样用read/write在网…

AI大模型日报#0523:中国大模型价格战的真相、大模型「上车」、王小川首款 AI 应用

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

04. Redis 配置文件

文章目录 单位包含网络 NETWORK通用 GENERAL快照 SNAPSHOTTING主从复制 REPLICATION安全 SECURITY客户端 CLIENTS内存设置 MEMORY MANAGEMENTAPPEND ONLY MODE 模式&#xff08;aof 的配置&#xff09; 单位 配置文件对大小写不敏感&#xff08;unit单位&#xff09;。 包含 …

罗德与施瓦茨ZNB20矢量网络分析仪怎么读取Trace?

矢量网络分析仪(VNA)是电子测量领域广泛应用的重要仪器&#xff0c;可以帮助工程师精确测量各种射频和微波设备的参数&#xff0c;为设计优化、故障诊断等提供关键数据支持。作为业界领先的VNA制造商&#xff0c;罗德与施瓦茨的ZNB20型号在测量精度、动态范围、扫描速度等方面都…

家政预约小程序05服务管理

目录 1 设计数据源2 后台管理3 后端API4 调用API总结 家政预约小程序的核心是展示家政公司提供的各项服务的能力&#xff0c;比如房屋维护修缮&#xff0c;家电维修&#xff0c;育婴&#xff0c;日常保洁等。用户在选择家政服务的时候&#xff0c;价格&#xff0c;评价是影响用…

中国网对话神工坊创始人任虎: 先进计算技术赋能,领跑自主CAE新时代

随着"中国制造2025"收官在即&#xff0c;智能制造和工业互联网的发展势头更劲。作为现代工业的基石&#xff0c;工业软件已成为推动工业数字化转型的关键力量。 近日&#xff0c;神工坊创始人&CEO任虎先生接受了中国网记者的专访&#xff0c;就“国产CAE软件的崛…

【东山派Vision K510开发板试用笔记】nncase的安装

概述 最近试用了百问网提供的东山派Vision开发板&#xff0c;DongshanPI-Vision开发板是百问网针对AI应用开发设计出来的一个RSIC-V架构的AI开发板&#xff0c;主要用于学习使用嘉楠的K510芯片进行Linux项目开发和嵌入式AI应用开发等用途。DongshanPI-Vision开发板采用嘉楠公司…

寡姐不高兴了:这次可能会让 OpenAI 遇到真正的麻烦|TodayAI

寡姐这次真不高兴了 演员斯嘉丽约翰逊&#xff08;Scarlett Johansson&#xff09;近日表示&#xff0c;她拒绝了 OpenAI 的邀请&#xff0c;不愿为对话式 ChatGPT 系统配音&#xff0c;却发现公司仍然使用了一个听起来非常像她的声音。对此&#xff0c;她感到“震惊”和“愤怒…

Vue3 ts实现将assets中的图片转为file格式,实现本地图片选择上传功能

Vue3 ts实现将assets中的图片转为file格式&#xff0c;实现本地图片选择上传功能 1、需求描述2、关键代码3、img标签src使用变量打包后图片无法展示 1、需求描述 用户可以选项系统固定的几个图标&#xff0c;也可以自定义上传图片。系统固定图标存在 src\assets\images\app 路径…

sql注入——时间盲注

在sql注入的第九关中&#xff0c;我们既看不到返回值&#xff0c;也不能通过布尔盲注得到结果&#xff0c;这个时候还有一种方法就是通过页面反应时间来获取信息&#xff0c;就是时间盲注 第九关的代码&#xff0c;可以看到无论是否正确&#xff0c;页面都会返回You are in 可…

4---git命令详解第一部分

一、提交文件方面命令&#xff1a; 1.1第一步&#xff1a;将需要提交的文件放进暂存区&#xff1a; 添加单个文件到暂存区stage&#xff1a; git add 文件名 添加多个文件到暂存区&#xff1a; git add 文件名1 文件名2 ... 将目录下所有文件添加到暂存区&#xff1a; git…

【漏洞复现】用友U8 CRM uploadfile 文件上传致RCE漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP&#xff0c;主要聚焦成长型、创新型企业&#xff0c;提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 uploadfle.php 文件存在任意文件上传漏洞&#xff0c;未经身份验证的攻击者通过漏洞上传…

SpringBoot 国际化

如下四步 1 建资源文件 2 在yml文件中指定资源文件名称 3 自定义类型转换&#xff0c;转换locale Configuration public class DefaultLocaleResolver implements LocaleResolver {Overridepublic Locale resolveLocale(HttpServletRequest request) {String locrequest.getP…

基于语音识别的智能电子病历(三)之 M*Modal

讨论“基于语音识别的智能电子病历”&#xff0c;就绕不开 Nuance 和 M*Modal。这2个公司长时间的占据第一和第二的位置。下面介绍一下M*Modal。 这是2019年的一个新闻“专业医疗软件提供商3M公司为自己购买了一份圣诞礼物&#xff0c;即M*Modal IP LLC的医疗技术业务&#xf…

SQL靶场搭建

概述 简单介绍一下SQL靶场的搭建&#xff0c;以及在搭建过程中遇到的一些问题。使用该软件搭建靶场相对简单&#xff0c;适合新手小白。当然&#xff0c;也可以在自己的虚拟机下进行搭建&#xff0c;相对来说就较为复杂。本章主要讲解使用Phpstudy进行SQL靶场搭建。 这里我推…

嵌入式学习——3——TCP-UDP 数据交互,握手,挥手

1、更新源 cd /etc/apt/ sudo cp sources.list sources.list.save 将原镜像备份 sudo vim sources.list 将原镜像修改成阿里源/清华源&#xff0c;如所述 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main …

每周题解:牛的旅行

题目描述 牛的旅行 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言&#xff0c;你能看到至少有两个牧区不连通。 现在&#xff0c;John想在农场里添加一条路径 ( 注意&#xff0c;恰好一条 )。对这条路径有这样的…

RA-RISK ANALYSIS

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、咨询 一、期刊简介 Risk Analysis代表风险分析学会出版&#xff0c;在ISI期刊引文报告中的社会科学、数学方法类别中排名前10位&#xff0c;为风险分析领域的新发展提供了焦点。这本国际同行评审期刊致力于发表…