- 博客(1015)
- 资源 (37)
- 收藏
- 关注
原创 sql 注入理解
在 SQL 注入攻击中,1=1 被视为一个非常典型的特征,根本原因在于 1=1 是一个永远为真(恒真)的逻辑条件。攻击者利用这个恒真条件,结合 SQL 语法的特性,来篡改应用程序原本的查询逻辑,从而达到绕过密码验证、窃取所有数据库数据的目的。只有当输入的用户名和密码在数据库中完全匹配时,数据库才会返回该用户的记录,系统才会允许登录。
2026-06-16 11:16:13
201
原创 Gemma 4 MTP 技术深剖:3 倍加速且零损失的真相
大模型推理的速度天花板是显存带宽,而不是算力。任何减少"每 token 权重搬运次数"的设计,都能在零质量损失的前提下带来数倍加速。target : 60 层 / 30.7B 参数 / 61.4 GB BF16 → 一次前向 ~30.7 msdrafter : 4 层 / 0.5B 参数 / 1.0 GB BF16 → 一次前向 ~0.5 msdrafter 戴着 target 的眼镜(共享 embedding + 最后一层激活调制 + KV 共享)
2026-05-07 11:18:06
647
原创 从底层看透GPU:算力、带宽、显存与制程的本质,一文讲清AI推理快慢根源
本文将从零开始,用通俗语言拆解算力、带宽、显存的核心区别,讲透纳米制程与频率、发热的关联,彻底理清AI推理快慢的硬件底层逻辑,无论是AI部署新手还是硬件爱好者,都能读懂吃透。大模型推理时,不会重复计算历史对话数据,而是将每一轮对话的Key/Value向量缓存到显存,这就是KV Cache,它是显存占用的核心部分,也是上下文数据的载体。反观老旧制程,晶体管体积大、走线长,必须加高电压才能运行,不仅无法拉高主频,还会出现功耗爆炸、发热严重的问题,物理层面无法实现高频算力。计算核心追求高频,需要先进纳米制程;
2026-05-01 02:10:56
321
原创 双 4090 部署 Gemma 4 31B 踩坑实录:从第一性原理到生产级优化全解析
故事从一个"玄学"问题开始:我在生产环境部署 Gemma 4 31B(AWQ-INT4 量化)时,默认参数启动就吃满双卡 48GB 显存,max_model_len 被自动压到 4K。加了几个参数后,同样的卡能跑到 32K 上下文,还能支撑二十多路并发。启动直接报错把从 128 改成 32,反而 OOM 了启动失败几次后,连 CUDA 初始化都 OOM这些"反直觉"的问题,背后都有非常清晰的因果链。
2026-04-17 18:55:34
1051
原创 从第一性原理出发:如何为你的 GPU 选择最优 GGUF 量化版本
Q: 你的显存预算是多少?├── 紧张(刚好能放下模型)│ └── 选 bpw 最高 + 有 imatrix 的版本(如 IQ4_NL)│ → 层内优化弥补 bpw 不足│└── 充裕(模型只占一半以下)└── 选 bpw 最高 + 有层间策略的版本(如 UD-Q4_K_XL)→ 层间优化 > 层内优化(误差传播链的系统性收益)在显存允许的范围内,选有效 bpw 最高、且分配策略最聪明的那个文件。
2026-04-13 12:41:41
599
原创 GPU 推理并发的本质:从第一性原理到工程实践
链条 1:为什么要 Batch?SRAM 极小 → 权重必须切成 Tile 逐块从 HBM 搬到 SM → 搬运受限于显存带宽→ 推理是 Memory-bound → 每搬一块 Tile 要尽量为更多输入服务 → Batching链条 2:为什么要 Continuous Batching?请求长度不一 → Static Batch 有计算气泡 → 需要逐 token 调度 → Continuous Batching链条 3:GPU 并行的真相是什么?
2026-04-12 21:40:46
469
原创 为什么大模型对话用`<|im_start|>`?ChatML特殊Token的设计哲学
当我们追问"为什么要用LLM是如何理解"结构"的?通过特殊的、不可分割的、在训练中被反复强化的标记。就像人类用标点符号区分句子,用段落分隔主题,LLM也需要自己的"标点符号"。就是LLM世界里的"引号"——它告诉模型:“注意,接下来的内容属于某个特定角色。理解这一点,你就理解了prompt engineering的本质:你不是在"写文字",而是在构建一个token序列,用结构引导模型的注意力。下次当你看到时,不要觉得它丑陋。它是一扇窗户,透过它,你能看到LLM内部那个由数字和模式构成的世界。
2026-03-31 21:54:50
532
原创 Nanobot 源码深度剖析:一个轻量级 AI Agent 框架的架构设计与实现原理
Nanobot 虽然自称"lightweight",但在架构设计上相当成熟。它展示了如何在有限的代码量内构建一个生产可用消息总线解耦让系统天然支持多渠道扩展ReAct 循环让 LLM 成为灵活的决策引擎两层记忆 + Token 预算管理解决了长对话的持久性问题虚拟工具调用让 LLM 输出结构化且可靠渐进式降级保证系统在各种异常情况下的可用性纵深安全防护应对 prompt injection 和 SSRF 等实际威胁。
2026-03-19 14:05:37
1098
原创 为 nanobot 实现自定义斜杠命令:从踩坑到上线的完整复盘
本文记录了在nanobot AI Agent框架中实现/soul和/mem斜杠命令的过程。/mem通过复用已有记忆归档逻辑顺利实现,而/soul在迭代中遇到LLM API兼容性问题。最初版本因未调用LLM而无效,第二版尝试强制工具调用时发现Moonshot API不支持tool_choice与深度思考模式并用。最终方案通过降级处理解决了兼容性问题,实现了用户主动触发人格文件写入和记忆归档的功能。
2026-03-19 11:17:17
530
原创 OpenClaw 深度拆解:下一代自主智能体架构全面解析
冷热分离:最近 10 轮对话为"热数据"保持原样;10 轮之前为"冷数据"。递归摘要:Hard Limit 触发时,提取最早的冷数据块发送给摘要模型,压缩为 300 字以内的高密度文本。原位替换:原本占用 15,000 Tokens 的 20 轮对话,被替换为仅占 200 Tokens 的摘要节点。结果:释放 98% 的上下文空间,Agent 对历史事件的认知几乎无损。最自然的工具描述方式不是 JSON Schema,而是 Markdown 文档。维度定义格式。
2026-03-10 11:10:17
1336
原创 Manus vs OpenClaw:云端托管与开源本地化的架构原理全面对比
Manus 可类比为“iPhone 模式”——封闭但流畅,将复杂性隐藏在精心设计的云端架构之后,适合追求"描述目标即可获得结果"的用户。其核心壁垒在于多智能体协同的调优经验和上下文工程的积累。OpenClaw 可类比为“Linux 模式”——开放且强大,将控制权和责任都交给用户,适合有技术能力且重视数据主权的开发者和团队。其核心壁垒在于社区生态的网络效应和"始终在线"的本地助手体验。
2026-03-02 10:53:59
2174
原创 垂直领域大模型为何必须跨越 SFT,拥抱 GRPO?
问题答案基模好,能否跳过 SFT 直接 RL?需要最小化 SFT(几千条),不能零 SFTSFT 和 RL 的本质区别?SFT 教"像专家说话",RL 教"像专家思考"垂直领域的核心竞争力?不是拥有多少数据,而是能否定义出"什么是好结果"从 SFT 到 GRPO,本质是让大模型从"文科生"(博闻强记)进化为"理科生"(举一反三)。参考资料DeepSeek-R1 技术报告GRPO 原始论文。
2026-01-26 10:57:33
552
原创 一文搞懂 PPO 与 DPO:大模型对齐的两条路线
PPO 是"请翻译帮忙",DPO 是"直接学原文"。偏好学习可以绕过强化学习,转化为简单的监督学习问题。这不仅降低了训练成本,还提高了稳定性,是大模型对齐领域的一次重要简化。
2026-01-26 10:24:56
795
原创 深度学习多卡训练为什么要求均匀切分?
或者框架强制要求数据、模型参数、张量维度能被 GPU 数量整除,确保每张卡分到完全相同的工作量。为什么一定要这样设计?能不能让某些卡多干点、某些卡少干点?│ 为什么要求均匀切分?││ 1. 同步等待 —— 木桶效应导致算力浪费 ││ 2. 通信原语 —— AllReduce 要求张量形状一致 ││ 3. 数学正确 —— 梯度聚合的正确性保证 ││ 4. 工程简洁 —— 代码实现和维护的便利性 ││ 均匀切分的四大必要性 ││ 维度 │ 原因 │。
2026-01-20 10:25:58
689
原创 深度学习多卡训练必须使用偶数张GPU吗?原理深度解析
多卡训练是不是必须要用偶数张卡?比如2卡、4卡、8卡才能训练,3卡、5卡、7卡就不行?简短回答:不是必须的,但要分情况讨论。纯数据并行:任意卡数都可以,3卡、5卡、7卡完全没问题张量并行:理论上要求"可整除",但由于模型设计惯例,实际只能用2的幂次方混合并行:通过灵活组合,总卡数可以是任意值本文将从分布式训练的底层原理出发,详细分析各种并行策略对GPU数量的真实要求,区分理论约束和实践约束,帮助大家建立正确的认知。│ 分布式训练并行策略 ││▼ ▼ ▼ ▼。
2026-01-20 09:59:55
840
原创 一鱼两吃:为什么 SFT 和 GRPO 可以共用同一批数据
数据的价值不在于数量,而在于如何从不同维度榨取信息。SFT 教会模型"形",GRPO 锤炼模型"神"。同一批数据,前者取其过程,后者验其结果——这正是"一鱼两吃"的精髓所在。对于资源有限的小模型训练场景,这种策略在数据效率和训练效果之间取得了精妙的平衡,值得从业者借鉴。
2026-01-19 21:51:05
661
原创 深入理解 git cherry-pick 的本质机制
很多开发者在使用时,会下意识地认为它和git merge类似,是一种“合并代码”的操作。理解这一点,是掌握 Git 高级用法的关键。
2025-12-16 17:55:12
826
原创 哈希函数的本质:深入理解二进制位运算的艺术
哈希函数本质上是二进制处理器:无论输入是什么类型,哈希函数都将其视为二进制序列进行处理。位运算是哈希的核心:所有复杂的哈希操作都可以分解为与、或、非、异或、移位等基本位运算。硬件优化基于二进制:现代CPU、GPU、ASIC针对位运算进行了深度优化,使哈希计算极其高效。安全性源于位运算的数学特性:雪崩效应、抗碰撞性等安全特性都建立在位运算的数学基础之上。未来仍将基于二进制:即使后量子密码学发展,任何在经典计算机上实现的算法最终都会转换为二进制运算。# 最终思考:哈希函数的哲学"""
2025-12-09 17:32:31
1052
原创 LLM推理加速的三板斧:从第一性原理看批处理、长度排序和前缀共享
LLM推理优化的本质是一场与硬件限制的博弈。通过深入理解GPU的工作原理,我们可以设计出越来越精妙的优化策略。特别是全局KV缓存池的设计,它不仅仅是一个技术优化,更是一种架构思维的转变——从"面向批次"到"面向服务"的转变。这种转变让LLM服务真正具备了生产级的效率。请记住:你的每一个字符都在这个精密的系统中流转,而系统正在用尽一切办法,确保没有一个晶体管在空转。
2025-11-07 12:00:22
647
原创 深入剖析低精度Attention训练的有偏舍入误差:从原理到解决方案
问题本质:低精度Attention存在有偏舍入误差,源于"两大一小"的特殊数值组合破坏了向偶舍入规则触发条件Attention权重高度集中Value矩阵存在符号偏向使用BF16等低精度格式解决方案:引入β调节因子,通过让极小值下溢来恢复向偶舍入的效果低精度Attention的有偏舍入误差问题,不仅是一个技术细节,更是硬件与算法协同进化过程中的一个缩影。它揭示了在追求计算效率的道路上,我们必须时刻警惕那些隐藏在细节中的陷阱。
2025-10-27 13:10:49
1148
原创 Pandas数据处理加速完全指南:从原理到实践
优先向量化:如果可能,永远优先使用向量化操作智能选择:对于复杂场景,使用Swifter让它自动决策 - 它会通过采样测试、性能预测和智能决策,自动选择向量化、并行化或单线程处理合理并行:CPU密集型任务使用进程池,I/O密集型使用线程池监控优化:使用profiler找出真正的性能瓶颈Pandas加速并不是一个单一的技术问题,而是需要根据具体场景选择合适的优化策略。在众多优化方案中,Swifter以其独特的智能决策机制脱颖而出它不是简单的并行化工具。
2025-08-21 16:01:20
1437
原创 从密度到聚类:DBSCAN算法的第一性原理解析
簇是高密度区域,由低密度区域分隔。点p是核心点 ⟺ |N_ε§| ≥ min_samples其中 N_ε§ = {q ∈ D | dist(p,q) ≤ ε}以p为中心、半径为ε的圆内,至少有min_samples个点(包括p自己)# 对于文本数据,使用合适的距离度量# 计算距离矩阵密度定义簇:高密度区域形成簇,低密度区域是边界局部视角:只看ε-邻域,不需要全局信息三元分类:每个点必然是核心、边界或噪声之一密度可达:通过核心点的连接定义簇的扩展。
2025-08-19 17:24:18
1230
原创 从第一性原理理解Embedding:独立模型vs大模型内嵌层的本质区别
为什么需要Embedding?计算机无法直接理解文字,只能处理数字。f: V → R^d其中V是词汇表,R^d是d维实数向量空间。语义相似的词在向量空间中距离相近。独立Embedding模型追求的是"词的本征表示"(intrinsic representation),而LLM的Embedding层提供的是"任务导向的初始化"(task-oriented initialization)。前者像是给每个词拍了一张"标准照",后者则是为每个词准备了一套"化妆品",具体如何打扮要看场合(上下文)和目的(下游任务)
2025-08-18 09:47:29
888
原创 MinHash算法:为什么选择Min而不是Max
既然理论上Max和Min等价,为什么实践中几乎都用Min?在算法的世界里,实验和数学同样重要。MinHash的故事,就是一个完美的例子。“MinHash使用最小值是因为Max不work,Max会严重低估相似度。这与许多教科书和博客的说法完全不同。两个定理的证明是完全对称的。一旦确立了标准,整个社区就沿用了这个约定。让我们用严谨的数学和实验来探寻真相。而k-max需要反向排序,略显不自然。剧透:答案可能会让你大吃一惊。
2025-08-07 22:03:42
407
原创 MinHash算法:大规模集合相似度计算的概率魔法
维度压缩:将高维集合压缩为固定长度签名计算加速:从O(n)集合运算降至O(k)签名比对规模化能力:配合LSH从O(N²)降至O(N)的搜索复杂度这使得原本不可能的大规模相似度计算变为现实。在大数据时代,MinHash已成为去重、聚类、相似搜索的基础设施。
2025-08-06 11:38:36
1577
原创 深入理解 Python lru_cache:从原理到实践的完整指南
从最基本的角度看,缓存解决的是时间与空间的权衡时间成本:重复计算耗时空间成本:存储计算结果需要内存权衡策略:用有限的内存换取计算时间的节省快速查找:给定输入,快速找到对应结果快速更新访问时间:标记某个数据为"最近使用"快速删除最旧数据:当缓存满时,删除最久未使用的lru_cache时空权衡:用内存换时间局部性原理:最近使用的数据更可能再次被使用数据结构的艺术:哈希表与双向链表的完美结合装饰器模式:优雅地扩展函数功能函数纯净(无副作用)+计算昂贵重复调用= 适合lru_cache。
2025-07-30 10:13:42
980
原创 深度解析:Python生成器中yield与return的混合使用机制
在生成器函数中, 语句确实是通过抛出 异常来实现的,这是 Python 生成器协议的有意设计而非缺陷。这种机制实现了四个关键目标:第一性原理:为什么要这样设计?设计目标1:保持与迭代协议的兼容性Python的迭代协议规定:所有迭代器在迭代完成时必须抛出StopIteration异常。关键洞察:如果生成器的return不通过异常机制,就会破坏Python的迭代协议,导致与现有代码不兼容。为什么不能用相同的机制?设计目标3:支持 yield from 的高级用法 能够自动捕获子生成器的返回值,这
2025-07-08 17:08:21
780
原创 Python异步编程:深入理解事件循环与协程
while True : # 1. 检查有哪些任务可以执行 # 2. 执行这些任务 # 3. 如果任务需要等待(如网络请求),就切换到其他任务 # 4. 检查之前等待的任务是否完成 # 5. 重复以上过程fill:#333;单线程任务1任务2任务3任何时刻只能执行一个任务执行遇到I/O操作await (必须让出!切换到下一个任务执行遇到I/O操作await (必须让出!执行CPU密集计算如果T3不让出,T1和T2永远无法继续!单线程任务1任务2任务3mindmap。
2025-07-06 17:33:35
1202
1
原创 Pad Token技术原理与实现指南
本文档旨在深入阐述深度学习中Pad Token的技术原理、实现机制及工程应用,为算法工程师提供全面的理论指导和实践参考。
2025-07-01 11:29:43
1066
原创 深度学习分布式训练:并行策略与通信机制的系统性分析
以GPT-3为例,其1750亿参数在FP16精度下需要约350GB存储空间(每个参数2字节),远超当前主流GPU的显存容量(如NVIDIA A100的80GB)。根据OpenAI的技术报告[1],即使使用最先进的硬件,单卡训练GPT-3需要355年。本文将从理论基础出发,系统性地分析三种主要的并行策略,并深入探讨NVIDIA集合通信库(NCCL)在其中的关键作用。其中B为总批次大小,P为并行度,Dₚ为第p个设备的数据子集。总通信量为O(2BH)每层,其中B为批次大小,H为隐藏维度。
2025-06-25 10:28:08
656
原创 分布式训练中的随机种子策略:深入理解与实践指南
独立性原则:三个随机数生成器完全独立,必须分别设置策略性原则:根据并行模式选择合适的种子策略验证性原则:设置后必须验证,确保符合预期。
2025-06-24 22:35:20
763
原创 深度解析torchrun与local_rank
从最根本的角度来看,分布式训练就是将一个大任务分解成多个小任务,让多个工作者并行处理,最后汇总结果。fill:#333;color:#333;color:#333;fill:none;大型训练任务数据分割模型分割工作者1处理数据块1工作者2处理数据块2工作者N处理数据块N梯度汇总模型参数更新公司总部(全局视角)├── 北京分公司(节点0)│ ├── 员工A(local_rank=0, global_rank=0)
2025-06-24 21:07:38
1129
原创 在国内快速稳定下载 HuggingFace 模型的两种方法
比较项方法一:hfd + aria2方法二:huggingface-cli下载速度⭐⭐⭐⭐(最快)⭐⭐(中等)安装复杂度中(需安装 aria2)低(纯 Python 工具)对容器支持需能装 aria2✅ 非常友好自动化脚本支持一般(Shell)✅ 非常适合是否支持断点续传✅ 支持✅ 支持是否支持镜像站✅ HF-Mirror 推荐方式✅ 通过配置适合下载大型模型✅ 强烈推荐✅ 可用但速度较慢。
2025-06-24 00:23:43
2918
原创 深入MongoDB索引的本质:联合索引 vs 单字段索引的终极对决
维度联合索引单字段索引数据结构一棵多级 B+ 树多棵独立 B+ 树查询效率高中等,依赖合并机制排序支持✅❌范围查询好差空间占用较大较小MongoDB 是一个强大但也“自由”的数据库,索引设计是性能优化的核心。理解索引,不只是学 API,而是理解它背后的结构与原理。数据结构 + 算法 + 访问路径。联合索引和单字段索引的区别,其实是你选择了不同的“计算路径”。
2025-06-20 10:26:33
491
原创 HuggingFace镜像配置失效问题深度解析:Python模块导入机制的陷阱
在使用HuggingFace的transformers和datasets库时,国内用户经常会遇到网络连接问题。虽然设置了镜像源环境变量,但仍然报错无法连接到huggingface.co。本文将深入分析这个问题的根因,并从Python模块导入机制的角度解释为什么环境变量设置的时机如此重要。这个问题的本质是Python模块导入机制与环境变量读取时机的冲突。理解这个机制对于正确配置Python应用的运行环境至关重要。核心要点环境变量必须在模块导入前设置Python模块只初始化一次并缓存。
2025-06-19 21:39:15
1063
原创 RMS Norm 与 Layer Norm 在大模型中的区别
在Transformer等大模型中,RMS Norm和Layer Norm都是层归一化技术,用于稳定训练、加速收敛。核心区别在于。
2025-06-19 11:49:10
859
原创 错误系列之 “if mongo“
错误写法(会报错)意图不明确、容易误解❌ 你是在判断对象?还是判断集合里有没有数据?正确写法意图明确 ✅判断变量是否初始化成功判断集合是否有数据(是否为空)
2025-06-16 10:11:42
264
原创 Mini DeepSeek-v3训练脚本学习
这是一个实现了Mini DeepSeek-v3大语言模型的训练脚本,集成了多项先进的深度学习技术。该脚本支持自动GPU选择和分布式训练,适合在多GPU环境下训练Transformer模型。
2025-06-13 10:56:22
1122
原创 梯度范数的作用
范数”是衡量向量“大小”的函数,常用符号 ‖·‖。深度学习里几乎一律采用 L² 范数(欧几里得范数)在神经网络训练中,我们通过反向传播计算损失函数对各层参数的梯度。设模型的所有参数为向量θ\thetaθ,其梯度表示为∇θL∇θL,则梯度范数通常用L2L^2L2∥∇θL∥2∑i∂L∂θi2∥∇θL∥2i∑∂θi∂L2梯度范数反映了在当前迭代中模型参数的“更新强度”。
2025-06-11 17:42:24
1615
stacked Denoise autoencoder learning useful representation
2018-11-14
深度学习+tf
2018-11-14
Training deep network without learningrate coinbet
2018-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅