<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GG_Bruse的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GG_Bruse</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GG_Bruse]]></copyright><item><title><![CDATA[【TensorRT】20250826 日志 - 开启FP16的问题]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/155167089</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/155167089</guid><author>GG_Bruse</author><pubDate>Sun, 23 Nov 2025 20:03:02 +0800</pubDate><description><![CDATA[博主最近遇到一个新模型需要转 Engine 的任务，打算采用 Ckpt - ONNX - Engine的方式，遇到了一些小问题，记录一下。]]></description><category></category></item><item><title><![CDATA[【模型量化】量化基础]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/147405197</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/147405197</guid><author>GG_Bruse</author><pubDate>Wed, 30 Apr 2025 21:00:00 +0800</pubDate><description><![CDATA[下图为对称量化在居中乘法当中的应用示意图（非对称量化也类似），通过量化，将浮点矩阵的乘法，转化为整数矩阵的乘法，虽然存在一定误差，但误差不大。量化感知训练就是在网络训练过程中，模拟量化，让模型在训练过程中就能调整参数，让其更适合量化，提高量化后模型的精度。对称量化具有计算简单，精度低等特点，非对称量化的计算有一个额外的参数Z调整零点的映射，因此计算复杂，但精度相对较高。中绝对值的最大值，然后对其进行缩放得到量化后的值，然后进行反量化得到原来的值，可以看出量化是存在一定误差的。]]></description><category></category></item><item><title><![CDATA[正则化详解]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/147038324</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/147038324</guid><author>GG_Bruse</author><pubDate>Mon, 07 Apr 2025 15:52:57 +0800</pubDate><description><![CDATA[正则化是指在机器学习和统计建模中的一种技术，用于控制模型的复杂度，防止模型在训练数据上过度拟合（overfitting）。当模型过度拟合时，会学习到训练数据中的噪声和细微变化，导致在新数据上的性能下降正则化通过在模型的损失函数中引入额外的惩罚项，来对模型的参数进行约束，从而降低模型的复杂度。这个额外的惩罚通常与模型参数的大小或者数量相关，旨在鼓励模型学习简单的规律，而不是过度拟合训练数据在深度学习中，正则化通常涉及到对网络的权重进行约束，以防止其变得过大或过复杂。]]></description><category></category></item><item><title><![CDATA[【TensorRT】20250328 日志 - TensorRT升级]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/146778789</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/146778789</guid><author>GG_Bruse</author><pubDate>Mon, 31 Mar 2025 00:54:10 +0800</pubDate><description><![CDATA[最近博主在做TensorRT的升级，有感而发，分享一些小经验，哈哈哈哈接下来都用TensorRT官方提供的Demo进行讲述吧。]]></description><category></category></item><item><title><![CDATA[【ONNX】ONNX的基本使用]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/146075579</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/146075579</guid><author>GG_Bruse</author><pubDate>Fri, 07 Mar 2025 15:12:04 +0800</pubDate><description><![CDATA[ONNX Simplifier 的主要功能是通过分析和优化 ONNX 模型的计算图，移除冗余操作、合并相邻节点、优化常量节点等，从而减小模型的大小和计算量。这不仅可以提高模型的推理速度，还能使模型结构更加清晰，便于理解和部署（若模型结构没问题，其实ONNX Simplifier用处不大）直接使用ONNX搭建计算图的开发效率有些低，通常都是Pytorch转ONNX。类似于链表，注意处理好待删除节点的上下游节点之间的链接关系。可以使用Netorn查看ONNX的结构。接下来的讲解都使用这个简单的模型。]]></description><category></category></item><item><title><![CDATA[【ONNX】20250219 日志 - Tensorflow模型适配昇腾]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145845870</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145845870</guid><author>GG_Bruse</author><pubDate>Tue, 25 Feb 2025 11:40:19 +0800</pubDate><description><![CDATA[checkpoint 转为 savemodel 的过程中也是存在一些小问题的，tensorflow2中存在延迟构建，在读取 checkpoint 前需进行显示构建（手动调用 build 或者执行一次推理），否则下面的代码会打印为空，无法进行节点之间映射。使用模型训练的同事提供的Tensorflow模型代码，将 checkpoint 中的权重重新读入，将其保存为savemodel格式，再使用 tf2onnx 将其转为 onnx 即可。pb文件中既包含权重也包含模型结构，是支持直接转 onnx 的。]]></description><category></category></item><item><title><![CDATA[【NLP】注意力机制]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145724351</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145724351</guid><author>GG_Bruse</author><pubDate>Fri, 21 Feb 2025 15:08:05 +0800</pubDate><description><![CDATA[人类观察事物时，之所以能够快速判断一种事物（当然允许判断是错误的），是因为大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断，而并非是从头到尾的观察一遍事物后，才能有判断结果。正是基于这样的理论，就产生了注意力机制需要三个指定的输入Q(query)、K(key)、V(value)，然后通过计算公式得到注意力的结果，这个结果代表query在key和value作用下的注意力表示。当输入的Q=K=V时，称作自注意力计算规则。]]></description><category></category></item><item><title><![CDATA[【NLP】文本预处理]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145655139</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145655139</guid><author>GG_Bruse</author><pubDate>Sun, 16 Feb 2025 23:29:21 +0800</pubDate><description><![CDATA[文本语料在输送给模型前一般需要一系列的预处理工作，才能符合模型输入的要求，如：将文本转化成模型需要的张量，规范张量的尺寸等，而且科学的文本预处理环节还将有效指导模型超参数的选择，提升模型的评估指标]]></description><category></category></item><item><title><![CDATA[【NLP】循环神经网络RNN]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145636774</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145636774</guid><author>GG_Bruse</author><pubDate>Fri, 14 Feb 2025 17:27:32 +0800</pubDate><description><![CDATA[RNN(Recurrent Neural Network)，中文称作循环神经网络，一般以序列数据为输入，通过网络内部的结构设计有效捕捉序列之间的关系特征，一般也是以序列形式进行输出RNN的循环机制使模型隐层上一时间步产生的结果，能够作为当下时间步输入的一部分（当下时间步的输入除了正常的输入外还包括上一步的隐层输出）对当下时间步的输出产生影响。]]></description><category></category></item><item><title><![CDATA[卷积神经网络CNN]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145622111</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145622111</guid><author>GG_Bruse</author><pubDate>Fri, 14 Feb 2025 00:32:29 +0800</pubDate><description><![CDATA[卷积神经网络是深度学习在计算机视觉领域的突破性成果。在计算机视觉领域，往往输入图像都很大，若使用全连接网络，计算代价较高。图像也很难保留原有的特征，导致图像处理的准确率不高卷积神经网络（Convolutional Neural Network）是含有卷积层的神经网络。卷积层的作用就是用来自动学习、提取图像的特征CNN网络主要有三部分构成：卷积层、池化层和全连接层构成，其中卷积层负责提取图像中的局部特征；池化层用来大幅降低参数量级(降维)；全连接层用来输出想要的结果。]]></description><category></category></item><item><title><![CDATA[【CUDA】常量内存]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145515242</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145515242</guid><author>GG_Bruse</author><pubDate>Sat, 08 Feb 2025 17:06:58 +0800</pubDate><description><![CDATA[常量内存对内核代码而言是只读的，但它对主机而言即是可读的又是可写的。常量内存位于设备的DRAM上（和全局内存一样）。有一个专用的片上缓存，从每个SM的常量缓存中读取的延迟，比直接从常量内存中读取要低得多。每个SM常量内存缓存大小的限制为64KBconstant Memory 的获取方式不同于其它的 GPU 内存，对于 constant Memory 来说，最佳获取方式是 warp 中的 32 个thread获取 constant Memory 中的同一个地址。]]></description><category></category></item><item><title><![CDATA[【CUDA】Shared Memory]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145496394</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145496394</guid><author>GG_Bruse</author><pubDate>Sat, 08 Feb 2025 11:55:32 +0800</pubDate><description><![CDATA[GPU有两种类型的内存global memory 就是一块很大的板载内存，具有相对较高的延迟。shared memory 是较小的片上内存，具有相对较低的延迟，并且 shared memory 可以提供比 global memory 高得多的带宽。可将其当作一个可编程的cache共享内存(SMEM)是 GPU 的一个关键部件。物理上，每个 SM 都有一个小的低延迟内存池，这个内存池被当前正在该 SM 上执行的线程块中的所有线程所共享。]]></description><category></category></item><item><title><![CDATA[【CUDA】内存访问]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145489656</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145489656</guid><author>GG_Bruse</author><pubDate>Fri, 07 Feb 2025 15:20:44 +0800</pubDate><description><![CDATA[GPU对片外DRAM的访问延迟大，带宽低，导致其成为很多应用的性能瓶颈。因此对DRAM访问的进一步优化可以有效改善程序性能。优化之前，首先看一下GPU对内存的访问模式如上图所示，DRAM内存的读写在物理上是从 片外DRAM -> 片上Cache -> 寄存器。其中，片外DRAM到片上Cache是主要性能瓶颈。DRAM 到 Cache 之间的一次传输(transaction)设计为32、64或者128字节，并且内存地址按照32、64或者128字节的间隔对齐。]]></description><category></category></item><item><title><![CDATA[【CUDA】内存模型]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145473239</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145473239</guid><author>GG_Bruse</author><pubDate>Thu, 06 Feb 2025 17:36:53 +0800</pubDate><description><![CDATA[Local，Global，Contant，Texture为片外DRAM，其中Global，Constant，Texture内存在Host端代码声明，所有线程可见SM拥有私有的Registers和Shared Memory（其实还有SM私有的L1 cache以及共有的L2 cache），Constant和Texture内存有专有的Caches(片上)]]></description><category></category></item><item><title><![CDATA[神经网络基础]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145424204</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145424204</guid><author>GG_Bruse</author><pubDate>Mon, 03 Feb 2025 00:40:44 +0800</pubDate><description><![CDATA[人工神经网络（ Artificial Neural Network， ANN）也简称为神经网络（NN），是一种模仿生物神经网络结构和功能的计算模型]]></description><category></category></item><item><title><![CDATA[【NLP】BERT模型]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145062798</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145062798</guid><author>GG_Bruse</author><pubDate>Mon, 20 Jan 2025 21:02:33 +0800</pubDate><description><![CDATA[BERT(Bidirectional Encoder Representation from Transformers)是2018年10月由Google AI研究院提出的一种预训练模型，该模型在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩: 全部两个衡量指标上全面超越人类，并且在11种不同NLP测试中创出SOTA表现，包括将GLUE基准推高至80.4% (绝对改进7.6%)，MultiNLI准确度达到86.7% (绝对改进5.6%)，成为NLP发展史上的里程碑式的模型成就。]]></description><category></category></item><item><title><![CDATA[【NLP】Transformer模型架构]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/145010479</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/145010479</guid><author>GG_Bruse</author><pubDate>Fri, 10 Jan 2025 15:18:54 +0800</pubDate><description><![CDATA[Transformer是一种用于处理序列数据的深度学习模型架构，谷歌在2017年的论文《Attention Is All You Need》中提出的，用于NLP的各项任务，现在是谷歌云TPU推荐的参考模型。]]></description><category></category></item><item><title><![CDATA[【CUDA】Stream and Event]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/143888874</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/143888874</guid><author>GG_Bruse</author><pubDate>Fri, 06 Dec 2024 16:51:49 +0800</pubDate><description><![CDATA[kernel level，即一个 kernel 或者一个 task 由许多 thread 并行的执行在GPU上。Stream的概念是相对于后者来说的，Grid level是指多个 kernel 在一个 device 上同时执行（一个 Grid 中的 Block 可以在多个 SM 中执行）]]></description><category></category></item><item><title><![CDATA[【CUDA】Branch Divergence and Unrolling Loop]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/143848249</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/143848249</guid><author>GG_Bruse</author><pubDate>Tue, 19 Nov 2024 15:54:55 +0800</pubDate><description><![CDATA[从高级语言层面是无法看出性能提升的原因的，需从 low-level instruction 层面去分析，第二段代码循环次数减少了一半，而循环体两句语句的读写操作的执行在CPU上是可以同时执行互相独立的，所以相对第一段，第二段性能要好。Fermi 和 Kepler 每个 block 的最大 thread 数目都是1024，文中的 kernel 的迭代次数都是基于 blockDim 的，所以完全展开循环是可行的。由于使用的SIMT模式，warp内的thread 是有一个隐式的同步过程的。stride > 0;]]></description><category></category></item><item><title><![CDATA[【CUDA】Warp解析]]></title><link>https://blog.youkuaiyun.com/GG_Bruse/article/details/143772619</link><guid>https://blog.youkuaiyun.com/GG_Bruse/article/details/143772619</guid><author>GG_Bruse</author><pubDate>Fri, 15 Nov 2024 18:10:04 +0800</pubDate><description><![CDATA[SM 中 warp调度器 每个 cycle 会挑选 active warp 送去执行，一个被选中的 warp 被称为 selected warp，没被选中，但是已经做好准备被执行的称为 Eligible warp，没准备好要执行的称为 Stalled warp。在GPU编程中，预测变量是一个用于指示分支执行路径的变量，其值为1或0。同一个 warp 中的 thread 必须执行相同的指令，若这些线程在遇到控制流语句时，进入了不同的分支，那么同一时刻除了正在执行的分支外，其余分支都会被阻塞，十分影响性能。]]></description><category></category></item></channel></rss>