引言
目前人类正处在一个日新月异、飞速变革的智能时代。近年来,随着大数据技术、高性能计算技术和深度学习技术的崛起和突破,涌现出了很多智能算法。这些智能算法对图像处理、自然语言处理、语音处理、搜索推荐等技术的发展起到了极大的促进作用,相关研究领域的算法技术从实验室走入商业场景,创造了丰富的商业价值。
开放的软件生态和易用的软件形态是打造人工智能(Artificial Intelligence,AI)和深度学习产业链的至关重要的两个方面。没有软件的支撑,理论很难与应用相结合,新硬件也很难为应用提速。像大数据时代Hadoop的出现、移动互联网时代安卓(Android)系统的出现一样,在新的智能浪潮下,支撑人工智能算法服务生产和开发的相关技术也得到了快速的发展,谷歌(Google)、脸书(Facebook)、亚马逊(Amazon)等人工智能巨头纷纷推出了面向算法开发者的人工智能开发框架。他们推出的TensorFlow、PyTorch、MXNet等开源框架,大大扩展了人工智能算法服务的训练生产能力,缩短了智能服务的上线、更新周期,提高了人工智能服务的生产效率。
然而,TensorFlow、PyTorch、MXNet尚不足以支撑人工智能的全流程生产化应用,它们仅面向个人开发者和研究人员,管理少数计算设备资源,无法在云计算资源上提供面向多租户的智能应用全流程服务,欠缺诸如海量样本数据管理与共享存储、集群管理、任务调度、快速训练与部署、运行时监控等能力,导致用户形成生产力的成本过高。
深度学习等人工智能技术是计算密集型重资产类应用,亟须能够提供异构高性能计算资源和主流机器学习框架支持的云服务,降低人工智能框架的使用门槛,并提升用户体验,从而与开源效应叠加,加速产业发展。面对这一需求和市场,国家发展和改革委员会、科学技术部针对人工智能开源开放平台设立重大专项,大力发展相关技术;谷歌、脸书、亚马逊以及国内的阿里巴巴、百度、华为等优秀的科技公司,也纷纷开始推出人工智能的云平台服务。人工智能云平台作为一种新的智能产业领域,正在如火如荼地发展。
然而,目前尚缺少全面、系统、深入介绍人工智能云平台的资料。针对这一迫切需求,本书以实践为导向,首先对智能云平台的技术体系进行梳理,从智能云平台与大数据云计算技术、人工智能技术的关系讲起,为读者勾勒该领域涵盖的技术范畴。然后,对从训练学习到服务封装再到模型发布应用的全过程的人工智能云平台设计的关键技术原理进行了阐述,对人工智能应用的完整流程进行了详细介绍,并对人工智能云平台技术栈涉及的云计算、集群管理、任务调度、共享存储等技术进行了针对性讲解。最后,结合理论知识与作者多年的工作实践,以目前较为主流的多个开源人工智能管理平台为例,对相关工程案例进行了深入讲解,以填补人工智能云平台技术领域教程的空白。
本书的主要特点如下。
内容来自多个智能云平台项目。本书的许多内容是大型项目和商业运营产品等不同场景下智能云平台系统的研发心得,具有很高的借鉴价值。
对当前智能云平台技术进行了及时总结。本书不但对智能云平台技术相关的软硬件生态进行了调研总结,还对目前主流的智能云平台进行了详细的剖析和比较,对各智能云平台的自身特色和设计初衷进行了分析,为从事相关技术的读者提供有价值的参考。
多维度思考。本书不仅从智能平台系统开发的角度进行描述,同时尝试从平台使用者的角度对智能云平台的功能进行思考,因此希望本书能够为智能云平台开发者和使用者搭建桥梁。
大量案例引导。智能云平台覆盖的技术领域众多,需要相关从业者具有丰富的知识储备,对于初学者来说是一个不小的挑战。本书提供众多的案例来引导读者学习智能云平台各个环节的知识,循序渐进,避免将学习过程变得枯燥乏味。部分案例,如在Kubeflow平台上进行分布式训练、模型导出等,读者只需结合自己的实际应用需求稍作修改就可以使用。
源码示例分析。通过对主流的开源智能平台的源码进行详尽解析,帮助读者进一步理解智能云平台的各种概念,对于读者快速了解和学习智能云平台的各种技术细节十分有利。
本书共分四大部分。第一部分是人工智能云平台概览,包含第1章和第2章,主要对人工智能云平台的概念、涵盖的关键技术以及当前主要产品的能力、特点进行概要性介绍,力求向读者形象化地阐述人工智能云平台的概念。第二部分介绍人工智能云平台关键技术,包括第3章到第5章,主要是对人工智能云平台框架及技术内容进行介绍。第三部分介绍人工智能云平台工具链,包括第6章到第10章,主要对人工智能云平台需要的多种特色工具链技术进行介绍。第四部分介绍人工智能云平台案例,包括第11章到第13章,主要基于多个开源智能平台进行案例讲解,指导读者进行人工智能平台的开发实践。
第1章为人工智能云平台简介,主要介绍人工智能云平台的概念,说明了其与云计算、TensorFlow等智能框架的区别与关系以及与通用云服务的异同。在此基础上归纳总结了智能云平台的主要业务环节和功能组成,进而引出实现人工智能云平台涉及的关键技术。
第2章为人工智能云平台案例概览,主要对目前若干人工智能平台的典型功能进行介绍,总结这些平台的共性能力以及各自特点,为后面章节的展开提供基础。
第3章为共享存储与数据管理。介绍共享存储的概念、定义和类型,对几种主流的共享存储文件系统进行阐述,并结合数据管理在人工智能云平台中的重要性,介绍主流深度学习框架在数据访问上所做的工作。
第4章为资源管理与调度。介绍资源调度系统的工作流程、人工智能云平台关心的资源类型以及以Docker为基础的资源隔离方案,并在YARN、Kubernetes等实现案例的基础上对调度器的架构进行讲解。
第5章为运维监控系统。介绍以Prometheus、Grafana、Alertmanager等开源组件为基础的可用于人工智能云平台的运维监控系统的原理、设计与实现。
第6章为机器学习框架。介绍人工智能云平台涉及的智能开发框架的相关知识,主要介绍多种经典机器学习框架和深度学习框架的相关知识。
第7章为分布式并行训练。介绍分布式并行训练的基本概念以及典型的分布式优化策略,并具体介绍若干分布式训练框架及代码示例。
第8章为自动机器学习。对当前的研究热点AutoML技术进行综述,并简要介绍目前几个开源AutoML项目的情况和应用前景。
第9章为模型构建与发布。介绍从数据采集分析、模型训练、模型评估到将模型打包成服务的全流程,探讨训练好模型并打包成服务的方式以及打包成服务后对外提供服务的形式。
第10章为可视化开发环境。介绍人工智能云平台所需的交互式开发环境工具以及人工智能训练、评估所需的结果可视化工具。
第11章为DIGITS实践。介绍单机的可视化模型训练软件DIGITS的原理以及使用案例,并对其架构进行讲解。
第12章为Kubeflow实践。介绍基于Kubernetes集群的GPU调度软件Kubeflow的原理和技术细节,并讲解基于Kubeflow开发特定智能云平台的案例。
第13章为OpenPAI实践。介绍OpenPAI平台的使用和维护方法,对其平台架构进行拆解和分析,并更细粒度地对其中的核心组件进行剖析。
在阅读本书之前,读者应当了解Linux系统下Docker、Hadoop和Kubernetes的基本知识及操作,还需要具备基础的机器学习知识。
建议读者分3遍阅读本书。
第一遍:先简单浏览,看看书中都有哪些知识点。
第二遍:针对各个知识点,分别查阅具体章节。智能云平台涉及的内容较多,难以在一本书中完整介绍,本书可以作为引导者,帮助读者深入学习该领域所需的知识。
第三遍:在对各知识点有了基本的掌握后,根据书中的实践部分,边看边练,更深入地体会智能云平台的设计思想。
感谢互联网和人工智能时代,感谢网络上优秀的技术分享者,也向富有开源精神的科技公司致敬,让作者可以紧跟时代的前沿技术,并为技术的进步做出自己微薄的贡献。
感谢人民邮电出版社有限公司对这本书的认可。
由于作者水平所限,书中难免存在不足与错误之处,敬请专家和读者批评和指正。想和作者进行技术交流的读者,可以发送邮件至ai_cloud_platform@163.com。
作者
2020年4月