- 博客(98)
- 资源 (1)
- 收藏
- 关注
原创 [python] AST语法树来加速大量库文件和注册的加载以及审查
在 Hermes Agent 这种高频、高可信度 AI 执行环境中,ast是一把**“在不实际运行代码的前提下,精准看穿代码意图、检测代码漏洞与语法缺陷”**的瑞士军刀。极速、安全、无副作用。
2026-05-25 21:47:08
450
原创 [Python] Python中自带模块级的单例模式-不需要定义单例类
不可变正则常量:是好的、符合 Google 规范的做法。可变全局缓存不符合 Google 规范,在并发、测试、多 Profile 场景下存在隐患。建议:在未来系统规模扩大、引入更多并发或需要支持更严格的多 Profile 隔离时,应该将这些全局状态重构为类实例(Class Instance Properties / Objects )或上下文环境对象(Context Objects)。需要单例的行为(保证缓存只被加载一次,全局共享)。不需要严格的单例限制(强行拦截__new__最佳实践。
2026-05-24 17:46:00
448
原创 ACP:Agent-Client-Protocol 详解
ACP协议核心摘要 ACP(Agent Client Protocol)是AI代理领域的标准化通信协议,类比LSP在语言服务器中的作用。该协议基于JSON-RPC 2.0和stdio标准输入输出,规范了IDE/客户端与AI编码代理之间的交互方式,解决了生态碎片化问题。 核心特点: 采用父子进程通过stdin/stdout通信,避免网络相关复杂度 定义三种消息类型:请求(Request)、响应(Response)和通知(Notification) 标准工作流程包括初始化握手、会话管理、流式输出和权限控制等环节
2026-05-13 16:04:14
929
原创 [python] python实现类的函数重载机制-@dispatch
摘要:@dispatch装饰器来自plum库,为Python提供多重派发能力,解决原生不支持函数重载的问题。它通过参数类型注解自动匹配调用对应的重载方法,允许多个同名__init__共存,需用# type: ignore[no-redef]避免mypy报错。相比手动isinstance判断的分支写法,@dispatch更声明式但需第三方依赖。该技术在几何消息类(Pose/Vector3等)中用于支持多种构造方式,如无参构造或指定坐标构造等。
2026-04-19 00:16:03
255
原创 [python] asyncio常规操作记录
Python asyncio 并发原语摘要 本文介绍了Python asyncio的核心并发机制和API: Event Loop是单线程调度器,通过轮询就绪事件和回调实现协程并发执行 三种核心API对比: create_task():同一loop内并发调度协程 to_thread():将阻塞函数移入线程池执行 run_coroutine_threadsafe():跨线程向指定loop投递协程 相关APIcall_soon_threadsafe用于跨线程投递回调函数 通过表格对比了各API的调用位置、投递目标
2026-03-20 12:13:32
392
原创 [架构设计] Dependency-injector 使用
这篇教程详细介绍了Python中的依赖注入(DI)技术。文章首先阐述了DI的核心设计逻辑,即通过控制反转(IoC)将对象创建的控制权从内部转移到外部容器,解决传统硬编码依赖带来的耦合问题。然后详细讲解了dependency-injector库的实现原理,包括Provider、Container和Wiring三个关键概念。教程提供了从安装到基础用法的完整指南,展示了多种Provider类型(Singleton、Factory等)的使用场景,并介绍了四种配置注入方式(字典、YAML、环境变量、.env文件)。通
2026-03-18 18:43:51
328
原创 [架构设计] 依赖注入优于单例模式
本文档解释了为什么在现代软件设计中依赖注入优于单例模式,并提供了基于 Robot项目的 Python 实践示例。"""机器人接口,用于依赖注入"""@property"""检查机器人是否正在执行动作"""...@property"""获取当前动作名称"""..."""连接机器人"""..."""断开机器人连接"""..."""执行机器人动作"""...✅ 可测试性:容易注入模拟对象✅ 灵活性:运行时决定使用哪个实现✅ 解耦:组件不知道具体实现✅ 线程安全:没有全局状态。
2026-03-18 16:19:41
279
原创 [架构设计]多模块共享状态时不是只有单例
本文探讨了共享状态管理的优化方案,针对单例模式导致的模块紧耦合问题提出了两种替代方案。事件驱动模式通过发布-订阅机制实现模块解耦,包含事件总线和状态管理器组件,支持异步操作和历史追踪,但可能存在事件链复杂问题。协调服务模式则采用集中式资源锁管理,通过资源枚举和锁机制协调共享资源访问。两种方案均解决了单例模式的测试困难、状态追踪和线程安全问题,为系统模块间的状态共享提供了更灵活、可维护的架构选择。
2026-03-18 16:18:37
368
原创 [架构设计] pypubsub 底层实现机制与高性能替代方案
本文分析了 pypubsub 的底层实现机制,并提出了两种高性能替代方案。pypubsub 采用纯 Python 实现,基于主题树结构和弱引用列表存储订阅者,但存在同步阻塞、无优先级和无并发等问题。文章提出了两种改进方案:1) 异步事件系统,支持同步/异步处理器和并发执行;2) 基于队列的解耦系统,采用线程池和优先级队列实现高效事件处理。两种方案均能显著提升性能,解决原生 pypubsub 的局限性。
2026-03-18 16:11:35
412
原创 [C++] traits机制
这些is_xxx的函数,如何定义的; 有什么可以学习的点std::enable_if::type的使用c++的原则就替换失败并非错误(SFINAE)。std::enable_if 就是满足条件时类型是有效的所谓的SFINAE规则就是在编译时进行查找替换,对于重载的函数,如果能够找到合适的就会替换,如果第一个不合适并不会报错,而会使用下一个替换直到最后一个,如果都不满足要求,那么才会报错。出现二义性的话也会报错。主要两个应用类型判断,可以自定义类型判断返回值指定,根据输入类型判断返回值
2025-06-21 17:46:20
1102
原创 [CUDA] cuda的一些实用工具
本文介绍了两种GPU数据打印工具和性能分析工具。打印工具包括直接在GPU上打印数据的CUDA模板函数和将数据传回CPU打印的方法。性能分析部分详细介绍了NSight System和NSight Compute的使用:NSight System用于可视化性能报告,可分析stream调用、内存泄露和函数并行性;NSight Compute则专注于CUDA内核的详细性能指标分析。文章还提供了启动/停止评测的脚本方法,适合对大型应用进行分段性能分析。这些工具能有效帮助开发者调试GPU程序和优化性能。
2025-06-21 17:43:08
1101
原创 [CUDA] cub库的使用
CUB(CUDA Unbound)是NVIDIA提供的高性能并行计算组件库,主要针对CUDA编程模型各层级(Warp/Block/Device)提供可复用的集合操作,包括排序(BlockRadixSort)、选择(DeviceSelect)、规约(reduce/scan)等核心功能。其特点如下: 分层设计:支持Warp-wide、Block-wide和Device-wide三个级别的并行操作,例如BlockRadixSort需配合BlockLoad/Store处理数据补齐问题。 典型应用场景: 非零元素提取
2025-06-21 17:42:01
1597
原创 [AI算法] 什么事RoPE scaling
RopeScaling技术通过频率缩放扩展Transformer模型上下文长度,其中Dynamic NTK-Aware Scaling和YaRN是主流方法。Dynamic NTK基于神经切核理论动态调整RoPE频率参数
2025-06-01 17:18:47
1558
原创 [AI算法] LLM中LoRA的占用显存没有减少多少?
LoRA微调方法虽能减少参数数量,但显存占用仍较高,主要原因是计算图完整构建导致中间特征无法及时释放。LoRA输出特征图与原始模型大小相同,需参数融合送入后续计算。相比之下,torch.no_grad最节省显存(不构建计算图),requires_grad=False仅停止梯度回传,而eval()模式会影响BN/Dropout层行为。这些差异导致显存优化效果不如预期。
2025-06-01 16:27:44
611
原创 [AI算法] LLM中的gradient checkpoint机制
梯度检查点(Gradient Checkpoint)是一种深度学习显存优化技术,通过在训练过程中选择性保存中间激活值来降低内存消耗。该技术以Transformer Block为单位,仅保存输入输出,在反向传播时重新计算中间结果,从而大幅节省显存占用。适用于训练大型模型、增加批处理尺寸或深层网络(如Transformer)等场景。但需注意该技术会因重复计算而延长训练时间,且可能与其他优化方法存在兼容性问题。实际应用中建议先进行有效性测试。
2025-06-01 16:18:38
741
原创 [AI 算法] PointPillar算法
pointpillar最主要的特点是检测速度和精度的平衡1. 研究出发点现有的一些研究喜欢将不规则、稀疏的点云数据按照以下两种方式进行处理,然后引入RPN层进行3D Bbox Proposal,这两种方法为:(1)将点云数据划纳入一个个体素(Voxel)中,构成规则的、密集分布的体素集。常见的有VoxelNet和SECOND,这在之前的文章中已经解析过了;(2)从俯视角度将点云数据进行处理,获得一个个伪图片的数据。常见的模型有MV3D和AVOD,这也说过了。. 主要是将点云透射到俯视图上,然后
2025-02-12 11:40:19
549
原创 [CUDA] 编译调试工具objdump使用查看某些cuda函数汇编代码
调研cublas等cuda库函数的一些底层代码实现逻辑,通过汇编逻辑来看具体实现,推断可能的耗时异常原因
2024-12-09 14:54:56
520
原创 [CUDA] cuda kernel开发记录
包括kernel的一些使用注意事项, launch_bound, __device__, debug排查技巧
2024-11-11 20:45:00
1482
原创 [CUDA] 设置sync模式cudaSetDeviceFlags
可以设置cuda Stream synchorinze时是释放cpu资源还是把持cpu资源;根据官方说明默认当gpu 个数大于cpu的时候,因为cpu紧张所以会yield时间片;cuda的 synchronize等待模式分为: Yield方式, busy waiting方式(spin), blocking方式。- gpu context切换更加频繁了,应该是block阻塞导致的。- block恢复存在延迟,导致一些空白gpu时间,如下图红色框。采用blocking模式后,nsight观察的现象有几个。
2024-11-07 20:01:19
1312
原创 [CUDA] 将已有的地址空间设置为pinned memory
使用cudaHostRegister将已有的地址空间设置为pinned memory。
2024-11-07 19:50:05
953
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1