- 博客(271)
- 问答 (2)
- 收藏
- 关注
原创 缓存与效果的取舍之——MHA到GQA(详细代码实现)
原始transformer中的attention也是MHA,每一个head的head_size将变为原始embed_size的1/num_head,类似group卷积,类似于建立了很多个交流通道,每个交流通道关注的信息细节不一样,也就是每一个头可以关注到序列中不同子空间的特征。将query分成g组,每组的query共享KV,平衡效果和缓存。
2025-02-22 22:25:57
307
原创 tokenizer和embedding之间的关系?
低频词问题:若Tokenizer将罕见词拆分为无意义的子词(如"量子力学"→"量", “子”, “力”, “学”),Embedding可能无法有效组合子词语义。子词分词(如BERT):能处理未登录词(OOV),但可能拆分语义单元(如"unhappiness"→"un”, “##happy”, “##ness”)。跨语言对齐:在多语言模型中,Tokenizer需统一不同语言的分词方式,否则Embedding难以跨语言共享(如mBERT中的平衡分词策略)。符号化的词或子词序列。
2025-02-16 00:41:39
905
原创 大语言模型中one-hot编码和embedding之间的区别?
例如,词汇表有10,000个词,每个词对应一个10,000维的向量,其中仅有一个位置为1(表示当前词),其余为0。参数可控:嵌入矩阵尺寸为V × D(D为嵌入维度,通常D=300),参数量远小于One-Hot方案。上下文感知:在Transformer等模型中,Embedding可结合位置编码,动态适应不同上下文(如“苹果”在“水果”和“公司”中的不同含义)。参数爆炸:若词汇表大小为V,模型输入层到第一隐藏层的权重矩阵尺寸为V × H(H为隐藏层大小),当V=10^5时,参数数量极大。
2025-02-16 00:33:13
648
原创 详解大模型架构——MLA
DeepSeekV2提出了一种优化MQA的方法:MLA(Multi-head Latent Attention)在推理的过程中,所有的key,value都需要被cache以加速推理,因此MHA需要为每个token缓存。在模型部署时,这种大量的KVcache是一个瓶颈,它限制了最大batch size和序列长度。一般MHA会把QKV分成。
2025-02-10 00:16:24
216
转载 存储器层次结构
参考:https://time.geekbang.org/column/article/107422理解存储器的层次结构我们常常把 CPU 比喻成计算机的“大脑”。我们思考的东西,就好比 CPU 中的寄存器(Register)。寄存器与其说是存储器,其实它更像是 CPU 本身的一部分,只能存放极其有限的信息,但是速度非常快,和 CPU 同步。而我们大脑中的记忆,就好比 CPU Cache(CPU 高速缓存,我们常常简称为“缓存”)。CPU Cache 用的是一种叫作 SRAM(Static Rando
2022-05-02 23:03:35
2700
原创 ARTS-34(剑指 Offer 04. 二维数组中的查找,CPU cache知识,量化蒸馏,N2N讲解,职业发展规划 )
Algorithm在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 t
2021-04-12 22:58:54
568
转载 Model Compression via Distillation and Quantization 论文笔记
https://www.cnblogs.com/dushuxiang/p/10304622.html摘要深度神经网络(DNN)继续取得重大进展,解决从图像分类到翻译或强化学习的任务。受到相当大关注的领域的一个方面是在资源受限的环境中有效地执行深度模型,例如移动或嵌入式设备。本文重点讨论了这个问题,并提出了两种新的压缩方法,它们共同利用大型网络称为“教师”的权重量化和蒸馏,进入压缩的“学生”网络。我们提出的第一种方法称为量化蒸馏,并在训练过程中利用蒸馏,将蒸馏损失(相对于教师网络表示)纳入较小的学生网络的
2021-04-11 00:44:32
1041
原创 剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”思路:字符数组由于每次替换从 1 个字符变成 3 个字符,使用字符数组可方便地进行替换。建立字符数组地长度为 s 的长度的 3 倍,这样可保证字符数组可以容纳所有替换后的字符。1.获得 s 的长度 length2.创建字符数组 array,其长度为 length * 33.初始化 size 为 0,size 表示替换后的字符串的长度4
2021-03-21 23:47:17
293
原创 ARTS-33(2. 两数相加,15.三数之和,Hourglass KD(Fast Pose Distillation),《搞定》分享)
Algorithm给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。思路与算法由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。我们同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。具体而言,如果当前两个链表处相应位置的数字为 n1,n2n1,n2n1,n2,进位值为
2021-03-16 23:20:22
385
原创 ARTS-32(monotone-increasing-digits,,计组——指令+运算=CPU,财务报表之现金流量表)
Algorithmhttps://leetcode-cn.com/problems/monotone-increasing-digits/给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)示例 1:输入: N = 10输出: 9示例 2:输入: N = 1234输出: 1234示例 3:输入: N = 332输出: 299
2021-01-31 22:52:40
302
原创 ARTS-31(旋转链表,efficienet网络论文解读,计组--浮点数和定点数,财报之合并利润表)
Algorithmhttps://leetcode-cn.com/problems/rotate-list/给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5-&
2020-12-08 00:04:03
911
原创 ARTS-30(108. 将有序数组转换为二叉搜索树,Vargnet论文解析,操作系统之——信号量,财报课之资产负债表)
AlgorithmReviewTipsShare
2020-11-30 00:16:11
371
转载 Vargnet(最详细解释)
https://www.cnblogs.com/wanghui-garcia/p/12558633.htmlhttps://blog.youkuaiyun.com/richard_che/article/details/106502823https://blog.youkuaiyun.com/weixin_40671425/article/details/103164518
2020-11-30 00:14:17
1953
原创 ARTS-29(, 计组——程序装载, 操作系统——多线程多进程中的一些问题(1), 财务报表之非财务数据指标详解)
AlgorithmReviewTipsShare
2020-11-07 23:03:26
326
原创 ARTS-28(,Knowledge Distillation, 计组-函数调用-为什么会发生stackoverflow, 《小强升职记》总结)
AlgorithmReviewKnowledge DistillationTipsShare
2020-10-11 22:26:51
591
原创 ARTS-27(9. 回文数,Stacked Hourglass人体姿态检测详解,Linux多线程编程pthread和c++的std::thread,海天味业企业估值(下))
AlgorithmReviewTipsShare
2020-09-27 21:13:45
541
转载 开发中Performance的那些事儿
“性能”这个词,不管是在日常生活还是写程序的时候,都经常被提到。比方说,买新电脑的时候,我们会说“原来的电脑性能跟不上了”;写程序的时候,我们会说,“这个程序性能需要优化一下”。那么,你有没有想过,我们常常挂在嘴边的“性能”到底指的是什么呢?我们能不能给性能下一个明确的定义,然后来进行准确的比较呢?在计算机组成原理乃至体系结构中,“性能”都是最重要的一个主题。我在前面说过,学习和研究计算机组成原理,就是在理解计算机是怎么运作的,以及为什么要这么运作。“为什么”所要解决的事情,很多时候就是提升“性能”。什
2020-09-27 15:34:52
1893
转载 史上最详细的Stacked Hourglass姿态检测算法详解(源码分析)
参考:https://zhuanlan.zhihu.com/p/45002720https://blog.youkuaiyun.com/shenxiaolu1984/article/details/51428392https://blog.youkuaiyun.com/wangzi371312/article/details/81174452https://github.com/bearpaw/pytorch-posehttps://github.com/princeton-vl/pytorch_stacked_hour
2020-09-22 09:07:14
12540
4
原创 ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1))
AlgorithmReviewAVODTipsShare
2020-09-13 22:40:47
740
转载 Atan2和Atan的区别和使用
参考:https://blog.youkuaiyun.com/yjl9122/article/details/50995564https://blog.youkuaiyun.com/chinabinlang/article/details/6802686atan2(a,b)是4象限反正切,它的取值不仅取决于正切值a/b,还取决于点 (b, a) 落入哪个象限:当点(b, a) 落入第一象限时,atan2(a,b)的范围是 0 ~ pi/2; 当点(b, a) 落入第二象限时,atan2(a,b)的范围是 pi/2 ~ pi
2020-09-04 13:11:11
12124
1
原创 ARTS-25(, ION memory, python __init__.py,看房的感想)
Reviewhttp://kernel.meizu.com/memory%20management%20-%20ion.htmlhttps://www.jianshu.com/p/9e19b475771a
2020-08-28 23:30:31
392
原创 ARTS-24(, C++ 中static_cast、dynamic_cast、const_cast和reinterpret_cast总结, Vim使用技巧, 双汇财报分析)
AlgorithmReviewTips如何debug一个问题?1.首先还是要有一个宏观的认识,但是这远不是技术,所以还是需要去如果直接把图形界面下的基本步骤,翻译成终端 Vim(非图形界面)的用法的话,应该是这样子的:在终端里进入到目标目录下使用 vim 文件名 来逐一打开需要编辑的文件如果光标不在开头的话,用鼠标或 gg 命令跳转到开头使用命令 i 进入插入模式使用终端窗口的粘贴命令或快捷键(如 )来粘贴内容按 回到正常模式并用 ZZ 存盘退出Share...
2020-08-21 23:14:28
894
原创 ARTS-23(35. 搜索插入位置,SELU激活函数,本周几个问题, 招商银行财报分析)
AlgorithmReviewSELU激活函数缩放指数线性单元(scaled exponential linear units,selu)是2017年的一篇论文:论文地址ReLU激活函数推出之后,各种变形的研究就涌现出来,如Leaky ReLU,主要是没有完全消除负半轴的输出值,而是赋予了一个较小的斜率。但固定这个负半轴的斜率似乎找不到什么理论支撑,于是有人提出Parametric ReLU,即负半轴的斜率不是训练前就固定的,需要通过网络学习。接着还有人提出Randomized ReLU,主要特
2020-08-02 16:40:16
875
原创 ARTS-22(leetcode16. 最接近的三数之和,模型剪枝To prune or not to prune,C++智能指针初识,操作系统是怎么启动的, 何为爱一个人)
AlgorithmReviewTipsC++中的智能指针常规的指针类:就是叫浅复制,又叫浅拷贝,他的缺点很明显,就是两块内存指向同一个空间,当释放掉的时候,其中的一个指针不知道指向哪里,就变成了野指针,这是很严重的。而值类型,也就是深拷贝(深复制),就比浅拷贝来的要安全很多,对于每个内存都指定一块新的空间去存储,但是比较耗费空间而智能指针可以很好避免野指针,而且也能节省空间,就是需要写一个类三个代码如下:首先是浅拷贝:plain-ptr.h//// Created by zdq on
2020-05-17 22:24:24
855
原创 ARTS-21(leetcode-438找到字符串中所有字母异位词,tensorflow小例子,C++,被讨厌的勇气)
AlgorithmReviewTips#include<iostream>#include <string>using namespace std;class Person{public: Person(const string &nm, const string &addr){ this->name = n...
2020-05-02 19:49:00
257
原创 C++中类构造函数使用引用形参传递的注意点
C++ primer中刚学面向对象语言的封装的时候有对sale_items卖书的例子进行试验,定义一个类,里面有类的函数,类的函数我们直接使用构造函数去定义。#include<iostream>#include <string>using namespace std;class Sales_item{public: Sales_item(string ...
2020-04-07 18:47:26
7826
3
原创 ARTS-20(Leetcode-845. 数组中的最长山脉, 网络剪枝,C++文件操作,家庭财务报表)
Algorithm给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6...
2020-04-05 10:17:14
330
原创 Leetcode-845. 数组中的最长山脉(最详细解法)
845. 数组中的最长山脉我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整...
2020-04-02 15:34:45
1992
原创 Leetcode-80 删除排序数组中的重复项 II(最详细解答)
Leetcode-80 删除排序数组中的重复项 II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, ...
2020-03-22 15:24:52
1513
原创 ARTS-19(C++引用形参,查理芒格的智慧)
AlgorithmReviewTipsC++中的非引用形参代码例子,就是说明指针和引用他们其实是把真实的值给传进去了,而非引用形参就是仅仅是一个copy而已,所以不会改变。#include<iostream>using namespace std;//普通形参,就是copyvoid AddOne(int x){ x = x+1;}// 指针形参,非引用形参,...
2020-03-22 10:17:32
367
原创 C++之局部对象,全局对象,静态对象
我们常常对于C++当中的局部对象和全局对象的初始化结果不太熟悉,而且还有一个静态对象是什么鬼?下面举例说明#include<iostream>#include<vector>#include <string>using namespace std;class Dog{public: int num; string name;};...
2020-03-21 17:07:16
2860
原创 ARTS-18(亲密关系)
Algorithmhttps://leetcode-cn.com/problems/happy-number/编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:...
2020-03-15 10:14:27
536
1
原创 Leetcode-202 快乐数(最详细讲解)
Algorithmhttps://leetcode-cn.com/problems/happy-number/编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:...
2020-03-10 22:56:44
3086
原创 leetcode-543 二叉树的直径
leetcode543 二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边...
2020-03-10 14:57:16
467
原创 C++序列式容器(STL序列式容器)介绍
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。1.array<T,N> (数组容器) :是一个长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。2.vector (向量容器) :是一个长度可变的序列,用来存放T类型的对象。是一个长度可...
2020-03-02 17:41:07
644
原创 ARTS-17(富爸爸穷爸爸)
AlgorithmReviewTips用 list 解决约瑟夫问题。约瑟夫问题是:有 n 只猴子,按顺时针方向围成一圈选大王(编号为 1~n),从第 1 号开始报数,一直数到 m,数到 m 的猴子退到圈外,剩下的猴子再接着从 1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。编程求输入 n、m 后,输出最后猴王的编号。输入数据:每行是用空格分开的两个整数,第一个是 n,第...
2020-02-28 23:40:09
287
原创 ARTS-16(非暴力沟通)
AlgorithmReviewTips编写一个日期格式转换程序,输入若干个日期,每行一个,要求全部转换为“mm-dd-yyyy”格式输出。输入的日期格式可以是“2011.12.24”(中式格式),也可以是“Dec 24 2011”(西式格式)。要求该程序对于以下输入数据:Dec 3 19902011.2.3458.12.1Nov 4 1998Feb 12 2011输出结果应为...
2020-02-09 11:49:47
392
空空如也
《c语言入门经典》第四章最后simon游戏程序问题
2017-04-15
一个有关c语言的问题程序
2017-04-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人