Docker在云平台上的最佳实践: 当容器服务遇到深度学习
12月9日云栖计算之旅线下沙龙第2期《Docker在云平台上的最佳实践》,阿里云技术专家必嘫给大家带来了“当容器服务遇到了深度学习”的演讲。本文主要从深度学习的兴起开始谈起,进而介绍了Docker技术、阿里云容器服务,重点介绍了支持云上的高性能计算应用需要哪些,包括GPU的调度、隔离和监控。
深度学习
人工智能已经进入了深度学习时代。传统的让机器自动化的方式已经不再适合解决一些问题,机器学习开始兴起,让机器像小孩子一样自己去认识世界。而深度学习本身是机器学习的一个算法,深度学习想用数字化的方式模拟神经元进行运算,对于变量的抽取完全是基于数据的。
基于深度学习的机器视觉能力上已经接近人类。传统的机器学习方法在2011年之前一直使用,识别的准确率不会高过77.5%;2012年开始引入深度学习,识别准确率得到大大提升,错误率接近5%。在ILSVRC的ImageNet计算机视觉系统识别项目上,基于深度学习的机器视觉能力已经接近人类(如上图)。今年初AlphaGo与韩国棋手李世石4:1的比赛结果,再次向人们展示了人工智能的强大之处。
深度学习起起伏伏,1960年代开始有了单层神经网络,80年代算法模型已经相对完备,2009年GPU的出现,提供了巨大的计算量,使深度学习真正的应用起来。
深度学习许多算法依赖于矩阵的乘法,是CPU速度的45倍左右。但是,当深度学习应用越来越广泛时,提供数据量越来越巨大时,目前常用的单GPU并不满足深度学习井喷式的计算需求。
当我们进行GPU资源管理时,要向韩信点兵一样多多益善。但是,并不是对每个人来说,GPU越多,管理能力就越高,而是有没有能力将集群管理起来,我们需要对GPU进行统一规划和管理的角色存在。
Docker
Docker搭建了一个从软件、开发、测试、交付、到运维的潜在规约,将应用的运行环境固化,一层层向下交付。一个Dcoker镜像只能跑一个容器,但多数复杂应用并不是一个容器能够完成的,这需要Docker Compose完成,Docker提供了资源分配方式,Docker Engine通过Docker Registry分配部署的。
阿里云容器服务
阿里云容器服务底层为容器层,不存在公有云专有云分隔,相当于无边界计算,可以在任何环境下部署;阿里云在调度上进行了扩展,在阿里云不同地区部署容器服务时,可以根据高可用性把同样两个前端Web部署到不同地方,对GPU的支持,阿里云也在已有Swarm基础上进行了扩展,用户可以支持真实的应用软件的开发部署场景,阿里云也将云监控、日志服务等集成在了一起。
GPU
为了能够支持云上的高性能计算集群,我们需要按GPU调度、按GPU隔离、按GPU监控。
当向一块机器要两块GPU卡时,选择两块不同的GPU,性能是完全不一样的。
当同时调度GPU资源和CPU资源的时候,当指派多个GPU资源给一个任务时,当调度多个GPU任务完成同一个工作的时候,和GPU相关的拓扑结构很重要。
阿里云容器服务支持GPU的调度,对于最终用户来说是一个透明的过程,用户只需要在label下描述需要一个GPU,我们就会负责帮您选择要使用的GPU,并将其隔离好。
GPU监控
当使用GPU运算时,我们会让用户观测到GPU状况,监控GPU关键指标包括资源使用量、内存使用量以及温度等;我们也会自动恢复,kapacitor触发容器服务弹性伸缩功能,OSS保存checkpoint或Model。
云上的高性能计算应用还需要什么
无缝连接阿里云的云服务,构建完整的深度学习应用。
简单的深度学习离线训练架构需要有HPC、需要在GPU上有应用、容器服务在调度上有优势,需要分布式存储把数据、计算隔离开;复杂的深度学习离线训练架构在这个基础上,还需要数据库、大数据的服务。
简单的深度学习在线预测架构,首先要保证高可用性,前端需要负载均衡,后端需要OSS;复杂的深度学习在线预测架构还需要云监控和云盾以及数据库。
基于HPC的深度学习解决方案
其中包括TensorFlow应用、Caffe应用,结合容器服务,释放HPC威力,快速创新、持续进化,打通从学习到服务价值链路。
必嘫:阿里云技术专家,在应用性能监控和软件交付方面有丰富的实践经验,目前专注于容器服务,微服务以及机器学习等领域。
更多深度文章,欢迎关注云栖社区:https://yq.aliyun.com/cloud