当前位置: 首页 > news >正文

【DEBUG】Debug日志001:RL项目记录

Debug日志001

  1. 报错ImportError: /lib64/libc.so.6: version 'GLIBC_2.32' not found

    • 分析
      • 因为linux版本不够新,所以不支持GLIBC_2.32,只支持GLIBC 2.31
      • 不能直接升级服务器的linux版本,所以得调整flash attention的版本
    • 方法:flash_attn 版本从 2.8.1.post2 下降至 2.7.4.post1
  2. 报错ImportError: libGL.so.1: cannot open shared object file: No such file or directory

    • 分析
      • opencv库存在问题
      • 方法限制:
        • 不能用sudo权限
        • 也不能用opencv的headless版本
    • 方法conda install -c conda-forge libgl libglu(只下载这两个库)
  3. 报错tensor和随机数生成器不在一个设备上

    • 分析:和SFT中的问题很像,于是同样采取monkey patch来解决
    • 方法:用新函数覆盖原来的函数
def safe_trunc_normal_(tensor, mean=0., std=1., a=-2., b=2., generator=None):if tensor.dtype == torch.bfloat16:tmp = torch.empty_like(tensor, dtype=torch.float32)torch.nn.init._no_grad_trunc_normal_(tmp, mean, std, a, b, generator=generator)tensor.copy_(tmp.to(torch.bfloat16))return tensorelse:return torch.nn.init._no_grad_trunc_normal_(tensor, mean, std, a, b, generator=generator)torch.nn.init.trunc_normal_ = safe_trunc_normal_
  1. 报错wandb.errors.errors.CommError: Run initialization has timed out after 90.0 sec.

    • 分析:wandb初始化超时,因为连不上网

    • 方法:配置文件中,将其设置成离线模式

      export WANDB_MODE=offline
      
  2. 报错size mismatch...

    • 分析
      • 模型没有正确加载,才会导致这个错误
      • 因为模型checkpoint用的是相对路径,所以代码运行位置会决定模型是否正确加载
    • 方法
      • 需要在VARGPT1.1处运行代码
      • 若在VARGPT1.1/VARGPT-RL则会报这个错
  3. 报错IndexKernel.cu:93: ... Assertion -sizes[i] <= index && index < sizes[i] && "index out of bounds"failed.

    • 分析: cuda数组越界
    • 方法
      • 因为分布式训练不好定位,且网上有人说降pytorch版本就可以解决
      • 所以将pytorch版本降到2.4,报错解决
  4. 报错cu92:device-side assert triggered

    • 分析:还是cuda越界,和cu93似乎略有区别

      • 网上说需要export CUDA_LAUNCH_BLOCKING=1来显示具体报错位置
        • 但模型很大,需要分布式训练的话,这个方法可能会失效
        • 所以我把模型所有参数都冻结了,然后就可以在单卡上运行代码
        • 这时候再配置这个就可以准确报错了
      • 设置完后,我们看Traceback
      [rank0]:   File "xxx/modeling_vargpt_qwen2_vl.py", line 2244, in forward
      [rank0]:     x_BLC_wo_prefix, scale_schedule, training_scales, gt_BL = self.get_vae_gt_xin_v1_1(pixel_gen_values, self.vargpt_gen_args) # torch.Size([2, 640, 2048])
      [rank0]:   File "xxx/modeling_vargpt_qwen2_vl.py", line 1552, in get_vae_gt_xin_v1_1
      [rank0]:     T = 1 if inp_B3HW.dim() == 4 else inp_B3HW.shape[2]
      [rank0]: IndexError: tuple index out of range
      
      • 找到越界发生的位置,发现pixel_gen_values这个变量传入的维度有问题。
      • 但是这个应该是执行生成的时候,才会去使用的参数,为什么会有这个问题?
      • 打印输出发现,pixel_gen_values前81个都是none,但在completion的token处,显示被赋了值
      • 强制改掉程序路径后(即不走生成任务),发现input_id一直没有赋值,所以猜测是pixel_gen_values和input_id的值传反了
    • 方法:加一个条件判断,让错误的传参,重新传递

if pixel_gen_values is not None and pixel_gen_values.dim()!= 4: # fix the problem of pixel_gen_values has a worng shapeinput_ids = pixel_gen_valuespixel_gen_values = None
  • CUDA报错非常折磨,一定要想办法让其能够准确输出报错点。
  • 可以通过让程序在CPU上运行;或者配置CUDA参数,让其traceback。
http://www.dtcms.com/a/286625.html

相关文章:

  • 产品研发的永恒难题:质量、速度与成本的三角博弈
  • 常用的折叠展开过渡动画效果css
  • 基于物联网的智能农情监测预警系统
  • 消息队列总结
  • 服务端高并发方案设计
  • 苍穹外卖DAY5
  • mingw11.2+opencv4.12 cmake contrib编译
  • server2003sp0和server2003R2的I386文件夹或AMD64文件夹里面的EXPAND.EXE命令可以显示当前光盘系统的版本号
  • 从0开始学习R语言--Day50--ROC曲线
  • 网络安全:使用.NET 检测网络下载文件及其来源
  • 《BFC:CSS布局中掌控浮动与margin的核心机制》
  • 网络原理 ——HTTPS
  • 【Zephyr开发实践系列】08_NVS文件系统调试记录
  • 短视频矩阵系统:选择与开发的全方位指南
  • 推荐 1 款 4.5k stars 的AI 大模型驱动的开源知识库搭建系统
  • 在git中同时配置gitcode和github访问权限
  • [LINUX操作系统]chrony时间同步服务器 和 ssh虚拟之间实现密钥的登录(免密登录)
  • Android CountDownTimer
  • 企业微信社群留存实践:从内容规划到标签体系的落地逻辑
  • C++ 程序设计考量表
  • sql注入以及Python二分查找
  • 模板初阶和C++内存管理
  • Linux网络:序列化与反序列化
  • web-storage-cache离线缓存技术的详细讲解与使用
  • 虚拟商品自动化实践:闲鱼订单防漏发与模板化管理的技术解析
  • 零售行业 AI 客户咨询对话系统实战指南
  • 深入理解Linux文件操作:stdin/stdout/stderr与C语言文件函数全解析
  • 【实战】一次出口连接数超限事故引发的架构反思:强制代理、NAT 网关与大厂最佳实践
  • 网络编程(modbus,3握4挥)
  • 【C#】引用(Reference)句柄(Handle)