多模态大模型教程(基于LLAVA模型)
文章平均质量分 92
纯粹干货,从零基础学会环境安装、源码逻辑、数据准备、训练方法、相关库使用及总结大模型遇到棘手问题等。你无需摸索前行,直接按照教程一步一步实现多模态大模型工程方法。
tangjunjun-owen
从事人工智能行业,已从事工业检测行业、智慧交通行业、智慧城市行业,已有如下经验:
ARM/jetson部署、NVIDIA性能优化、道路感知2D、单目3D、点云3D、目标跟踪、深度估计、多模态大模型与语言大模型、lidar/radar/vison多传感融合、中间件ROS2开发、相机标定、工业2D检测/分类/分割、数据增强、attention、transformer、模型压缩加速
计算机技能:C++、Python、cuda、tensorrt、ros2
展开
-
多模态大模型视觉特征嵌入语言模型特征流程-(以MMLM的forward源码解读)
多模态大模型forward源码解读,我也是基于llava模型作为示例来解读。本篇文章主要贡献已知的input_ids与labels如何嵌入图像特征,获得新的input_ids与labels及attention_mask内容,再将其输入大语言模型方法内容,这也就是视觉模型特征如何嵌入语言模型特征的方法。那么,经过此文章你能知道视觉模型与语言模型如何运作以及对应数据如何运行与变化内容。原创 2024-08-21 15:33:13 · 338 阅读 · 0 评论 -
第一节 LLaVA模型安装、预测、训练详细教程
本博客介绍LLava1.5多模态大模型的安装教程、训练教程、预测教程,也会涉及到hugging face使用与wandb使用。原创 2023-11-02 21:29:59 · 19499 阅读 · 37 评论 -
第二节 大模型的deepspeed使用vscode运行或调试debug的环境配置与解读(补充-vscode)
最近在研究deepspeed相关内容,但使用命令方式无法单步调式调用代码的问题,若直接离线看代码,在一定程度上降低效率。同时,使用deepspeed方式debug代码内容较少。为此,我特意在少有信息中和代码实验验证完成基于vscode对deepspeed进行debug方法。特别的,该方式不仅适合deepspeed命令debug,也适用torchrun命令debug,更能延伸其它命令debug模式。本文内容分为三部分,第一部分介绍如何使用vscode传递参数debug;原创 2023-12-14 17:11:37 · 1930 阅读 · 1 评论 -
第三节 vscode环境对llava模型debug方式教程
之前博客这里介绍LLava1.5多模态大模型的安装、训练、预测等。但对于你想查看源码或多或少都有些麻烦,也不利于代码调试。基于此,本文是一篇基于vscode框架调试llava大模型的教程。原创 2024-01-10 00:00:00 · 930 阅读 · 0 评论 -
第四节 查看bin权重文件内容
为什么我单独用一节文章记录llava相关bin权重文件内容?原因很简单,它比较重要,我们可以通过查看权重相关变量间接感性认识llava模型结构,以便我们对模型权重含义理解。本篇文章将涉及lora权重与大语言LLM模型llama的权重,以及相应mm_project与vit图像编码权重。这样我们将从权重文件理解llava本身结构,并也给出自带lora训练权重相关内容,将对我们训练模型保存对应权重也是十分必要的,且也能帮助我们如何把lora权重更新原始权重。从权重中,你该明白了吧!原创 2024-03-07 14:51:00 · 500 阅读 · 0 评论 -
第五节 LLaVA模型推理命令(包含lora训练权重推理方法)
LLAVA模型训练方式有预训练、微调训练,而预训练需要大量算力与数据支持,我们将不在重点考虑。对于微调,也因其计算资源导致成本较高,一般不会采用全量微调方式,而是多采用PEFT方式完成,而PEFT代表的Lora微调模型性价比较高。介于此,Lora微调需要合并权重方可实现,在于我个人摸索下实现了LLAVA模型lora训练的推理。为此,我将LLAVA所有推理方式记录于此。。原创 2024-03-07 15:07:47 · 1258 阅读 · 0 评论 -
第五节 LLaVA模型lora推理模型解读(下篇)
尽管推理我已给出相应说明,但为命令行方式完成推理。然并未给出其详细理论内容。基于此,本节是给出lora推理相关源码解读,帮助读者能明白llava的lora等推理方法的理解。本文主要介绍lora推理主函数源码解读、modelworker类源码解读与load_pretrained_model源码解读。原创 2024-07-19 21:15:00 · 327 阅读 · 0 评论 -
第六节 LLaVA模型数据处理源码解读(input_ids/labels/attention_mask/image,上篇)
本篇文章直接介绍llava模型数据加工部分,整体结构说明llava多模态模型输入数据格式,其中包含input_ids/labels/attention_mask与image格式,并给出对应代码位置与整个数据加工流程。最重要,通过debug给出数据解释与代码解读,也通过一个真实数据给出模型输入格式说明。当你阅读完此篇文章,绝对透彻理解llava数据加工过程与内容。显然,一篇博客是无法呈现整个数据细节,我将继续下篇博客呈现数据细节处理。result = input.ne(3) # torch.ne函数调用。原创 2024-04-02 15:29:45 · 1995 阅读 · 0 评论 -
第六节 LLava模型数据处理源码解读(input_ids/labels/attention_mask/image,下篇)
本篇文章直接介绍llava模型数据加工部分,整体结构说明llava多模态模型输入数据格式,其中包含input_ids/labels/attention_mask与image格式,并给出对应代码位置与整个数据加工流程。最重要,通过debug给出数据解释与代码解读,也通过一个真实数据给出模型输入格式说明。当你阅读完此篇文章,绝对透彻理解llava数据加工过程与内容。上一篇文章给出了数据处理大轮廓,本篇文章将解读LazySupervisedDataset类的__getitem__函数内容。原创 2024-06-21 20:45:00 · 707 阅读 · 0 评论 -
第七节 LLaVA模型CLI推理源码解读(多轮对话推理方式与原理(prompt与assistant))
为什么介绍cli.py方式进行推理呢?答案很简单,我想通过这个代码告知读者,模型是如何进行推理的,明确输入内容处理方式和模型输出内容,以及多轮对话输入与模型输出内容,而借助推理等方式是需要使用服务啥的客户端或服务端等,是比较麻烦的工程问题。因此,本文将介绍cli推理方式,露骨告知其推理原理与整个数据流程。同时,我也将使用列子与结果,实现三轮对话,说明模型如何工作或完成对话能力。然而,这部分内容和我之前数据章节有些关联,请大家自行查阅。原创 2024-04-09 20:45:00 · 1127 阅读 · 0 评论 -
第八节 LLaVA模型CLI推理构建custom推理代码Demo
我在第七节介绍了cli.py推理源码解读,而我也因项目需要构建了推理demo,我们是用来自动生成标签和推理需要。想了想,我还是用一节将我的代码记录于此,供有需求读者使用。本节,介绍更改cli.py代码,实现一张图像推理、也为需要grounding的读者提供如何在图上给出目标box。我测试官方提供lora与非lora权重,我发现非lora效果会比lora好。当然这是我测试工程数据得到结论,只做参考。原创 2024-04-29 22:55:32 · 602 阅读 · 0 评论 -
第九节 基于huggingface加载openai/clip-vit-large-patch14-336视觉模型demo
本文介绍如何使用huggingface加载视觉模型openai/clip-vit-large-patch14-336,我之所以记录此方法源于现有大模型基本采用huggingface库来加载视觉模型和大语言模型,我也是在做LLava模型等模型。基于此,本节将介绍如何huggingface如何加载vit视觉模型。原创 2024-02-26 20:26:04 · 3483 阅读 · 1 评论 -
TrainingArguments、ModelArguments、DataArguments参数使用(@dataclass)
理解llava相关参数传递方法,有利于我们对模型修改模块使用参数来控制。llava提供参数包含训练参数TrainingArguments、模型参数ModelArguments、数据相关参数DataArguments。这里,我将会使用Demo为大家解读,并在理解Demo后,继续以llava源码解读,使其理解使用方法,也会给出相应参数添加方法。原创 2024-06-21 22:00:00 · 297 阅读 · 0 评论 -
第十节 LLAVA模型训练流程与方法
最近,有些忙,正在处理相关实验。很多东西我已实现,但没有时间组成文章。很抱歉。我之所以写一篇模型训练流程方式,是想借此告知LLAVA模型训练流程,不至于我下次说到模块细节而大脑没有整体结构。因此,我写了此篇文章,本文主要介绍如何训练模型以及训练模型步骤是哪些,最终构成模型训练完整流程与源码完整流程。只有语言模型结构。原创 2024-04-19 22:30:00 · 1069 阅读 · 0 评论 -
第十一节 LLAVA模型lora训练(包含lora权重预加载与源码解读)
前面文章,基本已经给出LLaVA的推理相关内容,也给出相应训练等命令内容,以及相关权重等查看与比较内容。却没有与训练相关源码解读。为此,本篇文章介绍LLaVA模型是如何构建model,也是如何加载相应权重内容。我将会结合源码,详细梳理。我相信,看了此篇文章将不在为模型训练而困惑,也能帮助读者进一步理解源码,以此作为基准,方便后续对模型更改或使用其它架构大模型。当然,后面会涉及到很多与huggingface的trainer相关内容,我也会在后面篇章中给与介绍。原创 2024-05-09 21:00:00 · 949 阅读 · 0 评论 -
第十二节 huggingface的TrainingArguments与trainner参数说明
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第一篇文章,主要解读参数用法与含义。原创 2024-04-26 11:08:22 · 924 阅读 · 0 评论 -
第十三节 huggingface的trainner解读与Demo
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第二篇文章,主要给出一个列子与训练框架。原创 2024-05-13 16:48:12 · 301 阅读 · 0 评论 -
第十四节 huggingface的trainner的_inner_training_loop函数源码解读
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第三篇文章,主要解读优化器与数据相关源码内容。原创 2024-05-15 22:45:00 · 477 阅读 · 0 评论 -
第十五节 huggingface的trainner的_inner_training_loop函数源码解读(epoch)
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第四篇文章,主要解读epoch外循环训练相关源码内容。原创 2024-05-24 11:29:52 · 191 阅读 · 0 评论 -
第十六节 huggingface的trainner的_inner_training_loop函数源码解读(step)
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第五篇文章,主要解读step内循环训练相关源码内容。原创 2024-05-29 22:46:42 · 520 阅读 · 0 评论 -
第十七节 huggingface的trainner的断点续训的Demo(resume)
在huggingface中,有关trainer内容实在太多了,我将布局6篇文章来构建有关内容。第一篇文章介绍参数;第二篇文章给出一个完整Demo,并介绍trainner源码的整体结构,呈现一个整体框架;第三篇文章介绍给出数据构造、优化器构建方法源码解读;第四篇篇文章介绍epoch外循环训练相关源码解读;第五篇文章介绍step内循环训练相关源码解读;第六篇文章介绍Resume方法内容,包含继承数据、继承优化器、继承模型等实现完整断点续训功能。 而本篇为第六篇文章,主要解读resume方法重载权重、优化器等继续原创 2024-06-01 21:23:36 · 387 阅读 · 1 评论 -
第十八节 LLaVA如何按需构建LORA训练(视觉、语言、映射多个组合训练)
如果看了我前面文章,想必你基本对整个代码有了更深认识。实际上,大多大模型都是使用huggingface搭建,而大多LORA训练也是调用PEFT库。然而,LLaVA代码却没有相关VIT模型训练内容,也没有不同组合训练。而我也是想探索单独使用vit的lora训练、单独使用llm的lora训练或全都使用会有什么效果呢?因此,本篇文章将探索LLaVA如何按需构建LORA训练,我会给出如何构建参数与修改源码,也会给出我实验结果。原创 2024-07-09 21:00:00 · 512 阅读 · 0 评论 -
大语言模型与多模态大模型loss计算
如果看了我前面文章,想必你基本对整个代码有了更深认识。实际上,大多大模型都是使用huggingface搭建,而大多LORA训练也是调用PEFT库。然而,LLaVA代码却没有相关VIT模型训练内容,也没有不同组合训练。而我也是想探索单独使用vit的lora训练、单独使用llm的lora训练或全都使用会有什么效果呢?因此,本篇文章将探索LLaVA如何按需构建LORA训练,我会给出如何构建参数与修改源码,也会给出我实验结果。原创 2024-08-08 20:00:00 · 550 阅读 · 0 评论
分享