五一超级课堂---Llama3-Tutorial(Llama 3 超级课堂)---第三节llama 3图片理解能力微调(xtuner+llava版)

课程文档:
https://github.com/SmartFlowAI/Llama3-Tutorial
课程视频:
https://space.bilibili.com/3546636263360696/channel/collectiondetail?sid=2892740&spm_id_from=333.788.0.0
操作平台:
https://studio.intern-ai.org.cn/console/

在这里插入图片描述
请参照第一节课完成环境配置和webdemo部署以及源码拉取和安装
https://blog.csdn.net/haidizym/article/details/138378194

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

#模型准备--InternStudio
mkdir -p ~/model
cd ~/model
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct .
#模型准备--非 InternStudio
#mkdir -p ~/model
#cd ~/model
#git lfs install
#git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
#准备 openai/clip-vit-large-patch14-336,权重,即 Visual Encoder 权重,非 InternStudio,可以访问 https://huggingface.co/openai/clip-vit-large-patch14-336 以进行下载。
ln -s /root/share/new_models/openai/clip-vit-large-patch14-336 .
#准备 Image Projector 权重
ln -s /root/share/new_models/xtuner/llama3-llava-iter_2181.pth .

#数据准备,按照 https://github.com/InternLM/Tutorial/blob/camp2/xtuner/llava/xtuner_llava.md 中的教程来准备微调数据。
cd ~
git clone https://github.com/InternLM/tutorial -b camp2
python ~/tutorial/xtuner/llava/llava_data/repeat.py \
  -i ~/tutorial/xtuner/llava/llava_data/unique_data.json \
  -o ~/tutorial/xtuner/llava/llava_data/repeated_data.json \
  -n 200

#模型微调,算力不够,可以考虑把deepspeed zero2换成deepspeed zero2 offload
#xtuner train ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2_offload
xtuner train ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2
#模型转换
xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  ~/model/llama3-llava-iter_2181.pth \
  ~/llama3_llava_pth/pretrain_iter_2181_hf

xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  ~/llama3_llava_pth/iter_1200.pth \
  ~/llama3_llava_pth/iter_1200_hf

#Pretrain 模型,问题1:Describe this image. 问题2:What is the equipment in the image?
export MKL_SERVICE_FORCE_INTEL=1
xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  --visual-encoder /root/model/clip-vit-large-patch14-336 \
  --llava /root/llama3_llava_pth/pretrain_iter_2181_hf \
  --prompt-template llama3_chat \
  --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg

#Finetune 后 模型,问题1:Describe this image. 问题2:What is the equipment in the image?
export MKL_SERVICE_FORCE_INTEL=1
xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  --visual-encoder /root/model/clip-vit-large-patch14-336 \
  --llava /root/llama3_llava_pth/iter_1200_hf \
  --prompt-template llama3_chat \
  --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg
注释1

“python ~/tutorial/xtuner/llava/llava_data/repeat.py
-i ~/tutorial/xtuner/llava/llava_data/unique_data.json
-o ~/tutorial/xtuner/llava/llava_data/repeated_data.json
-n 200”
这段代码是一个Python脚本,路径为~/tutorial/xtuner/llava/llava_data/repeat.py。它的作用是读取一个JSON文件~/tutorial/xtuner/llava/llava_data/unique_data.json,然后将其中的数据重复200次,并将结果保存到另一个JSON文件~/tutorial/xtuner/llava/llava_data/repeated_data.json中。

具体参数说明如下:

  • -i:指定输入文件的路径,即要重复的原始数据的JSON文件路径。
  • -o:指定输出文件的路径,即重复后的数据要保存到的JSON文件路径。
  • -n:指定重复的次数,这里设置为200次。

所以,这段代码的作用是将unique_data.json文件中的数据重复200次,然后将结果保存到repeated_data.json文件中。

注释2

“llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2”
这段代码是在运行一个Python脚本llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py,这个脚本的路径是相对于当前工作目录的(可能是相对于用户的主目录或当前工作目录)。指定了一些参数来配置脚本的行为。下面是对参数的解释:

  • --work-dir ~/llama3_llava_pth:指定了工作目录的路径,即脚本执行时的工作目录。这个路径是用户主目录下的llama3_llava_pth目录。

  • --deepspeed deepspeed_zero2:使用DeepSpeed进行加速训练的参数配置。deepspeed_zero2可能是DeepSpeed的配置文件或者某种模式的标识,具体的含义需要参考DeepSpeed的文档或者脚本的说明。

所以,这段代码的作用是在指定的工作目录下执行llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py脚本,并使用DeepSpeed进行加速训练。

注释3

“xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py
~/model/llama3-llava-iter_2181.pth
~/llama3_llava_pth/pretrain_iter_2181_hf”

这段代码是在运行一个名为xtuner的命令行工具,执行了其中的一个子命令convert,并提供了一系列参数。下面是对参数的解释:

  • pth_to_hf:这是xtuner工具的子命令,指示将PyTorch模型(.pth文件)转换为Hugging Face Transformers库所需的格式。

  • ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py:指定了一个配置文件的路径,该配置文件描述了模型结构和训练参数等信息,用于指导模型转换。

  • ~/model/llama3-llava-iter_2181.pth:指定了要转换的PyTorch模型的路径,这里是llama3-llava-iter_2181.pth文件。

  • ~/llama3_llava_pth/pretrain_iter_2181_hf:指定了输出路径,即转换后的模型将保存到pretrain_iter_2181_hf目录中,用于后续在Hugging Face Transformers库中加载和使用。

所以,这段代码的作用是使用xtuner工具将PyTorch模型llama3-llava-iter_2181.pth转换为Hugging Face Transformers库所需的格式,并根据提供的配置文件进行适当的转换。

注释4

“export MKL_SERVICE_FORCE_INTEL=1
xtuner chat /root/model/Meta-Llama-3-8B-Instruct
–visual-encoder /root/model/clip-vit-large-patch14-336
–llava /root/llama3_llava_pth/pretrain_iter_2181_hf
–prompt-template llama3_chat
–image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg”
这段代码是一系列命令行操作,其中涉及了环境变量的设置和一个名为xtuner的工具的使用,提供了一些参数。下面是对代码的注释:

  • export MKL_SERVICE_FORCE_INTEL=1:这是一个环境变量设置命令,将MKL(Math Kernel Library)服务强制指定为Intel实现。这通常用于优化数值计算的性能。

  • xtuner chat /root/model/Meta-Llama-3-8B-Instruct:这是一个使用xtuner工具的命令,其中chatxtuner工具的一个子命令。它用于启动一个交互式会话,该会话基于给定的模型进行对话。

  • --visual-encoder /root/model/clip-vit-large-patch14-336:指定了视觉编码器的模型路径,用于处理图像输入。这里使用了一个模型路径clip-vit-large-patch14-336

  • --llava /root/llama3_llava_pth/pretrain_iter_2181_hf:指定了LLAVA(LLAMA Visual-Text Attention)模型的路径,该模型经过了预训练并转换为Hugging Face Transformers库所需的格式。这个路径是pretrain_iter_2181_hf

  • --prompt-template llama3_chat:指定了对话的模板名称,用于生成对话的起始提示。

  • --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg:指定了一个图像文件的路径,该图像将作为对话的一部分输入到模型中。

所以,这段代码的作用是启动一个交互式会话,使用给定的视觉编码器模型和LLAVA模型,以及指定的对话模板和图像文件进行对话。

截图

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
使用不了加速
在这里插入图片描述
在这里插入图片描述
ImportError: deepspeed is not installed properly, please check.
之前安装xtuner时候是不是没有 pip install -e .[all]
重新安装xtuner用 pip install -e .[all]
在这里插入图片描述在这里插入图片描述在这里插入图片描述
重新安装xtuner用 pip install -e .[all],并且把deepspeed_zero2换成deepspeed_zero2_offload后,终于可以开始训练了
在这里插入图片描述在这里插入图片描述在这里插入图片描述
近6个小时的等待,终于快好了,今天不知道怎么这么慢,不用offload就out of memory,用offload就只能以时间换空间了,
在这里插入图片描述
庆祝漫长的等待!!!

在这里插入图片描述
模型转换
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

oom问题

①使用https://github.com/SmartFlowAI/Llama3-Tutorial/blob/main/tools/internstudio_quant_web_demo.py,原来是 streamlit run internstudio_web_demo.py xxxx,现在是 streamlit run internstudio_quant_web_demo.py xxxxx
②添加指令–device cpu,以使用cpu运行指令;
③添加指令–deepspeed deepspeed_zero2,或者–deepspeed deepspeed_zero2_offload(在配置环境时须在xtuner目录下执行指令pip install ‘.[all]’)

在这里插入图片描述

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

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

相关文章

【MySQL基本查询(上)】

文章目录 一、多行插入 指定列插入数据更新表中某个数据的信息(on duplicate)了解affected报告信息 二、检索功能1.select 查询1.1全列查询1.2指定列查询1.3where条件筛选子句案例 2.结果排序案例 3.筛选分页结果offset实现分页 一、多行插入 指定列插…

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型

光伏设备制造5G智能工厂数字孪生可视化平台,推进行业数字化转型。光伏设备制造5G智能工厂数字孪生可视化平台是光伏行业数字化转型的重要一环。通过数字孪生平台,光伏设备制造企业可以实现对生产过程的全面监控和智能管理,提高生产效率&#…

word 毕业论文格式调整

添加页眉页脚 页眉 首先在页面上端页眉区域双击,即可出现“页眉和页脚”设置页面: 页眉左右两端对齐 如果想要页眉页脚左右两端对齐,可以选择添加三栏页眉,然后将中间那一栏删除,即可自动实现左右两端对齐&#x…

OBS插件--视频回放

视频回放 视频回放是一款源插件,它可以将指定源的视频缓存一段时间(时间可以设定),将缓存中的视频添加到当前场景中后,可以快速或慢速不限次数的回放。这个功能在类似体育比赛的直播中非常有用,可以捕获指…

【沐风老师】3DMAX百叶窗修改器LouverGenerator安装使用方法

3DMAX百叶窗修改器LouverGenerator安装使用方法 3DMAX百叶窗修改器,在单面几何对象(或二维图形)范围内,创建百叶窗结构模型的修改器插件。修改器参数可设置动画效果。 【版本要求】 3dMax 2018及更高版本 【安装方法】 1.点击3d…

Hive UDTF之explode函数、Lateral View侧视图

Hive UDTF之explode函数 Hive 中的 explode() 函数是一种用于处理数组类型数据的 User-Defined Table-Generating Function (UDTF)。它将数组拆分成多行,每个数组元素对应生成的一行数据。这在处理嵌套数据结构时非常有用,例如处理 JSON 格式的数据。 …

读天才与算法:人脑与AI的数学思维笔记23_人工智能讲故事

1. 伟大的自动语法分析器 1.1. 思维呆板机械的阿道夫奈普(Adolphe Knipe)一直想成为一名作家,可是他写出来的东西既迂腐又无趣 1.2. 后来,灵光乍现,他得到了一个启示:语言遵循语法规则,这规则…

Mysql-用户变量的声明与使用

#声明变量 #1.标识符不能以数字开头 #2.只能使用_或$符号,不能使用其他符号 #3.不能使用系统关键字 setuserName刘德华; select userName:刘青云;#将赋值与查询结合 #查询变量、使用变量,匿名的时候建议加上as select userName as 读取到的userName变量…

Linux线程(一)初识线程

目录 一、什么是线程 二、线程和进程的区别 三、线程的操作 1、创建线程 2、获取线程ID 3、线程的终止与等待 4、线程分离 一、什么是线程 在Linux中,线程(thread)是一种轻量级进程(Light-weight Process, LWP&#xff09…

什么样的人能上百度词条

百度百科是一个向所有互联网用户开放的平台,任何人都可以创建或编辑词条。然而,并不是所有的人物或事物都能被收录到百度百科中,它有一定的收录标准和审结的关于哪些人或事物能上百度百科的条件和流程。 百度百科的收录标准 知名度和影响力&…

攻击者正在利用AI,对保险公司发起大规模欺诈

保险欺诈一直是保险行业面临的重要挑战之一,尤其随着技术的进步,欺诈者也在不断更新其手段,利用AI技术,包括生成式模型、机器学习和数据分析工具等欺骗保险公司,而AI技术的应用正成为他们的新工具,使其犯罪…

深度学习:基于TensorFlow 和 Keras,使用神经网络回归模型预测 IPL 分数

前言 系列专栏:机器学习:高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学…

性能远超GPT-4!谷歌发布Med-Gemini医疗模型;李飞飞首次创业瞄准空间智能;疫苗巨头联合OpenAl助力AI医疗...

AI for Science 企业动态速览—— * 谷歌 Med-Gemini 医疗 AI 模型性能远超 GPT-4 * 斯坦福李飞飞首次创业瞄准「空间智能」 * 疫苗巨头 Moderna 与 OpenAl 达成合作 * 美国能源部推动 AI 在清洁能源领域的应用 * 美年健康荣获「2024福布斯中国人工智能创新场景应用企业TOP10」…

Linux基础服务NFS入门篇

文章目录 Linux基础服务NFS入门篇0.前言1.NFS1.1NFS简介1.2NFS配置 Linux基础服务NFS入门篇 0.前言 本文根据大佬们的资料整理了NFS的基础知识, 加深对linux运维基础服务工具的理解,以便个人查询复习使用。 1.NFS 资料来自B站阿铭linux的印象笔记&#…

C语言 | Leetcode C语言题解之第79题单词搜索

题目: 题解: int directions[4][2] {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};bool check(char** board, int boardSize, int boardColSize, int** visited, int i, int j, char* s, int sSize, int k) {if (board[i][j] ! s[k]) {return false;} else if (…

怎么样练口才_如何练口才和反应能力?

怎么样练口才_如何练口才和反应能力? 要练习口才和反应能力,以下是一些建议的方法: 一、口才练习 朗读: 每天坚持朗读一些文章,可以是报纸、杂志、书籍或网络上的文章。这有助于练习口齿清晰,积累知识量和…

ABC352编程笔记

ABC352 编程笔记 题意&#xff1a;输入&#xff0c;四个数 a , b , c , d a,b,c,d a,b,c,d&#xff0c;若 d d d 在 c , d c,d c,d 之间&#xff0c;则输出 Yes&#xff0c;否则输出 No。 正解&#xff1a;直接判断。 #include <bits/stdc.h> //#define int long lo…

2024年去除视频水印的5种方法

如果你从事电影剪辑或者视频编辑工作&#xff0c;你经常需要从优酷、抖音、TikTok下载各种视频片段……。 通常这些视频带有水印和字幕。一些免费软件如CapCut、canva、Filmora也会给你制作的视频打上水印&#xff0c;这些水印嵌入在视频内部。 2024年去除视频水印的5种方法 …

Centos 7.9如何使用源码编译安装curl最新版本

文章目录 1、前言2、curl源代码下载3、openssl安装4、编译curl4.1、配置编译环境4.2、编译输出二进制curl程序4.3、安装编译后的curl4.4、编译完成检查4.5、验证安装 1、前言 centos 7.9&#xff0c;由于系统未2017年发行&#xff0c;且以稳定性为主&#xff0c;部分工具版本较…

Unity-NGUI爆错以后-导致不能多次点击,UI假卡死问题解决方法

太久没用&#xff0c;忘了&#xff0c;NGUI好像易出错&#xff0c;就再次点击不了 导致打开了UI关闭不了&#xff0c;每次都要重启就比较烦&#xff08;说的就是那种美术团队&#xff0c;一个 UI 打开几十层&#xff09; 就好比【左上角&#xff0c;箭头】点第二次是退出不了了…
最新文章