- 博客(309)
- 收藏
- 关注
原创 【大模型】ReAct Agent知识梳理及代码解析
本文介绍了Agent的基本概念及其实现方式。Agent是一种能够感知环境并自主决策的实体,具备任务规划、记忆和工具调用等能力,模仿人类的决策流程。文章重点讲解了ReAct推理模式(Reasoning->Action->Observation),并展示了如何使用LangChain框架构建一个ReAct Agent。具体包括:1)Agent作为调度器的核心组件;2)规范定义工具的方法;3)通过Python代码示例演示了商品查询、下单和支付三个工具的实现。该实现展示了Agent如何通过多轮工具调用完成
2025-07-18 02:49:21
942
原创 Windows系统无法正常使用conda activate env
摘要:Windows系统安装Anaconda后,若直接使用conda activate命令会报错,需先执行conda init并重启终端。若出现红色报错信息,这是权限问题导致,可通过执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser命令快速解决。该问题为Windows+Anaconda的常见配置问题,解决方法简单有效。
2025-07-12 01:15:33
214
原创 【大模型】到底什么是Function Calling和MCP,以及和ReAct推理的关系是什么?
Function Calling和MCP是增强大模型能力的两种方案。Function Calling赋予大模型解析工具列表、选择工具、处理结果的能力,通过代码实现工具调用逻辑。MCP则是一套协议规范,通过MCP Host和Server架构实现外部工具调用,无需大模型直接参与协议。两种方法都能解决大模型知识时效性问题,Function Calling侧重模型能力,MCP强调标准化协议。实际应用中,Function Calling可直接实现工具调用,MCP则需借助第三方Server提供服务。参考资料提供了两种方
2025-07-05 18:14:25
1075
原创 【大模型】TableLLM论文总结
本文摘要了三篇关于大语言模型处理电子表格的最新研究。EMNLP 2024论文提出了一种高效编码方法,通过结构锚点识别、倒排索引和数值格式聚类来压缩75%内容,同时保留97%边界信息。arXiv 2025的TableLoRA设计了特殊标记编码器和2D LoRA,以增强模型对二维表格结构的理解。arXiv 2025的TablePilot则提出了一个四阶段框架,通过采样、模块化分析、优化和排序推荐符合人类偏好的表格分析方案。这些研究共同解决了电子表格处理中的结构理解、效率优化和结果推荐等核心挑战。
2025-05-24 17:35:51
1255
原创 ValueError: Converting from Tiktoken failed, if a converter for SentencePiece is available
【代码】ValueError: Converting from Tiktoken failed, if a converter for SentencePiece is available。
2025-03-25 18:58:03
693
原创 【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
1047
6
原创 【完整版】DeepSeek-R1大模型学习笔记(架构、训练、Infra、复现代码)
MoE在每次推理时选择性地激活部分模型参数,在不成比例增加计算成本的情况下,可以扩展模型参数。在DeepSeek-V2中就提出了用于FFN层的DeepSeekMoE,DeepSeek-R1在DeepSeek-V2基础上进一步优化。
2025-02-04 00:54:03
8770
原创 pip install时出现error: subprocess-exited-with-error的报错
遇到这种情况,一般是安装的包和其他包之间存在一些冲突,第一种方式是直接解决冲突,比如上面例子中先安装torch就好了。这种方式强制忽视包之间的依赖性,先安装好,然后再运行项目看看有没有其他的报错,耐心逐一解决。
2024-12-04 13:55:52
2946
原创 上传本地项目到GitHub远程仓库(极简洁操作版)
除了以上流程,通常还有另一种上传思路:将一个普通的本地文件转换成一个git项目,涉及到。以上操作流程是最简单(粗暴)版,不涉及版本管理、分支切换、文件更新等。
2024-10-06 15:31:56
1021
1
原创 OSError: Missing dependencies for SOCKS support
在跑huggingface代码时,需要挂代理以保证网络可以顺利连接到huggingface官网。这个报错看起来是缺少一些系统依赖包,但实际上,这就是一个简单的Python库缺失问题。先关掉所有代理,再尝试用pip安装即可成功。
2024-09-23 00:41:40
614
原创 【隐私计算】安全多方计算MPC中的高效三角函数计算
其中,四项都可以在client和server端本地(local)计算,不带来任何通信开销。唯一的通信开销来自两次乘法,需要双方通过不经意传输(OT)共同计算。最后加法也是本地完成,不带来任何通信开销。隐私计算中的非线性函数很难算,或者开销很大。三角函数更是如此,Squirrel文章中提出了一种高效的计算方式,感觉可以作为一种通用优化方案。
2024-09-14 00:26:34
885
原创 关于使用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
410
原创 【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
2042
原创 对模拟出来的网络环境进行检查
之前记录了一篇用throttle.sh脚本实现对不同带宽和网速的网络环境模拟(),这里再记录一下如何验证当前带宽和网速是预期的样子。
2024-08-15 13:57:25
306
原创 用huggingface_hub实现优雅快速的HuggingFace模型下载
使用transformers库下载huggingface模型时,会遇到网络无法访问网站的问题。因此,这里记录一种HuggingFace官方提供的命令行工具:huggingface-cli,实现快速的模型下载。
2024-08-13 15:15:49
1556
原创 关于CUDA error: device-side assert triggered问题小技巧
耐心debug,但是在多线程代码中无法使用pdb来调试,听说可以关掉多线程或者不用gpu跑,就可以调试并显示出出错的代码位置了。遇到这种cuda的越界bug,可以优先查看是不是scatter代码处出现越界!去仔细检查mask的维度能否存得下topk的值。
2024-08-12 17:06:09
871
原创 【密码学基础】基于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
1892
1
原创 【密码学基础】对随机不经意传输(Random Oblivious Transfer)的理解
ROT在offline阶段生成大量的OT对,在online阶段通过one-pad方式高效加密,并且只需要简单的异或运算就能实现OT过程(去随机化)。在ROT中,有一个关键点是:需要考虑offline阶段的选择比特和online阶段的选择比特之间的关系,从而得到不同的加密构造方式。
2024-07-01 18:02:13
528
原创 【隐私计算】对SIMD编码的粗浅理解
将单个数编码到一个N阶(N项)多项式中,多项式系数的利用率极低。而在神经网络中,我们需要计算的东西往往是一个很大的矩阵/tensor,并非不是单个数。所以需要打包编码技术(packing)将很多数同时编码到同一个多项式中,来提高多项式系数的利用率。SIMD指的是把一系列数通过中国剩余定理(CRT)打包(pack)到同一个多项式中,使一次多项式乘法计算可以完成多次明文乘法。系数编码可以参考Cheetah的做法,Cheetah自定义了一套编码规则,使多项式相乘后的结果多项式中的一些系数正好是需要的卷积结果。
2024-06-28 14:34:45
1352
1
原创 【恶补计算机基础】定点数和浮点数
在计算机中,小数点及其位置并不是显式表示出来的,而是隐含规定的。根据小数点的位置,可以分为两类:定点数和浮点数。
2024-06-06 13:11:58
1112
原创 用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
1181
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
409
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
5802
4
原创 【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
1319
1
原创 由vscode自动升级到1.86导致的“终端可以ssh服务器,但是vscode无法连接服务器”
简单来说就是,ssh配置没动,前两天还可以用vscode连接服务器,今天突然就连不上了,但是用本地终端ssh可以顺利连接。
2024-02-03 17:38:27
3239
7
原创 快速数论变换NTT学习笔记
数论变换(number-theoretic transform, NTT)是离散傅里叶变换(DFT)在数论基础上的实现。NTT是一种计算卷积的快速算法,FFT也是其中一种。但是FFT具有一些实现上的缺点,举例来说,向量必须乘上复数系数的矩阵进行处理,而且每个复数系数的实部和虚部是一个正弦及余弦函数,因此大部分的系数都是浮点数,也就是说,必须做浮点复数运算,计算量会比较大,并且浮点数运算产生的误差会比较大。NTT解决的是多项式乘法带模数的情况,受到模数的限制,数也比较大。
2024-01-25 13:17:08
1947
原创 快速傅立叶变换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
1709
原创 PyTorch中定义可学习参数及放入cuda时的坑
必须要注意的是,新定义的self.alpha必须要放入optimizer中才可以训练,因此,上面这段预推理的代码必须要放在声明optimizer之前!采用这种写法的话,必须要在正式训练模型之前进行一次预推理,该预推理可以是伪输入数据的推理,目的是预推理时构建好每一层所需要的self.alpha可学习参数。写法1先定义nn.Parameter,后放入cuda,会导致参数重新变回到tensor,从而不可学习;写法2先放入cuda,后定义nn.Parameter,可以成功定义参数,可以学习。
2024-01-18 19:04:47
1260
1
原创 去掉乘法运算的加法移位神经网络架构
Adder层的输出都是负的,所以网络中引入batch normalization(BN)层和激活函数层。可以看到,AdderNet在三个CNN模型上都掉点很少,并且省去了所以乘法,也没有BNN中的XNOR操作,只是有了更多的加法,效率应该显著提高。但是,signSGD几乎没有采取最陡的下降方向,随着维度的增长,下降方向只会变得更糟,所以不适用于大参数量的模型优化。一种最直接的思路就是采用更大的学习率,本文发现不同层的梯度值差异很大,所以为了考虑不同层的filter情况,提出了不同层的自适应学习率。
2023-12-19 02:20:18
1787
原创 【隐私计算】tf-encrypted隐私计算框架/库基础
make build编译到最后可能出现如下问题:原因就是系统中g++的版本过低,需要升级,以至少支持g++14版本。
2023-12-13 01:29:57
998
原创 【密码学基础】Diffie-Hellman密钥交换协议
Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
2023-12-10 10:20:29
4082
原创 【模型量化】神经网络量化基础及代码学习总结
量化是减少神经网络计算时间和能耗的最有效的方法之一。在神经网络量化中,权重和激活张量存储在比训练时通常使用的16-bit或32-bit更低的比特精度。当从32-bit降低到8-bit,存储张量的内存开销减少了4倍,矩阵乘法的计算成本则二次地减少了16倍。神经网络已被证明对量化具有鲁棒性,这意味着它们可以被量化到较低的位宽,而对网络精度的影响相对较小。然而,神经网络的量化并不是自由的。低位宽量化会给网络带来噪声,从而导致精度的下降。
2023-12-08 17:02:29
5550
3
原创 【隐私计算】安全三方计算(3PC)协议
由此可见,3PC和2PC都在本地计算加法,他们最大的不同就是乘法:在2PC乘法中,交叉项需要借助OT或HE计算,带来巨大的通信或计算开销;而基于复制秘密分享的3PC乘法完全在本地计算交叉项,无需通信,在re-sharing时需要少量的通信。ABY3中采用replicated secret sharing(复制秘密分享)机制,即2-out-of-3秘密分享,三个参与方的每一方都拥有share中的两份。下面来看一下这样做有什么好处。
2023-12-05 22:43:39
2031
原创 【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记
近年来,VOLE(向量不经意线性评估)被用于构造各种高效安全多方计算协议,具有较低的通信复杂度。最近的CipherGPT则是基于VOLE对线性层进行计算。
2023-11-30 15:00:17
4344
5
原创 【隐私计算】算术秘密分享的加法和乘法运算(基于Beaver Triple预处理)
在安全多方计算中(MPC)中,算术秘密分享是最基础的机制。一直有在接触,但是一直没有整理清楚最基础的加法和乘法计算流程。
2023-11-29 22:55:51
3865
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人