You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GPU训练PP-OCRv3模型时出现Segmentation Fault错误求助

PP-OCRv3文本识别训练触发Segmentation Fault问题排查

问题描述

使用PaddlePaddle训练PP-OCRv3文本识别模型时,初始配置batch_size_per_card=128出现GPU内存不足错误,调整为64后,训练启动立即触发Segmentation Fault。预训练模型加载成功、数据加载器配置无误,但首次迭代刚开始就报错。

错误信息

--------------------------------------
C++ Traceback (most recent call last):
--------------------------------------
No stack trace in paddle, may be caused by external reasons.

----------------------
Error Message Summary:
----------------------
FatalError: `Segmentation fault` is detected by the operating system.
  [TimeInfo: *** Aborted at 1726071412 (unix time) try "date -d @1726071412" if you are using GNU date ***]
  [SignalInfo: *** SIGSEGV (@0x0) received by PID 1421259 (TID 0x731b08f4c000) from PID 0 ***]

LAUNCH INFO 2024-09-11 18:16:56,339 Exit code -11

环境配置

  • PaddlePaddle 2.6.1(GPU版本)
  • CUDA 11.8
  • GPU计算能力8.6
  • cuDNN 9.4
  • 模型:en_PP-OCRv3_rec
  • 操作系统:Ubuntu 22.04

已尝试操作

  • 将batch_size_per_card从128降至64,解决内存不足问题但触发新错误
  • 修改其他配置参数进一步降低内存占用,无效
  • 更换数据集排查数据相关问题,无效

潜在原因与解决方案

1. 版本兼容性问题

cuDNN 9.x属于较新版本,可能与PaddlePaddle 2.6.1存在兼容冲突。建议:

  • 降级cuDNN到适配CUDA 11.8的稳定版本(如cuDNN 8.9.x)
  • 升级PaddlePaddle到最新稳定版(如2.6.4),新版本通常修复了更多兼容性问题

2. GPU显存碎片或驱动问题

  • 重启GPU服务器,清理显存碎片,避免残留内存影响新进程
  • 检查NVIDIA驱动版本是否适配CUDA 11.8,建议升级到520.x及以上的对应驱动版本

3. 预训练模型加载异常

虽然提示加载成功,但可能存在权重不匹配或初始化时的内存访问错误:

  • 重新下载官方预训练模型,避免文件损坏
  • 加载模型时设置strict=False,跳过不匹配的参数,排查是否是权重维度不一致导致的问题
  • 尝试不加载预训练模型,从头开始训练,验证是否是预训练模型引发的错误

4. 数据预处理隐藏问题

即使更换数据集,预处理流程中可能存在越界访问(如图像尺寸处理异常、标签长度不匹配):

  • 在数据加载器中添加日志,打印每个batch的图像尺寸、标签长度,检查是否有异常数据
  • 用极小batch_size(如2或1)测试,逐步扩大batch_size,定位是否和数据维度相关

5. batch_size调整的间接影响

降低batch_size后,部分依赖batch维度的操作可能出现异常:

  • 检查配置文件中的同步BN(use_sync_bn)设置,尝试关闭同步BN
  • 调整归一化层的参数,比如修改norm_type或禁用某些归一化操作

调试步骤

  • 启用PaddlePaddle调试模式:设置环境变量
    export FLAGS_check_nan_inf=1
    export FLAGS_enable_exception=1
    
    重新运行训练,获取更详细的错误栈信息
  • 使用GDB调试:通过gdb --args python train.py启动训练进程,触发错误时查看栈信息,定位问题模块
  • 单卡单batch测试:设置batch_size_per_card=1,单GPU运行,观察是否仍报错,逐步排查核心问题

内容的提问来源于stack exchange,提问作者Jacomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:57:12