
调试工具
文章平均质量分 60
Hi20240217
每天进步一点点
展开
-
PyTorch分布式训练调试方法(跟踪调用过程)
PyTorch分布式训练调试方法(跟踪调用过程)原创 2025-04-18 20:43:25 · 496 阅读 · 0 评论 -
Linux环境下基于指令追踪的源码覆盖分析技术实践
Linux环境下基于指令追踪的源码覆盖分析技术实践原创 2025-04-11 14:42:37 · 727 阅读 · 0 评论 -
如何从无法启动的KVM虚拟机中提取文件
如何从无法启动的KVM虚拟机中提取文件原创 2025-03-31 13:49:45 · 339 阅读 · 0 评论 -
不同版本sycl编译器测试
不同版本sycl编译器测试原创 2025-03-13 20:59:38 · 328 阅读 · 0 评论 -
基于Grafana+Prometheus的IB网卡硬件计数器监控方案
基于Grafana+Prometheus的IB网卡硬件计数器监控方案原创 2025-03-13 16:25:49 · 493 阅读 · 0 评论 -
PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证
比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子原创 2025-03-13 15:38:00 · 682 阅读 · 0 评论 -
Ubuntu 18.04下普通用户的一次提权过程
1.OS为Ubuntu 18.04.6 LTS2.docker服务非开机自启动,需要管理员手动启动(之前并不知道)3.重启后,数据盘也需要管理员手动挂载(之前并不知道)4.目前给我的帐号为普通用户5.我需要测试关掉IOMMU的效果,得进BIOS设置,服务器在远程,又遇到周末没人支持6.万幸我的帐号有–privileged启动容器的权限。原创 2024-06-15 20:18:39 · 1230 阅读 · 0 评论 -
跟踪一个Pytorch Module在训练过程中的内存分配情况
跟踪一个Pytorch Module在训练过程中的内存分配情况1.通过pre_hook module的来区分module的边界2.通过__torch_dispatch__拦截所有的aten算子,计算在该算子中新创建tensor的总内存占用量3.通过tensor.data_ptr()为tensor去重,表示一块独立的内存。原创 2024-06-01 20:01:30 · 368 阅读 · 0 评论 -
尝试用智谱机器人+知识库,制作pytorch测试用例生成器
背景:是否能将API的接口文档和sample放到RAG知识库,让LLM编写API相关的程序呢小结:当前的实验效果并不理想,可以生成代码,但几乎都存在BUG。原创 2024-05-31 22:42:19 · 346 阅读 · 0 评论 -
修改ModelLink在RTX3090完成预训练、微调、推理、评估以及TRT-LLM转换、推理、性能测试
背景:因为没有华为的训练卡,又想跑ModelLink,顺便熟悉LLM从训练到部署的完全过程,记录备用。原创 2024-05-31 22:24:45 · 2499 阅读 · 3 评论 -
通过LLM多轮对话生成单元测试用例
在采用这种方法之前,曾通过本文的方法生成算子组合测试用例。目前所测LLM生成的代码均会出现BUG,且多次交互后仍不能解决.也许随着LLM的更新,这个问题会得到解决.记录备用。原创 2024-05-29 20:20:22 · 810 阅读 · 0 评论 -
随机生成pytorch算子测试序列且保证算子参数合法
1.一些对维度进行操作的算子的单算子测试,结果正常,但多个算子组合在一起,结果就不对。是否能给一个算子列表,随机生成它们的组合呢1.此程序用于在 CUDA 环境中生成随机张量并对其施加一系列随机选择的操作2.程序首先随机生成张量的形状和内容,然后随机选择一个操作(如reshapetransposematmul等),并生成适当的参数以执行该操作3.最终输出变换后的张量并打印相关操作信息4.整个过程在100次不同的种子下每次进行10次操作,以保证操作的多样性和结果的随机性。原创 2024-05-29 18:04:58 · 908 阅读 · 0 评论 -
通过伪造NPU设备,让AscendSpeed在没有安装torch_npu的环境中跑起来
背景: 我想在GPU上运行AscendSpeed框架,因为没有torch_npu、deepspeed_npu,又不想一个个注释掉方法:原创 2024-05-29 10:51:33 · 679 阅读 · 0 评论 -
基于LLM的优化器评测-凸函数
很多时候我们需要为系统寻找最优的超参.比如模型训练,推理的量化等.本文尝试将LLM当成优化器,帮忙我们寻找最优的超参原创 2024-05-28 09:41:47 · 855 阅读 · 0 评论 -
H800基础能力测试
本文记录了H800基础测试步骤及测试结果。原创 2024-05-23 20:53:05 · 4251 阅读 · 2 评论 -
H800多机多卡通信带宽测试
以下代码用于测试GPU多机多卡通信带宽。原创 2024-05-22 21:47:34 · 4358 阅读 · 1 评论 -
python获取某些城市的GPS坐标
【代码】python获取某些城市的GPS坐标。原创 2024-05-21 16:12:45 · 447 阅读 · 1 评论 -
基于gcc plugin机制,编译源码时在每个函数前插入一条指令,打印当前的调用栈,省去了修改源码的时间
在学习开源库时,想了解它的调用流程,可以使用valgrind的callgrind功能。这里介绍另一种方法,gcc有一种plugin机制,可以利用这种机制在编译源码时,在函数中插入call指令,调用自己的api调用,咱们在这个函数中调用libunwind获取调用栈信息原创 2024-05-21 16:05:14 · 1231 阅读 · 1 评论 -
pytorch模型精度对比工具
通过register_forward_pre_hook、register_forward_hook、register_full_backward_pre_hook、register_full_backward_hook记录Module的耗时及输出结果;aten算子则通过torch_dispatch实现。之后对比不同的平台输出结果的耗时及相对误差并绘出直方图。可通过diff信息,定位从哪里开始出现误差原创 2024-05-19 19:01:44 · 1184 阅读 · 0 评论 -
Windows11挂载LVM2
Windows11挂载LVM2原创 2024-05-18 14:12:05 · 651 阅读 · 0 评论 -
linux基于LD_PRELOAD机制的内存泄露检测工具
Valgrind影响性能且某些程序会报错,同时我们希望跳过初始化阶段,在程序稳定运行之后再去检测内存是否会持续增涨,为了更高效的记录内存分配情况,采用b+树.该程序会拦截malloc,free,calloc,realloc,new,delete。记录10层的PC指针,方便解析脚本定位调用的代码位置.原创 2024-05-17 16:52:21 · 1007 阅读 · 0 评论 -
python通过ctypes调用C/C++ SDK,当SDK异常时,同时打印C/C++/Python的栈信息
本文演示了python通过ctypes调用C/C++ SDK,当SDK异常时,同时打印C/C++/Python的栈信息.基于traceback、addr2line、PyErr_SetString、backtrace_symbols。原创 2024-05-14 18:20:11 · 980 阅读 · 0 评论 -
相同的随机种子CPU和GPU上torch.nn.init.xavier_normal_结果并不一致
在训练pytorch模型时,相同的随机种子,不同的服务器上loss并不一样,通过调试发现这二个平台的权值也不一样.单独测试torch.nn.init.xavier_normal_,发现也不一样.如果都放在CPU上则二台服务器上的结果一致,原来Megatron-DeepSpeed也有–use-cpu-initialization这样一个参数,采用CPU初始化权值。原创 2024-05-14 17:11:23 · 457 阅读 · 0 评论 -
一次pytorch分布式训练精度调试过程
9.在异常的时候pause进程,在python调用reduce_scatter的位置打印调用栈。15.review该算子内部实现,确实有几行代码将输入当fp32处理。8.dump reduce_scatter的输入,发现每次都不样。2.dropout设置为0,重复运行二次,对比loss是否一致。4.对比backward之后的梯度,发现某一个梯度不一致。5.dump得到所有算子的规模,单算子测试功能正常。7.排除通信库的问题,逐算子bypass。10.定位到有问题的模块,是一个融合算子。原创 2024-05-13 22:28:45 · 386 阅读 · 0 评论 -
pytorch如何知道某个Parameter是在哪一个Module中的创建的
在定位pytorch精度问题时,发现optimizer中某些Parameter值异常,想知道它属于哪个模块的.本文提供二种方法1.全局搜索2.在创建Parameter的地方加一个属性,写明所在的模块名,需要的时候直接获取。原创 2024-05-12 10:48:15 · 525 阅读 · 0 评论 -
判断某地址是否为合法的PCIE BAR空间地址
以下脚本用来判断某地址是否为合法的PCIE BAR空间地址。原创 2024-05-11 20:16:38 · 681 阅读 · 0 评论 -
基于torch_dispatch机制生成Megatron-DeepSpeed调用关系图
想知道Megatron-DeepSpeed训练过程中各模块之间的调用关系。torch_dispatch机制可以拦截算子,inspect又能获取到调用栈(文件,类名,函数,行号).基于这些信息可以生成调用关系,最后用graphviz生成SVG图像。该思路也可以用来画其它pytorch工程的调用关系图1.为了减少图像宽度,一行显示一级文件路径2.没有显示具体的ATen算子。因为边太乱。原创 2024-05-10 19:23:27 · 962 阅读 · 1 评论 -
基于LD_PRELOAD机制的API批量拦截方法
之前采用LD_PRELOAD拦截某个SDK API时,会定义跟被拦截API一样的参数,如果要拦截的API很多,就太浪费时间了。于是想能不能定义一个足长参数的API代替呢以下实验实现了一个10个参数的API,通过宏批量生成拦截API,实验结论是,如果是参数不多,是没问题的,如果参数太多,可以用结构体指针传递。原创 2024-05-09 11:01:30 · 682 阅读 · 0 评论 -
通过os.dup sys.stdout.fileno捕获标准输出,判断pytorch算子是否fallback到了cpu
某种设备在运行pytorch算子时,如果不支持会自动fallback到cpu,输出的tensor.device却不是cpu,我希望能获取到这个状态。本文通过捕获标准输出,根据终端是否输出fallback字符串,判断是否触发了fallback。原创 2024-05-08 11:30:22 · 700 阅读 · 0 评论 -
基于picklerpc的pytorch单算子测试[单算子远程测试]
通过得到了算子类型及参数信息。我希望对比每个算子在不同硬件平台上的性能和误差。如果将所有的结果都存成文件,则占用空间太大。下文演示了如何使用picklerpc 将算子类型及参数传递到远程服务器测试。原创 2024-05-06 20:49:13 · 668 阅读 · 0 评论 -
pygame学习--精灵组、碰撞检测、精灵更新
通过pygame库,模拟种群的分化。1.X从左往右移动,表示年龄的增加;Y坐标表示阶层2.随着X坐标不断增大,圆逐渐增大,颜色也加深3.精灵越多,碰撞后死亡的概率越大,诞生新精灵的概率越小4.每个精灵都有随机的运动速度及Y坐标的移动方向5.发生碰撞且诞生新精灵时,继承当前坐标的Y值。原创 2024-05-05 13:32:50 · 764 阅读 · 1 评论 -
C/C++__VA_ARGS__学习--自动打印函数的参数和返回值
通过__VA_ARGS__,自动打印函数的参数和返回值原创 2024-05-04 19:37:42 · 1308 阅读 · 0 评论 -
asyncio&networkx&FuncAnimation学习--动态显示计算图的运行情况
1.动态显示计算图的运行状态(点或边是否已完成)1.定义计算图2.asyncio 并行计算3.networkx 显示计算图4.FuncAnimation 动态更新。原创 2024-05-02 14:15:32 · 634 阅读 · 1 评论 -
基于__torch_dispatch__机制的dump方法
之前拦截torch和torch.Tensor的办法,在处理backward时,不能看到aten算子的细节.以下基于__torch_dispatch__机制的方案更节约代码,且能看到调用栈。原创 2024-04-24 11:46:11 · 1247 阅读 · 0 评论 -
拦截pytorch算子,dump输入输出
希望dump出pytorch每个算子的输入输出,但pytorch普通的hook机制只能拦截module.以下提供一种方法可以拦截torch.add,torch.Tensor.add这类算子.原理是通过模板替换,劫持torch和torch.Tensor中的算子.遍历next_functions调用register_hook拦截backward.原创 2024-04-23 22:01:51 · 795 阅读 · 0 评论 -
ptrace动态修改某个进程的数据
本文演示了如何基于ptrace机制,修改另一个进程的数据。原创 2024-04-22 09:43:41 · 352 阅读 · 0 评论 -
基于pytorch hook机制,生成一次前后向的timeline
本文通过pytorch hook机制,拦截所有子module的forward和backward,统计执行时间及内存使用情况。原创 2024-04-20 11:54:38 · 907 阅读 · 2 评论 -
通过nvtx和Nsight Compute分析pytorch算子的耗时
本文演示了如何借助nvtx和Nsight Compute分析pytorch算子的耗时。原创 2024-03-30 15:48:05 · 2544 阅读 · 2 评论 -
Python耗时统计-可嵌套-生成Timeline-chrome://tracing/预览
本文演示了如何用chrome://tracing查看python嵌套代码的耗时成分原创 2024-03-30 15:17:41 · 1078 阅读 · 0 评论 -
以调试ffmpeg为例,演示gdb如何定位内存被修改
本文演示了如何使用gdb定位avformat_find_stream_info函数破坏codecpar变量的情况原创 2024-03-13 21:37:15 · 674 阅读 · 0 评论