自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

胖胖大海的博客

邮箱:[email protected] 交流也行,合作也可,欢迎骚扰。

  • 博客(142)
  • 资源 (8)
  • 收藏
  • 关注

原创 大模型分布式训练方法FDSP和DeepSpeed

收集到的完整参数将在计算后立即释放,释放的内存可用于下一层的计算。FSDP是一种数据并行训练,但与传统的数据并行训练不同,传统的数据并行训练在每一片GPU上独立维护模型参数、梯度和优化器状态,FSDP可以在多个worker之间将所有这些状态分片,并可以有选择的将分片的模型参数卸载到cpu上。Scatter与Broadcast非常相似,都是一对多的通信方式,不同的是Broadcast的0号节点将相同的信息发送给所有的节点,而Scatter则是将数据的不同部分,按需发送给所有的节点。

2024-02-23 19:31:55 1452

原创 pytorch-metric-learning度量学习工具官方文档翻译

损失函数可以使用距离、规约方法和正则化方法来进行定制化。在下面的图表中,miner在批量中找到难训练的样本对的索引,这些索引被索引到距离矩阵。

2024-01-27 22:07:35 1320 2

原创 基于LangChain实现的知识库问答工具Langchain-Chatchat

其中,–model_name_or_path对应基座模型的路径,–checkpoint_dir对应LoRA微调之后保存的参数李静,–export_dir对应合并之后保存的路径。该脚本将会将所有config目录下的配置文件样例复制一份到config目录下,方便开发者进行配置。接着,开发者可以根据自己的需求,对配置文件进行修改。配置与知识库相关的参数,包括知识库的名称,使用的向量数据库类型,文本拆分策略,采用哪种分词器等。基于query文本检索不到知识库中对应的上下文内容,导致模型回复的内容不准确。

2023-11-29 20:15:29 2102 4

原创 pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed模型训练

pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed(环境没搞起来)模型训练代码,并对比不同方法的训练速度以及GPU内存的使用

2023-11-17 22:19:56 2254 2

原创 FlashAttention计算过程梳理

其中,全连接层和根据注意力权重的加权求和其实都是通过矩阵乘法实现的,所以分块计算可以通过矩阵的分块乘法来实现。由于softmax的分母部分需要计算全局元素的求和,分块之后只能计算局部的和,导致softmax的分块计算变得复杂。现在softmax的分母已经被更新成了全局的结果,现在就要把分子也更新成全局的结果就行了。关于第 6 步的公式是怎么得到的,我们把第 6 步的公式拆解为两部分,现在我们计算到了第二块数据。,继续迭代下去,直到完成所有数据块的计算,这样就得到了全局的softmax结果。

2023-10-17 19:44:00 559

原创 扩散模型 DDPM 核心代码梳理

与Normalizing Flows、GAN或VAEs等生成模型一样,它们都将噪声从一些简单分布转换为数据样本。这也是使用神经网络学习从纯噪声开始逐渐去噪进行内容生成的过程。

2023-09-07 20:07:25 844

原创 深度学习实际使用经验总结

常用算法(可作为其他任务的骨干网络):服务端:VGG、ResNet、ResNeXt、DenseNet移动端:MobileNet、ShuffleNet等适用场景:识别区分场景类型卷积网络池化全连接网络残差网络分组卷积深度可分离卷积Inception网络循环神经网络Transformer网络数据加载:这部分可能涉及到大规模训练数据的高性能加载,消除数据读取造成的性能瓶颈数据增强:根据具体任务选择合适的数据增强策略。

2023-07-28 20:07:08 595

原创 Hugging Face开源库accelerate详解

官网:https://huggingface.co/docs/accelerate/package_reference/acceleratorAccelerate使用步骤初始化accelerate对象accelerator = Accelerator()调用prepare方法对model、dataloader、optimizer、lr_schedluer进行预处理删除掉代码中关于gpu的操作,比如.cuda()、.to(device)等,让accelerate自行判断硬件设备的分配将loss.b

2023-07-19 20:21:38 2216

原创 hugging face参数高效微调peft源码解析

对于Auto-Encoding类型的任务,在模型的训练和预测阶段,self-attention都可以并行计算。在hugging face实现的self-attention模块中,为了复用decode生成阶段的key和value,会传入一个past_key_values参数,如果past_key_values不是None,表示前面时间步已经有计算结果了,直接复用上一步的结果,然后将当前时间步的key和value拼接上去,更新后的past_key_values将继续传递到下一个时间步。对应上面讲到的2和3。

2023-07-09 11:07:18 2463 1

原创 Transformer Block运算量

所以,一个Transformer Block中总的乘法运算量是:HW * C1 * C2 + HW * C1 * C2 + HW * C1 * C1 + HW * HW * C2 + HW * HW * C1 + HW * C1 * C1。为了简单起见,假设C1 = C2 = C,那么总的乘法运算量是:4 * HW * C * C + 2 * HW * HW * C。备注:上述计算过程不包含Layer Nor和Softmax。备注:C1可以不等于C2。备注:C1可以不等于C2。

2023-06-10 22:07:39 1268

原创 pytorch中Dataset、Dataloader、Sampler、collate_fn相互关系和使用说明

在PyTorch中,可以通过继承类来自定义数据集(Dataset)类。自定义的数据集类可以包含自己的数据加载和预处理方法,以及一些额外的元数据。"""加载磁盘上的图像文件,并进行transform变换,返回变换后的图片和与之对应的标签编号"""# 所有图像的路径列表# 所有图片对应的label标签编号,从0开始# 图像预处理以上代码自定义了一个Dataset类用于加载训练数据,训练数据中cat和dog目录下分别存储的是猫和狗的图片。

2023-06-02 09:21:56 999

原创 度量学习Metirc Learning和基于负例的对比学习Contrastive Learning的异同点思考

如果对于两张都是狗的图片(但是是不同的图片),为何他们在对比学习中,projector之后的表示空间是相邻的呢?情况二:假如在一个Batch中同时存在两张狗的图片,按照自监督的预设前提,自己只和自己像,和其他都不像,那么这两张狗的图片互为负样本,模型训练时在特征空间上确实会将这两张图片的表征距离拉远,所以此时需要用到损失函数里面的温度系数,温度系数设置的越小,会把“负例”推的越远,但此时的负例可能是假负例,所以作者也讲了,温度系数设置的太小容易出现误判的负例。以下仅是个人的一些观点,谨慎参考。

2023-05-14 15:53:38 848 1

原创 《Attention is all you need》Pytorch源码各模块输入输出详解

关于Transformer架构和原理解析的优秀文章有好多,这里列出一些供大家参考学习。本篇也就不对Transformer的结构和原理进行解读了(肯定没他们解读的好)。上述参考文献足以让一个初学者完全了解transformer的架构及原理了。本文从代码实现的角度来看一下transformer的核心架构中的每个模块的具体实现方式,希望以此能对transformer架构有更深入的了解。本文参考的实现代码来自于。

2023-04-23 17:00:58 907

原创 RepVGG(Re-parameterization VGG): Making VGG-style ConvNets Great Again

鉴于多分支模型训练性能好,推理性能差,单分支扁平化模型训练性能差,推理性能好的情况,将二者综合,试图构建一种网络模型,在模型训练阶段使用多分支训练获得更好的训练性能,在模型推理阶段将训练好的多分支模型恒等转换为单分支的扁平化模型,推理阶段的网络模型中只有3x3的卷积和ReLU激活这两种操作。这其中的核心问题就是如何把多分支的模型转换为一个单分支的模型?RepVGG里面把这个过程叫做结构重参数化技术。

2023-02-06 20:02:14 943

原创 pytorch版本RetinaFace人脸检测模型推理加速,去掉FPN第一层,不检测特别小的人脸框

在本文中,从精简模型预测结果,丢弃小的人脸检测结果的角度对RetinaFace进行优化。通过前面的描述我们知道,RetinaFace里面采用了特征金字塔FPN,其中低层特征用来检测小的人脸,高层的特征用来检测大的人脸,但是如果下游是人脸识别任务的话,小的人脸对于人脸识别结果不论是在准确率还是召回率方面都没有太多正向的作用。所以不如把检测小的人脸这部分功能去掉,节省算力,还能提升一些模型的推理速度。

2022-10-23 20:10:05 2076 1

原创 计算机视觉,如何识别未在训练集中没有出现过的类别?

如何识别未在训练集中没有出现过的类别

2022-06-13 20:10:18 1805 2

原创 多分类模型如何将LabelSmoothing与MixUp联合使用?

多分类模型如何将LabelSmoothing与MixUp联合使用?

2022-06-13 20:01:48 1098

原创 YOLOX训练自有数据集

开源代码:https://github.com/Megvii-BaseDetection/YOLOX参考:深入浅出Yolox之自有数据集训练超详细教程 - 知乎训练数据标注YOLOX采用VOC数据标注格式,VOC数据格式如下:其中图片训练的图片数据存放在JPEGImages目录中,每张图片对应的同名xml文件存放在Annotations目录下,ImageSets/Main目录下存放划分号的训练集train.txt和验证集文件val.txt,其中trai...

2022-05-12 19:55:05 1876 3

原创 Anchor-Free系列之YOLOX:Exceeding YOLO Series in 2021

Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints_程大海的博客-CSDN博客Anchor-Free系列之CenterNet:Objects as Points_程大海的博客-CSDN博客Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector_程大海的博客-CSDN博客参考:如何评价旷视开源的YOLOX,效果超过YOLOv5? - 知乎.

2022-05-03 21:59:37 3761 1

原创 Anchor-Free系列之FCOS:A Simple and Strong Anchor-free Object Detector

开源代码:https://github.com/tianzhi0549/FCOSAnchor-based目标检测算法的缺点:anchor的大小、宽高比以及anchor的数量这些超参数对算法性能影响较大,在使用anchor box的时候,涉及的超参数如下: anchor的大小 anchor的宽高比 anchor的数量 anchor box与ground truth的IoU阈值,用来确定anchor是否为positive anchor box与ground truth的IoU阈值,

2022-05-01 10:04:03 2078

原创 Anchor-Free系列之CenterNet:Objects as Points

CenterNet也是anchor-free的one-stage的目标检测算法,CenterNet与基于anchor的one-stage目标检测算法的主要区别如下:基于anchor的检测算法首先要按照anchor与目标ground truth的IoU来划分anchor是positive还是negative,然后positive的anchor负责预测对应的目标。CenterNet中没有anchor,只识别目标的中心点,可以理解为目标中心的位置就是一个positive anchor,其他地方都是negati

2022-04-18 09:16:06 1706

原创 分类模型训练完之后,测试效果极差可能原因分析

在知乎上有这样一个问题:acc很高,但预测正确的样本占比又很低,怎么回事? - 知乎关于这个问题,在这个问题的回答中,有许多大佬从数据的分布、模型的结构、数据集的划分,以及验证指标等层面进行了解答。在这里按照我的理解,简单描述一下这个问题:模型训练正常,模型测试效果很差,甚至在训练集上的测试效果都很差。简单分析一下大概有以下几个方面的原因可以排查:1、检查模型训练和模型测试的数据处理pipeline是否一致,比如训练时做了Normalize...

2022-04-13 12:23:42 9227 1

原创 Anchor-Free系列之CornerNet: Detecting Objects as Paired Keypoints

CornetNet不使用anchor box来完成目标检测,并且达到了与当时的one-stage检测算法更好的精度。作者分析了anchor box的两个主要缺点:为了提升目标检测效果,通常需要生成大量的anchor box,以YoloV3为例,在13x13、26x26、52x52三种尺度的特征图上,每个位置生成9个anchor box,一共有31941个anchor box,更多的anchor box可以保证每个目标都能够被anchor box所覆盖,提升目标检测结果的召回率,但是更多的...

2022-04-12 09:11:18 2678

原创 ResNeXt、DenseNet、CSPNet网络模型总结

ResNeXt在网络架构设计层面,常见的几种提升网络性能的方法:网络的宽度width:每层卷积的输出通道数 网络的深度depth:网络的层数 网络的分辨率resolution:输入图像的分辨率大小 网络的增长率growth:随着层数的增加,每层卷积输出通道数的增长比例 网络的特征复用:如DenseNet可以使用更浅的网络,更少的参数,提升特征复用,达到与深度网络相当的性能 高效特征融合:InceptionNet的split-transforms-merge模式,将输入分别使用不同的转换分支

2022-03-31 10:32:27 7890 2

原创 Yolo系列目标检测算法知识点总结

下面是YoloV4论文中给出的目标检测算法的整体架构:主要包含以下几个部分:输入层用来处理输入数据,如数据增强 Backbone主干网络用来提取特征 Neck层用来做多尺度特征融合,提升特征的表达能力,如SPP、FPN、BiFPN、PAN等 预测输出层用来预测输出结果,输出层又分为密集预测(如RPN,SSD,Yolo)和稀疏预测(如R-CNN系列)Yolov1:参考:<机器爱学习>YOLO v1深入理解 - 知乎参考:https://zhuanla...

2022-03-12 21:16:51 7040

原创 BatchNorm与LayerNorm

BatchNorm批量归一化:批量归一化是对一个中间层的单个神经元进行归一化操作。计算第l层网络中每个神经元在Batch大小为N的样本上输出的N个结果,计算每个神经元输出的N个结果的均值和方差,然后使用均值和方差来对这N个输出结果做归一化,所以归一化的维度是在Batch上进行的LayerNorm层归一化:层归一化是对一个中间层的所有神经元进行归一化。计算第l层网络中的每个神经元在Batch中每个输入样本的输出,对于每个输入样本,计算所有神经元输出结果的均值和方差,使用均值和方差来归一化对于这个输..

2022-03-01 09:06:12 1484

原创 pytorch版本RetinaFace人脸检测模型推理加速

本文介绍的方法是提升pytorch版本RetinaFace代码在数据预处理阶段的速度,使用纯pytorch框架进行模型推理,并不涉及模型的onnx、tensorrt部署等方法。本文介绍的方法适用于从磁盘加载分辨率相同的一批图像使用RetinaFace进行人脸检测,能够带来30%的性能提升。关于pytorch_retinaface使用tensorrt部署请参考https://github.com/wang-xinyu/tensorrtx/tree/master/retinaface。先上优化前后...

2022-02-18 21:47:25 4308 2

原创 pytorch.onnx.export方法参数详解,以及onnxruntime-gpu推理性能测试

Torch.onnx.export执行流程:1、如果输入到torch.onnx.export的模型是nn.Module类型,则默认会将模型使用torch.jit.trace转换为ScriptModule2、使用args参数和torch.jit.trace将模型转换为ScriptModule,torch.jit.trace不能处理模型中的循环和if语句3、如果模型中存在循环或者if语句,在执行torch.onnx.export之前先使用torch.jit.script将nn.Module转换为Sc

2022-02-18 21:32:21 27517 13

原创 torchvision.transforms GPU加速,提升预测阶段数据预处理速度

参考:Tensor transforms and JIT — Torchvision 0.11.0 documentationTorchvision v0.8.0之前版本:Torchvision v0.8.0之前版本的transforms主要分为两类:1、一类处理的输入数据类型为Tensor2、另一类处理的数据类型为PILImage所以torchvision里面提供了两个转换函数ToTensor和ToPILImage...

2022-01-20 21:31:34 6000 9

原创 从零搭建音乐识别系统(五)embedding特征提取模型验证

在前面的内容中,我们已经借助于pytorch-metric-learning代码库,使用ResNet + Circle Loss+ sample miningde 方法训练了度量学习模型,该模型旨在将一个输入的10秒音频短片转化为一个具有表征能力的高维embedding向量。度量学习的目标是对于属于同一类别ID的音乐片段的embedding相似度大于属于不同类别ID的音乐片段的embedding相似度。关于如何验证特征提取模型的性能问题,在模型训练阶段,我们已经使用了独立于训练集的验证集和测试集,使..

2022-01-11 20:23:23 1981 4

原创 从零搭建音乐识别系统(四)embedding特征提取模型

在第二篇中,我们已经从每首歌曲中提取了20个相互之间重合度在50%~97.5%的10秒音乐片段,并将这些片段转换成了大小为[64, 1001]的梅尔频谱矩阵。假如我们现在的训练集中有10000首不同的歌曲,那么我们现在就有20 * 10000共20万个[64, 1001]的训练样本。本篇我们就使用度量学习方法训练模型来提取embedding特征。关于度量学习方法,这里再次强调一下度量学习的几个核心概念:1、选定度量学习方法使用的embedd......

2022-01-09 21:06:16 1613 4

原创 从零搭建音乐识别系统(三)音乐分类模型

经过上一篇的介绍,我们已经获得了AudioSet开源数据集,并且将数据集分为两类:音乐类和非音乐类。将每段10秒的音频提取得到[64, 1001]大小的特征矩阵。接下来就是使用这些特征矩阵来训练一个二分类模型,用来识别音频片段是否是音乐片段。参考自成熟的图像分类网络模型,我们采用Pytorch框架训练ResNet分类模型,分类模型的训练主要包括以下几个核心步骤:1、训练数据预处理由于我们的每条训练数据是保存在npy文件里面的,所以我们需......

2022-01-09 11:55:36 1629 4

原创 从零搭建音乐识别系统(二)音频特征提取

在前面的总体功能概述中提到了,这个系统会训练两个模型,一个是音乐分类模型,用来判断是否出现音乐片段,一个是embedding特征提取模型,用来提取音频的embedding特征向量。分类模型数据集:在这里,对于分类模型的训练,我们采用开源的AudioSet数据集。AudioSet数据集是一个用于声音分类的数据集,其中包含了各种类别的声音,音乐,唱歌,哼唱,演讲,钢琴等,每个音频片段的长度都是10秒,具体可以去官网看一下介绍。我们要训练的是一个二分类模型,只要能够区分音频......

2022-01-08 22:37:19 2978 12

原创 从零搭建音乐识别系统(一)整体功能介绍

从零开始搭建一个音乐识别系统总共分几步,简单画了一个草图:总结一下,大概分为以下四步:1、训练一个分类模型,用于识别一段音乐是否是音乐,如果是音乐才继续进行识别,如果不是音乐则停止识别,这可以带来两个方面的好处。一是可以降低一定的计算量;二是可以降低误识别2、使用度量学习相关方法,训练一个提取音乐片段embedding向量的模型,理想情况下,相似的歌曲片段的embedding之间具有更高的相似度,从而可以根据embeddi......

2022-01-08 22:12:15 889

原创 数据增强之MixUp

MixUp论文:《mixup:Beyond Empirical Risk Minimization》参考:GitHub - facebookresearch/mixup-cifar10: mixup: Beyond Empirical Risk Minimization其中,和数两个数据样本,和是原始的输入数据(如图像矩阵),和是和对应所属类别的one-hot编码,,,用来控制mix的强度。Mixup的Pytorch代码...

2021-12-26 18:12:19 1770

原创 数据增强之SpecAugment

SpecAugment论文:《SpecAugment: A Simple Data Augmentation Methodfor Automatic Speech Recognition》参考:https://github.com/bobchennan/sparse_image_warp_pytorch参考:语音算法阅读之SpecAugment - 卑微的蜗牛 - 博客园参考:https://github.com/qiuqian...

2021-12-26 18:09:05 5072

原创 度量学习DML之MoCO

度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好MoCo(queue+encoder滑动平均更新)论文:《Momentum Contrast for Unsupervised Visual Representation Learning》参考:MoCo论文解读 - ...

2021-12-26 18:01:58 1411

原创 度量学习DML之Cross-Batch Memory

Cross-Batch Memory(无痛涨点)论文:《Cross-Batch Memory for Embedding Learning》参考:跨越时空的难样本挖掘 - 知乎通过前面分析的几种pair-based的损失函数可能看到,基于pair的损失函数通常在mini-batch中挖掘具有高价值的样本来进行模型训练,这样一来,在训练时使用的batch size越大,得到的模型的性能就越好,这在上述的一些论文中大部分作者都会提及到。但是,现实情...

2021-12-26 17:57:49 1106

原创 度量学习DML之Circle Loss

度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Circle Loss论文:《Circle Loss: A Unified Perspective of Pair Similarity Optimization》参考:Circle Loss 感想 - 知乎参考:如何理解与看待在cvpr2020

2021-12-26 17:54:48 4936

原创 度量学习DML之Lifted Structure Loss

度量学习的目标:相似的或者属于同一类的样本提取到的embedding向量之间具有更高的相似度,或者具有更小的空间距离 对于out-of samples的样本,也就是未见过的样本,希望也能提取到有效的embedding,也就是模型的泛化能力更好Lifted Structure Loss论文:《Deep Metric Learning via Lifted Structured Feature Embedding》核心思想:通过前面的介绍可以知道,Contra...

2021-12-26 17:44:09 2483

Ununtu16.04 系统安装ffmpeg工具相关安装包和一键安装脚本

在Ununtu16.04 系统下安装ffmpeg需要的相关安装包和一键安装脚本

2018-11-03

windows系统基于Java语言访问HDFS文件系统相关配置文件

hadoop的分布式文件系统通常在Linux系统下运行,但是基于HDFS文件系统开发相关代码工作可以在windows系统下进行,但是要进行相关配置。(hadoop.dll/winutils.exe/msvcr100.dll 等)

2018-04-29

JavaScript轻量级开发工具brackets和w3school工具包

JavaScript轻量级开发工具brackets软件包和w3school开发帮助手册

2018-04-07

selenium-server-standalone-3.4.0.jar

selenium 3.4.0 脚本分布式执行依赖的jar包,可用于selenium自动化脚本在多节点集群自动执行web自动化测试,也可用于在jenkins持续集成工具中配置selenium运行环境。

2018-02-25

multitask0.2.0

multitask0.2.0 文件包,ReportLab_2_1;reportlab-3.3.0

2017-10-17

python+selenium环境搭建和教程

python+selenium安装教程及相关资源

2017-08-09

简单计算器

实现简单的算数表达式计算,可以带有括号等

2014-04-29

calculate 开发

基于java的计算器开发,实现计算功能,能进行比较复杂的算术运算

2014-04-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除