LLM记录:五一 Llama 3 超级课堂

2024-05-11 10:52

本文主要是介绍LLM记录:五一 Llama 3 超级课堂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LLM记录:五一 Llama 3 超级课堂

想玩大模型,自己又没那个环境,参加五一 Llama 3 超级课堂,简单记录一下llama3-8b的相关体验,实在是邀请不到人,还好后面开放了24G显存,好歹模型能跑起来了,只能说感谢大佬!

Llama 3 超级课堂 git地址:https://github.com/SmartFlowAI/Llama3-Tutorial/

第一节:Llama 3 本地 Web Demo 部署

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/hello_world.md

比较简单的操作:

就是按照文档按照环境,克隆下源码,启动运行一下就可以了

我这边遇到一个小问题:

说软连接的目录找不到config.json文件,干脆直接改成模型路径好了

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

在这里插入图片描述

streamlit run ~/Llama3-Tutorial/tools/internstudio_web_demo.py /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct/

在这里插入图片描述

周杰伦(但有点出入)

在这里插入图片描述

第二节:Llama 3 微调个人小助手认知(XTuner 版)

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/assistant.md

数据集准备:稍微做点修改,gdata.py文件里面把名字改成我自己的了

configs/assistant/llama3_8b_instruct_qlora_assistant.py

此文件里面把软连接的模型路径换成了实际的路径/root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct/

后面就是按照步骤微调

cd ~/Llama3-Tutorial# 开始训练,使用 deepspeed 加速,A100 40G显存 耗时24分钟
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# 模型合并
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \/root/llama3_hf_adapter\/root/llama3_hf_merged

qlora微调时显存大概在12GB左右

在这里插入图片描述

大概20min不到自我认知微调结束

在这里插入图片描述
合并还是那个软链接的问题,改成实际路径就行

xtuner convert merge /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct /root/llama3_hf_adapter /root/llama3_hf_merged

然后部署

在这里插入图片描述

好吧,显然微调完毕后只能回答这一句话了。估计是2000条同样的数据导致过拟合了。想真正调出一个良好的模型好像还不容易。

第三节:Llama 3 图片理解能力微调(XTuner+LLaVA 版)

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/llava.md

由于哥们只有24GB显存玩不了一点,就不做这个多模态的了。跳过!

第四节:Llama 3 高效部署实践(LMDeploy 版)

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/lmdeploy.md

也是按照文档来就行

LMDeploy Chat CLI 工具

部署改成模型的路径

lmdeploy chat /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct

在这里插入图片描述

LMDeploy模型量化(lite)

设置最大KV Cache缓存大小

lmdeploy chat /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct --cache-max-entry-count 0.01

在这里插入图片描述

推理速度也还好没有很慢

使用W4A16量化
lmdeploy lite auto_awq \/root/share/new_models/meta-llama/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

这块耗时蛮久的可以干别的去

恩,确实6GB显存就可以推理了

在这里插入图片描述

回答速度也挺快的,量化后精度有所下降,不过简简单单的问题感知不高

在这里插入图片描述

LMDeploy服务(serve)
API启动
lmdeploy serve api_server \/root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct \--model-format hf \--quant-policy 0 \--server-name 0.0.0.0 \--server-port 23333 \--tp 1

启动后转发一下端口

ssh -CNg -L 23333:127.0.0.1:23333 root@ssh.intern-ai.org.cn -p 48212

在这里插入图片描述

给出了api接口,尝试用postman测试一下,调通了但是model应该是要固定传响应模型的type,这里就不管了,安装教程继续

在这里插入图片描述

客户端

有命令行和web端,起了gradio的web端看下,都是大佬写好的,跟着操作就没什么问题

在这里插入图片描述

第五节:Llama 3 Agent 能力体验与微调

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/agent.md

前面按部就班操作,到下面这步前先运行pip install deepspeed再继续操作,我这里还是改掉了模型软链接路径。

export MKL_SERVICE_FORCE_INTEL=1
xtuner train ~/Llama3-Tutorial/configs/llama3-agentflan/llama3_8b_instruct_qlora_agentflan_3e.py --work-dir ~/llama3_agent_pth --deepspeed deepspeed_zero2

好吧,大佬已经训练好给出了,那就merge

export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct \/share/new_models/agent-flan/iter_2316_hf \~/llama3_agent_pth/merged

运行看一下

streamlit run ~/Llama3-Tutorial/tools/agent_web_demo.py /root/llama3_agent_pth/merged

在这里插入图片描述

第六节:Llama 3 能力评测(OpenCompass 版)

https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/docs/opencompass.md

按照步骤就好 评测路径稍微更改了一下

python run.py --datasets ceval_gen --hf-path /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct --tokenizer-path /root/model/Meta-Llama-3-8B-Instruct --tokenizer-kwargs padding_side='left' truncation='left' trust_remote_code=True --model-kwargs trust_remote_code=True device_map='auto' --max-seq-len 2048 --max-out-len 16 --batch-size 4 --num-gpus 1 --debug

END

这篇关于LLM记录:五一 Llama 3 超级课堂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979328

相关文章

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1