场景文本检测&识别学习 day03 (Error解决)

Error解决

  1. CUDA out of memory ,在模型的训练过程中,可能一开始会报这个错,也可能运行几个迭代之后报这个错,具体报错解决如下:
# 1. 调小batch_size,在配置文件.sh .yaml 中查找batch_size,改小即可

# 2. 如果上一步将batch_size改到1还是提示CUDA out of memory,可以启用AMP(自动混合精度),运行代码的命令行参数中加入以下代码,具体项目可能有差别:
--amp

AMP技术解释

  • AMP(自动混合精度)是一个用于深度学习训练中的技术,它通过智能地使用半精度(浮点16)和全精度(浮点32)浮点运算来加速模型的训练并减少内存使用。
    • 提高训练速度:
      • 运算加速:半精度浮点数(FP16)比全精度浮点数(FP32)需要的内存更少。这允许GPU在相同时间内处理更多的数据
      • 网络吞吐量提升:由于数据包大小减小,使用FP16可以在GPU上加载更多的数据和模型参数
    • 减少内存使用:
      • 节约内存: FP16相比FP32可以节约一半的内存,这对于大模型数据和大批量数据尤其重要,因为它们对显存的需求非常高
      • 允许更大的批量大小:由于每个数据点使用的内存减少,可以在不超过GPU内存限制的情况下增加批量大小,这有助于更稳定和有效的训练
    • 为什么AMP可以避免超出显存:
      • 现存管理优化:AMP提供了动态的显存管理技术,这包括在必要时自动调整数据的精度。例如在某些操作中使用FP16,在需要高精度计算的操作中自动切换回FP32,这样既保证了计算精度,又优化了显存使用
      • 避免内存溢出:通过减少单个数据元素的内存需求,AMP可以有效降低整体内存消耗,这样在相同的硬件条件下,可以运行更大的模型或者使用更大的数据批量。从而避免因内存不足而导致的程序崩溃或者性能下降
    • 如何使用AMP:
      • 使用torch.cuda.amp模块来实现自动混合精度,该模块提供了“autocast”、"GradScaler"这两个工具,其中“autocast”用于自动调整运算的数据类型,“GradScaler”用于调整梯度的规模,防止在使用FP16时因数值范围限制而造成的梯度下溢。

最近更新

  1. TCP协议是安全的吗?

    2024-04-12 15:02:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-12 15:02:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-12 15:02:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-12 15:02:03       20 阅读

热门阅读

  1. 【leetcode面试经典150题】41. 单词规律(C++)

    2024-04-12 15:02:03       22 阅读
  2. day8字符串part01

    2024-04-12 15:02:03       47 阅读
  3. mmcv-ful=1.6.0中不能识别pkl的问题

    2024-04-12 15:02:03       20 阅读
  4. C++中const关键字的多种用法

    2024-04-12 15:02:03       18 阅读
  5. 【docker】docker-compose技术文档

    2024-04-12 15:02:03       53 阅读
  6. 基于springboot的厨艺交流平台源码数据库

    2024-04-12 15:02:03       21 阅读
  7. 随机梯度下降算法

    2024-04-12 15:02:03       19 阅读