CIFAR10超光速基准测试
欢迎来到超光速基准测试CIFAR-10(HLB-CIFAR10)仓库。
如何运行
git clone https://github.com/tysam-code/hlb-CIFAR10 && cd hlb-CIFAR10 && python main.py
需要CUDA。可以稍作修改以适用于其他平台。
如果您尚未安装torch和/或torchvision,请在进入hlb-CIFAR10文件夹后运行:
python -m pip install -r requirements.txt
,然后运行python main.py
。
如果您感兴趣,这段代码通常适用于Colab(事实上,大部分代码是在Colab中开发的!)。只需确保取消代码顶部重置块的注释。
主要内容
目标:
- 极简主义
- 适合初学者
- 符合torch和python惯用法
- 可修改
- 较少的外部依赖(目前仅需torch和torchvision)
- 接近世界纪录的单GPU训练时间(本仓库目前保持着世界纪录,在A100上仅需约<6.3(!!!)秒,从最初的约18.1秒大幅缩短)
- 在不到2年内实现<2秒的训练时间(没错!)
这是一个神经网络实现,最初是对David Page的原始单GPU超快速CIFAR-10实现进行的精心复制,但几乎从头开始重写,以便于快速实验。这样做的部分好处是我们现在保持着CIFAR10单GPU训练速度的世界纪录。
我们添加的内容:
- 速度更快的自定义架构
- 大量的超参数调整
- 其他架构修剪(参见补丁说明)
- 内存格式更改(等等)以更好地利用张量核心
- 在非深度过渡层上使用狄拉克初始化(初始化时信息直通)
- 以及更多!
我们移除的内容:
- 显式残差层。没错。
与David的原始代码相比,这段代码被整合到单个文件中,结构非常扁平,但不适合长期生产级别的错误维护。您应该在有新想法时检出新的仓库。它非常适合快速探索想法 - 几乎整个流程中的每个环节都是开放的,并且设计得非常用户友好。我个人非常喜欢使用这段代码,希望您也能喜欢!:D 如果您有任何反馈,请告诉我。我希望将来能继续发布更新,所以欢迎您的支持。请与可能喜欢这个仓库的人分享!
如果您喜欢我在这里所做的工作并想要更多,欢迎查看我的Patreon!此外,如果您希望我兼职工作,请随时通过hire.tysam@gmail.com与我联系。我很乐意听到您的声音。
已知问题
Colab特定的代码在顶部被注释掉了,计时/性能表格每个epoch都会重新打印整个表格,而不是适当地原地更新。
为什么还是卷积神经网络?为什么是CIFAR10?现在不是Transformer更流行吗?
Transformer确实是新趋势,但我个人认为,信息从训练集凝聚到神经网络的方式在实际中几乎总是遵循相同的基本数学原理。这个代码库的目标是在一两年内将训练时间缩短到2秒以内,在4-5年内缩短到1秒以内。这应该能在不同层面上进行一些非常有趣的扩展实验。我已经粗略规划了将训练时间缩短到2-3秒左右的路径,如果一切顺利的话。超过这个点后,难度可能会大大增加。
基本上 - 在这里实验某种技术所获得的信息应该能以某种方式转化。在寻求理解某些应用数学概念的基础时,无需任意增加规模。
提交
目前,作为基准测试的提交暂时关闭,我们正在评估兴趣水平,如何跟踪不同的条目等。如果您对此有想法,欢迎开启一个议题!
错误及其他
如果您发现错误,请开启一个议题!:D 如果您有成功案例,请告诉我!这比您想象的更能帮助我了解什么有效,什么无效 - 如果我知道这如何具体帮助到人们,这可以帮助我进一步提升开发能力,因为我可以在未来为人们开发其他软件时牢记这些。:D :)