选课类别:素能拓展 | 教学类型:理论实验课 |
课程类别:素能拓展课程 | 开课单位:电子工程与信息科学系 |
课程层次:自由选修 | 学分:2.0 |
《AI博弈方法实践》主要介绍强化学习(RL)的基本概念和算法,并提供基于电竞环境的实践平台。课程前几节由周文罡老师和助教赵鉴博士主持,前半部分科普强化学习的基本框架和算法知识,后半部分则主要讲解如何使用开悟平台、进行Docker容器和远程开发的配置与操作。此外,课程还穿插了赵鉴博士分享的科研经验和行业信息,对学生未来的学习和职业规划很有帮助。
周文罡老师和赵鉴博士的授课内容严谨且实用,特别是赵鉴博士分享的学习和职业规划经验对学生有较大启示。然而,有学生反映教学中代码部分未详细解释,导致部分同学在实际操作中遇到困难。授课质量和学生的学习效果与其基础有很大关系,有深度学习和Python基础的同学上手会比较快。
课程作业主要是基于开悟平台的实战练习,要求学生在教学提供的Docker镜像和源码基础上进行训练。考试改为二等级制,要求学生击败baseline 2即可通过课程。总体来说,通过课程相对容易,但要深入学习和理解强化学习,需要投入较多时间。群体合作时,资源分配和互动较为重要。
原本为五等级制,但因大部分学生缺乏深度学习基础,后改为二等级制。从评价来看,只要熟悉远程开发并能使模型跑起来,基本都能通过课程,反映出课程对基础较薄弱学生的包容性。
作业主要是训练和调参,但很多同学反馈因代码封装较多,可修改部分有限,只能调整超参数。腾讯提供的高算力资源(128核CPU和A100显卡)对训练任务非常充足,但很多学生在远程开发和Docker操作上耗费较多时间,影响了深入了解和优化算法的机会。
总体而言,这门课对有深度学习和Python基础的同学较为友好,是一个实战与理论结合的好机会,可以深入了解工业级AI的编写和部署方法。但对强化学习和神经网络完全陌生的同学,有较大难度。那些希望通过这门课混学分的同学,基本满足基础要求即可通过课程。对有兴趣深入学习强化学习和从事相关领域科研的同学强烈推荐,但需自备一定的技术基础。
首先讲一下这门课的内容。这门课第一节课由周老师介绍强化学习,但我因为考试没有去上。后面是赵鉴博士来上,第一节课讲了RL的基本概念,第二节课讲了现行强化学习的几乎所有算法,第三节课复习上节课内容并讲了学长做强化学习科研的经历和AI游戏竞赛的经验,第四节课讲了开悟平台、ssh、docker的使用,第五节课没去,应该是答疑,后面的课都是答疑。
课程里穿插交流的强化学习科研和行业情况感觉对了解行情、规划之后的学习非常有帮助。
课程给了用docker镜像打包好的源码(基于tensorflow)和运行环境,我们可以直接跑这个代码,也可以在此基础上修改代码继续训练。(当然,这里有一点不好,感觉是这个代码没有多少可以改的地方,具体如下:1.该写好的都写好了;2.网络结构从一开始训练起就不能改了,也许可以做一些小改动之类的,但是由于很多代码被封在了sail包里看不到,在这个体系下部分加载已训练好的模型的方法我还没搞太懂,不知道能不能做到。由此感觉只能调参和写硬编码的规则构造经验来优化训练,学到的强化学习知识没有多少用武之地)
腾讯给我们每个小组的算力是128核CPU和一张A100显卡(一套算力给这么长时间相当于市场价上万了),对于训练来说非常足够。课程后面改成二等级制,要求击败baseline 2就能通过课程,差不多训练1天就可以达到这个水平。稍微良好的调参下,4天能够训出钻石水平的露娜(追平baseline 4)。
这门课最大的收获是学习到工业级的AI是如何编写与部署的。最基本的是生产环境下的部署,如ssh远程开发、docker容器使用、Linux的基本命令,这些是未来科研和工作中训练和部署模型非常重要的工具,当然用个git在容器、开发机和本地之间传代码会方便很多。其实还有很多复杂操作,比如编写dockerfile,kubernetes集群的部署,但是原来的docker容器里已经帮我们实现好了,不需要我们操心。剩下的按着教程完成初始配置之后,都是一些最基础的命令,感觉不超过20种,疯狂百度就行了。现学情况下,初始配置大约要3小时,搞明白各种指令并让模型训起来可能要5小时,但这个收益比真心高,并且以后不付钱都很难有这样的学习机会了。
接下来讲讲代码。代码基本就是绝悟论文里的实现,分为CPU和GPU两部分代码,所有和环境交互的代码,包括actor、agent之类的都在CPU端,GPU端主要是训练代码,模型实现和线程间传输模型的程序两端都有一份。
看代码最困难的地方有三点,一个是不能断点调试,只能打log,严重影响看代码速度;第二个是涉及巨多脚本等地方传进去的环境变量,不打log根本就猜不出是啥;第三是很多代码封在sail包里面,有一些是非常重要的(当然可以本地安装sail包,用everything找到它的源码来看,但因为要装tensorflow1.14所以我就没有干,这应该只是我自己的问题)
对于代码,确实可以粗略地讲讲每个部分的功能是啥,但具体实现太细了肯定不能讲。没有讲代码是这门课的遗憾。
有同学说不能在已经训练出来的模型基础上修改代码继续训练,这个问题我研究了三天,常规的tensorflow方法saver.restore行不通,最后问助教发现其实是可以的,而且步骤非常简单,他们代码把这些方法都写好封装好了,只用调一个布尔值就行(如下图)。
最后,还是要强调一下这门课是实践课,不是来学知识的。建议有训练神经网络经验的同学选这门课。不会强化学习不要紧,在会神经网络的基础上,五个小时应该足够从头学起掌握所有现行强化学习算法的基本思路,当然要搞懂具体实现可能要花超过十个小时。但是不会神经网络甚至不会Python的同学慎选。群里有些同学不会Python也选这课,一进来就兴奋地聊着王者,仿佛这门课是王者课而不是强化学习课,但等到讲完强化学习算法之后,群里就再也没有见到他们发言。根据估计,从不会Python到完全掌握强化学习大约需要60-80小时的时间,按一周45小时的学习时间,从选这门课开始才学起其实挺难的,特别是后半段要花巨量时间来搞具体的王者AI,至少这样效果不好。当然,如果只是要水过这门二等级的课,那还是非常轻松的,只要学习远程开发,让代码跑起来,一两天后去收割成果就可以了,完全不需要深度学习知识。
本来打算夏季学期卷两个学分选的这门课,一直也对RL比较感兴趣。周老师第一节课讲的介绍,后面课都是赵鉴博士带的,考虑到各个年级的同学都有,老师没有讲太难的东西,最后也改成了二等级制,只是简单科普了一下RL相关的知识,还顺便吐槽了一下他的研究生生涯和职业规划,这部分对我以后读研究生的选择有很大帮助。非常感谢赵鉴博士分享心路历程。
腾讯答应给我们算力,128核CPU和一张A100显卡,然鹅大部分本科生都不太熟悉远程开发的操作流程,docker使用之类的东西,大部分同学都卡在拉镜像和上传模型压缩包这种事情上。另一个很难受的点是不能在已经训练出来的模型基础上修改代码继续训练。
总之,选一下这门课了解一下强化学习还是很好的。
没相关基础的话不建议去选,前置课程应该有一定的要求,不建议低年级同学选(如果是相关大佬除外),在暑假这个四星期的时间说实话有点短
毫无收获,就和你大一去听讲座差不多,实践也没动过,开悟平台都没登录过。
这门课原本是五等级给分,后面因为好多同学没有深度学习基础就改成二等级制了,总而言之这门课要是想学到东西的话是需要有深度学习基础的,虽然课程是讲的强化学习,但是只需要了解一些基础概念就可以了,有基础可以很快上手,没有的话可能连在哪里改参数都不清楚,代码也看不太懂。 但这门课就算什么都不懂也可以过,能了解docker的一些运用还是很有意义的,按部就班来也可以取得不错的效果。
感谢腾讯爸爸的赞助,通过这门课学了很多东西(很大一部分跟深度学习无关orz),比如说linux操作,远程连接,各种计算机异常处理,还有学会了打王者。助教很有趣,就是课门槛太高了,课时也少,虽然会点python,但最后也没用上。还有就是资源给的太大所以只能分组合作,难免有人摸鱼,幸好最后改成两分制了,不然真的难崩。希望之后训练对象能改成贪吃蛇之类的简单小游戏,教教亲自上手写代码,不然光讲原理还真不能学到什么。对深度学习方面感兴趣的同学很推荐选,总体还是很有趣的,被游戏吸引来的建议快跑,这跟自己打游戏的爽点完全两码事
可以了解RL的基本框架以及远程开发的的一些知识,变成两分制后开始摆烂,没有尝试去改腾讯给的代码,如果可以设置一些奖励像之前同学说的点券之类的和排名挂钩或许会激发同学们的激情去读读代码改改代码什么的,但课时实在有限,也不适合低年级学生修读,介绍policy based RL时,推导出了policy gradient,学生们还云里雾里,因为大部分人连梯度下降都不知道。 虽然是和腾讯合作开的课,但我感觉如果能够脱离腾讯,不打王者荣耀,自己动手写个打打Atari小游戏的程序或许收获会更大,用自己电脑算力也足够跑到模型收敛。
除开周老师上的第一节课,这门课大部分内容由赵鉴博士带领大家学习。
上完课程后,大家基本上能对强化学习有一个大致的了解,并且通过开悟平台实战(虽然大部分时间应该花在环境部署上面了)。
有python和深度学习基础的同学会有优势。当然这门课后面改成了两分制,也是凑学分的优秀选择。
上课的老师都很亲和,讲课也穿插着有意思的经验分享,对同学日后的学习规划也很有指导意义。
虽然也会有一些不足之处,比如官方给的指导有错、科普式的课程内容,看不懂群里大佬的发言导致自信受挫等等,但考虑到这是一门暑期课程,在时间并不充裕甚至可以说是吃紧的情况下,这门课可以算得上优秀。btw,腾讯给每支队伍提供了万元级别的算力支持,选到就是赚到。
推荐大家选修。