
昇思学习
文章平均质量分 82
xiandong20
这个作者很懒,什么都没留下…
展开
-
241207_MindNLP中的大模型微调
现在的大模型体量非常庞大,全量微调所需要的算力也特别庞大,个人开发者没有条件微调。参数量达到7B的模型才刚刚有涌现能力,但是我们要微调7B的模型的话,就需要3×28G的显存,至少需要2张A100的卡,更何况我们连一张也没有。近年来研究者提出了各种各样的参数高效微调方法,即固定住预训练模型的大部分参数,仅调整模型的一小部分参数实现微调。原创 2024-12-20 08:38:02 · 784 阅读 · 0 评论 -
241130_MindNLP学习记录
而MindNLP这边,他是每次按需取,我这个batch只需要batch size条数据,我就只拿batch size 条数据,然后进行遍历预处理,再返回batch。MindSpore在昇腾卡上实际训练的精度会比pytorch在GPU上训练得到的精度高0.1%到1.0%,可以借此做一些微调之类的工作,比较好出成果。pytorch的模型文件(.bin,.pth,.safetensor)都是可以直接载入的,不需要做convert模型转换。MindNLP可以支持国内多个镜像站的模型下载。原创 2024-11-30 23:01:48 · 242 阅读 · 0 评论 -
241130_昇思MindSpore函数式自动微分
函数式自动微分是Mindspore学习框架所特有的,更偏向于数学计算的习惯。这里也是和pytorch差距最大的部分,具体体现在训练部分的代码,MindSpore是把各个梯度计算、损失函数计算在这幅图中,右边这个就是函数式编程,首先先自己定义一个loss函数,最后一行使用grad(),把loss function传进去,因为传进去的是一个函数,做的是一个函数闭包,所以返回的还是一个函数。原创 2024-11-30 23:01:10 · 871 阅读 · 0 评论 -
241124_文本解码原理
一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积。原创 2024-11-24 21:13:45 · 446 阅读 · 0 评论 -
241124_基于MindSpore学习Prompt Tuning
标签词映射:在模型给出答案之后,比如模型给了个greet,因为我们是个情感分类任务,想要得到的结果只是两种,我们就要建立greet到positive的映射。传统的NLP训练模式都是先在大量的无标注的样本上进行预训练,然后再使用有标注的样本进行有监督的训练,调整单一的线性成果而不是整个模型。这一步给模型模型就需要去填这个mask 的答案,模型会填进去很多可能的答案,每个答案对应一个分数,分数最高的是最后的答案。prompt learing:模型结构不变,通过重构任务描述,使下游任务适配模型。原创 2024-11-24 18:33:16 · 756 阅读 · 0 评论 -
241124_基于MindSpore学习GPT2
大语言模型就是输入前一个词预测下一个词。原创 2024-11-24 17:00:21 · 326 阅读 · 0 评论 -
241124_基于MindSpore学习GPT1
在实际中,往往未标注的文本数据远多于已标注的,这些未标注的文本数据无法投入训练,又浪费提出了一种方法,基于大量未标注的文本数据,训练预训练语言模型,学习到一些general的特征。然后使用已标注的文本数据,对模型针对某一特定下游任务进行finetune,微调,仅更改output layer,就是GPT1存在问题:多元的下游任务难以有统一的优化目标。同时较难将预训练模型学到的信息传递到下游任务中。这里就体现出来和bert的区别bert两个任务:一个完形填空,一个上下文判断。原创 2024-11-24 11:27:55 · 782 阅读 · 0 评论 -
241123_基于MindSpore学习Bert
bert和transformer都有Embedding操作,包括词嵌入(word embedding)和位置嵌入(positional embedding)但是transformer中的位置信息是三角函数bert中的位置信息是可学习的,并增加了用于区分不同句子的段嵌入(Segment Embeddings)。三个embedding作相加得到最后的embeddingbert就是多层的transformer encoder层构成的。原创 2024-11-23 18:06:56 · 507 阅读 · 0 评论 -
241121_基于MindSpore学习Transformer
举例:我们在做英语阅读时,在回答问题时只是回头找原文的一部分相关内容,而不是全部内容。每次在搜索引擎搜索的时候,我们输入的就是query,下面展示的一个个标题就是key,点击这些key可以把我们引到对应的value计算注意力分数,就是计算query和key的相似度,即计算两个值的点积即卷积为避免两个值本身的大小对相似度计算产生影响,需要在点乘后除以$ d_{model} $,这个是词向量的长度softmax是在归一化,根据以上理论,我们可以简单写一点代码在处理数据时,为了统一长度,使用<pad>原创 2024-11-23 16:38:05 · 462 阅读 · 0 评论 -
241118_MindTorch学习-torch代码快速迁移到mindspore
在一个torch做的项目中直接在最开始,在import torch之前,代码执行的主入口文件中,添加一行(需设置ENABLE_BACKWARD,看后面微分接口适配块)就行了,就能跑了,没错。人傻了。其他的代码都不用改。原创 2024-11-23 10:55:27 · 930 阅读 · 0 评论 -
241015_制作自己的Pix2PIx数据集
官方代码:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix首先,附官方数据集下载链接,便于大家对照查看格式,这里我下载了最小的facades数据集,毕竟我们只是对照查看格式,而不是真的拿他数据集来训练(里面最大的数据集有8G,下的时候看清楚哦)。你要是不想下也可以,我这里尽量把他数据集的格式描述清楚。首先解压出来是一个decades文件夹,下属三个文件夹traintestval(val非必须),每个文件夹下存放了类似下图的图片。原创 2024-10-15 12:40:18 · 1522 阅读 · 0 评论 -
240929-CGAN条件生成对抗网络
前面我们学习了GAN()和DCGAN(),接下来继续来看CGAN(Conditional GAN)条件生成对抗网络。原创 2024-09-29 12:53:41 · 1466 阅读 · 0 评论 -
240929-DCGAN生成漫画头像
DCGAN是GAN的直接扩展,简单从命名来理解,DCGAN(Deep Convolutional Generative Adversarial Networks)就是比GAN(Generative Adversarial Networks)多了DC(Deep Convolutional),也就是加入了深度卷积,把CNN和GAN相融合了起来,在生成器和判别器的网络结构中加入了CNN架构。原创 2024-09-28 13:04:41 · 835 阅读 · 0 评论 -
240925-GAN生成对抗网络
GAN,顾名思义,gan……咳咳,就是干仗嘛(听子豪兄的课讲说这个名字还真的源于中文这个字),对应的就有两方,放在这里就是有两个网络互相对抗互相学习。类比武林高手切磋,都是高手惺惺相惜,打架只分胜负,不决生死,今天你打赢了,我回去总结一下复盘一下,想想怎么应对,明天我打赢了,你又回去总结经验,然后继续打下去。GAN其实是两个网络的组合,一个是生成器(,后文简称G),一个是判别器(,后文简称D),生成器负责生成模拟数据,判别器要保证自己判断的准确。原创 2024-09-27 16:48:22 · 1110 阅读 · 0 评论 -
240713_昇思学习打卡-Day25-LSTM+CRF序列标注(4)
最后一天咯,做第四部分。原创 2024-07-13 18:52:30 · 350 阅读 · 0 评论 -
240712_昇思学习打卡-Day24-LSTM+CRF序列标注(3)
今天做LSTM+CRF序列标注第三部分,同样,仅作简单记录及注释,最近确实太忙了。原创 2024-07-12 16:21:48 · 631 阅读 · 0 评论 -
240711_昇思学习打卡-Day23-LSTM+CRF序列标注(2)
今天记录LSTM+CRF序列标注的第二部分。仅作简单记录。原创 2024-07-12 00:09:55 · 335 阅读 · 0 评论 -
240710_昇思学习打卡-Day22-条件随机场
比如此时给一个手放在键盘上的照片,你要猜他此时是在苦逼敲代码还是快乐打游戏。但如果之前给了一张照片,上面是屏幕上的内容,那么我们就可以结合上一张照片来更好的判断此时手在键盘上是干什么。CRF全称Conditional Random Field,按照名字来理解,条件随机,随机输入,条件输出。在正式开始LSTM+CRF序列标注之前,我们先来了解一下条件随机场,以下仅做简单介绍。线性CRF是最常用的,也是我们该序列标注任务中要用到的。就说明,当前状态仅和其前后相连接的状态和输入X相关。随机,就是随机输入。原创 2024-07-11 00:37:10 · 277 阅读 · 0 评论 -
240709_昇思学习打卡-Day21-文本解码原理--以MindNLP为例
Beam search通过在每个时间步保留最可能的 num_beams 个词,并从中最终选择出概率最高的序列来降低丢失潜在的高概率序列的风险。按照贪心搜索输出序列(“The”,“nice”,“woman”) 的条件概率为:0.5 x 0.4 = 0.2。缺点: 错过了隐藏在低概率词后面的高概率词,如:dog=0.5, has=0.9。选出概率最大的 K 个词,重新归一化,最后在归一化后的 K 个词中采样。2. 开放域生成效果差。增加高概率单词的似然并降低低概率单词的似然。将出现过的候选词的概率设置为 0。原创 2024-07-10 00:17:39 · 797 阅读 · 0 评论 -
240708_昇思学习打卡-Day20-MindNLP ChatGLM-6B StreamChat
基于MindNLP和ChatGLM-6B实现一个聊天应用,本文进行简单记录。原创 2024-07-09 02:19:58 · 360 阅读 · 0 评论 -
240707_昇思学习打卡-Day19-基于MindSpore通过GPT实现情感分类
今天基于GPT实现一个情感分类的功能,假设已经安装好了MindSpore环境。原创 2024-07-07 19:27:49 · 568 阅读 · 0 评论 -
240706_昇思学习打卡-Day18-基于MindSpore的GPT2文本摘要
今天做一个根据一段文章提取摘要的提取器,基于nlpcc2017摘要数据,内容为新闻正文及其摘要,就是训练集及标签。首先我们来预装以下MindSpore环境安装tokenizers和mindnlp。原创 2024-07-07 00:17:56 · 384 阅读 · 0 评论 -
240705_昇思学习打卡-Day17-基于 MindSpore 实现 BERT 对话情绪识别
BERT全称是来自变换器的双向编码器表征量(Bidirectional Encoder Representations from Transformers),它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、文本分类等在许多自然语言处理任务中发挥着重要作用。模型是基于Transformer中的Encoder并加上双向的结构,因此一定要熟练掌握Transformer的Encoder的结构。原创 2024-07-06 00:06:29 · 991 阅读 · 0 评论 -
240704_昇思学习打卡-Day16-基于MobileNetv2的垃圾分类
今天我们学习记录MobileNetv2网络,听这个名字就可以听出来,mobile嘛,多半就是针对移动端,还真就说对了,这个模型就是针对移动端的轻量级卷积神经网络,相比于传统卷积网络,其模型更小,计算效率更高。MobileNetv2网络的主要原理在于其采用了深度可分离卷积,在通道维度上和空间维度上分别进行卷积操作。提高了计算效率,减少了参数量。此外,该网络还采用了Inverted Residuals倒残差结构以及Linear Bottlenecks线性瓶颈结构。原创 2024-07-05 00:19:43 · 713 阅读 · 0 评论 -
240703_昇思学习打卡-Day15-K近邻算法实现红酒聚类
K近邻算法,是有监督学习中的分类算法,可以用于分类和回归,本篇主要讲解其在分类上的用途。原创 2024-07-03 22:48:19 · 1221 阅读 · 0 评论 -
240702_昇思学习打卡-Day14-基于MindNLP+MusicGen生成自己的个性化音乐
前面一致做的都是图像的,可视化比较强,可以有比较多的图片帮助理解,但今天这个是关于音频的生成,基本只有干巴巴的代码,我尽量描述清楚些。相关研究成果参考论文《首先我们来了解一下MusicGen,这个是Meta(前身是Facebook)推出的根据文字生成音乐的项目,其支持文生曲,曲生曲。用户可以通过修改描述词汇来生成不同风格的音乐。,这个网站可能需要大家自行优化一下网络,,不然不太好进。但进不了也没关系,咱们以下内容就是自己用代码实现这个东西。原创 2024-07-02 17:22:10 · 1237 阅读 · 0 评论 -
240701_昇思学习打卡-Day13-Vision Transformer图像分类
Transformer最开始是应用在NLP领域的,拿过来用到图像中取得了很好的效果,然后他就要摇身一变,就叫Vision Transformer。该部分内容还是参考大佬的视频及查阅资料,以下为本人学习总结,肯定没有大佬详尽,建议去看大佬视频。原创 2024-07-01 23:55:13 · 999 阅读 · 0 评论 -
240630_昇思学习打卡-Day12-Transformer中的Multiple-Head Attention
但是要问这个矩阵是怎么确定的,我暂时还不知道,大佬文章中也暂时没提到,我只是通过直接拆分的方法知道他的目标值,然后逆推导出的这个矩阵。在列上进行拼接后,还要把他两的结果进行在行上拼接(我也不知道我的措辞用反了没有,大家看图,上面是第一次拼接,下面图右下角是第二次拼接),然后在和。这个图里面的b大家可能忘了,这个b就是Self-Attention中求得的最后结果,在多头注意力这边,这个结果还要再进行计算。之后,再把这三个进行均分,有多少个Head就均分多少份,这里的均分就是直接拆分,比如。原创 2024-06-30 21:56:34 · 1026 阅读 · 0 评论 -
240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention
在了解Vision Transformer之前,我们需要先了解一下Transformer,Transformer最开始是应用在NLP领域的,拿过来用到Vision中就叫Vision Transformer。而这里要提到的,就是Transformer中的self-Attention(自注意力)和Multiple-Head Attention(多头注意力)。原创 2024-06-29 21:46:21 · 921 阅读 · 0 评论 -
240628_昇思学习打卡-Day10-SSD目标检测
今天我们来看SSD(Single Shot MultiBox Detector)算法,SSD是发布于2016年的一种目标检测算法,使用的是one-stage目标检测网络,意思就是说它只需要一步,就能把目标检测出来。原创 2024-06-28 23:29:07 · 865 阅读 · 0 评论 -
240627_昇思学习打卡-Day9-ResNet50图像分类
传统CNN网络均是由一系列卷积、池化、全连接层叠加而成,在反向传播过程中梯度往往是连乘得操作,这种情况下可能就会出现梯度消失或梯度爆炸的问题。梯度消失:梯度小于1,小于1的数连乘后无限趋近于0。靠近输入层的参数w根本不动。梯度爆炸:梯度大于1,大于1的数连乘后趋近于无穷。靠近输入层的参数w来回震荡。出现这种情况后,往往添加神经网络的层数可能还不如浅层网络训练的效果好,这就制约了CNN的发展注:图中情况不是过拟合,过拟合是训练集误差低,测试集误差高,这个情况是训练集和测试集上的误差均高于浅层网络。原创 2024-06-27 15:43:03 · 1061 阅读 · 0 评论 -
240626_昇思学习打卡-Day8-稀疏矩阵
在一些应用场景中,比如训练二值化图像分割时,图像的特征是稀疏的,使用一堆0和极个别的1表示这些特征即费事又难看,此时就可以使用稀疏矩阵。原创 2024-06-26 20:50:33 · 914 阅读 · 0 评论 -
240625_昇思学习打卡-Day7-使用静态图加速
AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。原创 2024-06-25 17:58:59 · 1178 阅读 · 0 评论 -
240624_昇思学习打卡-Day6-张量Tensor
今儿扭头回来看看基础,看看最基本的数据结构,张量(Tensor)。张量和数组、矩阵非常相似。是MindSpore网络运算中的基本数据结构,本文主要介绍张量和稀疏张量的属性及用法。原创 2024-06-24 23:55:04 · 888 阅读 · 0 评论 -
240622_昇思学习打卡-Day4-5-ResNet50迁移学习
我们对事物的认知都是一点一点积累出来的,往往借助已经认识过的东西,可以更好地理解和认识新的有关联的东西。比如一个人会骑自行车,我们让他去骑摩托车他也很快就能学会,比如已经学会C++,现在让他去学python他也很容易就能理解。这种情况我们一般称为举一反三。反言之,我们从原始部落找出来一个人(仅作举例),指着摩托车让他骑,可能是一件特别难的事,因为他对这个领域没有丝毫的认知和理解,在实现这件事上就会特别困难。原创 2024-06-24 00:24:30 · 873 阅读 · 0 评论 -
240622_昇思学习打卡-Day4-ResNet50迁移学习
我们对事物的认知都是一点一点积累出来的,往往借助已经认识过的东西,可以更好地理解和认识新的有关联的东西。比如一个人会骑自行车,我们让他去骑摩托车他也很快就能学会,比如已经学会C++,现在让他去学python他也很容易就能理解。这种情况我们一般称为举一反三。反言之,我们从原始部落找出来一个人(仅作举例),指着摩托车让他骑,可能是一件特别难的事,因为他对这个领域没有丝毫的认知和理解,在实现这件事上就会特别困难。原创 2024-06-22 22:19:15 · 611 阅读 · 0 评论 -
240621_昇思学习打卡-Day3-余弦退火+周期性重启+warm up
先展示一个完整的余弦退火+周期性重启+warm up调整学习率的流程(横轴为epoch,纵轴为学习率):我们换一个收敛较慢的图进行详细说明:在神经网络刚开始训练时,梯度较大,如果一开始就设置比较大的学习率的话,训练会极不稳定,导致不能得到较好的收敛效果,所以我们需要在最开始训练时将学习率保持在一个比较低的水平,让梯度先收敛到一定程度,然后再把学习率增大,可以有效提高收敛效果。这个过程称为网络训练的预热(warm up)余弦退火使用余弦函数可以达到一个较好的学习率衰减效果,具体来说,随着x的增加余弦值首先原创 2024-06-22 01:39:40 · 1214 阅读 · 0 评论 -
240620_昇思学习打卡-Day2-FCN图像语义分割
这一部分主要对训练出来的模型效果进行评估,为了便于解释,假设如下:共有k+1个类(从 L0 到 Lk, 其中包含一个空类或背景), p_{i j} 表示本属于i类但被预测为j类的像素数量。即p_{i i}表示真正的数量, 而 p_{i j} p_{j i}则分别被解释为假正和假负, 尽管两者都是假正与假负之和。Pixel Accuracy(PA, 像素精度):这是最简单的度量,为标记正确的像素占总像素的比例。原创 2024-06-20 13:04:50 · 1536 阅读 · 0 评论 -
240619_昇思学习打卡-Day1-损失函数_交叉熵损失函数
在模型训练过程中,我们需要关注损失值,使得其无限缩小,即预测值无限接近于真实值,故需要选择合适的损失函数。其中log是以e为底的,也就是ln,但我不知道为什么网上的教程全是写的log,刚学习时我还算了半天对不上数值,我这里就写ln了。参数意思是第一张图预测是猫的概率是0.6,不是猫的概率是0.4,第二张图预测是猫的概率是0.3,不是猫的概率是0.7,以此类推。当然,以上只是我们自己根据公式所手动写的交叉熵损失函数,一切都只是我们自以为是,在实际应用过程中,往往直接使用pytorch的。原创 2024-06-20 00:25:16 · 1041 阅读 · 0 评论