关于炼丹,你是否知道这些细节?

关于炼丹,你是否知道这些细节?

💡 原文中文,约5900字,阅读约需14分钟。
📝

内容提要

本文分享了作者在深度学习框架中的经验与教训,重点讨论数据处理、模型训练和多卡训练中的常见问题。作者希望通过总结这些经验,帮助他人避免错误,提高工作效率,并促进知识分享与交流。

🎯

关键要点

  • 作者分享了在深度学习框架中的经验与教训,旨在帮助他人避免错误,提高工作效率。
  • 数据处理时,opencv和Pillow读取的图像格式不同,可能导致数据增强和预训练模型的问题。
  • 使用torchvision的预训练模型时,输入图像需要经过ToTensor操作,确保数据范围在0到1之间。
  • 在多卡训练中,BatchNorm的统计量可能不一致,需注意broadcast_buffer参数的设置。
  • FP16训练时,保存checkpoint时需保存amp的state_dict,以避免训练中断。
  • 多机分布式训练时,需确保rank设置正确,以避免卡死现象。
  • 作者希望通过总结经验促进知识分享与交流,减少他人踩坑的机会。

延伸问答

在深度学习中,opencv和Pillow读取图像有什么不同?

opencv读取的图像格式是BGR,而Pillow读取的是RGB,这可能导致数据增强和预训练模型的问题。

使用torchvision的预训练模型时,输入图像需要做什么处理?

输入图像需要经过ToTensor操作,将数据范围调整到0到1之间。

在多卡训练中,BatchNorm的统计量可能出现什么问题?

BatchNorm的统计量可能不一致,需要注意broadcast_buffer参数的设置。

FP16训练时,保存checkpoint需要注意什么?

需要保存amp的state_dict,以避免训练中断。

如何处理训练过程中显存炸掉的问题?

可以判断数据本身是否有问题,必要时将一些逻辑放在CPU上,重试训练。

多机分布式训练时,如何避免卡死现象?

需确保rank设置正确,以避免不同机器间的同步问题导致卡死。

➡️

继续阅读