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

相关文章

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

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

在 Spring Boot 中使用异步线程时的 HttpServletRequest 复用问题记录

《在SpringBoot中使用异步线程时的HttpServletRequest复用问题记录》文章讨论了在SpringBoot中使用异步线程时,由于HttpServletRequest复用导致... 目录一、问题描述:异步线程操作导致请求复用时 Cookie 解析失败1. 场景背景2. 问题根源二、问题详细分

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据