自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(302)
  • 收藏
  • 关注

原创 【DeepSeek-R1训练笔记】随手记录一些训练log

# 背景说明* DeepSeek系列解读请移步我的上一篇blog:[【完整版】DeepSeek-R1大模型学习笔记(架构、训练、Infra)](https://blog.csdn.net/qq_16763983/article/details/145434745?spm=1001.2014.3001.5501)* 代码仓库【科大的大四老哥太太太太太值得倾佩了】:[https://github.com/Unakar/Logic-RL](https://github.com/Unakar/Logic-RL)

2025-02-07 22:24:55 475

原创 【完整版】DeepSeek-R1大模型学习笔记(架构、训练、Infra)

MoE在每次推理时选择性地激活部分模型参数,在不成比例增加计算成本的情况下,可以扩展模型参数。在DeepSeek-V2中就提出了用于FFN层的DeepSeekMoE,DeepSeek-R1在DeepSeek-V2基础上进一步优化。

2025-02-04 00:54:03 1966

原创 pip install时出现error: subprocess-exited-with-error的报错

遇到这种情况,一般是安装的包和其他包之间存在一些冲突,第一种方式是直接解决冲突,比如上面例子中先安装torch就好了。这种方式强制忽视包之间的依赖性,先安装好,然后再运行项目看看有没有其他的报错,耐心逐一解决。

2024-12-04 13:55:52 1124

原创 上传本地项目到GitHub远程仓库(极简洁操作版)

除了以上流程,通常还有另一种上传思路:将一个普通的本地文件转换成一个git项目,涉及到。以上操作流程是最简单(粗暴)版,不涉及版本管理、分支切换、文件更新等。

2024-10-06 15:31:56 894 1

原创 OSError: Missing dependencies for SOCKS support

在跑huggingface代码时,需要挂代理以保证网络可以顺利连接到huggingface官网。这个报错看起来是缺少一些系统依赖包,但实际上,这就是一个简单的Python库缺失问题。先关掉所有代理,再尝试用pip安装即可成功。

2024-09-23 00:41:40 395

原创 【隐私计算】安全多方计算MPC中的高效三角函数计算

其中,四项都可以在client和server端本地(local)计算,不带来任何通信开销。唯一的通信开销来自两次乘法,需要双方通过不经意传输(OT)共同计算。最后加法也是本地完成,不带来任何通信开销。隐私计算中的非线性函数很难算,或者开销很大。三角函数更是如此,Squirrel文章中提出了一种高效的计算方式,感觉可以作为一种通用优化方案。

2024-09-14 00:26:34 816

原创 关于使用HAWQ量化框架执行训练前推理的性能崩溃问题

所以HAWQ中使用validate应该是针对在做/做过量化训练的模型而言的,因此此时就保存好了self.min和self.max值,推理没问题。而对于我们这种情况(也就是加载浮点模型,然后直接过量化验证效果),是没有初始self.min和self.max值的,导致出错。函数,其作用是跑量化函数时不计算模型的self.min和self.max(默认为0),导致的后果是scale算出来非常非常小,量化值(x/scale)非常非常大,clamp后所有值都被截到了两个表示范围的边缘,变成了-128或127。

2024-09-11 21:49:59 359

原创 【CMake编译报错小复盘】CMAKE_CUDA_ARCHITECTURES,CMake version,GCC version问题

但是并没有这么顺利,我发现在编译时仍然会报错gcc版本过低。下面是我猜测的原因,我将gcc的路径打印(whereis gcc)出来,发现有多个路径,也许系统默认选择了第一个路径,也就是老版本。这个问题比较棘手,需要手动下载新版的gcc,然后激活新版的gcc以替换旧版本。当出现这个报错时,本质问题并不是没有指定所谓的cuda architecture参数,而是找不到nvcc路径。然后编译了一次好像没生效,然后我再编译了一次,发现编译成功!cmake和cuda相关的报错通常都很“调虎离山”。

2024-09-10 01:51:22 1462

原创 对模拟出来的网络环境进行检查

之前记录了一篇用throttle.sh脚本实现对不同带宽和网速的网络环境模拟(),这里再记录一下如何验证当前带宽和网速是预期的样子。

2024-08-15 13:57:25 263

原创 用huggingface_hub实现优雅快速的HuggingFace模型下载

使用transformers库下载huggingface模型时,会遇到网络无法访问网站的问题。因此,这里记录一种HuggingFace官方提供的命令行工具:huggingface-cli,实现快速的模型下载。

2024-08-13 15:15:49 1022

原创 关于CUDA error: device-side assert triggered问题小技巧

耐心debug,但是在多线程代码中无法使用pdb来调试,听说可以关掉多线程或者不用gpu跑,就可以调试并显示出出错的代码位置了。遇到这种cuda的越界bug,可以优先查看是不是scatter代码处出现越界!去仔细检查mask的维度能否存得下topk的值。

2024-08-12 17:06:09 582

原创 【密码学基础】基于LWE(Learning with Errors)的全同态加密方案

sk和pk相乘得到2e(KeyGen时满足的条件),然后和r做内积得到一个很小的偶数噪声,最终的结果就是m+很小的偶数噪声,于是通过mod 2就能将噪声消除,得到解密结果m。到这里,通过LWE实现了很小深度的同态乘法和加法计算,key switching则是对每层用新的密钥,但是随着计算深度加深,噪声的扩大是爆炸性的,因此还不是一个levelled FHE(能计算指定深度的FHE)。)时,pk和pk乘r都是伪随机的。加密用的公钥pk,r是一个只包含0或1的随机向量,m是待加密的信息(放在向量的最低位上)。

2024-07-08 19:26:46 1515 1

原创 【密码学基础】对随机不经意传输(Random Oblivious Transfer)的理解

ROT在offline阶段生成大量的OT对,在online阶段通过one-pad方式高效加密,并且只需要简单的异或运算就能实现OT过程(去随机化)。在ROT中,有一个关键点是:需要考虑offline阶段的选择比特和online阶段的选择比特之间的关系,从而得到不同的加密构造方式。

2024-07-01 18:02:13 374

原创 【隐私计算】对SIMD编码的粗浅理解

将单个数编码到一个N阶(N项)多项式中,多项式系数的利用率极低。而在神经网络中,我们需要计算的东西往往是一个很大的矩阵/tensor,并非不是单个数。所以需要打包编码技术(packing)将很多数同时编码到同一个多项式中,来提高多项式系数的利用率。SIMD指的是把一系列数通过中国剩余定理(CRT)打包(pack)到同一个多项式中,使一次多项式乘法计算可以完成多次明文乘法。系数编码可以参考Cheetah的做法,Cheetah自定义了一套编码规则,使多项式相乘后的结果多项式中的一些系数正好是需要的卷积结果。

2024-06-28 14:34:45 1152 1

原创 【恶补计算机基础】定点数和浮点数

在计算机中,小数点及其位置并不是显式表示出来的,而是隐含规定的。根据小数点的位置,可以分为两类:定点数和浮点数。

2024-06-06 13:11:58 937

原创 用Transformers库实现基础的大模型文本生成以及KV cache注意事项

这个就是标准的自回归生成任务了,不管是GPT还是Llama,都是如此(至少PyTorch版本都是这样的,Flax版本的KV cache有点奇怪,用的lax.dynamic_update_slice(cached_key.value, key, indices),KV cache的维度并没有随着token的生成而增加…根据输入的prompt,生成一段指定长度的文字。Llama跑起来太慢了,这里用GPT-2作为列子。

2024-05-14 02:32:58 881 2

原创 【Python踩坑】关于tensor reshape后做运算(求和/平均)的问题

总结一句,如果想将tensor分成n组,然后对每组进行运算(比如求和、求平均),那么,要记得把组数放在前面的维度上(也就是上面例子中的3),把每组的元素数放在后面的维度上(也就是上面例子中的2)。试想一个简单的问题:一个维度是[1, 6]的tensor,我想其中的6个元素分成3组,每组2个元素,然后对每组中的元素求平均值,得到一个维度是3的输出。应该怎么用Python实现?最直观的想法就是:将[1, 6]先reshape成[2, 3]或[3, 2],然后在2对应的维度上进行运算,最终得到维度是3的结果。

2024-05-01 01:09:22 362 3

原创 【大模型LLM基础】自回归推理生成的原理以及什么是KV Cache?

通过缓存以前的键(Key)和值(Value),我们可以只关注计算新token的注意力。如下图,每当来一个新的tokenqnewq_{new}qnew​时,计算得到新的knewk_{new}knew​和vnewv_{new}vnew​,并将其拼接(concat)到缓存的KprevK_{prev}Kprev​和VprevV_{prev}Vprev​中。假设TTT是序列长度,DDD。

2024-03-25 18:47:34 4379 5

原创 【Bit-level量化】BSQ: Exploring Bit-Level Sparsity for Mixed-Precision Neural Network Quantization

论文题目:[ICLR 2021] BSQ: Exploring Bit-Level Sparsity for Mixed-Precision Neural Network Quantization其中,www是浮点表示,wqw_qwq​是对应的nnn-bit定点表示。反向传播时,由于Round函数不可微分,所以求导时用浮点www代替wqw_qwq​进行梯度计算。前向传播使用wqw_qwq​计算模型输出和损失函数,反向传播使用浮点www计算梯度,并且www在整个训练过程中都保持浮点表示!第1步:提取W的动态

2024-02-06 17:32:56 1142 1

原创 由vscode自动升级到1.86导致的“终端可以ssh服务器,但是vscode无法连接服务器”

简单来说就是,ssh配置没动,前两天还可以用vscode连接服务器,今天突然就连不上了,但是用本地终端ssh可以顺利连接。

2024-02-03 17:38:27 2776 7

原创 快速数论变换NTT学习笔记

数论变换(number-theoretic transform, NTT)是离散傅里叶变换(DFT)在数论基础上的实现。NTT是一种计算卷积的快速算法,FFT也是其中一种。但是FFT具有一些实现上的缺点,举例来说,向量必须乘上复数系数的矩阵进行处理,而且每个复数系数的实部和虚部是一个正弦及余弦函数,因此大部分的系数都是浮点数,也就是说,必须做浮点复数运算,计算量会比较大,并且浮点数运算产生的误差会比较大。NTT解决的是多项式乘法带模数的情况,受到模数的限制,数也比较大。

2024-01-25 13:17:08 1634

原创 快速傅立叶变换FFT学习笔记

FFT(Fast Fourier Transformation) 是离散傅氏变换(DFT)的快速算法,即快速傅氏变换。FFT使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。FFT可以将多项式乘法的复杂度从On2降到Onlogn。下图是FFT的整体计算流程,FFT变换的复杂度为Onlogn,FFT域上的pointwise乘法的复杂度为On,逆FFT变换的复杂度为Onlogn,总体复杂度为On。

2024-01-21 23:09:14 1540

原创 PyTorch中定义可学习参数及放入cuda时的坑

必须要注意的是,新定义的self.alpha必须要放入optimizer中才可以训练,因此,上面这段预推理的代码必须要放在声明optimizer之前!采用这种写法的话,必须要在正式训练模型之前进行一次预推理,该预推理可以是伪输入数据的推理,目的是预推理时构建好每一层所需要的self.alpha可学习参数。写法1先定义nn.Parameter,后放入cuda,会导致参数重新变回到tensor,从而不可学习;写法2先放入cuda,后定义nn.Parameter,可以成功定义参数,可以学习。

2024-01-18 19:04:47 1029 1

原创 Pruning Papers

slS1−nl−1nlnl−1∗nl)1−nl−1nlwlhlnl−1∗nl∗wl∗hl。

2024-01-03 13:39:51 1123

原创 去掉乘法运算的加法移位神经网络架构

Adder层的输出都是负的,所以网络中引入batch normalization(BN)层和激活函数层。可以看到,AdderNet在三个CNN模型上都掉点很少,并且省去了所以乘法,也没有BNN中的XNOR操作,只是有了更多的加法,效率应该显著提高。但是,signSGD几乎没有采取最陡的下降方向,随着维度的增长,下降方向只会变得更糟,所以不适用于大参数量的模型优化。一种最直接的思路就是采用更大的学习率,本文发现不同层的梯度值差异很大,所以为了考虑不同层的filter情况,提出了不同层的自适应学习率。

2023-12-19 02:20:18 1687

原创 音频ncm格式转mp3格式

做个笔记,ncm格式转mp3格式

2023-12-15 20:00:10 1229

原创 【数字电路】MacBook使用iverilog进行数字电路仿真

MacBook使用iverilog进行数字电路仿真

2023-12-15 10:34:33 2019 1

原创 【隐私计算】tf-encrypted隐私计算框架/库基础

make build编译到最后可能出现如下问题:原因就是系统中g++的版本过低,需要升级,以至少支持g++14版本。

2023-12-13 01:29:57 892

原创 【密码学基础】Diffie-Hellman密钥交换协议

Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。

2023-12-10 10:20:29 3475

原创 【模型量化】神经网络量化基础及代码学习总结

量化是减少神经网络计算时间和能耗的最有效的方法之一。在神经网络量化中,权重和激活张量存储在比训练时通常使用的16-bit或32-bit更低的比特精度。当从32-bit降低到8-bit,存储张量的内存开销减少了4倍,矩阵乘法的计算成本则二次地减少了16倍。神经网络已被证明对量化具有鲁棒性,这意味着它们可以被量化到较低的位宽,而对网络精度的影响相对较小。然而,神经网络的量化并不是自由的。低位宽量化会给网络带来噪声,从而导致精度的下降。

2023-12-08 17:02:29 4533 2

原创 【隐私计算】安全三方计算(3PC)协议

由此可见,3PC和2PC都在本地计算加法,他们最大的不同就是乘法:在2PC乘法中,交叉项需要借助OT或HE计算,带来巨大的通信或计算开销;而基于复制秘密分享的3PC乘法完全在本地计算交叉项,无需通信,在re-sharing时需要少量的通信。ABY3中采用replicated secret sharing(复制秘密分享)机制,即2-out-of-3秘密分享,三个参与方的每一方都拥有share中的两份。下面来看一下这样做有什么好处。

2023-12-05 22:43:39 1732

原创 【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记

近年来,VOLE(向量不经意线性评估)被用于构造各种高效安全多方计算协议,具有较低的通信复杂度。最近的CipherGPT则是基于VOLE对线性层进行计算。

2023-11-30 15:00:17 3428 5

原创 【隐私计算】算术秘密分享的加法和乘法运算(基于Beaver Triple预处理)

在安全多方计算中(MPC)中,算术秘密分享是最基础的机制。一直有在接触,但是一直没有整理清楚最基础的加法和乘法计算流程。

2023-11-29 22:55:51 3000

原创 【科研绘图】MacOS上的LaTeX公式插入工具——LaTeXiT

在Mac上经常用OmniGraffle绘图,但是有个致命缺点是没办法插入LaTeX公式,很头疼。之前有尝试用Pages文稿插入公式,但是调字体和颜色很麻烦。并且,PPT中的公式插入感觉也不太好看。偶然机会了解到了LaTeXiT这个工具,可以输入LaTeX公式,然后导出各种各样的格式(pdf、png、svg等),非常方便插入到各种绘图软件中。安装LaTeXiT则需要LaTeX环境,在MacOS上直接一键安装MacTex集成环境即可!使用方式非常简单,直接看下面的例子就OK了。

2023-11-10 14:58:40 1981

原创 MacOS升级后命令行出现xcrun: error: invalid active developer path报错信息

解决方案:重新安装最新版的MacOS Command Line Tools。编译成功(忽略这个warning,是我代码中注释框不规范的问题…

2023-11-08 17:18:02 1462

原创 在MacBook上实现免费的PDF文件编辑

之前我想对PDF文件进行简单处理(比如删页面、添空白页、调整页面顺序),要么是开wps会员【花钱贵】,下载(盗版)Adobe Acrobat【macOS不好下载】,要么用福昕阅览器登陆学生账号(学校买过正版的话)。将PDF页面移动到另一个PDF中,所以相当于也能实现PDF的合并功能!具体操作很简单,打开左侧的缩略图中,用键盘的删除键进行页面删除,用鼠标拖动进行页面移动,点击左下角的小加号进行页面添加。今天看CVPR模版的时候,发现官方很贴心地给了免费调整PDF文件的方法,如图是Mac官方文档。

2023-11-07 21:03:51 1556

原创 cp没有--exclude选项!Linux复制文件夹时如何排除一些文件?

之前使用tar命令压缩文件将时,使用了–exclude选项排除了一些不需要的文件。现在我想复制一个文件夹,但是其中一些文件不需要复制,此时注意到cp命令居然没有–exclude选项。

2023-11-05 21:18:07 3781

原创 Docker容器中执行throttle.sh显示权限报错:RTNETLINK answers: Operation not permitted

解决方案说简单也挺简单,只需要两步完成。但是其实又蛮繁琐,因为需要将现在的容器保存为镜像,然后从镜像重新创建容器(关键点是在创建新容器过程中加入权限指令)。但是,出现了权限的报错:RTNETLINK answers: Operation not permitted。

2023-11-05 17:00:56 2146

原创 上传LaTeX版本的NeurIPS文章到arXiv总是Failed的解决方案

总觉得这个问题的出现和模版息息相关,之前用ICCV之类的模版都非常顺利,也没有额外处理什么。这个报错我根本看不懂,其实也以为不重要,所以一直在解决前面说的图片问题。和别人交流后,发现这个位置可能才是报错的原因!而我之前上传ICCV文章时,同样的写法并没出错,由此可见,应该不是图片的错误,可能是模版里的固有错误(?然后再通过overleaf到处arXiv需要的bbl文件,上传到arXiv,惊喜地发现上传成功了!仍然是相同的错误,于是我又尝试去掉figs这个二级目录,也是同样的错误。

2023-11-03 14:50:33 956 1

原创 【Python】一个最基础,但是超难看出来的类声明为tuple的BUG

小结一句,Python末尾是没有分号或者逗号的,要防止误敲无关字符!为啥这个class是个tuple类型呀!原因非常简单,我在声明类的时候,

2023-10-25 11:54:14 133

空空如也

空空如也

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

TA关注的人

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