💡
原文中文,约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设置正确,以避免不同机器间的同步问题导致卡死。
➡️