忆往昔
忆往昔峥嵘岁月稠,还记得第一次接触昇腾,当时开发用的还是HIAI,一转眼已经到CANN 6.0了,更加简单易用,支持的功能也越来越多了,一次开发,全面部署实用性更强了。而我个人也在硬件设备和软件的不断升级慢慢成长了。
还记得当时第一次见到Atlas 200 DK开发者套件,简约而经典的黑红色设计让我觉得低调而不失科技感,第一次拆开外壳看到电路板,感叹这块小小的硬件有如此强大的算力,能完成如此复杂的计算。
接下来就是制卡、配置环境、运行官方样例、学习官方样例、做自己想要的应用开发。在这个过程中,遇到了很多问题,适逢当时昇腾AI处理器发布不久,相关资料不是很全,我就到论坛提问,查文档,一点点地去解决一个个问题。在这个时候,我就想如果能有一个经验丰富的人引导和帮助我学就好了。后来了解到昇腾开发者社区的在线课程和实验,也帮助了我不少。但是这是单向的输出,缺少互动和交流,遇到问题无法及时询问。如果能像在学校课堂那样应该会更好。
很有意思的是,这个时候在昇腾社区看到了CANN训练营活动,CANN训练营旨在为开发者提供高质量AI学习课程、开发环境和免费算力,助力开发者从0基础学习到AI技术落地,参营还有机会可以获得昇腾算力体验券、多重奖品、结业证书等多重奖励。此外,训练营会有华为昇腾的工程师来讲解,这点很吸引我,工作在开发一线的工程师对开发会有很深的理解和更丰富的经验,特别是一些我平时很难注意到的细节部分。
以模型迁移为例,我之前刚好做了一些基于TensorFlow框架的模型在Ascend 910上的迁移和调优,正好有些疑问。我在做迁移和调优的过程中,发现缺乏对迁移以及调优,特别是性能调优的系统认识。此外,我觉得需要充分了解CANN提供的调优工具和对Ascend 910处理器的达芬奇架构。而在课程中,老师的讲解则解决了我很多的疑问。比如浮点异常检测中如何通过溢出文件定位溢出算子,老师还根据经验,指出Conv2D算子一般不用管,这些都是比较细节但是很重要的部分。令我印象深刻的还有性能优化部分关于硬件的部分,比如SATA和NVMe两种规格混合划分会导致读写性能恶化、x86和ARM差异会影响CPU调度,而一般涉及数据预处理的流程是:HOST内存读出 -> 训练数据处理 -> DEVICE内存读出,硬盘和CPU架构可能会对这部分性能有较大影响,而这些硬件的差异,我之前是没有考虑到的,通过课程的学习,很好地给我提醒了一下。这也让我认识到性能调优是很复杂的,涉及硬件和软件的联合调试,需要尽可能根据硬件特性来做出更适合该硬件计算的操作,与硬件息息相关。课程的学习使我受益匪浅,这也为我在第四届中国软件开源创新大赛任务挑战赛道取得一等奖提供了支持。
而在本季的训练营进阶班模型课程中,会介绍基于昇腾PyTorch框架的模型训练调优,感兴趣的同学可以去学习一下。而如果你没接触过昇腾或CANN,也别担心,可以来参加我们的新手班,在这里,我们不仅会了解昇腾和CANN,还会和大家一起用起来,我们在新手班会简单介绍将PyTorch框架模型迁移到昇腾AI硬件的流程,会重点学习如何基于训练好的模型在昇腾AI硬件上进行图片分类等AI应用开发,切身体验下AI应用开发的过程。课程内容大体如下:
首先,带大家了解华为的全栈全场景AI解决方案,重点关注昇腾AI处理器和CANN,如果能对CANN的逻辑框架能够有认识就更好了。
其次,就是要学会用CANN,发挥昇腾AI处理器的强大性能。这里的昇腾AI处理器包括Ascend 910和Ascend 310(昇腾AI处理器还有其他型号,这里我们不会涉及,感兴趣的同学可以到昇腾社区查看更为详细的内容),前者用于训练,后者用于推理。我们都会有所涉及,这里就看大家的兴趣了,是对训练感兴趣,还是对推理感兴趣。因为我更对部署应用感兴趣,觉得应用会离我们的生活更近些,很可能会应用到我们的生活中,所以更推荐大家搞搞应用。
最后,就是期待大家能在学习中,遇到问题,能积极主动去定位问题,明确问题,并解决问题,这是比较重要的能力。通过各种方式,或查看文档,或到论坛提问,当然,我也会尽可能帮助大家解决问题的。
期待能和大家一起学习,一起进步,祝大家在本季训练营能学有所获。