写点什么

智能计算系统:如何设计智能计算课程 | 品味书香

陈云霁 等 编著

  • 2020-05-29
  • 本文字数:5470 字

    阅读完需:约 18 分钟

智能计算系统:如何设计智能计算课程 | 品味书香

本文节选自陈云霁等人编著的机械工业出版社出版的《智能计算系统》一书。


随着智能产业的飞速发展,社会迫切需要大量高水平的人工智能人才。因此,我国近千所高校的计算机学院和信息学院都在培养人工智能方向的人才,而且我国已经有上百所高校开始设立专门的人工智能专业。可以说,我国人工智能高等教育的大幕正在徐徐拉开。今天,教育界对人工智能人才培养的决策,将会对历史产生深远的影响。因此,我们应当慎重思考一个关键问题:人工智能专业的高等教育需要培养什么样的人才?


有一种看法认为:人工智能专业只需要教学生如何开发智能应用和编写智能算法,至于运行这些应用和算法的计算系统,则不是教育的重点。这种看法,类似于汽车专业只需要教学生如何组装车辆,而不需要让学生理解发动机的机理;又类似于计算机专业只需要教学生如何写 APP,而不需要让学生理解 CPU 和操作系统的机理。重应用、轻系统的风气,有可能使我国人工智能基础研究和产业发展处于“头重脚轻”的失衡状态。


与此形成鲜明对比的是,我们的国际同行对于 智能计算系统 的重视程度远远超过普通人的想象。仅以谷歌公司为例。众所周知,谷歌拥有全世界最大规模、最高水平、最全产品的智能应用和算法研究团队。仅谷歌一个公司就发表了 2019 年国际机器学习会议(ICML)近 20%的论文,和整个中国相当。然而,当我们真正认真审视谷歌时就会发现,谷歌并不只是一个算法公司,它更是一个系统公司。谷歌的董事长 J.Hennessy 是国际最知名的计算机系统结构研究者,图灵奖得主;谷歌人工智能研究的总领导者 J.Dean(每次谷歌 I/O 大会都是他代表谷歌介绍全公司的智能研究进展)是计算机系统研究者,著名的 MapReduce 分布式计算系统就出自他之手。谷歌在人工智能领域最令人瞩目的三个贡献——机器学习编程框架 TensorFlow,战胜人类围棋世界冠军李世石的 AlphaGo,以及谷歌自研的智能芯片 TPU——也和系统有关,而非单纯的算法。


因此,人工智能专业的高等教育,应当培养人工智能系统或者子系统的研究者、设计者和制造者。只有实现这个目标,高校培养的人才才能源源不断地全面支撑我国人工智能的产业和研究。为了实现这个目标,人工智能专业的课程体系,不仅仅应当包括机器学习算法、视听觉应用等课程,还应当包括一定的硬件和系统类的课程。


事实上,国内有很多前辈和专家也意识到了这个问题。很多国内高校并不是主观上不想给学生开设面向人工智能专业的系统类课程,而是开设这样的课程有一些客观困难,不容易克服。毕竟智能计算系统是一个新兴的交叉方向,所涉及的知识非常新,老师们找不到现成的课程可以参考。事实上,即便是国际顶尖高校,过去也没有太多这方面的教学经验(例如,斯坦福大学 2015 年曾请我去讲授这个方向的短期课程)。另外,讲授智能计算系统课程所需要的背景知识也非常广泛,涉及算法、结构、芯片、编程等方方面面,能对这些知识都有全面涉猎的老师确实不多。


但是,在所有的困难中,大家一致认为,最关键的困难就在于没有现成的教材。教材是课程的基础,要上好一门课,没有合适的教材是不可能的。据我们了解,目前国际上也没有一本能全面覆盖人工智能计算系统(尤其是当代机器学习计算系统)新进展的教材。因为我们实验室在研究上涉及智能计算系统的各个方面,又在中国科学院大学、北京大学、北京航空航天大学等院校有讲授智能计算系统课程的经验,所以很多老师问我们,是否能编写一本内容较新、较全面的教材。于是,我们参考过去讲课的录音录像,整理形成了这本 《智能计算系统》 教材。希望这本教材能抛砖引玉,为高校开设面向人工智能专业的系统类课程提供微小的助力,为我国培养人工智能人才起到一点推动作用。

智能计算系统课程的价值

个人认为,智能计算系统课程对于学生、教师、高校,都具有重要的价值,能产生深远的影响。


对于学生来说,学习智能计算系统课程有助于形成系统能力和系统思维。系统能力 可以帮助学生在就业市场中拥有更强的竞争力。在不久的将来,全国上百所开设人工智能专业的高校每年将培养出上万名学过智能算法的学生。到那时,如果一个学生只会算法调参,而对整个系统的耗时、耗电毫无感觉,不具备把一个算法在实际系统上部署起来的能力,找到好工作的难度会较大。而智能计算系统课程的学习,就能让学生真正理解人工智能到底是怎样运转的(包括一个人工智能算法到底如何调用编程框架,编程框架怎么和操作系统打交道,编程框架里的算子又是怎样在芯片上运行起来),就能使学生拥有亲手构建出复杂的系统或者子系统的能力。很自然地,就更容易在就业的竞争中脱颖而出。我曾经在网上看到一个段子:“会用 TensorFlow 每年挣 20 万元人民币,会写 TensorFlow 每年挣 20 万美元。”这个段子其实还是有一定的现实依据的。


系统思维 对于提高学生的科研能力有帮助。缺乏系统思维的学生很容易陷入精度的牛角尖中,把科学研究当成体育比赛来搞(别人做了 97%的精度,我就要做 98%;别人做了 98%,我就要做 99%),最后研究道路越走越窄。事实上,从系统角度看,评价智能的标准远不止精度一个维度。速度、能效、成本等都是很重要的维度,无论在哪一个维度上做出突破,都是非常有价值的研究。因此,近年来深度学习领域一些非常有影响力的工作如稀疏化、低位宽等,都是在提升整个智能计算系统的速度和能效上做文章,而不是只盯着精度不放。所以说,学习智能计算系统课程,能让学生形成系统思维,在科研道路上拥有更宽广的舞台。


对于教学科研人员来说,讲授智能计算系统课程,对于自己的科研能力也可能有很大的帮助。我自己担任任课教师时就发现,科研人员把一门课教好,自己的收获可能比学生还大。这也就是《礼记·学记》所说的“教学相长”。因为做科研只能让人对一个方向中的某些具体知识点很熟,而教学某种意义上逼着教师要对整个方向有全面的理解,这样反过来又能让科研的思路更开阔。智能计算系统课程覆盖面比较广,教好这门课受益尤其大,能使教师的知识面从软到硬更加全面。


对于高校管理人员来讲,系统研究已经成为人工智能发展的热点,在学科布局中应予以充分重视。2019 年,一些国际顶尖高校和企业(如斯坦福大学、卡内基梅隆大学、加州大学伯克利分校、麻省理工学院、谷歌、脸书、英特尔、微软等)的数十位知名研究者(包括图灵奖得主 Y.LeCun、美国科学院院士 M.Jordan、美国工程院院士 B.Dally、美国工程院院士 J.Dean 等)联合发布了一份白皮书——“SysML:The New Frontier of Machine Learning Systems”,展望了机器学习计算系统软硬件技术的未来发展。这充分体现出,在国际上无论是学术界还是工业界,都对智能计算系统高度关注。在这样的新兴热门方向尽早布局并培育一批教师,无疑对提升高校乃至我国在国际学术界的影响力有巨大帮助。

智能计算系统课程的内容

对于教学比较熟悉的教师可能会问:“智能计算系统这门课程涉及面太广,知识点太多,在一门课内学完是否难度太大?”是的,智能计算系统课程涉及算法、芯片、编程等方方面面,每个方面展开来都可以是自成体系的一门课。所有枝枝蔓蔓要在一门课、一个学期里学完是不可能的。因此,我们在设计智能计算系统这门课程时采用了两个原则:应用驱动,全栈贯通。课程以一个应用为牵引,在软硬件技术栈的各个层次,聚焦于完成这个应用所需要的知识。这样不仅能使教师在一个学期内把智能计算系统课程教完,还有以下两个好处。


第一,一门好的工程学科的课程应当是学以致用的。尤其是智能计算系统这样的课程,如果上完之后只学会了一些理论知识,那教学效果一定不理想。应用驱动可以让学生学完了课程,就能把课程知识在实践中用起来。第二,帮助学生形成系统性理解。过去计算机专业课程设计有个问题,就是条块分割明显,比如操作系统和计算机体系结构是割裂的,操作系统对计算机体系结构提出了什么要求,计算机体系结构对操作系统有哪些支持,没有一门课把这些串起来,打通学生知识的“任督二脉”。智能计算系统作为高年级本科生(或研究生)课程,通过应用的牵引,能帮助学生把过去所有的人工智能软硬件知识都串起来,形成整体理解。


具体来说,智能计算系统课程以图像风格迁移(例如,把一个实景照片转换成梵高风格的画)这一具体应用为牵引,来对整个智能计算系统软硬件技术栈做介绍。为此,本书的第 1 章将对人工智能、智能计算系统进行概述,同时介绍风格迁移这一贯穿全书的驱动范例。


接下来,课程讲述完成这个应用所必需的神经网络和深度学习算法知识。对于图像风格迁移不涉及的 算法知识,课程就不做过度展开。这样在最多不超过 6 个学时内就能够把算法部分讲完。上述内容将在本书的第 2、3 章做介绍。


智能算法要在智能芯片上运行起来,还需要 编程框架 这一系统软件的支持。对上,编程框架降低程序员编写具体智能应用的难度;对下,编程框架将智能算法拆分成一些具体算子,并将算子分配到智能芯片(或者 CPU)上运行。编程框架是很复杂的系统软件。但是实现图像风格迁移所需要的编程框架知识相对有限(比如说,TensorFlow 编程框架中有上千个算子,但是风格迁移只涉及其中不到十分之一)。这样教师在 6 个左右的学时里,就可以教给学生如何使用主流的编程框架,以及编程框架内在的运行机理。上述内容将在本书的第 4、5 章做介绍。


编程框架再往下是 智能芯片。由于传统 CPU 远远不能满足智能计算飞速增长的速度和能效需求,智能计算系统的算力需要由专门的深度学习处理器提供。开发一款能处理各种视频识别、语音识别、广告推荐、自然语言理解任务的工业级深度学习处理器,需要成百上千有经验的工程师数十个月的努力。但是,在这门课里,我们只需要考虑有限目标,即如何针对图像风格迁移这一具体应用来设计深度学习处理器,包括设计思想、设计方法、具体结构等。当然,为了让学生能了解业界前沿动态,本书也会介绍真正的工业级深度学习处理器的大致结构。这样教师在 6 个左右的学时里,就可以让学生比较系统地掌握深度学习处理器的基础知识。上述内容将在本书的第 6、7 章做介绍。


深度学习处理器的指令集和结构与传统的通用 CPU 有较大区别。为了方便程序员充分发挥深度学习处理器的计算能力,需要有新的高级智能编程语言。因此,本书的第 8 章将介绍一种 智能编程语言(BCL 语言)。这种编程语言考虑了如何提升程序员编写智能算法的生产效率,也考虑了如何利用深度学习处理器的结构特点。本书在这一章除了介绍如何用 BCL 语言开发出图像风格迁移所需的基本算子,还提供了系统级开发和优化实践。这一部分内容大约需要 3 个学时。


智能计算系统课程的最终目标是让学生融会贯通地理解智能计算系统的完整软硬件技术栈。如果只是单纯学习上述章节的内容,可能学生掌握的还是一些割裂的知识点,必须要有一个实验,把这些知识点串起来,打通“任督二脉”。因此,本书的第 9 章具体介绍了一个实验,即如何开发一个能完成图像风格迁移任务的简单智能计算系统。理论上,学生把这个实验做好,就应该能对整个课程的知识体系有一定的全局理解。完成这个实验所需要的学时数和学生基础有较大的关系,可能要根据各个高校的实际情况来决定。此外,如果课程体系允许,我们建议专门开设一门智能计算系统实验课。我们专门编写的《智能计算系统实验教程》将于 2020 年出版,提供更全面、丰富的实验,为专门的智能计算系统实验课提供支撑。


在设计上述课程内容时,我们主要考虑的是中国科学院大学(简称国科大)的学生情况。我们在其他兄弟院校讲授这门课程时发现,各个学校的前置课程和学生基础不太一样,教师可以根据自身情况对各个部分的学时做灵活调整。比如,如果学生之前学过人工智能或者机器学习基础课,第 2、3 章算法部分的课时数可缩短。再比如,如果学生没有学过计算机体系结构或者计算机组成原理,那么第 6、7 章深度学习处理器部分可以讲慢一点,增加一些课时。


书中标*的章节或习题,供有志于从事智能计算系统研究的读者选读或选做。

本书的写作

这本书的出版,凝聚着中国科学院计算技术研究所智能处理器研究中心以及中国科学院软件研究所智能软件研究中心很多老师和同学的心血。其中,我负责整理了本书第 1 章,李玲研究员负责整理了第 2、3 章,李威副研究员负责整理了第 4、9 章,郭崎研究员负责整理了第 5、8 章,杜子东副研究员负责整理了第 6 章,周徐达助理研究员负责整理了第 7 章。我和李玲研究员负责了全书的统稿。杜子东副研究员负责了本书的习题。此外,李震助理研究员、韩栋助理研究员,以及韦洁、潘朝凤、曾惜、于涌、王秉睿、张磊、郝一帆、刘恩赫、何皓源、高钰峰、宋新开、杜伟健等同志也参与了本书的部分工作。杜伟健、张振兴和宋新开对本书习题做出了贡献。方舟、曾惜、张振兴、李普泽和陈斌昌等同志负责了本书多幅图的绘制。张曦珊副研究员、张蕊助理研究员,以及吴逍雨、承书尧、汪瑜、谭懿峻等同志参与了本书的校对。在此向这些同志表示衷心的感谢。同时,我们也特别感谢西北工业大学的周兴社教授和南开大学的李涛教授对智能计算系统的课程建设和教材编写提供的宝贵意见。由于我们学识水平有限,书中一定还有错漏之处,恳请读者多多批评指正。如有任何意见和建议,欢迎发邮件至 ics_textbook@ict.ac.cn。


本书的写作受到了国家重点研发计划、国家自然科学基金、“核高基”科技重大专项、中科院先导专项、中科院弘光专项、中科院前沿科学重点项目、中科院标准化研究项目、北京市自然科学基金、北京智源人工智能研究院和腾讯科学探索奖的支持。此外,机械工业出版社华章公司的温莉芳、刘立卿等同志给予我们大量的帮助。在此一并表示诚挚的谢意。


图书介绍https://item.jd.com/12815882.html



2020-05-29 10:001837

评论

发布
暂无评论
发现更多内容

jenkins pipline 基本语法

忙着长大#

RESTful API类渗透测试的特点

阿泽🧸

RESTful API 11月月更

主成分分析PCA与奇异值分解SVD-PCA对手写数据集的降维 & 用PCA做噪音过滤

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

kitti数据集在3D目标检测中的入门

Studying_swz

3D点云 11月月更

AST 初探深浅,代码还能这样玩?!

蔡农曰

前端 后端 代码

其实你的下班时间,被 Excel 预定了

叶小鍵

主成分分析PCA与奇异值分解SVD-降维后的矩阵components_ & inverse_transform

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

第九期 - 模块七

wuli洋

聊聊ThreadLocal

急需上岸的小谢

11月月更

Docker部署flink备忘

程序员欣宸

Docker flink 11月月更

SpringCloud相关组件

急需上岸的小谢

11月月更

CleanMyMac2023注册机mac系统清理工具

茶色酒

CleanMyMacX CleanMyMac X

聊聊Go里面的闭包

秦怀杂货店

Go 函数式编程 闭包

企业级业务架构设计笔记三:设计起点与设计过程

程序员架构进阶

架构 业务架构 11月日更 11月月更

部署代码质量检测服务 sonarqube,基于命令、shell 脚本和 pipline 实现代码质量检测

忙着长大#

jenkins

支持向量机-支持向量机分类器原理

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

制订需求分析框架和分析计划

穿过生命散发芬芳

需求分析 11月月更

[力扣] 剑指 Offer 第四天 - 0~n-1中缺失的数字

陈明勇

Go 数据结构与算法 力扣 11月月更

极客时间运维进阶训练营第四周作业

老曹

【愚公系列】2022年11月 微信小程序-场景值

愚公搬代码

11月月更

2022-11-20:小团生日收到妈妈送的两个一模一样的数列作为礼物! 他很开心的把玩,不过不小心没拿稳将数列摔坏了! 现在他手上的两个数列分别为A和B,长度分别为n和m。 小团很想再次让这两个数列变

福大大架构师每日一题

算法 rust 福大大

极客时间运维进阶训练营第四周作业

chenmin

Java中的System类

共饮一杯无

Java 11月月更 system类

聊聊hashmap

急需上岸的小谢

11月月更

iMazing2022免费试用版ios设备管理器

茶色酒

imazing imazing2023

【web 开发基础】PHP 的函数工作原理 (28)

迷彩

函数 web开发基础 11月月更 结构化编程 函数的工作原理

计算机网络:PPP协议与HDLC协议

timerring

计算机网络 11月月更

MongoDB源码学习:Mongo中的OpRunner

云里有只猫

mongodb 源码学习

开发H5都会喜欢这个Vite插件

小鑫同学

前端 插件 11月月更

工业互联网数据处理架构

刘旭东

kafka IoT 工业互联网

Dockerfile 常用命令

蜗牛也是牛

智能计算系统:如何设计智能计算课程 | 品味书香_AI&大模型_InfoQ精选文章