微风❤水墨
https://github.com/Li-Lai
展开
-
LLAVA:数据下载
【代码】LLAVA:数据下载。原创 2024-09-30 10:12:25 · 196 阅读 · 0 评论 -
TinyLLaVA: A Framework of Small-scale Large Multimodal Models
讨论一个有趣的观察是,当使用共享方法时,使用StableLM-2和Phi-2的模型变体在POPE上的性能显著下降(表明更多幻觉),而在其他基准上有所提升。实验表明,通过更好的训练方法和数据质量,较小的LMMs可以与较大的LMMs达到同等的表现,为研究领域设定了新的基准。相比LLaVA-1.5数据集,在使用基础方法在更广泛和更多样化的ShareGPT4V [7]数据集上预训练时,以TinyLlama 作为小规模LLM的模型变体在评估性能上总体有所提升。注意,我们在共享方法中部分微调了视觉编码器。原创 2024-09-27 15:01:18 · 70 阅读 · 0 评论 -
LLaVA1.5:Improved Baselines with Visual Instruction Tuning
它要求Qformer的视觉输出标记控制LLM的输出长度为长形式或短形式,如前缀调优,但由于Qformer相对于LLaMA等LLM的有限容量,可能缺乏适当执行此操作的能力。受到在自监督学习中从线性投影改为MLP(多层感知机)所带来的性能提升的启发,作者也通过使用两层MLP来增强视觉-语言连接器的表示能力,可以提升LLaVA的多模态能力。使用最简单的 LMM 架构,使用开源可数据,仅在600K图像-文本对上训练一个简单的全连接投影层,训练过程在 8 个 A100 上耗时约 1 天即可完成训练。原创 2024-09-25 15:32:23 · 90 阅读 · 0 评论 -
LLaVA:Large Language and Vision Assistant
对于公式2中的训练,我们将数据组织为单轮对话,将问题和内容作为Xinstruct,将推理和答案作为Xa。我们在早期实验中对ChatGPT和GPT-4的使用进行了消融,发现GPT-4始终提供更高质量的指令跟随数据,例如空间推理。注意,论文使用的 GPT4 是 text-only 版本,而不是多模态版本 GPT-4V,所以 GPT4 并不能真正看到图片,只能假装看到了图片然后根据图片的描述生成多轮对话。以上是原理的介绍,我们应该更感兴趣的是Code,毕竟我们想在自己的数据上也生成指令微调数据。原创 2024-09-25 10:23:26 · 58 阅读 · 0 评论 -
BLIP-2: Bootstrapping Language-Image Pre-trainingwith Frozen Image Encoders and Large Language Mode
分类需要正负样本,采样策略为在一个batch内寻找负样本,对于一个batch的每一个文本,根据计算的相似性权重,从当前batch选取一个(除自身外)作为负样本,相似性越高选取的概率越大,构成文本样本列表[pos,pos,neg],图像类似,构成[pos,neg,pos],构成文本和图像的正负样本(数组中每个代表一个batch,也就是样本大小为3个batch size, 第一个batch是配对的,后2个是不配对的,作为负样本),经过一个线性层, 输出0和1两类。,它与图像编码器交互,用于视觉特征提取。原创 2024-09-24 16:23:18 · 179 阅读 · 0 评论 -
MobileCLIP: Fast Image-Text Models through Multi-Modal Reinforced Training
模型训练的数据越多,模型就能达到更好的性能。MobileCLIP s0版本中的MCt是一个混合版本的常见文本编码器,我们经常在Transformer家族模型中看到。作者已经完全实验了Text-RepMixers,但在堆叠所有基本变换器块时降低了模型的性能,而提出的结构达到了比较的结果。在这种结构中,跳跃连接和批归一化,这些消耗内存和计算的操作将在推理管道中消失,从而使整个预测过程更快。为了在比原始CLIP更快的同时实现更好的性能,MobileCLIP必须在两个编码器上高效实现。架构中的块已经开发了几年。原创 2024-09-20 18:40:03 · 125 阅读 · 0 评论 -
DFN:Data Filtering Networks
该过程利用现有的图像-文本模型(在LAION的情况下是OpenAI CLIP ViT-B/32),并移除图像和文本之间的余弦相似度低于某个阈值的样本。例如,尽管LAION-2B的数据量是OpenAI数据集的五倍,但在其上训练的模型只能在使用显著更大的计算预算的情况下才能匹配OpenAI的ImageNet零样本性能。2:对训练filter模型最重要的是训练数据的精度,而且对精度的要求非常高。:在各种任务上的其他改进中,使用我们的数据集训练的ViT-H在ImageNet上达到了84.4%的零样本迁移准确率,原创 2024-09-20 10:19:33 · 126 阅读 · 0 评论 -
SigLIP:Sigmoid Loss for Language Image Pre-Training
GIT [49]、SimVLM [50] 和 LEMON [21] 成功地使用生成式文本解码器而不是对比学习来预训练模型,而CoCa [56] 在判别式的CLIP/ALIGN架构中添加了这样的解码器,从而将两种方法的优点和缺点结合进一个非常强大的模型中。具体而言,我们研究了基于Sigmoid的损失与图像-文本学习的两种突出方法:CLIP [36] 和 LiT [59],我们分别称之为Sigmoid语言图像预训练(SigLIP)和Sigmoid LiT(SigLiT)在使用超过100种语言的多语言设置下,原创 2024-09-19 18:34:48 · 98 阅读 · 0 评论 -
CLIP:OpenAI CLIP模型的简单实现:教程
因此,在Python脚本的情况下,config是一个普通的Python文件,我在其中放置了所有超参数,而在Jupyter Notebook的情况下,它是一个在笔记本开头定义的类,用于保存所有超参数。图像编码器的代码很简单。,我们将首先加载一个编码的描述,它是一个包含键input_ids和attention_mask的字典,将其值转换为张量,然后加载相应的图像,对其进行变换和增强(如果有的话!),在这个世界中,图像和文本具有相似的维度,以便能够比较它们,并将不相关的图像和文本分开,将匹配的图像和文本拉近。原创 2024-09-14 16:15:29 · 191 阅读 · 0 评论 -
CLIP:Learning Transferable Visual Models From Natural Language Supervision
在图2中,我们展示了6300万个参数的Transformer语言模型,其计算量已经是ResNet-50图像编码器的两倍,学习识别ImageNet类别比一个简单得多的基线慢三倍,该基线预测相同文本的词袋编码。给定一批N个(图像,文本)对,CLIP被训练来预测批次中实际发生的N × N个可能的(图像,文本)配对中的哪一个。为此,CLIP通过联合训练图像编码器和文本编码器来学习一个多模态嵌入空间,以最大化批次中N个真实对的图像和文本嵌入的余弦相似度,同时最小化N*N − N个不正确配对的嵌入的余弦相似度。原创 2024-09-12 17:35:10 · 119 阅读 · 0 评论 -
BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Genera
我们的论文表明,噪声网络文本对于视觉-语言学习是次优的,并提出了CapFilt,它以更有效的方式利用网络数据集。Wang et al., 2021)都无法在这两类任务中表现出色,而单一的统一编码器-解码器(Zhou et al., 2020)也限制了模型的能力。与大多数现有的KD方法不同,这些方法只是强制学生模型具有与教师模型相同的类别预测,我们提出的CapFilt可以被解释为在VLP背景下进行更有效的KD的一种方式,其中字幕生成器通过语义丰富的合成字幕传递其知识,而过滤器通过去除噪声字幕传递其知识。原创 2024-09-11 19:33:34 · 110 阅读 · 0 评论 -
AIGC:Flux.1 NF4 使用 diffusers 推理
Flux 参数量很大 (包括 ext encoder2, autoencoder, 以及 diffusion model) , 使用Diffusers推理,显存占用 30GB。有大佬做了 NF4 版本,效果依旧能打。所以本文使用 diffusers 推理 NF4版本的 Flux.1。1:flux.1-dev-nf4 国内镜像加速下载。原创 2024-08-26 18:12:03 · 670 阅读 · 0 评论 -
AIGC:Kolors: Effective Training of Diffusion Model for Photorealistic Text-to-Image Synthesis
它在数十亿的文本 - 图像对上进行训练,在视觉质量、复杂语义准确性以及中文字符和英文字符的文本渲染方面,与开源和专有模型相比具有显著优势。此外,Kolors 支持中文和英文输入,在理解和生成特定于中文的内容方面表现出强大的性能。在使用该噪声调度器时,推荐使用参数 guidance scale=5.0及num_inference_steps=25。我们推荐使用该调度器时搭配 guidance scale=5.0 及 num_inference_steps=50。HuggingFace CLI 安装与使用。原创 2024-08-22 16:20:31 · 281 阅读 · 0 评论 -
LLM:ViT细节与代码解读
最近看到两篇解读ViT很好的文章,备忘记录一下:1:再理解代码。原创 2023-09-25 09:46:50 · 146 阅读 · 0 评论 -
GAN:WGAN前作
可以看出更有明显的梯度方差较大的缺陷,导致训练的不稳定。在训练的早期(训练了1 epoch和训练了10 epochs),梯度的方差很大,对应的曲线看起来比较粗,直到训练了25 epochs以后GAN收敛了才出现方差较小的梯度。文章花了大量的篇幅进行数学推导,证明在一般的情况,如果Discriminator训练得太好,Generator就无法得到足够的梯度继续优化,而如果Discriminator训练得太弱,指示作用不显著,同样不能让Generator进行有效的学习。发表:ICLR 2017。原创 2023-11-30 13:41:47 · 449 阅读 · 0 评论 -
GAN:SNGAN-谱归一化GANs
的观点:WGAN-GP中使用gradient penalty 的方法来限制判别器,但这种放法只能对生成数据分布与真实分布之间的分布空间的数据做梯度惩罚,无法对整个空间的数据做惩罚。因为谱归一化事实上要求网络的每一层都满足 L 约束,但这个条件太死了,也许这一层可以不满足 L 约束,下一层则满足更强的 L 约束,两者抵消,整体就满足 L 约束,但谱归一化不能适应这种情况。谱归一化是一种“事前”的处理方案,它直接将每一层的权重都谱归一化后才进行运算,谱归一化作为了模型的一部分,更加合理一些。原创 2023-12-04 14:55:46 · 926 阅读 · 1 评论 -
GAN:DCGAN-深度卷积生成对抗网络
此外,我们发现将动量项留在0.9的建议值导致了训练振荡和不稳定性,同时将其降低到0.5,这有助于稳定训练。对单个样本进行实验,结果是不稳定的,但是对三个样本的Z向量进行平均,显示了在语义上服从算术是一致的和稳定的。(暗指人脸编辑是可行的,当然这个是16年,很早的文章了,很有启发性。3个女性(微笑表情)的平均 - 3个女性(正常表情)的平均 + 3个男性(正常表情)的平均。3:权重初始化都是以零为中心的正态分布初始化的,标准偏差为0.02。对于每一列,将样本的Z向量进行算术运算,得到新的向量Y。原创 2023-11-28 11:31:13 · 618 阅读 · 0 评论 -
GAN:WGAN-GP-带有梯度惩罚的WGAN
WGAN-GP中移除了判别器中的BN操作: 因为WGAN-gp的惩罚项计算中,惩罚的是单个数据的gradient norm,如果使用 batchNorm,就会扰乱这种惩罚,让这种特别的惩罚失效。所以只有设置的不大不小,比如c=0.01(wgan作者推荐的数值),下图中的紫色线,梯度保持相对合理,才能让生成器获得不错的回传梯度。公式在下面, 里面表达的是它在WGAN的loss上加了一个惩罚项,如果判别器的 gradient 的 norm,离 1 越远,那么 loss 的惩罚力度越高。作者发现移除后效果很好。原创 2023-12-01 14:11:04 · 3185 阅读 · 1 评论 -
GAN:GAN论文学习
GAN的训练:动态的过程,是生成器G 与判别器D 之间的相互博弈过程。通俗点讲,即要使得生成器G 生成的所谓的"假图"骗过判别器D ,那么最优状态就是生成器G 生成的所谓的"假图"在判别器D 的判别结果为0.5,不知道到底是真图还是假图。CNN的训练:定义好特定的损失函数,然后利用梯度下降优化参数,尽可能用局部最优解去逼近全局最优解。GAN是由Ian Goodfellow于2014年提出,z代表了随机输入数据,该数据是随机高斯噪声。GAN的目的就是无中生有,以假乱真。p_data代表真实数据概率密度分布,原创 2023-11-28 09:50:09 · 270 阅读 · 0 评论 -
GAN:ImprovedGAN-训练GAN的改进策略
具体来说,生成网络产生的图片经过判别网络后的中间层的feature 和真实图片经过判别网络的feature尽可能相同。首先从训练集中拿出一个batch在训练开始前固定起来,算出这个特定batch的均值和方差,进行更新训练中的其他batch。这是因为辨别器在辨别的时候是对单个样本进行辨别(对每个输入均给出一个0-1的分数),没有考虑样本之间的关系,所以容易造成模式坍塌。但是BN有个缺点,即BN会时G网络生成一个batch的图片中,每张图片都有相关联(如,一个batch中的图片都有比较多的绿色)。原创 2023-11-28 16:56:30 · 665 阅读 · 0 评论 -
GAN:PacGAN-生成对抗网络中两个样本的威力
把相同label的样本拼接就是文中的 packing 技术,接收拼接 packing 样本的判别器就叫 packed 判别器。左侧是默认的判别器,右侧是 packed 2 个样本的判别器,输入节点翻倍。将判别器的输入改成多个样本,这样判别器可以同时基于看到的多个样本进行决策,可以从一定程度上缓解 mode collapse。:修改调整判别器,使其决策是基于同类的多个样本(不用管样本是真实样本还是生成样本)。常规GAN的做法:使用单一判别器,将单一样本映射为单一的soft标签。取决与使用的GANs架构。原创 2023-11-29 11:08:23 · 370 阅读 · 0 评论 -
GAN:WGAN
这源于 weight clipping 的方法太简单粗暴了,导致判别器的参数几乎都集中在最大值和最小值上,相当于一个二值神经网络了,没有发挥深度神经网络的强大拟合能力。训练过程中有一个有意义的 loss 值来指示生成器收敛,并且这个数值越小代表 GAN 训练得越好,代表生成器产生的图像质量越高;1. 此时的判别器相当于做回归任务,它输出的是一般意义上的分数,而不是之前的概率。而如果都不使用批标准化,左图的 WGAN 生成质量很好,而右图的 DCGAN 生成的质量很差。2、权重裁剪后收敛缓慢(裁剪窗口太大)原创 2023-11-30 18:12:17 · 688 阅读 · 0 评论 -
GAN:WGAN-DIV
在计算机视觉的许多领域中,生成对抗性网络已经取得了巨大的成功,其中WGANs系列被认为是最先进的,主要是由于其理论贡献和竞争的定性表现。在 WGAN-gp 中,为了满足 1-Lipschitz 约束,训练出好效果,采用了真假数据的插值方法,来模拟全空间的均匀分布。WGAN-div 的作者说,这种做法是一种机械性的,很难靠有限的采样,模拟出这种全空间分布。作者提出了一种新的 Wasserstein 散度(W-div),它是W-met的松弛版本,不需要k-Lipschitz约束。是真数据与假数据的线性混合。原创 2023-12-05 17:53:40 · 787 阅读 · 0 评论 -
AIGC:clip-interrogator
如果你安装的是0.6.0,那么可以使用自定义词库其他:clip-interrogator代码解析 - plus studio-腾讯云开发者社区-腾讯云clip_interrogator教程 - plus studio - StudyingLover。原创 2024-08-16 17:49:55 · 982 阅读 · 0 评论 -
AIGC:text2img - 文生图
当前手头上的定制化项目,可用训练数据较少,训练的模型效果不佳。所以通过 clip-interrogator 获取图片获取描述后,批量进行 文生图 以增加样本量。在批量生成前,先简单评测一下当前的主流 文生图 模型。原创 2024-08-19 17:47:20 · 527 阅读 · 0 评论 -
书生大模型实战营-入门关卡-Linux 前置基础
任务:Tutorial/docs/L0/Linux at camp3 · InternLM/Tutorial · GitHub完成:原创 2024-08-07 18:07:03 · 117 阅读 · 0 评论 -
LLM:LLAMA-Open and Efficient Foundation Language Models
原创 2024-03-08 09:59:56 · 314 阅读 · 0 评论 -
LLM:使用SWIFT框架进行 自我认知微调
如果设置了self_cognition_sample,则调用add_self_cognition_dataset。3:生成self_cognition_sample个随机索引。5:将自我认知数据和其他训练数据拼接到一起,作为最终训练数据。1:加载本地的self_cognition.jsonl数据。2:替换name与author。4:根据索引生成自我认知数据集。原创 2024-02-23 09:44:18 · 972 阅读 · 0 评论 -
LLM:NTK-Aware Scaled RoPE
将之前未见过的弧度也插入到见过的训练弧度范围内,以满足外推需求。旋转速度都会变慢,导致模型的高频信息缺失,从而影响模型的性能。位置越靠前的向量分组,旋转速度越快,频率越高,NTK方案希望保留这些高频信息。本文介绍PI的改进方案:NTK-Aware Scaled RoPE。其中第0分组的旋转弧度保持不变,最后一个分组的旋转弧度变为原来的。通过缩小每个位置的旋转弧度,每个位置的旋转弧度变为原来的。编码位置分组越靠后,旋转弧度缩小的倍数越大。,长度扩大几倍,则旋转弧度缩小几倍。作者认为编码分组考前的。原创 2024-01-24 14:34:52 · 694 阅读 · 0 评论 -
LLM:RoPE - 开源代码中的实现 (下)
key_layer的维度为: [seq, batch, heads, head_dim]1:对于 token 序列中的每个词嵌入向量,首先计算其对应的 query 和 key 向量。query_layer的维度为: [seq, batch, heads, head_dim]前文提供了RoPE的基本实现,本文学习一下开源LLM中的RoPE的实现。对应复数的实部q0∗cos(mθ)−q1∗sin(mθ);对应复数的虚部q1∗cos(mθ)+q0∗sin(mθ);对应cos(mθ),对应sin(mθ);原创 2024-01-23 17:50:32 · 186 阅读 · 0 评论 -
LLM:Position Interpolation - 位置插值
例如,为了回答位于 3000 位置的问题,训练在最大窗口大小 L = 2048 上的模型无法利用位于位置 0 处的信息,但仍可以利用位于位置 2900 处的证据。特别是当直接扩展到在训练中未见过的更大的上下文窗口时,困惑度可能会飙升到非常高的数字,与未训练的模型相当。以匹配原始上下文窗口的大小,而不是外推超过训练时所用的上下文长度(其可能会导致灾难性的较高的注意力分数,从而完全破坏了自注意力机制)。PI 的做法:缩小每个位置的旋转弧度,让向量旋转得慢一些,每个位置的旋转弧度变为原来的。原创 2024-01-22 18:42:05 · 224 阅读 · 0 评论 -
LLM:ALiBi - 给注意力加上线性偏置
为什么是一个下三角矩阵,因为我们研究的是,autoregressive language modeling,所以这就是上三角被MASK的原因,我们不关注未来,只关注过去,这个编码只应用在Query和Key中,不会应用到Value中。这使得我们的方法与正弦方法相似,正弦方法中的超参数一次性设置的,然后在不同大小的不同数据集上的不同模型中重复使用。1:尽管大多数模型使用训练过的或正弦的位置嵌入,T5模型使用一种相对位置方法,这种方法不向词嵌入添加位置信息(与之前的方法不同)。相反,它修改了注意力值的计算方式。原创 2024-01-19 17:55:14 · 946 阅读 · 0 评论 -
LLM:RoPE - 旋转位置编码 (上)
2:主要就是对attention中的q, k向量注入了绝对位置信息,然后用更新的q,k向量做attention中的内积就会引入相对位置信息了。旋转位置编码RoPE 是目前大模型中广泛使用的一种位置编码,包括但不限于Llama、Baichuan、ChatGLM、Qwen等。1:RoPE通过绝对位置编码的方式实现相对位置编码,综合了绝对位置编码和相对位置编码的优点。,由于自然语言一般更依赖于相对位置,所以相对位置编码通常也有着优秀的表现。而经典的位置编码PE的计算方式是采用上篇文章提到的。原创 2024-01-19 11:21:03 · 576 阅读 · 0 评论 -
LLM:Sinusoidal-正余弦位置编码
当emb和位置编码相加了之后,我们希望emb占多数,比如将emb放大10倍,那么在相加后的张 量里,emb就会占大部分。因为位置编码矩阵的大小是预设的,若对其进行扩展,将会破坏模型在预训练阶段学习到的位置信息。如下图所示,我们随机初始化两个向量q和k,将q固定在位置0上,k的位置从0开始逐步变大,依次计算q和k之间的内积。具体表现为:对于两个相同的词向量,如果它们之间的距离越近,则他们的内积分数越高,反之则越低。每个分量的数值都具有周期性,并且越靠后的分量,波长越长,频率越低。原创 2024-01-18 17:29:08 · 2539 阅读 · 0 评论 -
LLM:Training Compute-Optimal Large Language Models(下)
尽管得出了同样的结论,但DeepMind认为:大型模型应训练更多的token,远超过OPenAI作者推荐的数量。所以后续的工作都专注于提升参数规模,设计越来越大的模型,而不是在更多的数据上训练较小的模型。使用这些中间损失观测,导致对训练模型在小于130B token的数据上的有效性的低估,并最终导致了一个结论,即模型大小应比训练数据大小增长得更快。在每条曲线的最小值的左侧,模型太小——在较少数据上训练的较大模型将是一种改进。在每条曲线的最小值的右侧,模型太大——在更多数据上训练的较小模型将是一种改进。原创 2024-01-16 16:45:40 · 1179 阅读 · 0 评论 -
LLM:Scaling Laws for Neural Language Models (中)
PF-days: 如果每秒钟可进行1015次运算,就是1 peta flops,那么一天的运算就是1015×24×3600=8.64×1019,这个算力消耗被称为1个petaflop/s-day。1:LLM模型的性能主要与计算量C,模型参数量N和数据大小D三者相关,而与模型的具体结构 (层数/深度/宽度) 基本无关。),模型基本收敛,继续增加训练的 Token 数量,纵轴的Test Loss 并没有明显下降。在1T的数据上,训练的10M-3B的模型,是怎么推算训练7B/13B需要2.6T数据呢?原创 2024-01-15 16:32:48 · 898 阅读 · 0 评论 -
LLM:Scaling Laws for Neural Language Models (上)
当我们在与模型训练数据分布不同的文本上评估模型时,结果与在训练验证集上的结果有强烈的相关性,但损失的偏移约为常数 - 换句话说,转移到不同的分布会产生一个常数的惩罚,但除此之外,性能大致与在训练集上的性能一致。但是,如果我们只固定N、D中的一个,而增加另一个规模,就会出现回报递减的情况。在WebText2数据集上训练的模型,在其他各种数据集上的测试损失也是 N 的幂律,且幂律几乎相同,如上图所示。4:更大的模型显著地更具样本效率,因此,在相对较小的数据量上训练非常大的模型并在收敛之前显著地停止。原创 2024-01-15 14:24:51 · 1906 阅读 · 1 评论