以下是开源深度学习平台kubeflow需要了解的相关术语。掌握它们,会更加理解搭建一个深度学习平台所需要的概念或框架。
提供远程调用对方的函数的框架。
远程过程调用带来的新问题:
https://www.zhihu.com/question/25536695
google出的RPC框架,基于http2。可对外提供grpc服务。
微服务
有两个核心:
微服务特别简单(好的架构就应该简单),我们把服务再拆分成一个个API,API是一个完整的功能。然后我们把API扔到一个“云上”,然后用户就可以到“云上”获取所有API的服务,这个“云”保证能提供好的服务。
微服务的关键是服务网关
,所以,上面提到的“云”就是服务网关。服务网关之下,就是内部系统之间的服务治理,这就是另外一个话题了。
实现方案:
https://blog.csdn.net/suifeng3051/article/details/53992560
Docker 和Kubernetes 技术的流行, 为Pass资源的分配管理和服务的部署提供了新的解决方案, 但是微服务领域的其他服务治理问题仍然存在.
服务化(常利用RPC框架实现)。但服务化还有挑战:
所以服务治理是关键(dubbo就是一个带有服务治理功能的RPC框架)。服务治理理应具有:
简单理解,大量的内部服务之间需要一个机制,去互相发现、流量管控等业务之外的问题,这个机制就是服务治理。Istio就是服务治理的框架实践(Service Mesh概念属于服务治理概念内,都在Istio中有实现)。
简单理解,k8s负责把服务部署起来,Istio负责服务之间的管理(包括访问、限流、安全等)
GPU是显卡的处理器,称为图形处理器(Graphics Processing Unit,即GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器,它是显卡的“心脏”,与CPU类似,只不过GPU是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的。
CPU是“主(host)”而GPU是“从(device)”,GPU无论发展得多快,都只能是替CPU分担工作,而不是取代CPU。GPU是显卡上的一块芯片,就像CPU是主板上的一块芯片。
CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU负责逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务(大规模计算任务)。
CPU需要很强的通用性来处理各种不同的数据类型,同时逻辑判断又会引入大量的分支跳转和中断的处理,这些都使得CPU的内部结构异常复杂。
GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。
总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂,但是量特别大的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。